NVIDIA GPU 硬件压力测试实战:gpu‑burn 完整使用文档与踩坑排错

0. 项目介绍

项目地址:https://github.com/wilicc/gpu-burn

gpu‑burn 是面向 NVIDIA CUDA GPU 的多 GPU 压力测试工具。通过大规模矩阵乘法把 GPU 算力、显存打满,用来检测 GPU 硬件稳定性、显存故障、散热降频问题;仅支持 Linux,不支持 AMD、Windows。

1. 环境依赖

  1. NVIDIA 显卡,支持 CUDA
  2. 安装 CUDA Toolkit(需要 nvcc 编译器)
  3. gcc/g++ 编译工具链
  4. 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. 注意事项

  1. 发热极大:长时间压测务必确认散热正常,防止过热降频甚至硬件损坏;服务器注意风道风扇。
  2. 显存设置:不要设置‑m 100%,会触发 OOM 崩溃;建议 70‑90%。
  3. 短测(30‑60s)用于快速硬件上电验收;长时间稳定性测试建议 2‑8 小时。
  4. -d双精度模式,很多消费级显卡 FP64 算力很低,负载会上不去;HPC 服务器卡适合‑d。
  5. -tc仅对支持 TensorCore 显卡生效,老显卡该参数无效。
  6. 中断测试:Ctrl‑C终止程序。
  7. 该工具只跑 CUDA 计算,不是图形渲染压力测试,不测试显卡图形单元。
相关推荐
游戏开发爱好者83 天前
带签名时间戳接口的重放与压力测试实战,用动态值在发送前现算签名
网络协议·计算机网络·网络安全·ios·adb·https·压力测试
郭庆汝5 天前
大模型压力测试脚本
压力测试
CIAS5 天前
uniontechos-server-20 1050 u2a install
uos·统信
汽车仪器仪表相关领域5 天前
SIRIUS R1DB/R2DB便携式一体化数据采集系统
大数据·人工智能·功能测试·深度学习·压力测试
汽车仪器仪表相关领域6 天前
KRYPTON坚固型IP67 EtherCAT总线数据采集模块:工业级分布式采集方案
分布式·功能测试·汽车·压力测试·可用性测试
Amir_zy6 天前
Redis测试方法全攻略:冒烟、压测与稳定性验证
redis·压力测试
奔跑中的小象13 天前
统信UOS 系统AISBench大模型评测工具使用手册
uos·aibench
Hy行者勇哥14 天前
Coze 搭建【软件测试助手 Skill】可行分析及操作实践
测试工具·压力测试