多核多处理器环境中主机和插槽有什么区别?

问题描述 投票:2回答:2

我知道资源管理器(R.M。)将插槽信息传递给openmpi但是

  1. 如何R.M.确定多核处理器中的插槽数(1核= = 1个插槽总是?)和
  2. 如果我在4核处理器上运行a.out,那么有什么区别: myshell $ mpirun --host n1,n1,n1,n1,n1。/ a.out myshell $ mpirun -np 5 --host n1 ./a.out

我的意思是在哪种情况下,我是否“超额订阅”节点?

c++ c multiprocessing mpi openmpi
2个回答
3
投票

谈到资源管理者,例如SLURM,LSF,SGE / OGE,Torque等,插槽和核心之间的映射完全由系统管理员完成。它通常取决于要在节点上执行的作业的性质。在HPC中,大多数任务都是CPU绑定的,通常的映射是每个核心(或每个硬件线程)一个插槽。在数据处理中,大多数任务都受I / O限制,拥有比核心更多的插槽可能更有益。

这同样适用于启动MPI流程。在主机文件中描述主机时,每个主机的插槽数不一定必须与硬件配置相匹配。同样,这取决于MPI工作的性质。插槽信息通常用于控制如何分配排名。例如,Open MPI中的默认策略是填充第一个主机上提供的插槽,然后移动到下一个主机。填充所有主机后,如果还有更多等级要启动,则该过程将从主机列表中的第一个节点再次启动。

--host n1,n1,n1,n1,n1--host n1 -np 5的最终结果是相同的:在主持人n1上发布了5个等级。不同之处在于Open MPI如何解释它。

  • mpiexec --host n1,n1,n1,n1,n1 ./a.out告诉Open MPI主机n1上有5个插槽。由于省略了-np参数,mpiexec每个定义的槽开始一个等级,因此在主机n1开始5个等级。
  • mpiexec --host n1 -np 5 ./a.out告诉Open MPI主机n1上有一个插槽。在n1上推出了一个排名。由于没有剩下的时隙,mpiexec从第一个定义的时隙再次开始,即在主机n1上启动另一个等级。重复这一过程,直到在n1上发布所有5个等级并导致其超额认购。

请注意,该节点仅从MPI库的角度来看是超额订阅的 - 在n1上提供了一个插槽,但它必须在那里开始5个等级。这与超额订阅节点本身无关,即可能有比5更多的CPU空闲内核。

当资源管理器提供主机列表时,超额订阅节点是一个非常糟糕的主意,特别是因为某些或所有节点可能与其他作业共享。在这种情况下,建议使用--nooversubscribe选项以防止mpiexec启动比授予的插槽更多的排名。请注意,虽然存在超额认购的合法案例,例如当节点被专门授予(不与其他作业共享)并且MPI作业是I / O密集型的。


0
投票

您还可以指定每台主机上的可用插槽数:

mpirun -np 5 --host n1:2,n2:3 ./a.out

这将在n1上运行2个进程,在n2上运行3个进程。

© www.soinside.com 2019 - 2024. All rights reserved.