收集
MPI_GATHER( sendbuf, sendcount, sendtype, recvbuf, recvcount,
recvtype, root, comm )
IN sendbuf 发送缓冲区起始地址
IN sendcount 发送消息中数据个数
IN sendtype 发送的数据类型
OUT recvbuf 接收缓冲区的起始地址
IN recvcount 接收数据的数目(仅对根处理器有意义)
IN recvtype 接收数据的类型(仅对根处理器由意义)
IN root 接收者(根处理器)
IN comm 通信域
int MPI_Gather( void *sendbuf, int sendcount, MPI_Datatype sendtype,
void *recvbuf, int recvcount, MPI_Datatype recvtype,
int root, MPI_Comm comm );
需要注意的是,recvcount是指根处理器从每个处理器接收的数据的数目,而不是总的数目,它与sendcount应该相同,同时sendtype与recvtype也应该相同。
MPI_GATHER的扩展版本称为MPI_GATHERV,它允许根处理器从每个处理器接收不同数目的数据。详细的接口请参考MPI规范。与ALLGATHER集合通信操作对应的MPI函数为MPI_ALLGATHER,这里也不再详细介绍。
|