我有一些使用MPI的多代理系统。我用mpiexec -np 1 Admin.py : -np 4 Other.py
开始主要演员。每个人”其他.py“还会产生另一个进程。为了提高计算效率,我真的希望生成的进程与父进程在同一个处理器(列组)上。我怎样才能做到这一点?(好奇心:1。默认情况下它们在哪里产生?2是否有办法查看进程运行的位置?)在
我的代码其他.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)
通过提供and info参数来派生,通常可以控制将生成的进程放在何处。在
^{pr2}${info}添加时,{MPI}发生崩溃
根据提供的主机列表(如果没有提供主机列表,则在本地主机上)和分配规则(通常作为
mpiexec
的参数提供)中定义的插槽生成新进程。如果MPI作业在资源管理器(RM)的监督下运行,例如SGE、LSF等,并且MPI库与RM紧密集成,则主机列表和可用插槽由RM修复,MPI_Info
对象中的host
键充当RM指定列表的筛选器(对于Open MPI,至少为true)。在如果不使用RM,您可能应该提供一个主机列表,其中为每个主机定义了足够的插槽。使用openmpi1.6.x,可以使用
add-host
键将新主机添加到列表中。如果在RM下运行,则应发出适当的请求(这是特定于站点的)。在要找出进程的运行位置,请使用
MPI.Get_processor_name()
。在大多数集群系统上,它返回执行调用进程的节点的主机名。在相关问题 更多 >
编程相关推荐