【发布时间】:2016-07-05 15:06:36
【问题描述】:
如何修改以下代码(改编自http://materials.jeremybejarano.com/MPIwithPython/pointToPoint.html),以便root = 0 接收每个comm.Send 实例并打印输出。目前只接收到第一个发送命令。
#passRandomDraw.py
import numpy
from mpi4py import MPI
from mpi4py.MPI import ANY_SOURCE
import numpy as np
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
if rank == 0:
randNum = numpy.zeros(1)
print "Process before receiving random numbers"
else:
for i in range(0,np.random.randint(1,10),1):
randNum = numpy.zeros(1)
randNum = numpy.random.random_sample(1)
print "Process", rank, "iteration", i, "drew the number", randNum[0]
comm.Send(randNum, dest=0)
if rank == 0:
comm.Recv(randNum, ANY_SOURCE)
print "Process", rank, "received the number", randNum[0]
【问题讨论】:
-
只是为了澄清/确认。我是否假设您没有机会事先知道每个等级将发送多少条消息,即使是在等级本身上也是如此?
-
理想情况下,我想从每个等级发送消息,而不必知道该等级将发送多少消息。如果这不可行,则可以计算在等级内将发送多少条消息,但对于每个等级来说这将是不同的。