我知道资源管理器(R.M。)将插槽信息传递给openmpi,但
如果我在4核处理器上运行a.out,那么有什么区别:
我的意思是在哪种情况下,我是"超额订购"节点?
答案 0 :(得分: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密集型时。
答案 1 :(得分:0)
您还可以指定每个主机上的可用插槽数:
mpirun -np 5 --host n1:2,n2:3 ./a.out
这将在n1上运行2个进程,在n2上运行3个进程。