所以这是一个简单的代码片段,对我来说不起作用,说明期望 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
最佳答案
查看底层 Scatter API 调用:
http://www.open-mpi.org/doc/v1.5/man3/MPI_Scatter.3.php
Scatter 调用使用列表参数将列表的一个元素发送到每个进程。您已在列表中硬编码了 55 个元素,但听起来您只运行 4 个进程。将 range(55)
更改为 range(size)
(更合适的解决方案)或运行 55 个进程,以便现有代码正确。
关于python - 在Python中使用MPI(mpi4py)的分散来分割向量处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557806/