HPC&AI并行计算集群Slurm作业调度系统对通用资源(GRES)的调度

目录

一、概述

二、配置

三、运行作业

 四、自动检测

五、GPU管理

六、MPS管理

七、MIG管理

八、GPU分片


一、概述

Slurm 支持定义和调度任意通用 RESources 的功能 (GRES)。为特定 GRES 类型启用了其他内置功能, 包括图形处理单元 (GPU)、CUDA 多进程服务 (MPS) 设备,并通过可扩展的插件机制进行分片。

二、配置

默认情况下,群集的配置中未启用任何 GRES。 您必须在 slurm.conf 配置文件中明确指定要管理的 GRES。的配置参数 兴趣是 GresTypes 和 Gres

有关详细信息,请参见 slurm.conf 手册页中的 GresTypes 和 Gres

请注意,每个节点的 GRES 规范以相同的方式工作 作为其他资源管理。发现资源较少的节点 than configured 将置于 DRAIN 状态。

示例 slurm.conf 文件的片段:

# Configure four GPUs (with MPS), plus bandwidth
GresTypes=gpu,mps,bandwidth
NodeName=tux[0-7] Gres=gpu:tesla:2,gpu:kepler:2,mps:400,bandwidth:lustre:no_consume:4G

每个具有通用资源的计算节点通常都包含一个 gres.conf 文件,该文件描述节点上可用的资源、它们的计数、 应与这些资源一起使用的关联设备文件和内核。

在某些情况下,您可能希望在节点上定义通用资源 而未指定该 GRES 的数量。例如,文件系统类型 当作业在该节点上运行时,节点的值不会减少。 可以使用 no_consume 标志允许用户请求 GRES 没有定义的计数,该计数在请求时使用。

要查看可用的 gres.conf 配置参数,请参见 gres.conf 手册页

三、运行作业

除非有明确规定,否则不会为作业分配任何通用资源 在作业提交时使用以下选项请求:

--gres 每个节点所需的通用资源

--gpus 每个作业所需的 GPU

--gpus-per-node 每个节点需要的 GPU数。等效于 GPU 的 --gres 选项。

--gpus-per-socket 每个线程需要的 GPU数据。要求作业指定任务套接字

--gpus-per-task 每个任务需要的 GPU数。要求作业指定任务计数。

sallocsbatch 和 srun 命令支持所有这些选项。 请注意,所有 --gpu* 选项仅受 Slurm 的支持 选择/cons_tres插件。 在配置 select/cons_tres 插件时请求这些选项的作业将被拒绝。 --gres 选项需要一个参数来指定哪些通用资源 是必需的,以及有多少资源使用 name[:type:count] 形式,而所有 --gpu* 选项都需要 [type]:count 形式的参数。 名称与 由 GresTypes 和 Gres 配置参数指定。type 标识该通用资源的特定类型(例如 GPU的特定型号)。count 指定需要多少资源,并具有默认值 值为 1。例如: 

sbatch --gres=gpu:kepler:2 ...

在工作中对类型化泛型资源与非类型化泛型资源的请求必须一致 。例如,如果您使用 sbatch 请求 --gres=gpu:2,则无法使用 srun 请求 --gres=gpu:tesla:2 来创建作业步骤。反之亦然, 如果请求类型化 GPU 来创建作业分配,则应请求 用于创建作业步骤的相同类型的 GPU。

此外,还提供了一些其他资源需求规格 专门针对 GPU 和有关这些选项的详细说明是 在作业提交命令的手册页中可用。 至于 --gpu* 选项,这些选项只有 Slurm 的 选择/cons_tres插件。 

--cpus-per-gpu  每个 GPU 分配的 CPU 数

--gpu-bind 定义任务如何绑定到 GPU

--gpu-freq 指定 GPU 频率和/或 GPU 内存频率

--mem-per-gpu 为每个 GPU 分配的内存

将根据需要为作业分配特定的通用资源以满足 请求。如果作业挂起,这些资源将不可用 供其他作业使用。

作业步骤可以从分配给 将 --gres 选项与 srun 命令结合使用作业,如所述 以上。默认情况下,作业步骤将分配所有通用资源 工作已请求的,但当 工作是排他性的。如果需要,作业步骤可以明确指定一个 与作业不同的通用资源计数。 此设计选择基于一个场景,即每个作业执行许多 作业步骤。如果作业步骤被授予对所有通用资源的访问权限,则由 默认情况下,某些作业步骤需要明确指定零通用资源 计数,我们认为这更令人困惑。可以分配作业步骤 特定的通用资源,而这些资源将不对其他人可用 作业步骤。下面显示了一个简单的示例。

#!/bin/bash
#
# gres_test.bash
# Submit as follows:
# sbatch --gres=gpu:4 -n4 -N1-1 gres_test.bash
#
srun --gres=gpu:2 -n2 --exclusive show_device.sh &
srun --gres=gpu:1 -n1 --exclusive show_device.sh &
srun --gres=gpu:1 -n1 --exclusive show_device.sh &
wait

 四、自动检测

如果 AutoDetect=nvmlAutoDetect=rsmiAutoDetect=nrt、 或 AutoDetect=oneapi 在 gres.conf 中设置,配置详细信息 将自动为任何系统检测到的 GPU 填充。这将删除 需要在 gres.conf 中显式配置 GPU,尽管 Gres= 行 仍然需要 slurm.conf 才能告诉 slurmctld 预期有多少 GRE。 请注意,AutoDetect=nvmlAutoDetect=rsmi 和 AutoDetect=oneapi 需

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值