簡體   English   中英

MPI對流程進行分叉

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM