谁能向我解释MPI_Alltoall

时间:2018-10-15 05:10:57

标签: mpi

我注意到它的工作方式与MPI_Scatter类似。但是,我对它如何在流程之间分配数据感到非常困惑。是否可以将MPI_Scatter与另一个集合函数结合使用以达到与MPI_Alltoall相同的结果?

谢谢

1 个答案:

答案 0 :(得分:1)

答案在MPI标准中(5.8,第168页)

  

接收到从进程i发送的第j个块    按进程j放置在recvbuf的第i个块中

     

[...]

     

如果comm是内部交流者,则结果就像每个过程一样   通过调用,向每个进程(包括它自己)执行发送,

MPI_Send(sendbuf+i * sendcount * extent(sendtype),sendcount,sendtype,i, ...)
  

以及来自其他所有进程的调用

MPI_Recv(recvbuf+i * recvcount * extent(recvtype),recvcount,recvtype,i,...)

是的,如果您要使用MPI_Alltoall() comm_size,则可以实现MPI_Scatter()