【发布时间】:2018-05-11 10:08:05
【问题描述】:
使用 PBSpro,我可以请求资源来运行我的工作。我的并行集群作业归结为多次运行同一个文件,每次使用不同的索引/作业 ID。每个任务产生自己的子进程,每个任务总共使用 4 个 CPU。这项工作是令人尴尬的并行,每个任务彼此独立,因此非常适合 GNU 并行工具。为了充分利用集群并将我的任务压缩到有空间的地方,我向 PBS 提出资源请求,如下所示:
PBS -l select=60:ncpus=4:mpiprocs=1。生成的 $PBS_NODEFILE 然后包含分配给任务的主机列表。
问题在于 PBSpro 作业管理器可以将多个作业分配给同一个节点,或者仅将一个作业分配给一个节点,并且必须以某种方式将此信息传递给 GNU 并行。使用--sshloginfile $PBS_NODEFILE 这样做并不会传递每个节点上可用的不同资源信息(而且 GNU 并行似乎只使用此列表中的唯一名称)。
出错的地方是 GNU 并行会看到 X 核数(主机/节点的核数),无论是否只有 1 个作业分配给该主机。限制每台主机的作业数量会导致内核空闲时主机使用效率低下,或者在主机上运行的任务多于可用资源超额订阅内核。
问题归结为:
- 如何通过 PBSpro 高效地运行并行任务,
- 每个任务使用超过 1 个 CPU,
- 随机(分配 PBS)选择节点,
- 每个都有不同数量的分配资源,
- 不一定与节点的实际物理资源匹配。
【问题讨论】:
标签: hpc gnu-parallel pbs