GPU作业#
GPU资源自动检测#
AIP会自动探测集群节点上已经安装的GPU和GPU的一些常用参数,如型号、内存、温度等。
查看集群中的GPU可以使用命令chinfo -g
chinfo -g
命令输出:
HOST_NAME ID MODEL_NAME TotMem FreeMem Temp GUT MUT
win10 0 NVIDIA GeForce RTX 2 5934 5915 22 0.01 0.00
1 NVIDIA GeForce GT 10 2001 1991 17 0.02 0.00
各种不同型号的GPU在AIP内部对应于不同的资源名。如以上的两种GPU对应于两种资源,这些资源名可以用于作业资源需求参数:
cinfo | grep gpu
命令输出:
gpu Number Dec Yes Yes Number of GPUs
ngpus Number Dec No No Number of GPUs
gpuGeForceGT Number Dec Yes Yes GeForce GT 1030
gpuGeForceRTX Number Dec Yes Yes GeForce RTX 2070
以上的例子中,gpu是任何一种型号的GPU,gpuGeForceRTX为集群中的“GeForce RTX 2080”,gpuGeForceGT为集群中的GeForce GT 1030。
提交单机GPU作业#
单机GPU作业请求的GPU数为整个作业使用的GPU卡数。
csub -n 4 -R "rusage[gpu=2] span[hosts=1]" myjob
以上的例子中,-R定义作业资源需求,作业需要4个CPU核,但必须在同一个节点上,整个作业需要2个任意型号的GPU。
csub -n 2 -R "rusage[gpuGeForceRTX=1] span[hosts=1]" myjob
以上例子中,作业需要一个GeForce RTX 2080 GPU,两个CPU核,在同一个节点上。
备注
单节点的作业必须指定 -R span[hosts=1]**
多节点GPU作业#
多节点的GPU请求需要把作业指定到各个任务。提交作业是不用span[hosts=1],请求的GPU数是每个任务的GPU所用的数。例子:
csub -n 16 -R rusage[gpu=0.5] myjob
以上的例子中,作业需要16个CPU核,8块GPU卡,平均2个CPU核1块卡。若第一个节点分配4个核,第二个节点分配12个核,则两个节点上所需的GPU卡数为2和6。
csub -n 4,8 -R rusage[gpu=1] myjob
以上例子中,作业可以最少使用4个CPU核,4个GPU,最多可用8个CPU核,8个GPU(即每个CPU核对应一个GPU卡)。AIP会根据系统资源的情况灵活分配。
GPU资源使用限制#
系统管理员可以在cb.yaml中的general中配置cgroup: gpu来控制作业只能使用被分配的GPU。例子:
general:
cgroup: gpu acct
备注
cgroup: acct用于确保AIP能够跟踪作业的所有进程。
修改cb.yaml后,重启调度器:
aip admin rcs
容器作业GPU的使用缺省就被限制的,不依赖于cb.yaml中cgroup的配置。
VGPU:多任务共享GPU#
对于较强算力的GPU,单个作业可能不能用满其所有算力资源。可以通过GPU共享来提高GPU的资源利用率。
当提交的作业与其他作业共享GPU时,作业请求小于1个GPU:
csub -R rusage[gpu=0.25] myjob
以上的例子中,作业请求0.25个GPU,剩下的0.75个GPU可与其他几个作业作业共享,如与一个0.5 GPU的作业和另一个0.25 GPU的作业共享。
AIP提供两种形式的多任务共享GPU资源控制方式:
1. 分时方式,即时间分片#
每个作业都可以使用整个GPU卡,多个作业按调度器分配的额度(如0.25)与其他作业分时使用同一个GPU。分时由GPU自己控制,类似于CPU一个核上同时跑多个进程的方式。
这种方式是AIP缺省的方式。
2. 物理资源限制#
每个作业可以使用的GPU的算力和显存得到强行的控制。
这种方式需要在相应的队列配置中设置参数“vgpu: y”,具体参考 cb.yaml 。
队列中配置了参数vgpu,并重启调度器后,可以用cqueues -l 队列名 来查看,输出中有vGPU is enabled:
cqueue -l gpu
QUEUE: gpu
-- GPU queue.
PARAMETERS/STATISTICS
PRIO NICE STATUS MAX JL/U JL/P JL/H NJOBS PEND RUN SSUSP USUSP RSV PJOBS
3 0 Open:Active - - - - 0 0 0 0 0 0 0
Schedule delay for a new job is 0 seconds
Interval for a host to accept two jobs is 0 seconds
Cgroup: gpu acct
vGPU is enabled
以下例子中GPU共有6G显存,当作业申请0.25个GPU时,在作业里只能看到1.5G的显存:
csub -R rusage[gpu=0.25] -I nvidia-smi
Job 415 has been submitted to the default queue [medium].
Job 415 is waiting to be started...
Job 415 has started on host amdlinux.
Tue Aug 26 19:14:02 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.65.06 Driver Version: 580.65.06 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 2060 On | 00000000:08:00.0 On | N/A |
| 0% 49C P8 12W / 170W | 0MiB / 1536MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
同样的方法可以用在容器作业中(容器镜像ubuntu,使用NVIDIA Container Toolkit):
csub -R rusage[gpu=0.5] -di ubuntu -do "--runtime=nvidia" -I nvidia-smi
Job 414 has been submitted to the default queue [medium].
Job 414 is waiting to be started...
Job 414 has started on host amdlinux.
Tue Aug 26 19:12:30 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.65.06 Driver Version: 580.65.06 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 2060 On | 00000000:08:00.0 On | N/A |
| 0% 49C P8 12W / 170W | 0MiB / 3072MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+