gres.conf

节:Slurm 配置文件 (5)
更新:Slurm 配置文件
索引

 

名称

gres.conf - Slurm 的通用资源 (GRES) 管理配置文件。

 

描述

gres.conf 是一个 ASCII 文件,描述每个计算节点上通用资源 (GRES) 的配置。 如果 slurm.conf 文件中的 GRES 信息无法完全描述这些资源,则应在每个计算节点上包含一个 gres.conf 文件。对于云节点,包含所有云节点的 gres.conf 文件必须在所有云节点和控制器上存在。该文件将始终位于与 slurm.conf 相同的目录中。

如果 slurm.conf 文件中的 GRES 信息完全描述了这些资源(即不需要为该 GRES 类型指定“核心”、“文件”或“链接”),则可以省略该信息,只有 slurm.conf 文件中的配置信息将被使用。 如果 slurm.conf 文件中的配置信息完全描述了所有 GRES,则可以完全省略 gres.conf 文件。

如果使用 gres.conf 文件来描述可用节点的资源,则行上的第一个参数应为 NodeName。如果在不指定节点的情况下配置通用资源,则行上的第一个参数应为 Name

参数名称不区分大小写。 配置文件中“#”后面的任何文本都被视为注释,直到该行的末尾。 对配置文件的更改在 Slurm 守护进程重启、守护进程接收到 SIGHUP 信号或执行命令“scontrol reconfigure”时生效,除非另有说明。

注意:Slurm 对 gres/[mps|shard] 的支持需要使用 select/cons_tres 插件。有关如何配置 MPS 的更多信息,请参见 https://slurm.schedmd.com/gres.html#MPS_Management。 有关如何配置分片的更多信息,请参见 https://slurm.schedmd.com/gres.html#Sharding

有关 GRES 调度的一般信息,请参见 https://slurm.schedmd.com/gres.html

可用的整体配置参数包括:

AutoDetect
启用自动 GRES 配置的硬件检测机制。 当前选项包括:
nrt
自动检测 AWS Trainium/Inferentia 设备。

nvidia
自动检测 NVIDIA GPU。无需库,但无法检测 MIGs 或 NVlinks。自 Slurm 24.11 起添加。

nvml
自动检测 NVIDIA GPU。需要 NVIDIA 管理库 (NVML)。

off
不自动检测任何 GPU。用于覆盖其他选项。

oneapi
自动检测 Intel GPU。需要 Intel Graphics Compute Runtime for oneAPI Level Zero 和 OpenCL 驱动程序 (oneapi)。

rsmi
自动检测 AMD GPU。需要 ROCm 系统管理接口 (ROCm SMI) 库。

AutoDetect 可以单独放在一行中,在这种情况下,它将默认全局应用于 gres.conf 中的所有行。此外,AutoDetect 可以与 NodeName 结合,仅适用于某些节点。特定节点的 AutoDetect 将优先于全局 AutoDetect。每个节点只需指定一次特定节点的 AutoDetect。如果对同一节点多次指定,则它们必须具有相同的值。要在设置全局 AutoDetect 的情况下取消设置节点的 AutoDetect,只需在特定节点的 GRES 行中将其设置为“off”。 例如:NodeName=tux3 AutoDetect=off Name=gpu File=/dev/nvidia[0-3]AutoDetect 不能与云节点一起使用。

AutoDetect 将自动检测文件、核心、链接和任何其他硬件。如果在使用 AutoDetect 时指定了 FileCoresLinks 等参数,则指定的值将用于对自动检测值进行合理性检查。如果存在不匹配,则节点的状态将设置为无效,并且节点将被排空。

Count
该节点上可用的此名称/类型资源的数量。 默认值设置为指定的 File 值的数量(如果有),否则默认值为 1。可以使用后缀“K”、“M”、“G”、“T”或“P”将数字乘以 1024、1048576、1073741824 等。 例如:“Count=10G”。

Cores
可选地指定与可以使用此资源的特定插槽* 匹配的核心索引号。

如果使用此选项,则必须一起指定插槽* 中的所有核心。 虽然 Slurm 可以在 CPU 或线程级别跟踪和分配资源,但其用于与 CPU 共同分配 GRES 设备的调度算法在作业分配时是在插槽* 级别操作的。 因此,无法优先将 GRES 分配给同一插槽* 上的不同特定 CPU。

*插槽可以用 NUMA 节点替代,使用 SlurmdParameters=numa_node_as_socket 或 l3cache 和 SlurmdParameters=l3cache_as_socket。

可以使用逗号分隔的列表指定多个核心,或使用“-”分隔符指定范围(例如“0,1,2,3”或“0-3”)。 如果作业指定了 --gres-flags=enforce-binding,则只有识别的核心可以与每个通用资源分配。这将有助于提高作业的性能,但会延迟资源的分配。 如果指定且作业未使用 --gres-flags=enforce-binding 选项提交,则识别的核心将被优先用于与每个通用资源的调度。

如果指定了 --gres-flags=disable-binding,则可以使用任何核心与资源,这也会提高 Slurm 的调度算法速度,但可能会降低应用程序性能。 当前需要使用 --gres-flags=disable-binding 选项来使用绑定到 GRES 的 CPU 数量超过的情况(例如,如果 GPU 绑定到一个插槽的 CPU,但需要在多个插槽上运行作业的资源)。 如果任何核心都可以有效地与资源一起使用,则请勿为 Slurm 调度逻辑提高速度而指定 cores 选项。 更改 Cores 选项需要重启 slurmctld 才能生效。

注意:由于 Slurm 必须能够在具有各种处理单元编号方案的异构集群上执行资源管理,因此必须指定逻辑核心索引,而不是物理核心索引。 该逻辑核心索引可能与您的物理核心索引号不对应。 核心 0 将是第一个插槽上的第一个核心,而核心 1 将是第一个插槽上的第二个核心。 此编号与在“lstopo -l”命令输出中看到的逻辑核心编号(核心 L#)一致。

File
与资源关联的设备文件的完全合格路径名。 名称可以包括一个数字范围后缀,由 Slurm 解释(例如 File=/dev/nvidia[0-3])。

如果要支持通用资源分配的强制执行(即防止用户使用分配给其他用户的资源),则通常需要此字段。 文件分配的强制执行依赖于 Linux 控制组(cgroups)和 Slurm 的任务/cgroup 插件,该插件将分配的文件放入作业的 cgroup 中,并防止使用其他文件。 有关更多信息,请参见 Slurm 的控制组指南:https://slurm.schedmd.com/cgroups.html

如果指定了 File,则 Count 必须设置为指定的文件名数量或不设置(默认值为指定文件的数量)。 对此的例外是 MPS/分片。对于这两种 GRES,每个 GPU 将通过设备文件使用 File 参数进行识别,Count 将指定与该 GPU 对应的条目数量。对于 MPS,通常为 100 或 100 的某个倍数。对于分片,通常为可以同时共享该 GPU 的作业的最大数量。

如果使用具有多实例 GPU 功能的卡,请使用 MultipleFiles 代替。FileMultipleFiles 是互斥的。

注意:所有 gpu 类型的 GRES 都需要 File

注意:如果您在某个节点上为资源指定了 File 参数,则该选项必须在所有节点上指定,Slurm 将跟踪每个节点上每个特定资源的分配。否则,Slurm 只会跟踪分配资源的数量,而不是每个单独设备文件的状态。

注意:在更改带有 File 参数的记录数量之前,请排空节点(例如,如果您想从节点的配置中添加或删除 GPU)。 未能这样做将导致使用这些 GRES 的任何作业被中止。

注意:在指定 File 时,Count 的大小限制为每个节点(当前为 1024)。

Flags
可以指定的可选标志,以更改 GRES 的配置行为。

当前允许的值包括:

CountOnly
不要尝试加载 GRES 类型的插件,因为此 GRES 将仅用于跟踪使用的 GRES 数量。这避免了尝试加载不存在的插件,这可能会影响具有高延迟元数据操作的文件系统。

注意:如果某个 gres 配置了此标志,则它是全局的,因此所有其他具有该 gres 的节点将隐含此标志。

explicit
如果设置了该标志,则在整个节点分配中不会将 GRES 分配给作业(--exclusive 或在分区上设置的 OverSubscribe=EXCLUSIVE),除非作业明确请求。

注意:如果某个 gres 配置了此标志,则它是全局的,因此所有其他具有该 gres 的节点将隐含此标志。

one_sharing
用于共享 gres。如果在共享 gres(gpu)上使用共享 gres(mps),则仅允许共享 gres 中的一个被共享 gres 使用。这是 MPS 的默认值。

注意:如果某个 gres 配置了此标志,则它是全局的,因此所有其他具有该 gres 的节点将隐含此标志。此标志与特定 gres 的 all_sharing 不兼容。

all_sharing
用于共享 gres。这与 one_sharing 相反,可以用于允许节点上的所有共享 gres(gpu)用于共享 gres(mps)。

注意:如果某个 gres 配置了此标志,则它是全局的,因此所有其他具有该 gres 的节点将隐含此标志。此标志与特定 gres 的 one_sharing 不兼容。

nvidia_gpu_env
为指定节点上的所有 GPU 设置环境变量 CUDA_VISIBLE_DEVICES

amd_gpu_env
为指定节点上的所有 GPU 设置环境变量 ROCR_VISIBLE_DEVICES

intel_gpu_env
为指定节点上的所有 GPU 设置环境变量 ZE_AFFINITY_MASK

opencl_env
为指定节点上的所有 GPU 设置环境变量 GPU_DEVICE_ORDINAL

no_gpu_env
不设置 GPU 特定的环境变量。此选项与所有其他与环境相关的标志互斥。

如果未指定任何与环境相关的标志,则 nvidia_gpu_envamd_gpu_envintel_gpu_envopencl_env 将默认隐式设置。 如果使用 AutoDetect 且未指定与环境相关的标志,则 AutoDetect=nvmlAutoDetect=nvidia 将设置 nvidia_gpu_envAutoDetect=rsmi 将设置 amd_gpu_env,而 AutoDetect=oneapi 将设置 intel_gpu_env。 相反,指定的与环境相关的标志将始终覆盖 AutoDetect

在一行 GRES 上设置的与环境相关的标志将被直接下面的 GRES 行继承,如果该行未指定与环境相关的标志,并且它与同一节点、名称和类型相同。对于同一节点、名称和类型的 GRES,环境相关的标志必须相同。

请注意,AMD ROCm 运行时存在一个已知问题,其中 ROCR_VISIBLE_DEVICES 首先被处理,然后 CUDA_VISIBLE_DEVICES 被处理。为了避免由此引起的问题,请为 AMD GPU 设置 Flags=amd_gpu_env,以便仅设置 ROCR_VISIBLE_DEVICES

Links
一个以逗号分隔的数字列表,标识该设备与其他设备之间的连接数量,以允许更好连接设备的共同调度。 这是一个有序列表,其中该特定设备与设备编号 0 的连接数量将位于第一个位置,与设备编号 1 的连接数量将位于第二个位置,依此类推。 -1 表示设备本身,0 表示没有连接。 如果指定,则该行只能包含一个 GRES 设备(即只能通过 File 包含一个文件)。

这是一个可选值,通常在启用 AutoDetect 时自动确定。 典型用例是识别具有 NVLink 连接的 GPU。 请注意,对于 GPU,由操作系统分配的次要编号(在设备文件中使用,即 /dev/nvidiaX 中的 X)不一定与设备编号/索引相同。设备编号是通过按 PCI 总线 ID 对 GPU 进行排序,然后从最小总线 ID 开始编号。 请参见 https://slurm.schedmd.com/gres.html#GPU_Management

MultipleFiles
与资源关联的设备文件的完全合格路径名。 使用多实例 GPU (MIG) 技术的显卡将呈现多个设备文件,这些文件应作为单个通用资源进行管理。文件名可以是以逗号分隔的列表,或可以包括数字范围后缀(例如 MultipleFiles=/dev/nvidia[0-3])。

在更改带有 MultipleFiles 参数的记录数量之前,请排空节点,例如在添加或删除 GPU 时。 未能这样做将导致使用这些 GRES 的任何作业被中止。

在不使用具有 MIG 功能的 GPU 时,请使用 File 代替。 MultipleFilesFile 是互斥的。

Name
通用资源的名称。可以使用任何所需的名称。 名称必须与 slurm.conf 中的 GresTypes 中的值匹配。 每个通用资源都有一个可选插件,可以提供特定于资源的功能。 当前包括可选插件的通用资源有:
gpu
图形处理单元

mps
CUDA 多进程服务 (MPS)

nic
网络接口卡

shard
GPU 的分片

NodeName
可以使用可选的 NodeName 规范,允许一个 gres.conf 文件用于集群中的所有计算节点,通过指定每行应适用的节点。 NodeName 规范可以使用 Slurm 主机列表规范,如下面的示例所示。

Type
可选的任意字符串,用于标识通用资源的类型。 例如,这可以用于识别特定型号的 GPU,用户可以在作业请求中指定。 要使 Type 选项的更改生效,所有受影响的 slurmd 守护进程必须响应 slurmctld。 否则,需要重启 slurmctldslurmd 守护进程。

注意:如果使用自动检测功能并在您的 gres.conf 文件中定义 Type,则指定的 Type 应与检测到的值匹配或为其子字符串,使用下划线替代任何空格。

 

示例

##################################################################
# Slurm 的通用资源 (GRES) 配置文件
# 定义支持 MPS 的 GPU 设备,并进行自动检测合理性检查
##################################################################
AutoDetect=nvml
Name=gpu Type=gtx560 File=/dev/nvidia0 COREs=0,1
Name=gpu Type=tesla  File=/dev/nvidia1 COREs=2,3
Name=mps Count=100 File=/dev/nvidia0 COREs=0,1
Name=mps Count=100  File=/dev/nvidia1 COREs=2,3

##################################################################
# Slurm 的通用资源 (GRES) 配置文件
# 覆盖系统默认值并显式配置三个 GPU
##################################################################
Name=gpu Type=tesla File=/dev/nvidia[0-1] COREs=0,1
# Name=gpu Type=tesla  File=/dev/nvidia[2-3] COREs=2,3
# 注意:nvidia2 设备已停用
Name=gpu Type=tesla  File=/dev/nvidia3 COREs=2,3

##################################################################
# Slurm 的通用资源 (GRES) 配置文件
# 为所有计算节点使用单个 gres.conf 文件 - 积极方法
##################################################################
## 显式指定节点 tux0-tux15 上的设备
# NodeName=tux[0-15]  Name=gpu File=/dev/nvidia[0-3]
# 注意:tux3 nvidia1 设备已停用
NodeName=tux[0-2]  Name=gpu File=/dev/nvidia[0-3]
NodeName=tux3  Name=gpu File=/dev/nvidia[0,2-3]
NodeName=tux[4-15]  Name=gpu File=/dev/nvidia[0-3]

##################################################################
# Slurm 的通用资源 (GRES) 配置文件
# 使用 NVML 收集 GPU 配置信息
# 除一个节点外的所有节点
##################################################################
AutoDetect=nvml
NodeName=tux3 AutoDetect=off Name=gpu File=/dev/nvidia[0-3]

##################################################################
# Slurm 的通用资源 (GRES) 配置文件
# 指定一些节点使用 NVML,一些使用 RSMI,一些不使用自动检测
##################################################################
NodeName=tux[0-7] AutoDetect=nvml
NodeName=tux[8-11] AutoDetect=rsmi
NodeName=tux[12-15] Name=gpu File=/dev/nvidia[0-3]

##################################################################
# Slurm 的通用资源 (GRES) 配置文件
# 定义“带宽” GRES 以限制
# 这些节点的资源使用,以便于工作流
##################################################################
NodeName=tux[0-7] Name=bandwidth Type=lustre Count=4G Flags=CountOnly

 

版权

版权所有 (C) 2010 加州大学理事会。 在劳伦斯利弗莫尔国家实验室制作(参见免责声明)。
版权所有 (C) 2010-2022 SchedMD LLC。

该文件是 Slurm 的一部分,资源管理程序。 有关详细信息,请参见 <https://slurm.schedmd.com/>。

Slurm 是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它;许可证的第 2 版或(根据您的选择)任何更高版本。

Slurm 的分发是希望它将是有用的,但不提供任何担保;甚至没有适销性或特定用途适用性的隐含担保。有关更多详细信息,请参见 GNU 通用公共许可证。

 

另请参见

slurm.conf(5)


 

索引

名称
描述
示例
版权
另请参见

该文档由 man2html 使用手册页创建。
时间:2025 年 7 月 02 日 13:21:55 GMT