收集

  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,这里也不再详细介绍。