Back to blog

Benchmarking and Dissecting the Nvidia Hopper GPU Architecture

对 Nvidia Hopper GPU 架构进行全面基准测试,揭示 Tensor Core、DPX、分布式共享内存等新特性的性能特征

Benchmarking and Dissecting the Nvidia Hopper GPU Architecture

论文信息: arXiv:2402.13499 [cs.AR] 21 Feb 2024

作者: Weile Luo, Ruibo Fan, Zeyu Li, Dayou Du, Qiang Wang, Xiaowen Chu

机构: HKUST(GZ), HIT(Shenzhen), HKUST

代码: https://github.com/hkust-nlp/hopper-benchmark

许可: arXiv nonexclusive-distrib/1.0


一、论文概述

1.1 研究背景

GPU 架构持续演进以满足 AI 和深度学习的计算需求。Hopper 架构引入了多项新特性:

新特性说明
FP8 Tensor Core支持 FP8 精度,加速 LLM 训练和推理
DPX 指令动态编程硬件加速
分布式共享内存SM 到 SM 直接通信
Tensor Memory Accelerator增强异步执行机制

现有研究的不足:

  • 缺乏对 Hopper 架构新特性的深入分析
  • Tensor Core 性能和编程指令集仍不明确
  • 需要跨架构(Ampere、Ada、Hopper)的横向性能对比

1.2 核心贡献

贡献说明
指令级测试对内存架构和 Tensor Core 进行详细指令级测试和分析
跨架构对比比较 Ampere、Ada、Hopper 三代 GPU 的 AI 性能
新特性探索首次探索 Hopper 的 DPX、异步内存操作、分布式共享内存

二、核心思想

2.1 问题定义

如何全面理解和量化 Hopper GPU 架构的新特性,为软件优化和建模提供指导?

2.2 解决方案概述

两阶段方法:

  1. 常规基准测试:在 Hopper、Ada、Ampere 三代 GPU 上进行延迟和吞吐量对比
  2. 新特性基准测试:深入分析 Hopper 特有的 DPX、分布式共享内存、FP8 Tensor Core

三、技术架构

3.1 Hopper 架构概览

Hopper 架构 图 1:Hopper 架构概览,展示新特性:DPX、分布式共享内存、Tensor Memory Accelerator。

3.2 Tensor Core 演进

mma 和 wgmma 指令 图 2:mma 和 wgmma 指令对比,wgmma 支持异步执行和更大的矩阵尺寸。

Tensor Core 属性对比:

架构精度支持编程模式执行模式
AmpereFP16,BF16,TF32,FP64,INT8,INT4,BinaryC: wmma, PTX: mma, mma.sp同步
AdaFP16,BF16,FP8,TF32,FP64,INT8,INT4,BinaryC: wmma, PTX: mma, mma.sp同步
HopperFP16,BF16,FP8,TF32,FP64,INT8,BinaryC: wmma, PTX: mma, mma.sp, wgmma同步/异步

关键差异:

  • Hopper 引入 wgmma 指令,支持异步执行
  • wgmma 由 4 个 CUDA warp(warp group)执行,而 mma 由 1 个 warp 执行
  • wgmma 可直接从共享内存加载矩阵,而 mma 需要先存储到寄存器

3.3 Transformer Engine

FP8 执行时间 图 3:FP8 矩阵乘法中不同操作的执行时间比例。小矩阵时转换开销占比大。

Transformer Engine 工作流程:

  1. 输入转换:inp_fp8 = inp_fp16 / scale
  2. FP8 矩阵乘法:out_fp8 = inp_fp8 × w_fp8
  3. 输出缩放:out_fp16 = out_fp8 × scale

关键发现:

  • 小矩阵时,数据转换开销显著大于 GEMM 计算开销
  • 大矩阵时,FP8 吞吐量显著提升

四、核心创新

4.1 创新点总结

创新点说明理论/实验依据
wgmma 指令分析首次深入分析 Hopper 的 wgmma 指令SASS 反汇编和性能测试
FP8 性能评估评估 Transformer Engine 的 FP8 性能矩阵乘法和 LLM 推理测试
DPX 硬件加速首次评估 Hopper 的 DPX 硬件加速延迟和吞吐量测试
分布式共享内存评估 SM 到 SM 通信性能直方图应用重新设计

4.2 实验设备

属性A100 PCIeRTX4090H800 PCIe
计算能力8.0 (Ampere)8.9 (Ada)9.0 (Hopper)
SMs × 核心/SM108 × 64128 × 128114 × 128
最大时钟频率1410 MHz2520 MHz1755 MHz
显存大小40GB24GB80GB
显存类型HBM2eGDDR6XHBM2e
显存带宽1555 GB/s1008 GB/s2039 GB/s
Tensor Core432 (3rd Gen.)512 (4th Gen.)456 (4th Gen.)
DPX 硬件无无有
分布式共享内存无无有

五、实验结果

5.1 内存延迟和吞吐量

内存访问延迟(时钟周期):

类型RTX4090A100H800
L1 缓存43.437.940.7
共享内存30.129.029.0
L2 缓存273.0261.5263.0
全局内存541.5466.3478.8

关键发现:

  • 三代 GPU 的内存访问延迟相近
  • L2 缓存平均延迟是 L1 的 6.5 倍
  • 全局内存平均延迟是 L2 的 1.9 倍

内存访问吞吐量:

类型RTX4090A100H800
L1 缓存 (byte/clk/SM)121.2106.8124.1
L2 缓存 (byte/clk)1708.02007.93942.4
共享内存 (byte/clk/SM)127.9128.0127.9
全局内存 (GB/s)929.81407.21861.5
L2 vs. 全局4.67×2.01×4.23×

关键发现:

  • H800 的 L2 缓存吞吐量是 A100 的 2.2 倍
  • 全局内存带宽:H800 (1861.5 GB/s) > A100 (1407.2 GB/s) > RTX4090 (929.8 GB/s)
  • 向量化内存访问(FP32.v4)始终性能最佳

5.2 Tensor Core 性能

SASS 指令分析:

A/BC/Dmmawgmma
FP16FP16HMMA.16816.F16HGMMA.64x256x16.F16
FP16FP32HMMA.16816.F32HGMMA.64x256x16.F32
TF32FP32HMMA.1688.F32.TF32HGMMA.64x256x8.F32.TF32
FP8FP16无QGMMA.64x256x32.F16.E5M2/E4M3

关键发现:

  • FP8 只能通过 wgmma 指令使用,mma 不支持 FP8
  • INT4 在 Hopper 上编译为 IMAD 指令(CUDA 核心),而非 Tensor Core
  • wgmma 编译为新的 GMMA SASS 指令

5.3 Transformer Engine 性能

吞吐量对比 图 4:不同硬件配置和数据类型的矩阵乘法吞吐量对比。

延迟对比 图 5:不同硬件配置和数据类型的 Transformer 层延迟对比。

关键发现:

  • FP8 在大矩阵时吞吐量显著高于 FP16
  • 隐藏状态大小为 4096(Llama 7b)时,FP8 性能最优
  • Softmax 和 GeLU 未量化到 FP8,导致数据格式转换开销

5.4 DPX 动态编程加速

DPX 延迟 图 6:DPX 函数在不同设备上的延迟。

DPX 吞吐量 图 7:DPX 函数在不同设备上的吞吐量。

关键发现:

  • Hopper 是唯一支持 DPX 硬件加速的架构
  • DPX 加速比 Ampere/Ada 快 2-4 倍
  • DPX 硬件位于 SM 内部

5.5 分布式共享内存

SM 间通信 图 8:SM 到 SM 网络的数据通信吞吐量。

直方图应用 图 9:使用分布式共享内存的直方图应用性能。

关键发现:

  • 分布式共享内存支持 SM 到 SM 直接通信
  • 可减少块间数据传输开销高达 7 倍
  • 集群大小和 ILP 影响通信吞吐量

六、代码实现分析

6.1 项目结构

  • 基准测试代码: 包含内存、Tensor Core、DPX、分布式共享内存的测试
  • SASS 分析工具: 用于反汇编 PTX 指令
  • Transformer Engine 测试: 评估 FP8 性能

6.2 关键组件

  1. 内存基准测试: L1/L2 缓存、共享内存、全局内存的延迟和吞吐量
  2. Tensor Core 测试: mma 和 wgmma 指令的性能
  3. Transformer Engine 测试: te.Linear 和 te.TransformerLayer 的性能
  4. DPX 测试: 动态编程指令的延迟和吞吐量
  5. 分布式共享内存测试: SM 间通信的延迟和吞吐量

七、相关工作

7.1 GPU 微架构分析

工作架构贡献
Jia et al.Volta, TuringTensor Core 初步分析
Sun et al.Turing, Amperemma 指令级基准测试
Fasi et al.Volta, Turing, AmpereTensor Core 数值行为
本文工作Ampere, Ada, Hopper首次全面分析 Hopper

7.2 Tensor Core 编程

API架构特点
wmmaVolta+C 级 API,灵活性有限
mmaTuring+PTX 级指令,支持稀疏
wgmmaHopper异步执行,支持 FP8

八、总结

8.1 核心贡献

  1. 指令级分析:对三代 GPU 的内存架构和 Tensor Core 进行详细测试
  2. 跨架构对比:首次在 Ampere、Ada、Hopper 间进行横向性能对比
  3. 新特性探索:首次分析 Hopper 的 DPX、异步内存操作、分布式共享内存
  4. SASS 反汇编:深入分析 mma 和 wgmma 指令的编译行为

8.2 技术影响

  • 软件优化:为 GPU 程序优化提供详细指导
  • 性能建模:为 GPU 架构建模提供准确的微架构参数
  • 算法设计:帮助设计利用 Hopper 新特性的算法
  • 硬件选型:为不同应用选择合适的 GPU 架构提供参考

8.3 关键发现总结

  1. Tensor Core: Hopper 的 wgmma 指令是唯一支持 FP8 的方式
  2. FP8 性能: 大矩阵时 FP8 吞吐量显著高于 FP16,但小矩阵时转换开销大
  3. DPX 加速: Hopper 硬件加速动态编程算法,比前代快 2-4 倍
  4. 分布式共享内存: 支持 SM 到 SM 直接通信,可减少 7 倍数据传输开销
  5. L2 缓存: H800 的 L2 缓存吞吐量是 A100 的 2.2 倍

8.4 局限性

  1. 硬件限制:仅测试了 A100、RTX4090、H800 三款 GPU
  2. 软件版本:CUDA 版本和驱动版本可能影响结果
  3. 应用场景:未覆盖所有可能的 GPU 应用场景
  4. 功耗分析:未包含详细的功耗和能效分析

九、参考资源

9.1 论文链接

9.2 关键图表

图表说明路径
图 1Hopper 架构概览figure-1-hopper-architecture.png
图 2mma 和 wgmma 指令figure-2-mma-wgmma-instructions.png
图 3FP8 执行时间比例figure-3-fp8-execution-time.png
图 4吞吐量对比figure-4-throughput-comparison.png
图 5延迟对比figure-5-latency-comparison.png
图 6DPX 延迟figure-6-dpx-latency.png
图 7DPX 吞吐量figure-7-dpx-throughput.png
图 8SM 间通信figure-8-sm-communication.png
图 9直方图应用figure-9-histogram-dsm.png

9.3 相关论文

论文作者年份关系
Demystifying GPU MicroarchitectureJia et al.2019前驱工作
Instruction-Level BenchmarkingSun et al.2023对比方法
Numeric Behaviors of Tensor CoresFasi et al.2023相关工作

9.4 关键技术术语

术语英文说明
Tensor CoreTensor CoreGPU 上加速矩阵乘法的专用硬件单元
wgmmaWarp Group MMAHopper 引入的异步矩阵乘法指令
DPXDynamic Programming X动态编程硬件加速指令
分布式共享内存Distributed Shared MemorySM 到 SM 直接通信机制
Transformer EngineTransformer Engine加速 Transformer 模型的库
FP88-bit Floating Point8 位浮点数格式

分析完成时间:2026年6月24日 分析工具:Claude Code + paper-analyzer skill