【发布时间】:2014-01-11 05:16:46
【问题描述】:
我有某种使用 MPI 的多代理系统。我以mpiexec -np 1 Admin.py : -np 4 Other.py 开头主要演员。每个“other.py”还产生一个多进程。为了计算效率,我真的很想在与父级相同的处理器(等级)上生成生成的进程。我怎样才能做到这一点? (出于好奇:1. 它们默认生成在哪里?2. 有没有办法查看进程在哪里运行?)
我的 Other.py 代码包含以下内容(无 MWE)
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
...
icomm = MPI.COMM_SELF.Spawn(sys.executable,args["front_process.py",str(rank)],\
maxprocs=1)
通过向 Spawn 提供和 info 参数,您通常可以控制将生成的进程放置在何处。
myinfo = MPI.Info.Create()
myinfo.Set("host","%s" % str(rank) )
icomm = MPI.COMM_SELF.Spawn(sys.executable,args=["front_process.py",str(rank)],\
maxprocs=1,info=myinfo)
但是,当添加此“信息”时,MPI 崩溃:All nodes which are allocated for this job are already filled.
【问题讨论】: