Skip to content

Latest commit

 

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gpu-flops-bench

多厂商 GPU 稠密 GEMM FLOPS 基准测试工具(NVIDIA CUDA + AMD ROCm)

🤖 本项目的代码编写、GPU 性能测试与更新迭代主要由 AI 完成。

目录结构

gpu-flops-bench/
├── README.md                          # 本文件(统一对比)
├── LICENSE                            # MIT
├── run_bench.sh                       # ⭐ 统一入口(自动检测 GPU 厂商)
├── nvidia/                            # NVIDIA CUDA 版 (cuBLASLt)
│   ├── src/gpu_dense_bench.cu         # 主程序 (C++17, 自给自足, 无需 Python)
│   ├── run_gpu_flops.sh / .bat        # 一键编译+运行
│   ├── GPU_TEST_CHECKLIST.md          # 已测 GPU 检查清单
│   ├── results/                       # 原始测试结果 (md/csv/json)
│   └── tools/run_multi_gpu.py         # 早期 Python 备用脚本
├── amd/                               # AMD ROCm 版 (待实现)
│   └── README.md                      # 占位
└── docs/

已测 GPU

NVIDIA(9 款,按算力从高到低排序)

GPU 架构 CC 显存 FP64 FP32 TF32 BF16 FP16 INT8 E4M3 NVFP4
H200 NVL Hopper 9.0 141G 59.0 47.3 426 853 854 1630 1661 —
RTX PRO 6000 Blackwell 12.0 96G 1.5 83.6 225 458 457 845 905 1608
RTX 5090 Blackwell 12.0 32G 1.8 83.2 126 254 254 906 774 1617
RTX PRO 5000 Blackwell 12.0 48G 1.0 52.4 140 257 260 552 557 1064
RTX 5090 D v2 Blackwell 12.0 24G 1.7 83.7 119 241 241 665 661 1177
RTX 6000D Blackwell 12.0 84G 1.3 67.5 72 151 150 391 288 946
RTX 4090 Ada Lovelace 8.9 24G 1.3 57.6 90 179 179 676 354 —
GB10 (Spark) Grace Blackwell 12.1 128G 0.4 21.2 43 102 105 155 220 373
RTX 3060 Ampere 8.6 12G 0.2 10.3 13 27 27 95 — —

单位: TFLOPS(INT8 为 TOPS) GB10 为统一内存(CPU+GPU 共享) 数据为 cuBLASLt dense GEMM 实测值(非稀疏,isolated 隔离测试) 完整精度数据见 GPU_TEST_CHECKLIST.md

v2 版(新增检测维度:mma.sync 与 GEMM (cuBLASLt) 双列)

2026-10-04 用本工具 v2 在 B300 8 卡、PRO 6000 和 RTX 6000D 上实测。GEMM 列走 cuBLASLt(tcgen05 dispatch),mma 列走 mma.sync 内核(legacy warp-level)。

GPU 架构 CC 显存 FP64 FP32 TF32 BF16 BF16
mma
FP16 INT8 FP8
E4M3
FP8
E4M3 mma
NVFP4 INT4 FP4
E2M1
B300 SXM6 AC SM103 10.3 275G 1.05 68.8 1101 2235 551 2235 151 4377 1958 10441 74 N/A
RTX PRO 6000 SM120 12.0 96G 1.53 80.6 225 457 462 457 882 906 924 1619 235 924
RTX 6000D SM120 12.0 84G 1.28 66.7 72 176 146 144 472 386 291 947 141 379

单位: TFLOPS(INT8/INT4 为 TOPS) B300 8 卡一致性:BF16 2233-2235、NVFP4 10360-10476(±0.2%);8 卡 concurrent 聚合线性度≥99.7%

架构发现:

  • SM120 (PRO 6000) 上 mma.sync ≈ GEMM(满速):BF16 462 vs 457、FP8 924 vs 906——消费级 Blackwell 的 mma.sync 与 cuBLASLt 走同一硬件路径
  • RTX 6000D(SM120 出口版,156 SM,驱动 590.48.01):mma/GEMM 比值 BF16 0.83(146/176)、FP8 0.75(291/386)——低于 PRO 6000 的 ≈1.0,仍远高于 B300 的 0.25~0.45,落在 SM120 模式内。该卡 INT8 (472) > FP8 (386)、BF16 (176) > FP16 (144),排序与 PRO 6000 相反;NVFP4 947 为该卡最高吞吐。BF16 176 与 2026-08 另一台 RTX 6000D 的 v1 实测 151 同量级(两台不同机器独立复现)
  • SM103 (B300) 上 mma.sync 只有 GEMM 的 25-45%:BF16 551 vs 2235 (25%)、FP8 1958 vs 4377 (45%)——数据中心 Blackwell 需 tcgen05.mma(cuBLASLt dispatch),mma.sync 是 legacy 降档路径
  • B300 INT8 = 151 TOPS(所有标准 API 路径一致:mma.sync ≈ cuBLASLt INT32I ≈ 149-152),远低于 FP8 的 4377。硬件 spec INT8 ≈ FP8 ≈ 4500 TOPS(同一 8-bit tensor core),纯粹是 cuBLASLt 未给 INT8 dispatch tcgen05。实际 8-bit 推理推荐用 FP8 E4M3 替代(同一硬件,29× 快于 INT32I)
  • B300 低精度整数全面弱项:INT8 = 151 TOPS(vs PRO 6000 的 882,仅 17%)、INT4 = 74 TOPS(vs PRO 6000 的 235,仅 31%)——SM103 上低精度整数(INT8/INT4)的 mma.sync 和 cuBLASLt 路径均无 tcgen05 dispatch,与 BF16/FP8 高精度路径形成鲜明对比。8-bit 以下量化推理在 B300 上应用 FP8 E4M3(4377 TFLOPS)或 NVFP4(10441 TFLOPS)替代
  • FP4 E2M1:PRO 6000 有值 924(CC 12.0 的 mma.sync kind::f8f6f4),B300 N/A(CC 10.3)
  • INT8 F32acc(混合精度)在 B300 上仅 40 TOPS,比 INT32I 还差——证实不是计算类型问题,是 INT8 整体无 tcgen05 路径

AMD(待测)

GPU 架构 状态
MI300X CDNA3 待测

运行方式

统一入口(推荐)

bash run_bench.sh               # 自动检测 GPU 厂商并运行
bash run_bench.sh --quick       # 快速模式
bash run_bench.sh --device 0    # 只测 GPU 0

自动检测 GPU 类型(NVIDIA / AMD),调用对应子工具:

检测到 调用 编译器 BLAS 库
NVIDIA nvidia/run_gpu_flops.sh nvcc cuBLASLt
AMD amd/run_gpu_flops.sh (待实现) hipcc hipBLASLt

NVIDIA(单独运行)

cd nvidia
bash run_gpu_flops.sh           # 编译 + 运行(自动检测 GPU 架构)
bash run_gpu_flops.sh --quick   # 快速模式(每精度只测一个尺寸)

无需安装 Python。编译时链接 NVML(-lnvidia-ml,CUDA Toolkit 自带)。

AMD(待实现)

cd amd
bash run_gpu_flops.sh           # 待实现

测新 GPU 后的操作步骤

详见 nvidia/GPU_TEST_CHECKLIST.md

环境要求

  • NVIDIA: CUDA Toolkit 13.0+, NVIDIA 驱动
  • AMD: ROCm 6.0+(待实现)

About

Multi-vendor GPU dense GEMM FLOPS benchmark (NVIDIA CUDA + AMD ROCm)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages