繁体   English   中英

mpi4py的收集是否创建一个具有与等级匹配的元素的列表?

[英]Does mpi4py's gather create a list with elements matching ranks?

我在程序中使用了mpi4py。 我使用n> 1个内核运行该程序,每个内核都有自己的列表(我们可以将其称为“ core_specific_list”。我希望等级0的内核将所有列表收集在一个大列表中,我们可以将其称为“ big_list” 。

我用(只是定义变量)启动程序:

from mpi4py import MPI
comm = MPI.COMM_WORLD

因此,为了使大清单做到这一点,我让每个核心调用:

big_list = comm.gather(core_specific_list, root = 0)

确实会按预期创建big_list(每个元素都是其他等级的core_specific_list之一)。 而且似乎每个列表元素都按发送它的等级排序(也就是说,big_list的元素0是等级0的core_specific_list,依此类推)。

问题:但是这个假设正确吗? 也就是说,big_list中的元素j是等级j的core_specific_list吗? (我知道我可以像以前一样在某些情况下对此进行测试,但我需要绝对确保我可以依靠此假设)

谢谢。

您绝对可以依靠该行为,因为这正是MPI_GATHER调用(由comm.gather包装)的工作方式。 根据MPI标准的第5.5节:

根进程接收消息并按等级存储它们。

...

另一种描述是,由组中的进程发送的n消息按等级顺序连接,并且结果消息由根接收,就像通过调用MPI_RECV(recvbuf, recvcount·n, recvtype, ...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM