gpu-burn 使用指南:多 GPU CUDA 压测从零上手
【免费下载链接】gpu-burnMulti-GPU CUDA stress test项目地址: https://gitcode.com/gh_mirrors/gp/gpu-burn
🔍 交付前,先让 GPU 满负荷跑一遍
一台新 GPU 服务器到货后,通常要在一两周内完成验收:每张卡的驱动加载、显存完整性、满载下的长时间稳定性都要确认。若直接把机器投入训练任务,再发现计算错误,定位成本高得多。
gpu-burn 是一个多 GPU 的 CUDA 压力测试工具,同一时间向系统中所有 GPU 施加矩阵运算负载,并逐元素验证计算结果,用于发现潜在的硬件与稳定性问题,支持 Linux 与 Windows 平台。
⏱️ 五分钟跑通第一条压测
先克隆源码并进入项目目录:
git clone https://gitcode.com/gh_mirrors/gp/gpu-burn cd gpu-burn编译只需一条命令,默认按计算能力 7.5 构建:
make产物gpu_burn就绪后,运行 300 秒的默认测试:
./gpu_burn 300 # 预期:每张 GPU 打印 "Testing on GPU" 行,结束时输出 PASS再试一条带参数的命令,指定使用 80% 显存并以双精度运行 600 秒:
./gpu_burn -m 80% -d 600 # 预期:各卡 Memory Usage 约为可用显存的 80%,结束时输出 PASSgpu-burn 多 GPU 压测终端输出
🧮 它到底在测什么
gpu-burn 的核心逻辑并不复杂:在 GPU 上分配一块大矩阵,反复执行大矩阵乘法,让计算单元与显存带宽同时处于满载状态。可以把它概括成两步——先做尽可能重的运算,再逐元素比对结果:
C = C * A * B(重复多轮) compare(C, 参考值):|C[i] - ref[i]| > EPSILON 即记为错误每个阶段结束后,compare.cu中的比对内核会扫描结果矩阵,把与参考值偏差超过阈度的元素计入坏点计数;只要出现坏点,最终结果就是 FAIL。
这与只看nvidia-smi利用率有本质区别:利用率只回答"GPU 有多忙",而 gpu-burn 还回答"忙起来之后算得对不对"。前者无法暴露坏显存、计算单元错误这类问题,后者把计算正确性验证直接放进了压测循环。
常用参数如下:
| 参数 | 含义 |
|---|---|
-m X | 使用 X MB 显存;写成-m N%则使用 N% 的可用显存 |
-d | 使用双精度浮点运算 |
-i N | 只在编号为 N 的 GPU 上执行 |
-tc | 尝试使用 Tensor 核心 |
📦 按部署场景选配置
裸机快速测试:装好 CUDA 工具链后,编译并直接运行即可:
make ./gpu_burn 300容器环境:项目自带 Dockerfile,两行完成镜像构建与运行:
docker build -t gpu-burn . docker run --rm --gpus all gpu-burn 300镜像内已包含 CUDA 运行时,宿主机只需有 GPU 驱动和 Docker 的 GPU 支持。
指定架构编译:Makefile 默认按计算能力 7.5 编译。目标机器较新时显式指定;目标为老架构时同样调低该值,避免内核无法在目标卡上启动:
make COMPUTE=90| 架构 | 代表型号 | COMPUTE |
|---|---|---|
| Turing | RTX 20 系列 | 75 |
| Ampere | RTX 30 系列 / A100 | 86 |
| Ada | RTX 40 系列 | 89 |
| Hopper | H100 | 90 |
Windows 环境:源码在win/目录,使用 CMake 构建后即可在本地运行 gpu-burn。
gpu-burn 运行中 nvidia-smi 监控
👀 跑测试时怎么盯
测试期间,在另一个终端挂上实时刷新:
watch -n 1 nvidia-smi正常的画面是:各卡 Utilization 接近 100%,显存占用与-m参数吻合,温度在一个平台值附近小幅波动。异常信号包括:温度持续攀升而不回落、显存占满或触发 OOM、出现降频提示,以及测试最终输出 FAIL。
温度参考阈值是 85 °C:长时间超过该值,风扇会拉满并可能触发降频,压测结果也会失真。此时减小显存占比、缩短时长即可降载:
./gpu_burn -m 50% 1800🛠️ 踩坑速查
Q: 编译提示找不到 nvcc?A: 用
make CUDAPATH=/usr/local/cuda-12.0指向真实工具链目录。Q: 显存不足报 CUDA error?A: 把
-m调小,例如-m 80%改为-m 60%。Q: 报错 "no kernel image is available"?A: 计算能力不匹配,按目标卡架构重新执行
make COMPUTE=XX。Q: 只想测某一张卡?A: 加
-i N(N 为nvidia-smi中的编号),如./gpu_burn -i 1 600。
📚 相关资源
- README.md:构建变量与命令行选项的完整说明
- Dockerfile:容器镜像的 CUDA 版本与基础镜像参数
- win/README.md:Windows 下的构建步骤
压测时盯两件事:是否满载,以及满载下结果是否依然正确。
【免费下载链接】gpu-burnMulti-GPU CUDA stress test项目地址: https://gitcode.com/gh_mirrors/gp/gpu-burn
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考