【发布时间】:2019-07-06 15:53:29
【问题描述】:
在 Windows 10 上的 MPI4PY 3.0.0 在 Python 3.7.0 中实现并行算法时,我遇到了 Gatherv 没有收集所有内容的问题......当检查各种位的打印时,它似乎正在执行顺序错误。
我写了一些重复问题的代码:
from mpi4py import MPI
from time import sleep
import random
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
if rank == 0:
sleep(2)
print("head finished sleeping")
comm.Barrier()
sleep(random.uniform(0, 2))
print(rank, 'finished sleeping ')
comm.Barrier()
if rank == 0:
print("All done!")
如果我正确理解comm.Barrier(),这应该会产生
head finished sleeping
2 finished sleeping
0 finished sleeping
3 finished sleeping
1 finished sleeping
4 finished sleeping
All done!
中间位按某种顺序排列,对吗?但是当我实际运行mpiexec -n 5 python .\blocking_test.py 时,我得到如下:
2 finished sleeping
1 finished sleeping
3 finished sleeping
head finished sleeping
0 finished sleeping
All done!
4 finished sleeping
是我误解了comm.Barrier()的用法,还是我的环境有问题?
【问题讨论】:
标签: python windows mpi4py ms-mpi