【问题标题】:Using scatter of MPI (mpi4py) in Python to split up vector processing在 Python 中使用 scatter of MPI (mpi4py) 来拆分向量处理
【发布时间】:2015-01-30 05:14:29
【问题描述】:

所以这是一个简单的代码 sn-p 对我不起作用,说明期望 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

【问题讨论】:

  • tutorial 转到 range(size)。为什么选择55
  • 查看this问题的答案
  • 有可能您没有 MPI 识别的 55 个节点,在当今大多数笔记本电脑和台式机上,稳定的 2 、 4 或 8 更合理
  • @chrisaycock - 我没有意识到您需要将其分块为节点数大小的函数规范。
  • @AndreySobolev - 谢谢你解决了它。

标签: python mpi


【解决方案1】:

看看底层的 Scatter API 调用:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 2016-07-22
    • 2021-07-09
    • 2019-06-28
    相关资源
    最近更新 更多