在Python中使用MPI(mpi4py)的分散来分割矢量处理

时间:2012-11-26 02:17:45

标签: python mpi

所以这是一个简单的代码片段,对我来说不起作用,说明期待4个项目,得到55个。实际上,我想要一个字符串列表并在n_processes之间拆分这个列表来对它们进行计算。散射怎么可能?

from mpi4py import MPI

comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()

if rank == 0:
   data = [(i+1)**2 for i in range(55)]
comm.Scatter(data, root=0)
print rank, data

1 个答案:

答案 0 :(得分:3)

查看底层的Scatter API调用:

http://www.open-mpi.org/doc/v1.5/man3/MPI_Scatter.3.php

Scatter调用使用list参数将列表的一个元素发送到每个进程。您在列表中有55个硬编码,但听起来您只运行4个进程。将range(55)更改为range(size)(更合适的解决方案)或运行55个流程,以便现有代码正确无误。