2

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

4

1 回答 1

6

如果有人感兴趣,原来 Sendrecv(我使用)和 sendrecv(注意小写)是两个不同的例程。Sendrecv 使用缓冲区。sendrecv 更加通用,并且适用于我正在尝试做的事情。我能找到讨论的唯一地方是这里

于 2015-08-28T20:27:05.007 回答