[英]MPI ranks forking a process
我正在實現一個工作流程,該工作流程的一部分是調用python腳本,並在該python腳本內讓每個級別運行一個可執行文件或python程序。
因此,要測試我編寫了一個簡單的程序,但它無法正常運行。 該代碼如下所述:
helloworld.py
from mpi4py import MPI
import sys
import subprocess
mpi_warn_on_fork = 0
size = MPI.COMM_WORLD.Get_size()
rank = MPI.COMM_WORLD.Get_rank()
name = MPI.Get_processor_name()
for i in range(size):
if rank == i:
command = "python hello.py %d %d %s" % (rank, size, name)
subprocess.call("command", shell = True)
你好
import sys
print "Hello from rank = %s of %s on host %s" %(sys.argv[1], sys.argv[2], sys.argv[3])
然后我使用以下命令調用該程序:mpirun -np 16 python helloworld.py
但是,此實現不起作用,因為在16個派生中只有一個等級具有mpirun運行時,該進程生成有關程序中派生使用的警告消息。
有人可以推薦一些東西,以便我允許每個MPI等級正確執行Shell命令。
編輯:在C / C ++中實現此想法的建議也將起作用。
您不能在helloworld.py
的最后一行引用"command"
(它是變量,而不是字符串)。
command = "python hello.py %d %d %s" % (rank, size, name)
subprocess.call(command, shell = True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.