Skip to content

GPU 节点任务提交

快速命令见章节 快速作业命令

案例在 ~/example,不同gpu目录对应不同的分区

bash
[skl_lcy@login01 example]# ls |grep gpu-
gpu-a800
gpu-h100
gpu-l40
gpu-l48

GPU 节点任务提交(以 L48 为例)

单节点,2 GPU(快速提交)

进入运行目录后,可用 bjmurun-l48 提交快速任务:

bash
bjmurun-l48 1 2 nvidia-smi

含义

  • 1 → 使用 1 个节点
  • 2 → 使用 2 张 GPU
  • nvidia-smi → 在 GPU 上执行的命令

单节点,3 GPU

3GPU的脚本 job-gpu_l48-3.srp 如下:

bash
#!/bin/bash
#SBATCH -J sle131755
#SBATCH -p gpu_l48
#SBATCH -N 1 
#SBATCH -o gg2_%j.out
#SBATCH -e gg2_%j.err
#SBATCH --no-requeue
#SBATCH -A skl_g1
#SBATCH --qos=skll48
#SBATCH --gres=gpu:3
#SBATCH --mincpus=24
nvidia-smi

说明

  • --gres=gpu:3 → 申请 3 张 GPU
  • --overcommit → 允许在分配的 CPU 上运行更多任务
  • --mincpus=21 → 每张 GPU 分配约 8 个 CPU,共 24 个

单节点,4 GPU(独占)

4GPU的脚本 job-gpu_l48-4.srp 如下:

bash
#!/bin/bash
#SBATCH -J sle131755
#SBATCH -p gpu_l48
#SBATCH -N 1 
#SBATCH -o gg2_%j.out
#SBATCH -e gg2_%j.err
#SBATCH --no-requeue
#SBATCH -A skl_g1
#SBATCH --qos=skll48
#SBATCH --gres=gpu:4
#SBATCH --mincpus=32
#SBATCH --exclusive
nvidia-smi

说明

  • --exclusive → 独占整个节点(4 张 GPU + 对应 CPU 核心)

GPU 跨节点使用

  • 当使用 bjmurun-l48 2 ... 提交跨节点任务时,每个节点默认使用 4 张 GPU。

例如:

bash
bjmurun-l48 2 3 nvidia-smi

实际会被替换为:

bash
bjmurun-l48 2 4 nvidia-smi
  • 跨节点时 3 GPU 无效,系统会自动使用 4 GPU。

GPU 分区使用说明

  • 单节点任务

    • 可灵活申请 1–8 张 GPU(如 --gres=gpu:1/2/3/.../8)。
  • 跨节点任务

    • 系统会强制按整节点方式分配 GPU:
      • 每节点 4 卡8 卡
      • 例如:
        • bjmurun-l48 2 3 → 实际分配为 2 节点 × 4 卡 = 8 GPU
        • bjmurun-l48 2 8 → 实际分配为 2 节点 × 8 卡 = 16 GPU

这样做是为了避免资源碎片化,保证分布式 GPU 通信对称,提升稳定性与性能

TIP

  • 单节点 → 可用 1–8 卡
  • 跨节点 → 仅支持整节点分配(4 卡或 8 卡),不支持 3/5/6 卡配置

由北京大学智慧药物平台提供支持