Qsub 到具有超过 n 个可用核心的任何节点

Qsub 到具有超过 n 个可用核心的任何节点

我有一个使用 MPI 并行化的程序。它认为它能够在我们基于 (CentOS 6.6) 的 HPC 网格上跨多个节点运行,而实际上它只能在多个内核上成功运行同一计算节点的

例如,如果我qsub向网格请求 20 个核心,并且 Grid Engine 决定将其拆分到两个不同的节点,则程序将失败。但是,如果有一个节点有 20 个可用核心,并且 Grid Engine 将其全部发送到该节点,则程序会成功运行。 qsub 脚本包含#$ -pe mpi 20选择核心数量的命令。

因此,目前,我手动qstat -f -u "*"识别具有 20 个可用核心的计算节点,并使用以下命令提交到该节点:qsub -q general.q@node-X-X

我正在寻找一种方法来告诉 Grid Engine 等待并仅将作业提交到具有所需数量的可用核心的单个计算节点。这将使我能够自动提交作业。

我正在考虑编写一个 bash 脚本来解析该qstat -f -u "*"命令,但必须有一个更优雅的解决方案。我已经浏览了 qsub 手册,但无法找到合适的标志或命令行参数。

我目前无法修改程序本身,而且我不是系统管理员。

以下是我可用的不同软件版本的一些信息:

MPI/gridengine 信息:

> ompi_info | grep gridengine
MCA ras: gridengine (MCA v2.0, API v2.0, Component v1.6.2)

网格引擎版本为:OGS/GE 2011.11p1

答案1

要使 Gridengine 在单个节点上安排 20 个核心作业,您必须创建一个新的并行环境或调整您正在使用的环境。您需要的设置是

allocation_rule    $pe_slots

man sge_pe

如果使用特殊分母 $pe_slots,则必须在单个主机上分配使用 qsub(1) -pe 开关指定的全部进程。

不要忘记将新的 PE 添加到您的队列中。

要解决您的原始问题,在多个节点上运行 MPI 作业,您可以提出第二个问题,其中包含更多详细信息。

答案2

如果您使用-pe smp 20而不是,-pe mpi 20您将使用 SMP(“共享内存并行性”)环境而不是 MPI。

SMP 是一种更简单的并行方法在一台计算机上运行,跨线程共享本地系统内存。因此,它将所有请求的槽放置在单个节点上(如果可用),而不是将它们拆分到多个计算节点上。

对我来说,这似乎已经解决了问题。

相关内容