SLURM - 强制 MPI 在不同的物理 CPU 上安排不同的等级

问题描述 投票:0回答:1

我正在 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 个物理内核?我该如何解决这个问题?

mpi slurm
1个回答
0
投票

您可以使用

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 如果任务需要,可以变量。

© www.soinside.com 2019 - 2024. All rights reserved.