指定在哪个主机(列组)上生成MPI进程

2024-10-01 19:21:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些使用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}发生崩溃


Tags: pyinfo代理admin进程系统np效率
1条回答
网友
1楼 · 发布于 2024-10-01 19:21:54

根据提供的主机列表(如果没有提供主机列表,则在本地主机上)和分配规则(通常作为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()。在大多数集群系统上,它返回执行调用进程的节点的主机名。在

相关问题 更多 >

    热门问题