【文件属性】:
文件名称:数据的打包与拆包-grid layout in css
文件大小:1018KB
文件格式:PDF
更新时间:2024-07-05 18:55:30
MPI
§4.4 数据的打包与拆包
在 MPI 中, 通过使用特殊数据类型 MPI_PACKED, 用户可以以类似于 PVM 中的方式将不同的数
据进行打包后再一次发送出去, 接收方在收到消息后再进行拆包.
§4.4.1 数据打包
C
int MPI_Pack(void *inbuf, int incount,
MPI_Datatype datatype, void *outbuf,
int outsize, int *position, MPI_Comm comm)
Fortran 77
MPI_PACK(INBUF, INCOUNT, DATATYPE, OUTBUF, OUTSIZE,
+ POSITION, COMM, IERR)
INBUF(*), OUTBUF(*)
INTEGER INCOUNT, DATATYPE, OUTSIZE, POSITION, COMM,
+ IERR
该函数将缓冲区 inbuf 中的 incount 个类型为 datatype 的数据进行打包. 打包后的数据放在
缓冲区 outbuf 中. outsize 给出的是 outbuf 的总长度 (字节数, 供函数检查打包缓冲区是否越界
用). comm 是发送打包数据将使用的通信器.
position 是打包缓冲区中的位移, 第一次调用 MPI_Pack 前用户程序应将 position 设为 0, 随后
MPI_Pack 将自动修改它, 使得它总是指向打包缓冲区中尚未使用部分的起始位置. 每次调用
MPI_Pack 后的 position 实际上就是已打包的数据的总长度.
§4.4.2 数据拆包
C
int MPI_Unpack(void *inbuf, int insize, int *position,
void *outbuf, int outcount,
MPI_Datatype datatype, MPI_Comm comm)
Fortran 77
39