我正面临这个奇怪的问题。我认为答案不难,但我哪儿也找不到,所以我相信你的建议。在
假设我在文件parallel_func.py
中有一个并行python函数:
def parallel_func():
parser=OptionParser()
parser.add_option("-f", "--file", dest="filename",
help="Input FILE", metavar="FILE")
parser.add_option("--parallel", action="store_true",
help="Specify if we need to initialize MPI",
dest="with_MPI", default=False)
(options, args)=parser.parse_args()
if options.with_MPI == True:
from mpi4py import MPI
comm = MPI.COMM_WORLD
myid = comm.Get_rank()
numberPart = comm.Get_size()
have_MPI = True
else:
comm = 0
myid = 0
numberPart = 1
have_MPI = False
etc. etc.
我可以从shell调用此函数,只需键入:
mpirun -np XX parallel_func.py -f input_file --parallel
现在,有没有一种方法可以将parallel_func作为python脚本中的函数调用,而python脚本不是并行的,并且运行在单核中?我当前的版本可以工作,但只在单核中运行parallel_func:
^{pr2}$长话短说,有没有一种方法可以让我在python函数main
内交流MPI.COMM_WORLD
使parallel_func
正常工作所需的所有信息?在
提前感谢您的回答!!在
您正在寻找动态流程管理。这意味着您可以从单个进程中派生出一些进程,它们形成一个通信器。你可以找到一个example here。这种方法有几个缺点:
在评估如何设计应用程序时要考虑到这一点。在
相关问题 更多 >
编程相关推荐