0. 项目介绍
gpu‑burn 是面向 NVIDIA CUDA GPU 的多 GPU 压力测试工具。通过大规模矩阵乘法把 GPU 算力、显存打满,用来检测 GPU 硬件稳定性、显存故障、散热降频问题;仅支持 Linux,不支持 AMD、Windows。
1. 环境依赖
- NVIDIA 显卡,支持 CUDA
- 安装 CUDA Toolkit(需要 nvcc 编译器)
- gcc/g++ 编译工具链
- NVIDIA 显卡驱动(建议 ≥450)
环境验证:
bash
# 查看nvcc版本
nvcc -v
# 查看NVIDIA驱动信息和CUDA版本信息
nvidia-smi
2. 获取源码 & 编译
2.1 git 下载编译
bash
# clone 源码
git clone https://github.com/wilicc/gpu-burn
# 进入源码目录
cd gpu-burn
# 开始编译
make
编译完成生成可执行文件 ./gpu_burn
2.2 自定义编译参数
bash
# 指定算力架构(默认COMPUTE=7.5) COMPUTE 为显卡算力,A100=8.0;A10=8.6;H100=9.0;3090=8.6
make COMPUTE=8.0
# 指定CUDA安装路径
make CUDAPATH=/usr/local/cuda‑12.8
# 指定gcc路径
make CCPATH=/usr/local/bin
# 附加nvcc编译参数
make NVCCFLAGS=-ccbin /usr/bin/g++‑11
2.3 Docker 方式(无需本地安装 CUDA)
bash
git clone https://github.com/wilicc/gpu-burn
cd gpu-burn
docker build -t gpu_burn .
# 运行,--gpus all授予容器GPU访问权限
docker run --rm --gpus all gpu_burn
自定义镜像参数:
make IMAGE_NAME=local/gpu‑burn CUDA_VERSION=12.8 IMAGE_DISTRO=UOS image
3. 命令语法
./gpu_burn [OPTIONS] [TIME]
TIME:压测时长,单位秒;不写 TIME 默认运行 10 秒。
3.1 参数列表
| 参数 | 说明 |
|---|---|
-m X |
使用 X MB 显存进行测试 |
-m N% |
使用 N% 可用显存(推荐 50‑90%,不要 100% 避免 OOM) |
-d |
使用双精度 FP64运算;默认单精度 FP32 |
-tc |
尝试启用 Tensor Core(显卡硬件必须支持,Volta 及以后架构) |
-l |
列出本机所有 GPU 编号,直接退出,不执行压测 |
-i N |
仅测试 GPU N(N 为 nvidia‑smi 中 GPU 序号,从 0 开始) |
-h |
打印帮助信息退出 |
3.2 常用示例
bash
# 示例1:全部GPU压测60秒(快速自检)
./gpu_burn 60
# 示例2:全部GPU,双精度,压测1小时(3600秒)
./gpu_burn -d 3600
# 示例3:只测试GPU 0,占用80%显存,压测300秒
./gpu_burn -i 0 -m 80% 300
# 示例4:启用Tensor Core,全部GPU运行120秒
./gpu_burn -tc 120
# 示例5:查看本机GPU列表
./gpu_burn -l
# 示例6:指定占用16384MB显存,压测300秒
./gpu_burn -m 16384 300
# 示例7:后台运行,输出日志保存到文件
nohup ./gpu_burn 1800 > burn.log 2>&1 &
# 示例8:指定显卡进行压测
CUDA_VISIBLE_DEVICES=1,2 ./gpu_burn 300
运行输出结果示例:
Using compare file: compare.fatbin
Burning for 60 seconds.
GPU 0: NVIDIA A100-PCIE-40GB (UUID: GPU-ed9de99c-6fcf-81d9-5bf6-11062b82d7f4)
GPU 1: NVIDIA A100-PCIE-40GB (UUID: GPU-2f018e58-25a7-4bcb-898d-de6880dc114a)
GPU 2: NVIDIA A100-PCIE-40GB (UUID: GPU-f5bae7f5-396d-4a39-52c3-3ff587da0916)
GPU 3: NVIDIA A100-PCIE-40GB (UUID: GPU-dacbfb3e-94aa-bd7f-1b4c-c92dd0bc678d)
cuInit returned 0 (no error)
cuInit returned 0 (no error)
cuInit returned 0 (no error)
cuInit returned 0 (no error)
Initialized device 0 with 40442 MB of memory (40000 MB available, using 36000 MB of it), using FLOATS
Results are 268435456 bytes each, thus performing 138 iterations
Initialized device 2 with 40442 MB of memory (40000 MB available, using 36000 MB of it), using FLOATS
Results are 268435456 bytes each, thus performing 138 iterations
Initialized device 1 with 40442 MB of memory (40000 MB available, using 36000 MB of it), using FLOATS
Results are 268435456 bytes each, thus performing 138 iterations
Initialized device 3 with 40442 MB of memory (40000 MB available, using 36000 MB of it), using FLOATS
Results are 268435456 bytes each, thus performing 138 iterations
15.0% proc'd: 138 (16210 Gflop/s) - 0 (0 Gflop/s) - 0 (0 Gflop/s) - 0 (0 Gflop/s) errors: 0 - 0 - 0 - 0 temps: 47 C - 49 C - 47 C - 50 C
Summary at: 2026年 08月 19日 星期三 09:37:45 CST
30.0% proc'd: 276 (18244 Gflop/s) - 138 (15789 Gflop/s) - 138 (16008 Gflop/s) - 138 (15698 Gflop/s) errors: 0 - 0 - 0 - 0 temps: 53 C - 54 C - 53 C - 55 C
Summary at: 2026年 08月 19日 星期三 09:37:54 CST
41.7% proc'd: 276 (18244 Gflop/s) - 276 (17902 Gflop/s) - 276 (18253 Gflop/s) - 276 (17835 Gflop/s) errors: 0 - 0 - 0 - 0 temps: 56 C - 57 C - 56 C - 58 C
Summary at: 2026年 08月 19日 星期三 09:38:01 CST
56.7% proc'd: 552 (18113 Gflop/s) - 414 (17800 Gflop/s) - 414 (18104 Gflop/s) - 414 (17732 Gflop/s) errors: 0 - 0 - 0 - 0 temps: 60 C - 61 C - 60 C - 62 C
Summary at: 2026年 08月 19日 星期三 09:38:10 CST
71.7% proc'd: 690 (17992 Gflop/s) - 552 (17656 Gflop/s) - 552 (18014 Gflop/s) - 552 (17626 Gflop/s) errors: 0 - 0 - 0 - 0 temps: 64 C - 65 C - 64 C - 66 C
Summary at: 2026年 08月 19日 星期三 09:38:19 CST
83.3% proc'd: 690 (17992 Gflop/s) - 690 (17547 Gflop/s) - 690 (17880 Gflop/s) - 690 (17460 Gflop/s) errors: 0 - 0 - 0 - 0 temps: 66 C - 67 C - 66 C - 68 C
Summary at: 2026年 08月 19日 星期三 09:38:26 CST
100.0% proc'd: 966 (17793 Gflop/s) - 828 (17491 Gflop/s) - 828 (17766 Gflop/s) - 828 (17336 Gflop/s) errors: 0 - 0 - 0 - 0 temps: 69 C - 71 C - 69 C - 72 C
Summary at: 2026年 08月 19日 星期三 09:38:36 CST
100.0% proc'd: 966 (17793 Gflop/s) - 966 (17393 Gflop/s) - 966 (17687 Gflop/s) - 828 (17336 Gflop/s) errors: 0 - 0 - 0 - 0 temps: 71 C - 73 C - 71 C - 73 C
Killing processes with SIGTERM (soft kill)
Freed memory for dev 3
Uninitted cublas
Freed memory for dev 0
Uninitted cublas
Freed memory for dev 2
Uninitted cublas
Freed memory for dev 1
Uninitted cublas
done
Tested 4 GPUs:
GPU 0: OK
GPU 1: OK
GPU 2: OK
GPU 3: OK
71.7%:测试进度proc'd:完成的矩阵运算迭代次数Gflop/s:实际浮点算力errors:错误计数,必须为 0;大于 0 代表硬件异常temps:每块 GPU 当前温度℃OK:测试无错误,通过FAULTY:检测到运算错误,显卡 / 显存存在故障风险,需要进一步排查 ECC、硬件、供电、散热。
⚠️ 重点:只要
errors >0就说明 GPU 不稳定,不等于一定物理损坏,需要排除超频、电源不足、过热降频后复测。
4. 注意事项
- 发热极大:长时间压测务必确认散热正常,防止过热降频甚至硬件损坏;服务器注意风道风扇。
- 显存设置:不要设置
‑m 100%,会触发 OOM 崩溃;建议 70‑90%。 - 短测(30‑60s)用于快速硬件上电验收;长时间稳定性测试建议 2‑8 小时。
-d双精度模式,很多消费级显卡 FP64 算力很低,负载会上不去;HPC 服务器卡适合‑d。-tc仅对支持 TensorCore 显卡生效,老显卡该参数无效。- 中断测试:
Ctrl‑C终止程序。 - 该工具只跑 CUDA 计算,不是图形渲染压力测试,不测试显卡图形单元。