【发布时间】:2015-05-23 07:15:07
【问题描述】:
我使用MPI_Sendrecv MPI 函数在进程之间传递数据数组。我使用 mpi4py 在 Python 中执行此操作,但我很确定我的问题与所使用的语言无关。
我真正想要的是将驻留在另一个进程上的数组添加到现有的本地数组中。这应该对所有进程都进行,所以我使用MPI_Sendrecv 函数一次性发送和接收数组。然后我可以将recvbuf中接收到的数组添加到本地数组中就完成了。
但是,如果我可以省去拥有一个单独的 recvbuf 数组的步骤,并简单地将数据直接接收到本地数组中而不覆盖现有数据,那就太好了,而是更新它使用一些操作(在我的情况下是添加)。
我想我正在寻找的是一个组合的 MPI_Sendrecv/MPI_Reduce 函数。 MPI中是否存在这样的功能?
【问题讨论】:
-
这是一个成对操作——例如,每个等级都有一些需要发生的邻居吗?你能告诉我们更多关于沟通模式的信息吗?