【发布时间】:2016-09-22 18:21:54
【问题描述】:
我有一段代码使用 mpi4py 生成多个 mpi 可执行文件的实例。我希望代码在这些进程完成时暂停,然后调用第二组相同的可执行文件。
问题是对 mpi 可执行文件的所有调用都会立即产生。
似乎没有办法使用屏障来防止这种情况发生。有谁知道这是否正确,如果正确,是否有人有一个聪明的主意来获得我需要的结果。
#!/usr/bin/env python
from mpi4py import MPI
import numpy
import sys
import os
rank = MPI.COMM_WORLD.Get_rank()
new_comm = MPI.COMM_WORLD.Split(color=rank, key=rank)
print(new_comm.Get_rank())
cwd=os.getcwd()
directory=os.path.join(cwd,str(rank))
print(rank,directory)
os.chdir(directory)
new_comm.Spawn("SOME_F90_MPI_EXECUTABLE",
args=None,
maxprocs=4)
'''I want to pause here until the spawned processes finish running...'''
new_comm.Barrier()
MPI.COMM_WORLD.Barrier()
print(new_comm.Get_rank())
cwd=os.getcwd()
directory=os.path.join(cwd,str(rank))
print(rank,directory)
os.chdir(directory+"_2")
new_comm.Spawn("SOME_F90_MPI_EXECUTABLE",
args=["> output"],
maxprocs=4)
new_comm.Disconnect()
print("All finished here.....")
谢谢!
【问题讨论】:
标签: python parallel-processing mpi mpi4py