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

标签 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

最佳答案

查看底层 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/

相关文章:

ubuntu - libmpi_mpifh.so.12 : cannot open

julia - 如何使用 MPI 执行 Julia 脚本?

python - 使用 Python 实例化 TensorFlow 模型时出现 google.protobuf.text_format.ParseError

python - 桌面(基于控制台)应用程序的 Facebook 身份验证

python - 读取 csv 文件的状态栏

c++ - MPI 中发送消息数量未知时,如何接收?

C 如何为 MPI 程序创建 Makefile?

python - Python 打开图像错误

python - 在 Python Tools for Visual Studio (PTVS) 中调试 python 代码时如何抑制控制台窗口?

c - MPI_Gatherv 无法正常工作