首页 > 解决方案 > SLURM:我应该如何理解 ntasks 参数?

问题描述

我正在使用 AWS 上的 SLURM 使用集群。我定义了以下参数:

#!/bin/sh
[...]
#SBATCH --ntasks=216
#SBATCH --constraint=c5n.18xlarge

现在我应该怎么理解ntasks?这个参数到底是什么?它与 vCPU 的数量有什么关系?因此,将提供多少节点?

AFAIK,它与 vCPU 的数量不对应,因为我尝试选择 72 的倍数(c5n.18xlarge有 72 个 vCPU),并且它与配置的 EC2 实例的数量不对应。

我看到我还可以使用其他参数,例如:

#SBATCH --ntasks-per-node=2
#SBATCH --cpus-per-task=1

但同样,这个ntasks参数对我来说仍然不清楚。有关信息,然后按照 AWS 研讨会中的建议,我使用集群使用$SLURM_NTASKS变量运行 openmpi 进程,即:

mpirun -np $SLURM_NTASKS some_process

谢谢你的帮助

标签: amazon-web-servicesamazon-ec2slurm

解决方案


在 Slurm 中,任务的数量本质上是您可以在分配中启动的并行程序的数量。默认情况下,每个任务可以访问一个 CPU(可以是核心或线程,取决于配置),可以使用--cpus-per-task=#.

这本身并没有告诉您有关您将获得的节点数量的任何信息。如果您仅指定--ntasks(或仅指定-n),则您的工作将分布在许多节点上,具体取决于可用的内容。您可以使用--nodes #min-#max/--nodes #exact. 指定任务数量的另一种方法是--ntasks-per-node,它完全按照所说的进行,最好与--nodes. (--ntasks,否则它是每个节点的最大任务数!)

因此,如果您想要三个节点和 72 个任务(每个任务都有一个默认 CPU),请尝试:

#SBATCH --ntasks=216
#SBATCH --nodes=3
#SBATCH --constraint=c5n.18xlarge

或者:

#SBATCH --ntasks-per-node=72
#SBATCH --nodes=3
#SBATCH --constraint=c5n.18xlarge

推荐阅读