我正在 SLURM 下的 8 节点集群上运行实验。每个 CPU 有 8 个物理内核,并且具有超线程能力。使用
运行程序时#SBATCH --nodes=8
#SBATCH --ntasks-per-node=8
mpirun -n 64 bin/hello_world_mpi
它在同一个物理核心上安排两个等级。添加选项
#SBATCH --ntasks-per-cpu=1
给出错误,SLURM 说“批量作业提交失败:请求的节点配置不可用”。它是否以某种方式只为每个节点分配 4 个物理内核?我该如何解决这个问题?
您可以使用
sinfo -o%C
查看集群中可用的CPU信息。
我无法在文档中找到 SBATCH 的任何
--ntasks-per-cpu
。您可以为 SBATCH --ntasks-per-core
尝试以下选项。根据文档:
--ntasks-per-core= 请求在每个核心上调用最大的 ntasks。旨在与 --ntasks 选项一起使用。与 --ntasks-per-node 相关,除了 核心级别而不是节点级别。这个选项将是 由srun继承。
你也可以试试
--cpus-per-task
.
c, --cpus-per-task= 通知 Slurm 控制器后续的作业步骤将需要每个任务的处理器数量。如果没有这个选项, 控制器只会尝试为每个任务分配一个处理器。
另请注意:
从22.05开始,srun不会继承--cpus-per-task salloc 或 sbatch 请求的值。必须再次请求它 使用 SRUN_CPUS_PER_TASK 环境调用 srun 或 set 如果任务需要,可以变量。