我使用MPI_Sendrecv
MPI函数在进程之间传递数据数组。我使用mpi4py在Python中执行此操作,但我很确定我的问题与所使用的语言无关。
我真正想要的是将驻留在另一个进程上的数组添加到现有的本地数组中。这应该针对所有进程完成,因此我使用MPI_Sendrecv
函数一次发送和接收数组。然后我可以将recvbuf
中收到的数组添加到本地数组中,我就完成了。
如果我可以保存单独的recvbuf
数组的步骤,并且直接将数据直接接收到本地数组而不覆盖现有数据,那将会很好使用某些操作更新它(在我的例子中添加)。
我想我正在寻找的是一个合并的MPI_Sendrecv
/ MPI_Reduce
函数。 MPI中是否存在这样的功能?
答案 0 :(得分:1)
MPI_Recvreduce
正是您正在寻找的。不幸的是,它还不存在。这是MPI论坛一直在考虑增加该标准的未来版本,但尚未被采用,不会出现在即将推出的MPI 3.1中。