【问题标题】:How can I synchronize cores, using mpi4py?如何使用 mpi4py 同步内核?
【发布时间】:2018-02-27 01:11:48
【问题描述】:

我正在使用mpi4py 版本3.0.1a0 运行以下Python 脚本:

from mpi4py import MPI

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


print 'INIT',rank,size
comm.Barrier()
if rank==0:
    bla=4
else:
    bla=None
print 'BEFORE',rank,bla
comm.Barrier()
print 'AFTER',rank,bla

并通过mpiexec -n 16 python test_run.py 将其提交到集群。似乎一切正常,因为我没有收到任何错误,但是,它没有达到我的预期,这意味着它无法识别障碍:

INIT 1 16
BEFORE 1 None
AFTER 1 None
INIT 2 16
BEFORE 2 None
AFTER 2 None
INIT 3 16
BEFORE 3 None
AFTER 3 None
INIT 4 16
BEFORE 4 None
AFTER 4 None
INIT 5 16
BEFORE 5 None
AFTER 5 None
INIT 6 16
BEFORE 6 None
AFTER 6 None
INIT 7 16
BEFORE 7 None
AFTER 7 None
INIT 8 16
BEFORE 8 None
AFTER 8 None
INIT 9 16
BEFORE 9 None
AFTER 9 None
INIT 10 16
BEFORE 10 None
AFTER 10 None
INIT 11 16
BEFORE 11 None
AFTER 11 None
INIT 12 16
BEFORE 12 None
AFTER 12 None
INIT 13 16
BEFORE 13 None
AFTER 13 None
INIT 14 16
BEFORE 14 None
AFTER 14 None
INIT 15 16
BEFORE 15 None
AFTER 15 None
INIT 0 16
BEFORE 0 4
AFTER 0 4

我也尝试添加comm.bcast(bla,root=0),但这也没有做任何事情。为什么mpi4py 无法执行这些任务?

【问题讨论】:

  • 看起来屏障不起作用,但以防万一,你能在屏障之前flush the output 确保它不是缓冲的东西吗?
  • 我刚刚检查了一个不同的 MPI(mpich/3.1.4/intel 而不是 openmpi)它可以工作!无论如何感谢您的帮助

标签: python parallel-processing mpi4py


【解决方案1】:

问题出在 MPI 上。使用 mopish/3.1.4/intel 而不是 openmpi 并使用此方法重新编译 mpi4py,因此这似乎是一个依赖于平台/基础架构的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 2015-05-24
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多