Skip to content

About

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

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

49 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(11 款,按算力从高到低排序)

GPU 架构 CC 显存 FP64 FP32 TF32 BF16 FP16 INT8 E4M3 NVFP4
B300 SXM6 Blackwell 10.3 275G 1.05 68.8 1101 2235 2235 151 4377 10441
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 3090 Ampere 8.6 24G 0.57 30.1 41 83 83 307 — —
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)。2026-10-06 补充 RTX 3090(SM86)与 RTX 4090(SM89,8 卡实测)。

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
RTX 3090 SM86 8.6 24G 0.57 30.1 41 83 83 83 307 N/A N/A N/A 661 N/A
RTX 4090 SM89 8.9 24G 1.25 57.2 89 178 181 175 672 352 360 N/A 1434 N/A

单位: 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)
  • RTX 3090(SM86,2026-10-06 补测):BF16 GEMM ≈ mma(83 ≈ 83)——Ampere 与 SM120 一样 mma.sync 满速,legacy 路径不降档;INT4 661 = 2× INT8 GEMM(307),Ampere 时代 INT4 仍是满速加速路径(对照 SM120 的 INT4 235/141、SM103 的 74 全面降速);FP8/NVFP4/FP4 需 CC 8.9+/12.0+,均 N/A;FP32 走 SGEMM 30.1(访存受限,低于理论 FMA 峰值属正常口径差异)
  • RTX 4090(SM89,128 SM,8 卡一致性 ±1.7%):mma/GEMM 比值 BF16 1.02(181/178)、FP8 1.02(360/352)——Ada 与 Ampere/SM120 同属"mma.sync 满速"阵营,四代里只有数据中心 SM103 把 legacy 路径降档。INT4 mma = 1434 TOPS ≈ 2.1× 其 INT8(672)——Ada 延续 4-bit 传统 2× 收益,至此三代对照完整:Ampere 661(2.2×)/Ada 1434(2.1×)/Blackwell 74235(0.080.27×,INT4 mma 快路径在 Blackwell 上被砍掉两个数量级,低比特整数全面让位 FP8/NVFP4)。NVFP4/FP4 E2M1 在 SM89 均无路径(N/A)
  • INT8 F32acc(混合精度)在 B300 上仅 40 TOPS,比 INT32I 还差——证实不是计算类型问题,是 INT8 整体无 tcgen05 路径

Tensor 发射限速解锁(RTX 4090 48G · RTX 3090,2026-10-25)

测试机:8 × RTX 4090 48G(改装,10de:2684,驱动 595.71.05,CUDA 13.2), GPU 侧 FEAT_OVR_PLM 的 SM 发射率限制(FP16/BF16/TF32 Tensor 路径限半速 档位)已解除。GEMM 列为 cuBLASLt isolated 单卡中位数(矩阵 8192³,FP64 为 4096³,--quick);mma 列为 mma.sync 发射率内核(--precisions *_mma / int4)。v2 表的 RTX 4090(24G 零售卡)为未解锁参考: 另一台测试机:单卡 RTX 3090(GA102 零售卡,ASUS,功耗墙 390W,驱动 615.78.08,CUDA 13.3),gpu-unlock v1.0.0 同机冷启动切换锁定/解锁做 A/B, 口径同上(GEMM 8192³ 完整模式,FP64 6144³):

GPU 架构 CC 显存 FP64 FP32 TF32 BF16 BF16
mma
FP16 INT8 FP8
E4M3
FP8
E4M3 mma
NVFP4 INT4 FP4
E2M1
RTX 4090 48G 解锁 SM89 8.9 48G 1.2 56.7 151 191 346 233 608 526 715 N/A 1428 N/A
RTX 3090 锁定 SM86 8.6 24G 0.56 30.1 41 82 83 82 296 N/A N/A N/A 661 N/A
RTX 3090 解锁 SM86 8.6 24G 0.57 30.0 77 144 165 145 294 N/A N/A N/A 661 N/A

单位: TFLOPS(INT8/INT4 为 TOPS) 相对未解锁参考(v2 表 24G 零售卡):GEMM 列 TF32 89→151、FP16 175→233、 BF16 178→191、E4M3 352→526;mma 列 BF16 181→346(×1.9)、E4M3 360→715 (×2.0)——发射率层面 ×2 复现,GEMM 层面受功率墙只兑现一部分。INT8 672→608、INT4 1434→1428、FP64/FP32 变化在跨机(48G 改装 vs 24G 零售) 差异范围内,整数与 CUDA Core 路径不受该发射限制影响。NVFP4/FP4 E2M1 在 SM89 无路径(N/A)。 RTX 3090 解锁 vs 锁定(同机同日,GEMM 列取完整模式 8192³ 行,与 4090 行 口径一致):GEMM 列 TF32 41→77(×1.87)、BF16 82→144(×1.76)、FP16 82→145(×1.77);解锁态 16384³ 时 BF16/FP16 可达 158/159(×1.9,解锁后 大矩阵更优)。mma 列 BF16 83→165(×2.0)。对照组 FP64/FP32/INT8 (296→294)/INT8 mma(331→331)/INT4(661→661)持平,输出校验全部 PASS。FP8/NVFP4/FP4 E2M1 在 SM86 无路径(N/A)。 2026-10-25 晚独立 quick 复测(--quick,两次冷启动切换两态)完全复现: TF32 ×1.88、BF16 GEMM ×1.76、BF16 mma ×1.99、INT8/INT4/INT8 mma 持平, 与已登记值差 ≤±2.4%(quick 与完整模式的固有噪声)。数据见 nvidia/results/3090_quick_locked/、3090_quick_unlocked/ 及比对说明。 解锁操作与同机 A/B 实录存内部私有仓,此处仅登记实测结果。

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