1
代码:为什么Gather()失败,如果每个进程的根本身是自己的?
#mpiexec -n 2 python3 gather.py
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
a = 1
comm.barrier()
b = comm.gather(a, root=rank)
print("b:", b, rank)
comm.barrier()
输出应为:
B:[1,1],0
B:[1,1],1
然而,程序不会打印任何内容并且不会终止。这是什么原因以及如何实现理想的输出?
我认为_every_进程应该指定相同的根(以便他们都知道在哪里发送数据)。现在,每个进程都将自己定义为根,所以他们都认为他们是接收者,只是坐在那里等待别人发送数据。 – mgilson
@mgilson这听起来合乎逻辑。你知道我还有什么可以达到预期的结果吗?我不想使用AllGather()顺便说一句。 – SpiderRico
我认为这取决于期望的结果_is_。通常,想法是将其他进程上的所有数据收集到指定的进程。你知道你想收集数据的过程吗? – mgilson