在SGE集群中运行MPI应用程序时,我必须分配两个进程号参数,一个用于SGE本身,另一个用于OpenMPI。例如:
qrsh -pe <pe_name> <number1> mpirun -np <number2> ./program
命令中number1
和number2
的含义是什么?它们之间的关系是什么?
如果我的MPI应用程序需要128个(number2
个)进程,并且我将16分配给number1
,会发生什么?
编辑:
以下是PE配置:
pe_name impl
slots 999
user_lists NONE
xuser_lists NONE
start_proc_args NONE
stop_proc_args NONE
allocation_rule $round_robin
control_slaves TRUE
job_is_first_task FALSE
urgency_slots min
答案 0 :(得分:1)
答案取决于<pe_name>
并行环境(PE)的配置方式。通常,-pe <pe_name> <number1>
请求<number1>
PE中的<pe_name>
个插槽。每个PE可以配置为在节点上提供固定数量的插槽,或者填充一个节点上的可用插槽,然后移动到下一个节点,以便始终在同一节点上分配插槽,依此类推。 SGE中的插槽通常对应CPU核心,但完全由SGE管理员决定是否属于这种情况。
-np <number2>
告诉Open MPI在MPI作业中启动多少个进程。在许多情况下,此数字应等于所请求的SGE插槽数。如果Open MPI是使用SGE集成构建的,它会自动获取批处理系统授予的插槽总数,并且只在某些特殊情况下才需要明确指定进程数。
同样,这完全取决于如何配置SGE。没有群集的详细信息,例如来自qconf -sp <pe_name>
的输出,你不会得到一个非常具体的答案。