SLURM:我应该如何理解 ntasks 参数?

SLURM : how should I understand the ntasks parameter?

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

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

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

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

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

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

但我还是不清楚 ntasks 参数。有关信息,然后我使用集群 运行 使用 $SLURM_NTASKS 变量的 openmpi 进程,如 AWS 研讨会中所建议的那样,即:

mpirun -np $SLURM_NTASKS some_process

感谢您的帮助

在 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