首页 > 解决方案 > 谁能向我解释 MPI_Alltoall

问题描述

我注意到它的工作方式与MPI_Scatter. 但是,我对它如何在进程之间分配数据感到很困惑。是否可以MPI_Scatter与另一个集体功能结合使用以达到与 相同的结果MPI_Alltoall

谢谢

标签: mpi

解决方案


答案在 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()如果这是您所要求的,您可以实施。


推荐阅读