我想通过mpi4py在一些处理器之间分割大量的单个任务。 下面的例子可以说明我的意图:
from mpi4py import MPI
import numpy
from numpy import random
comm=MPI.COMM_WORLD
rank=comm.Get_rank()
size=comm.Get_size()
def doSomething(x):
return numpy.sum(x)
if rank==0:
v=random.random((3,3))
print 'thats v_random:\n', v
for i in range(len(v)):
comm.send(v[i],dest=i)
data=comm.recv(source=0)
print 'my rank is {0} and my output is {1}\n'.format(rank,doSomething(data))
就我用len(v)==procs的数量来执行它,一切都很好。 但是当v=随机。随机((100,3))它显然不起作用。这通常是如何实现的?在
提前谢谢。在
我在博士期间用Fortran编写了一些MPI代码来模拟粒子的轨迹,我们只是作弊了一点,总是把模拟中的粒子数设为2的幂次方,这样它们就可以在处理器上平均分配。在
好吧,我找到了一些解决办法。我很确定这不是最优雅的方式,但我不知道如何用另一种方式来完成它。因此,如果有人遇到同样的问题,这里有一个丑陋但有效的解决方案:
相关问题 更多 >
编程相关推荐