使用mpi4py Sendrecv

时间:2015-08-28 19:27:24

标签: python communication mpi4py

我试图学习mpi4py。以下测试代码对我来说非常简单

#shift.py

from mpi4py import MPI

comm=MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()

nxt = (rank+1)%size
prev = (rank-1)%size

num = rank
num2 = 0

print rank, num

num2 = comm.Sendrecv(num,dest=nxt,source=prev)

print rank, num2

但是运行它......

mpirun -np 4 python shift.py

...从所有过程中引发此错误:

TypeError: message: expecting buffer or list/tuple

我无法在Sendrecv上找到任何相当完整的文档。知道我做错了吗?

1 个答案:

答案 0 :(得分:2)

如果有人感兴趣,事实证明Sendrecv(我使用)和sendrecv(注意小写)是两个不同的例程。 Sendrecv适用于缓冲区。 sendrecv更通用,可以正常运行。我能找到的唯一一个讨论的地方是here