2014-03-19 40 views
1

我知道,资源管理器(R.M。)传递插槽信息的openmpi但mulicore-multiprocessor环境中的主机和插槽有什么区别?

  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

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

+0

这是在MPI常见问题(https://www.open-mpi.org/faq/?category=running#oversubscribeing) – mfro

+0

中回答的常见问题解答并没有明确区分处理器(multi-uni)的基础上的#核心 所以要精确。 是不是说“不核心”==没有。的插槽? –

+0

我认为可以安全地在MPI环境中说#processors = #cores – mfro

回答

3

说到资源管理器,例如SLURM,LSF,SGE/OGE,Torque等,插槽和内核之间的映射完全留给系统管理员。它通常取决于要在节点上执行的作业的性质。在大多数任务受CPU限制的HPC中,通常的映射是每个内核(或每个硬件线程)一个插槽。在数据处理中,大多数任务都是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每个定义的插槽开始一个等级,因此5个等级在主机n1处开始。
  • 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密集型时。

相关问题