GPU 节点使用文档

交我算HPC+AI平台拥有两种 GPU 节点:

  • a100 (思源一号):包含 23 个 GPU 计算节点,每个节点为 NVIDIA HGX A100 4-GPU,每块 A100 默认配置 16 个 CPU 核心。

  • DGX-2 (AI 计算平台):AI 平台的 dgx2 队列含 DGX-2 8 台,每台 DGX-2 配备 16 块 NVIDIA Tesla V100,每块 V100 默认配置 6 个 CPU 核心。通过搭载NVIDIA NVSwitch创新技术, GPU间带宽高达 2.4 TB/s。

本文档将介绍两种 GPU 节点使用方法(作业提交模式、交互模式)及 GPU 利用率查看方法。

a100 节点

基于a100计算节点,平台提供两种 GPU 队列:用于正式计算的a100队列,用于调试的debuga100队列。

a100队列

提交a100队列作业请使用 思源一号登录节点

这是一个 单机单卡 作业脚本,该脚本向 a100 队列申请 1 块 GPU(默认配置 16 个 CPU 核心),并在作业完成时邮件通知。此示例作业中执行的为 NVIDIA Sample中的 cudaTensorCoreGemm

#!/bin/bash

#SBATCH --job-name=test
#SBATCH --partition=a100
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=16
#SBATCH --gres=gpu:1            #若使用 2 块卡,就给 gres=gpu:2
#SBATCH --mail-type=end
#SBATCH --mail-user=YOU@EMAIL.COM
#SBATCH --output=%j.out
#SBATCH --error=%j.err

module load gcc cuda

./cudaTensorCoreGemm

或者也可以申请节点资源进行交互操作,使用如下命令申请一卡 GPU,默认配置 16 CPU 核心:

$ srun -p a100 -N 1 -n 1 --gres=gpu:1 --cpus-per-task=16 --pty /bin/bash
$ module load cuda

小技巧

在登录节点 srun 执行交互作业时可能会断连导致作业中断,建议在 HPC Studio 申请1核心的远程桌面(cpu节点即可),选择好时间,在计算节点来执行 srun

这是一个 多机多卡 作业脚本,该脚本向 a100 队列申请 2 个节点共 8 块 GPU,并在作业 完成时邮件通知。

#!/bin/bash

#SBATCH --job-name=test
#SBATCH --partition=a100
#SBATCH --nodes=2                 #该参数为节点数量
#SBATCH --ntasks-per-node=4       #该参数为每节点进程数
#SBATCH --cpus-per-task=16        #该参数为每进程cpu核心数
#SBATCH --gres=gpu:4              #该参数为每节点GPU卡数
#SBATCH --mail-type=end
#SBATCH --mail-user=YOU@EMAIL.COM
#SBATCH --output=%j.out
#SBATCH --error=%j.err

module load gcc openmpi cuda

mpirun -np 8 ./jacobi

注意

如果需要调用多机多卡,上述作业脚本参数只需要修改节点数量即可,另外运行的程序必须支持跨节点操作,如果程序只支持单机调用GPU,则不是申请几张卡就可以直接同时调用.

debuga100队列

提交debuga100队列作业请使用 思源一号登录节点

debuga100队列是 调试用的队列 ,目前只提供1节点,因此只能投递单节点作业。调试节点将4块a100物理卡虚拟成4*7=28块gpu卡,每卡拥有5G独立显存;节点CPU资源依然为64核,请在作业参数中合理指定gpu与cpu的配比。

投放到此队列的作业 运行时间最长为20分钟 ,超时后会被终止。

调试作业脚本示例:

#!/bin/bash

#SBATCH --job-name=test
#SBATCH --partition=debuga100
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=25
#SBATCH --gres=gpu:5            #最多28gpu卡
#SBATCH --output=%j.out
#SBATCH --error=%j.err

module load gcc cuda

./cudaTensorCoreGemm

DGX-2 节点

基于DGX-2计算节点,平台提供dgx2计算队列用于正式计算。

dgx2队列

提交dgx2队列作业请使用 π 2.0 集群登录节点

这是一个 单机单卡 作业脚本,该脚本向 dgx2 队列申请 1 块 GPU(默认配置 6 个 CPU 核心),并在作业完成时邮件通知。此示例作业中执行的为 NVIDIA Sample中的 cudaTensorCoreGemm

#!/bin/bash

#SBATCH --job-name=test
#SBATCH --partition=dgx2
#SBATCH -N 1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=6
#SBATCH --gres=gpu:1              #若使用 2 块卡,就给 gres=gpu:2
#SBATCH --mail-type=end
#SBATCH --mail-user=YOU@EMAIL.COM
#SBATCH --output=%j.out
#SBATCH --error=%j.err

module load gcc cuda

./cudaTensorCoreGemm

或者也可以申请节点资源进行交互操作,使用如下命令申请一卡 GPU,默认配置 6 CPU 核心:

$ srun -p dgx2 -N 1 -n 1 --gres=gpu:1 --cpus-per-task=6 --pty /bin/bash
$ module load cuda

GPU 利用率查看

GPU 利用率查看,需先登录正在使用的 GPU 计算节点,然后输入 nvidia-smi 查看

以 a100 为例:

$ squeue       # 查看正在计算的 GPU 节点名字,如 gpu03
$ ssh gpu03    # 登录节点
$ nvidia-smi

参考资料


最后更新: 2024 年 11 月 22 日