mpi4py Sendrecv 的使用

Usage of mpi4py Sendrecv

正在尝试学习 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 的相当完整的文档。知道我做错了什么吗?

如果有人感兴趣,就会发现 Sendrecv(我使用的)和 sendrecv(注意小写)是两个不同的例程。 Sendrecv 使用缓冲区。 sendrecv 更通用,可以很好地处理我正在尝试做的事情。我唯一能找到这个讨论的地方是 here.