【问题标题】:Requesting integer multiple of "M" cores per node on SGE在 SGE 上为每个节点请求整数倍的“M”个核心
【发布时间】:2016-01-27 02:50:51
【问题描述】:

我想向 SGE 提交一个多线程 MPI 作业,而我正在运行的集群有不同的节点,每个节点都有不同的内核数。假设每个进程的线程数是 M(对于 OpenMP,M == OMP_NUM_THREADS)我如何请求提交到 SGE 队列的作业以这样一种方式运行,即在每个节点中,M 的整数倍分配给我的工作?

假设 M=8,MPI 任务数为 5(因此总共需要 40 个内核)。在这个集群中,有 4、8、12 和 16 个核心的节点。那么这个组合就OK了:

2*(8-core nodes) + 1*(16-core nodes) + 0.5*(16-core nodes)

但当然不是这些:

2*(4-core nodes) + 2*(8-core nodes) + 1*(16-core node)
2*(12-core nodes) + 1*(16-core node)
(3/8)*(8-core nodes) + (5/8)*(8-core nodes) + 2*(16-core node)

PS:还有另一个类似的问题,比如这个:(MPI & pthreads: nodes with different numbers of cores),但我的问题不同,因为我必须为每个 MPI 进程运行恰好 M 个线程(想想混合 MPI+OpenMP)。

最好的方案是在同一种节点上专门运行这个作业。但是为了加快启动时间,我想让这个作业在不同类型的节点上运行,前提是每个节点都有整数*M 个内核分配给作业。

【问题讨论】:

    标签: multithreading mpi openmp hpc sungridengine


    【解决方案1】:

    SGE 中的分配策略是在每个并行环境 (PE) 的基础上指定的。每个 PE 都可以配置为以特定方式填充集群节点上可用的插槽。使用-pe pe_name num_slots 参数请求特定PE,然后SGE 尝试按照pe_name PE 的分配策略查找num_slots 插槽。不幸的是,没有简单的方法可以为每个节点请求整数倍的槽。

    为了能够准确为每个主机请求M 插槽(而不是M 的倍数),您的 SGE 管理员(或者您,如果您是 SGE 管理员)必须首先创建一个新的PE,我们称之为mpi8ppn,将其allocation_rule设置为8,然后将PE分配给每个集群队列。然后,您必须使用-pe mpi8ppn 40 将作业提交给该 PE,并指示 MPI 运行时每个主机仅启动一个进程,例如-npernode 1 用于 Open MPI。

    如果上述情况不太可能发生,您的另一个(不可靠)解决方案是为每个插槽请求非常高的内存量,接近每个节点的内存量,例如-l h_vmem=23.5G。假设节点配置了 24 GiB 的 h_vmem,此请求将确保 SGE 无法在每台主机上安装多个插槽。因此,如果您想在 5 个节点上启动混合作业,您只需向 SGE 索要 5 个插槽和每个插槽 23.5G vmem

    qsub -pe whatever 5 -l h_vmem=23.5G <other args> jobscript
    

    #$ -pe whatever 5
    #$ -l h_vmem=23.5G
    

    此方法不可靠,因为它不允许您选择具有特定内核数的集群节点,并且仅当所有节点都配置了小于 47 GB 的h_vmem 时才有效。 h_vmem 在这里仅作为示例 - 任何其他每个插槽的消耗品属性都应该这样做。以下命令应该让您了解定义了哪些主机联合体以及它们在集群节点上的值是什么:

    qhost -F | egrep '(^[^ ])|(hc:)'
    

    该方法最适用于 node_mem = k * #coresk 在所有节点上保持不变的集群。如果一个节点提供两倍的核心数量但也有两倍的内存,例如48 GiB,那么上面的请求会在这些节点上给你两个槽。

    我并没有声称完全了解 SGE,而且我的知识可以追溯到 SGE 6.2u5 时代,因此现在可能存在更简单的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-29
      • 2018-10-29
      • 2018-05-19
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 2018-03-15
      相关资源
      最近更新 更多