1. 程式人生 > 資訊 >又是“拼裝貨”?英偉達 800 億電晶體核彈 GPU 晶片架構深入解讀

又是“拼裝貨”?英偉達 800 億電晶體核彈 GPU 晶片架構深入解讀

編者注: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 晶片設計:原理與實踐》,陳巍、耿雲川