【问题标题】:How to concatenate lists from different ranks into a single list in rank 0?如何将来自不同等级的列表连接到等级 0 的单个列表中?
【发布时间】:2019-07-26 11:29:39
【问题描述】:

我正在创建不同等级的本地列表并将它们收集到等级 0。我想创建一个主列表,其中包含按顺序包含本地列表的元素。

我目前的代码如下

from mpi4py import MPI

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

local_list = [i for i in range(rank*2, (rank+1)*2)]

master = []
master = comm.gather(local_list, root=0)
if rank == 0:
    print(master)

在使用 4 个处理器运行此代码时,我得到的输出为:

[[0, 1], [2, 3], [4, 5], [6, 7]]

但我想要的输出是:

[0, 1, 2, 3, 4, 5, 6, 7]

【问题讨论】:

    标签: python list parallel-processing concatenation mpi4py


    【解决方案1】:

    我不确定mpi4py 包的作用,但您可以使用以下代码来展平您的列表:

    flat_list = [item for sublist in master for item in sublist]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 2014-09-12
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多