如何向 SLURM 调度程序请求同一套接字/NUMA 节点上的 CPU?

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

我使用的集群中每个节点都有 2 个插槽,每个插槽上有一个 64 核的 CPU。我的工作扩展建议我的工作最多应使用 64 个核心。我反复遇到这样的问题,有时作业调度程序在一个插槽上给我 48 个内核,在另一个插槽上给我 16 个内核,或者一些更奇怪的配置。这最终导致了性能的显着损失。我想强制 SLURM 在同一套接字或 NUMA 节点上为我提供 CPU,或者我宁愿等待资源可用。

我正在使用 sbatch 提交作业。我检查了文档,在 srun 中你可以指定 cpu 绑定,但我不确定你是否可以在使用 sbatch 时告诉调度程序这样做。

据我了解,mpirun 中的 --bind-to 参数没有帮助,因为 mpirun 只能看到 SLURM 分配给您的资源。

我尝试过像sockets-per-node和--threads-per-socket=64这样的选项。但这些仅适用于节点选择,并且只是最低限度。因此,如果一个节点有一个至少有 64 个核心的套接字,它将将该节点分配给我(我的集群就是这种情况)。我不知道如何更精细地协调资源。

mpi slurm
1个回答
0
投票

除了

sbatch
脚本设置之外,这可能取决于特定的 SLURM 配置。

参见:https://slurm.schedmd.com/cpu_management.html#Example15

#slurm.conf

SelectType=select/cons_tres
SelectTypeParameters=CR_Core,CR_CORE_DEFAULT_DIST_BLOCK
TaskPlugin=task/affinity

srun命令

srun --ntasks=3 --cpus-per-task=3 --ntasks-per-node=1 --cpu-bind=cores 

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