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 将自动检测文件、核心、链接和任何其他硬件。如果在使用 AutoDetect 时指定了 File、Cores 或 Links 等参数,则指定的值将用于对自动检测值进行合理性检查。如果存在不匹配,则节点的状态将设置为无效,并且节点将被排空。
如果使用此选项,则必须一起指定插槽* 中的所有核心。 虽然 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#)一致。
如果要支持通用资源分配的强制执行(即防止用户使用分配给其他用户的资源),则通常需要此字段。 文件分配的强制执行依赖于 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 代替。File 和 MultipleFiles 是互斥的。
注意:所有 gpu 类型的 GRES 都需要 File。
注意:如果您在某个节点上为资源指定了 File 参数,则该选项必须在所有节点上指定,Slurm 将跟踪每个节点上每个特定资源的分配。否则,Slurm 只会跟踪分配资源的数量,而不是每个单独设备文件的状态。
注意:在更改带有 File 参数的记录数量之前,请排空节点(例如,如果您想从节点的配置中添加或删除 GPU)。 未能这样做将导致使用这些 GRES 的任何作业被中止。
注意:在指定 File 时,Count 的大小限制为每个节点(当前为 1024)。
当前允许的值包括:
-
- 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 特定的环境变量。此选项与所有其他与环境相关的标志互斥。
在一行 GRES 上设置的与环境相关的标志将被直接下面的 GRES 行继承,如果该行未指定与环境相关的标志,并且它与同一节点、名称和类型相同。对于同一节点、名称和类型的 GRES,环境相关的标志必须相同。
请注意,AMD ROCm 运行时存在一个已知问题,其中 ROCR_VISIBLE_DEVICES 首先被处理,然后 CUDA_VISIBLE_DEVICES 被处理。为了避免由此引起的问题,请为 AMD GPU 设置 Flags=amd_gpu_env,以便仅设置 ROCR_VISIBLE_DEVICES。
这是一个可选值,通常在启用 AutoDetect 时自动确定。 典型用例是识别具有 NVLink 连接的 GPU。 请注意,对于 GPU,由操作系统分配的次要编号(在设备文件中使用,即 /dev/nvidiaX 中的 X)不一定与设备编号/索引相同。设备编号是通过按 PCI 总线 ID 对 GPU 进行排序,然后从最小总线 ID 开始编号。 请参见 https://slurm.schedmd.com/gres.html#GPU_Management
在更改带有 MultipleFiles 参数的记录数量之前,请排空节点,例如在添加或删除 GPU 时。 未能这样做将导致使用这些 GRES 的任何作业被中止。
在不使用具有 MIG 功能的 GPU 时,请使用 File 代替。 MultipleFiles 和 File 是互斥的。
注意:如果使用自动检测功能并在您的 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