我正在尝试在 Python 上编写一个 MPI 程序来计算邻居值的平均值。
我的算法如下
使用您拥有的邻居初始化值。然后计算邻居值的平均值并从新值中减去。
我写了以下程序
from mpi4py import MPI
import sys
comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()
myvalue=2
sum=0
neighb=1
nvalue=0
if rank == 0 or rank == size-1:
myvalue=1
neighb=myvalue
if rank < size-1:
msg = myvalue
comm.send(msg, dest=rank+1)
sys.stdout.write("rank send %d: %s" % (rank, myvalue))
comm.recv(nvalue,source=rank+1)
sum+=nvalue
sys.stdout.write("rank RECV %d: %s" % (rank, nvalue))
if rank > 0:
comm.recv(nvalue,rank-1)
sum+=nvalue
sys.stdout.write("rank RECV %d: %s" % (rank, nvalue))
comm.send(myvalue,rank-1)
sys.stdout.write("rank send %d: %s" % (rank, myvalue))
avg =sum/neighb
myvalue-=avg
但是程序不工作它卡住了,当我尝试使用以下命令在控制台上运行它时,会出现以下窗口,
mpiexec -n 4 python p2p_linnear.py -m mpi4py