我知道资源管理器(R.M。)将插槽信息传递给openmpi但是
我的意思是在哪种情况下,我是否“超额订阅”节点?
谈到资源管理者,例如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密集型的。
您还可以指定每台主机上的可用插槽数:
mpirun -np 5 --host n1:2,n2:3 ./a.out
这将在n1上运行2个进程,在n2上运行3个进程。