文 | 芯东西 陈巍
编者注:NVIDIA在3月23日公布基于全新Hopper架构的GPU H100,其多种精度下的AI性能达到上一代A100的3~6倍。NVIDIA如何做到如此大幅的性能升级?Hopper架构有何玄机?千芯科技董事长陈巍博士对此加以解读。
在2022年3月NVIDIA GTC大会上,NVIDIA创始人兼CEO黄仁勋介绍了一款基于全新Hopper架构的H100 GPU,这是英伟达迄今用于加速人工智能(AI)、高性能计算(HPC)和数据分析等任务的最强GPU芯片。
▲Hopper架构H100 GPU的主要升级
Hopper架构以计算科学的先驱Grace Hopper的姓氏命名。黄教主称:“Hopper H100是有史以来最大的代际飞跃。H100具有800亿个晶体管,在性能上堪称NVIDIA的“新核弹”。
那么,“新核弹”的核心是什么样的?本文将深入解读和分析Hopper架构。
▲Hopper架构的H100与前几代GPU性能对比
注:Grace Hopper博士是哈佛Mark 1的首批程序员,被誉为编译语言之母。据称她发现了计算机程序中的第一个Bug,同时也创造了计算机世界最大的Bug——千年虫。
01.Hopper的整体结构拆解
NVIDIA Hopper架构H100芯片采用台积电4nm工艺(N4是台积电N5工艺的优化版),芯片面积为814平方毫米(比A100小14平方毫米)。
▲H100 Tensor Core GPU的性能规格
Hopper架构可以视为由两组对称结构拼接而成。(是不是有点类似我们之前介绍的苹果UltraFusion架构的拼接思路?不过这里的GPU还是单片的。回顾苹果UltraFusion架构可参见《苹果芯片“拼装”的秘方,在专利里找到了》文章。)
在顶层拓扑上,Hopper似乎与她的前辈Ampere架构差别不大。图中的Hopper架构GPU由8个图形处理集群(Graphics Processing Cluster,GPC)“拼接”组成。
▲Hopper架构基本结构
外周与多组HBM3封装在一起(Chiplet技术),形成整个芯片模组——从模组上看又是个“拼装货”。片上的每个GPC又由9个纹理处理集群(Texture Processor Cluster,TPC)“拼接”组成。
由PCIe5或SMX接口进入的计算任务,通过带有多实例GPU(Multi-Instance GPU,MIG)控制的GigaThread引擎分配给各个GPC。GPC之间通过L2缓存共享中间数据,GPC计算的中间数据通过NVLink与其他GPU连接/交换。每个TPC由2个流式多处理器(Streaming Multiprocessor,SM)组成。
Hopper架构的性能提升和主要变化体现在新型线程块集群技术和新一代的流式多处理器(具有第4代张量核心)。
▲线程块集群和带有集群的网格
Hopper架构中引入了一种新的线程块集群机制,该机制可以跨SM单元进行协同计算。H100 中的线程块集群可在同一GPC内的大量SM并发运行,这样对较大的模型具有更好的加速能力。
02.新一代流式多处理器SM与FP8支持
Hopper架构的新一代流式多处理器引入了FP8张量核心(Tensor Core)来加速AI训练和推理。FP8张量核心支持FP32和FP16累加器,以及两种FP8 输入类型(E4M3和E5M2)。
▲流式多处理器SM
与FP16或BF16相比,FP8将数据存储要求减半,吞吐量翻倍。我们在Transformer引擎的分析中还会看到使用FP8可自适应地提升Transformer的计算速度。
每个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。)
▲FP8具有FP16或BF162 2倍吞吐量
每个SM通过使用4个特殊函数单元(Special Function Unit,SFU)单元进行超越函数和插值函数计算。
03.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和其他浮点格式中进行动态格式转换,充分运用张量核心的算力。
04.张量存储加速器与异步执行
Hopper架构中新增加了张量存储加速器(Tensor Memory Accelerator,TMA) ,以提高张量核心与全局存储和共享存储的数据交换效率。
在这一新的TMA操作中,使用张量维度和块坐标指定数据传输,而不是简单的按数据地址直接寻址。TMA通过支持不同的张量布局(1D-5D张量)、不同的存储访问模式、显著降低了寻址开销并提高了效率。
也就是说,原来是一个一个的捡豆子(数据),现在的方法就是一碗一碗的舀豆子。这样的设计,是不是越来越接近DSA的寻址方式?
▲TMA的块坐标寻址方式
当然,TMA操作是异步的,多个线程可以共享数据通道,排序完成数据传输。
TMA的一个关键优势是它可以在进行数据复制的时候,释放线程的算力来执行其他工作。
例如,在A100上,由线程本身负责生成所有地址执行所有数据复制操作。但在Hopper中,TMA来负责生成地址序列(这个思路类似DMA控制器),接管数据复制任务,让线程去做其他事。
▲Hopper架构的H100的基于TMA的存储复制效率更高
05.结语:GPU走向领域专用化
总体而言,基于Hopper架构的H100计算性能比Ampere架构的A100提高了大约6倍。
性能大幅提升的核心原因在于引入FP8后的张量核心和针对NLP任务的Transformer引擎,特别是TMA技术减少了SM单元在数据复制时的无用功。
从设计哲学上看,针对数据中心的Hopper架构中DSA(Domain Specific Architecture,特定领域架构)的想法越来越多,且流多处理器间的协作变多。大概老黄也觉得,GPU应朝着领域专用化的方向去发展。
今年发布Hopper架构相对Ampere架构有较多的微观进步,希望老黄下次能给我们带来更多的技术惊喜。
参考文献:《NVIDIA H100 Tensor Core GPU Architecture》白皮书,英伟达;《GPGPU芯片设计:原理与实践》,陈巍、耿云川
评论