千变万化

芯算未来

陈巍:GPGPU Hopper架构解读

存算一体芯片    原创技术文章    陈巍:GPGPU Hopper架构解读

 

《GPGPU 芯片设计:原理与实践》系列:适合AI芯片设计人员入门与芯片赛道投资人了解技术内涵。该系列目录附在本文最后,本文介绍第7章 《分析实战:Hopper架构》

(注:原文首发于“芯东西”)

主编作者

陈巍 博士

资深芯片专家,人工智能算法-芯片协同设计专家,擅长芯片架构与存算一体。国内首个可重构存算处理器架构(已在互联网大厂完成原型内测),首个医疗领域专用AI处理器(已落地应用),首个RISC-V/x86/ARM平台兼容的AI加速编译器(与阿里平头哥/芯来合作),国内首个3D NAND芯片架构与设计团队建立(与三星对标),国内首个嵌入式闪存编译器(与台积电对标),国内首个90nm闪存芯片架构(与Cypress/SST对标)

■ 耿云川 博士

资深SoC设计专家,软硬件协同设计专家,擅长人工智能加速芯片设计。国内首个可重构存算处理器架构(已在互联网大厂完成原型内测),日本NEC电子EMMA-mobile构架多媒体计算系统,日本瑞萨电子车载计算SoC芯片构架(唯一外籍专家),日本瑞萨电子R-Mobile/R-Car系列车载计算芯片,支持ADAS的车载计算硬件

Hopper架构H100 GPU的主要升级

在 2022年NVIDIA GTC上,NVIDIA 黄仁勋介绍了基于全新Hopper架构的GPU H100。Hopper架构以计算科学的先驱Grace Hopper的姓氏命名。H100具有800 亿个晶体管,在性能上堪称NVIDIA的新核弹。

(注:Grace Hopper博士是哈佛 Mark 1 的首批程序员,被誉为编译语言之母。据称她发现了计算机程序中的第一个Bug,同时也创造了计算机世界最大的Bug——千年虫)

Hopper架构的H100与前几代GPU性能对比
Hopper架构基本结构

Hopper架构 H100芯片采用台积电 4nm工艺(N4是台积电 N5 工艺的优化版),芯片面积为 814 平方毫米(比 A100 小 14 平方毫米)。

Hopper架构可以视为由两组对称结构拼接而成。在顶层拓扑上,Hopper似乎与她的前辈Ampere架构差别不大。图中的Hopper架构GPU 由8个图形处理集群 (Graphics Processing Cluster,GPC)“拼接”组成。外周与多组HBM3封装在一起(Chiplet技术),形成整个芯片模组——从模组上看又是个“拼装货”。片上的每个GPC又由9个纹理处理集群 (Texture Processor Cluster,TPC)“拼接”组成。由PCIe5或SMX接口进入的计算任务,通过带有多实例GPU(Multi-Instance GPU,MIG)控制的GigaThread引擎分配给各个GPC。GPC之间通过L2缓存共享中间数据,GPC计算的中间数据通过NVLink与其他GPU连接/交换。每个TPC由两个流式多处理器(Streaming Multiprocessor, SM)组成。

Hopper架构的性能提升和主要变化体现在新型线程块集群技术和新一代的流式多处理器(具有第4代张量核心)。

线程块集群和带有集群的网格

Hopper架构中引入了一种新的线程块集群机制,该机制可以跨SM单元进行协同计算。H100 中的线程块集群可在同一GPC内的大量SM并发运行,这样对较大的模型具有更好的加速能力。

7.2 新一代流式多处理器SM与FP8支持

流式多处理器SM

Hopper架构的新一代流式多处理器中,引入了 FP8张量核心(Tensor Core)来加速 AI 训练和推理。FP8 张量核心支持 FP32 和 FP16 累加器,以及两种FP8 输入类型(E4M3和E5M2)。与 FP16 或 BF16 相比,FP8 将数据存储要求减半,吞吐量翻倍。我们在Transformer引擎的分析中,还会看到使用FP8可以自适应的提升Transformer的计算速度。

FP8 具有FP16 或 BF162 2倍吞吐量

每个SM包括128个FP32 CUDA 核心,和4个第4代张量核心(Tensor Core)。进入SM单元的指令首先存入L1指令缓存(L1 Instruction Cache),然后再分发到L0指令缓存(L1 Instruction Cache)。与L0缓存配套的线程束排序器(Wrap Scheduler)和调度单元(Dispatch Unit)来为CUDA核心和张量核心分配计算任务。(注:GPU中最小的硬件计算执行单位是线程束,简称Warp)

每个SM通过使用4个特殊函数单元(Special Function Unit,SFU)单元进行超越函数和插值函数计算。

7.3 Hopper的张量核心与Transformer引擎

在GPU中,张量核心是用于矩阵乘法和矩阵累加 (Matrix Multiply-Accumulate,MMA) 数学运算的专用高性能计算核心,可为 AI 和 HPC 应用程序提供突破性的性能加速。张量核心是GPU中做AI加速的关键模块,也是Ampere和之后GPU架构与早期GPU的显著区别。

Hopper的张量核心支持 FP8、FP16、BF16、TF32、FP64 和 INT8 MMA 数据类型。这一代张量核心的关键点是引入了Transformer引擎。

H100 FP16 Tensor Core 的吞吐量是 A100 FP16 Tensor Core 的 3 倍

Transformer 算子是主流的BERT 到 GPT-3 等NLP模型的基础,且越来越多地应用于计算机视觉、蛋白质结构预测等不同领域。

与上一代 A100 相比,新的 Transformer 引擎与Hopper FP8 张量核心相结合,在大型NLP模型上提供高达 9 倍的 AI 训练速度和 30 倍的 AI 推理速度。

新的Transformer 引擎动态调整数据格式以充分运用算力

为了提升Transformer的计算效率,在这一新的Transformer引擎中使用了混合精度,在计算过程中智能地管理计算精度,在 Transformer计算的每一层,根据下一层神经网络层及所需的精度,在FP8和其他浮点格式中进行动态格式转换,充分运用张量核心的算力。

7.4 张量存储加速器与异步执行

Hopper架构中新增加了张量存储加速器 (Tensor Memory Accelerator,TMA) ,以提高张量核心与全局存储和共享存储的数据交换效率。

在这一新的TMA 操作中,使用张量维度和块坐标指定数据传输,而不是简单的按数据地址直接寻址。TMA 通过支持不同的张量布局(1D-5D 张量)、不同的存储访问模式、显著降低了寻址开销并提高了效率。

TMA的块坐标寻址方式

当然,TMA 操作是异步的,多个线程可以共享数据通道,排序完成数据传输。

TMA 的一个关键优势是它可以在进行数据复制的时候,释放线程的算力来执行其他工作。例如,在 A100上,由线程本身负责生成所有地址执行所有数据复制操作。

但在Hopper中,TMA来负责生成地址序列(这个思路类似DMA控制器),接管数据复制任务,让线程去做其他事。

Hopper架构的H100的基于TMA的存储复制效率更高

总体而言,Hopper架构的H100 计算性能比Ampere架构的 A100 提高了大约 6 倍

性能大幅提升的核心原因在于引入FP8后的张量核心和针对NLP任务的Transformer引擎,特别是TMA技术减少了SM单元在数据复制时的无用功。

从设计哲学上看,针对数据中心的Hopper架构中DSA(Domain Specific Architecture,特定领域架构)的想法越来越多,且流多处理器间的协作变多

参考文献

NVIDIA H100 Tensor Core GPU Architecture

附:《GPGPU 芯片设计:原理与实践》目录

1 GPGPU概述

1.1 GPGPU简介与基本结构

1.1.1 GPU/GPGPU

1.1.2 GPGPU基本架构

1.2 GPU简史

1.2.1 GPU的诞生

1.2.2 NVIDIA GPU架构发展简史

1.2.3 AMD GPU架构发展简史

2 GPGPU编程模型

2.1 GPGPU执行模型

2.1.1 CUDA编程模型

2.1.2 OpenCL编程模型

2.2 NVIDIA GPU指令集架构(CUDA)

2.2.1 CUDA简介

2.2.2 编程结构

2.2.3 线程管理

2.2.4 内存管理

2.3 AMD 指令集架构(ROCm)

2.3.1 ROCm简介

2.3.2 ROCm容器化工具

2.3.3 ROCm的数学库

2.3.4 ROCm的编程模型

2.4 ROCm驱动

2.4.1 AMDKFD驱动

2.4.2 AMDGPU驱动

2.5 ROC system runtime的API接口

2.5.1 内存管理

2.5.2 错误处理

2.5.3 Runtime初始化和关闭

2.5.4 System与Agent 信息交互

2.5.5 信号和同步

2.5.6 代码对象和可执行文件

Reference

3 GPGPU单指令多线程核心设计

3.1 One-Loop近似

3.2 Two-Loop近似

3.3 Three-Loop近似

Reference

4 GPGPU浮点计算单元设计

4.1 浮点数表示

4.2 浮点数加法

4.3 浮点数乘法

4.4 GPU浮点计算

Reference

5 GPGPU的数据流与存储结构设计

5.1 片上互联网络

5.2 一级存储结构

5.2.1 Scratchpad存储器

5.2.2 L1 缓存

5.3 二级存储结构

5.3.1 L2 缓存

5.3.2 原子化操作

5.3.3 任务调度器

Reference

6 分析实战:GeForce 8800架构

6.1 GeForce 8800整体结构

6.2 Texture/Processor Cluster (TPC)

6.3 Streaming Multiprocessor (SM)

6.4 Streaming Processor (SP)

6.5 Special Function Unit (SFU)

Reference

7 分析实战:Hopper架构

7.1 Hopper的整体结构

7.2 流式多处理器SM与FP8支持

7.3 Hopper的张量核心与Transformer引擎

7.4 张量存储加速器与异步执行

Reference

8 设计实战:NVDLA

8.1 NVDLA硬件架构

8.1.1 NVDLA 内部核心架构

8.1.2 外部接口配置

8.1.3 寄存器接口

8.1.4 可配置硬件参数

8.1.5 代码综合

8.2 NVDLA软件架构

8.2.1 编译库

8.2.2 运行环境

Reference

9 GPU异构封装与近存计算设计

9.1 GPGPU的异构封装

9.2 SoIC结构

9.3 Chiplet主流协议

9.4 HBM

9.4.1 HBM概述

9.4.2 HBM结构

9.4.3 HBM时序

9.5 AIB协议

9.5.1 AIB概述

9.5.2 分块协议

9.5.3 AIB结构

9.6 openHBI协议

9.6.1 openHBI概述

9.6.2 openHBI结构

Reference

10 GPGPU发展趋势与展望

2022年3月31日 01:54
收藏