GPU 性能的關鍵參數
-
CUDA 核心數量(個):決定了 GPU 并行處理能力,在 AI 等并行計算類業務下,CUDA 核心越多性能越好。
-
顯存容量(GB):決定了 GPU 加載數據量的大小,在 AI 訓練場景中,顯存的大小決定了一次能夠加載訓練數據的量,在大模型訓練時,顯存容量很重要。
-
顯存帶寬(GB/s):是 GPU 芯片和顯存之間的數據傳輸速率,作為決定性能最重要的因素之一,由顯存頻率和位寬決定。
-
顯存位寬(bit):顯存在一個時鐘周期內所能傳送數據的位數,位數越大則瞬間所能傳輸的數據量越大。
-
顯存頻率(MHz):反映了顯存的速度。
-
-
浮點數算力(FLOPS):用來估算 GPU 的處理能力。
-
半精度(FP16):使用 2 個字節(16 位)進行存儲。用于需要節省內存和加快計算速度的場景,如深度學習中的混合精度訓練。在這些應用中,通過結合使用半精度和單精度浮點數,可以在保持模型精度的同時,減少內存占用和加快訓練速度。
-
單精度(FP32):使用 4 個字節(32 位)進行存儲。被廣泛用于各種計算密集型應用,包括科學計算、圖形渲染、深度學習等。在這些應用中,單精度浮點數提供了足夠的精度和數值范圍,以滿足大多數計算需求。
-
雙精度(FP64):使用 8 個字節(64 位)進行存儲。用于需要高精度計算的場景,如復雜的科學模擬、計算化學、分子建模、流體動力學等。
-
NVIDIA GPU 系列型號分類
1. 消費級 GeForce 系列
-
RTX 50XX 系列(Blackwell)
-
RTX 40XX 系列(Ada Lovelace)
-
RTX 30XX 系列(Ampere)
-
RTX 20XX 系列(Turing)
-
GTX 16/10 系列(Turing/Pascal)
2. 專業工作站級
-
RTX A50XX 系列(Ada/Ampere)
-
RTX A60XX 系列(Ada/Ampere)
3. 數據中心級
-
Tesla H100 系列(Hopper)
-
Tesla A100 系列(Ampere)
-
Tesla L40 系列(Ada Lovelace)
NVIDIA GPU 架構發展簡史
NVIDIA Tesla 系列服務器 GPGPU 用于大規模的分布式 AI 訓練。
-
https://zh.wikipedia.org/wiki/NVIDIA_Tesla
2008 - Tesla(特斯拉)?
Tesla 架構是 NVIDIA 第一個實現了統一著色器模型的芯片架構,具有完整的 Transform(坐標轉換)、Lighting(光源處理)、Setup(三角形設置)和 Rendering(渲染引擎) 功能。針對 HPC 和 AI 場景,應用于早期的 CUDA 系列顯卡中,但并非真正意義上的 GPGPU 芯片。
-
1 個 NVIDIA Tesla GPU 包含 7 個 TPC(Texture Processor Cluster,紋理處理集群)。
-
1 個 TPC 包含 2 個 SM(Stream Multi-processor,流多處理器)。
-
1 個 SM 包含:
-
6 個 SP(Streaming Processor,流處理器)。SP 是 GPU 最基本處理單元,指令和任務最終都是在 SP 上處理的。GPU 所謂的并行計算,也就是有很多個 SP 在同時進行計算。
-
2 個 SFU(Special Function Unit,特殊函數的計算單元)
-
1 個 I-Cache(指令緩存)
-
1 個 C-Cache(常量緩存)
-
1 個 MT Issue(多線程指令獲取)
-
1 個 Shared Memory(共享內存)
-
-
1 個共享的 L1 Cache(一級緩存)
-
1 個共享的 Fetch/Dispatch(取指/分發)部件。
-
Load/Store Queues(訪問存儲單元),在 SM 和 Main Memory 之間快速傳輸數據;
-
Warp Scheduler(線程調度器),每個 Warp(線程束)包含了 32 個并行的 Threads,它們使用不同的數據執行相同的命令,Scheduler 會負責這些 Threads 的調度;
再細化每個 ?SP,包含了:
-
1 個共享的 Fetch/Decode(取指/譯碼)部件。
-
8 個 ALU(邏輯運算單元)。
-
4 組 Execution contexts(執行環境),可 Concurrent but interleaved(并發交叉)執行 4 條 Instruction Streams(指令流)。
-
每組 Execution contexts 有 8 個 Context,共計 32 個 Fragments(并發程序片元),即 32 個 CUDA threads。
2010 - Fermi(費米)?
Fermi 是第一個真正意義上的 GPGPU 架構芯片,擁有 30 億個晶體管,共計 512 個 CUDA core。并提高了以下關鍵特性:
-
提高 FP64 雙精度性能
-
支持 ECC:ECC 支持在 DC 場景中安全地部署大量 GPU,并確保數據敏感型 Application 免受內存錯誤的影響。
-
True Cache Hierarchy:一些并行算法無法使用 GPU 的 SM(Share Memory),用戶需要一個真正的緩存架構來幫助他們。
-
更多的共享內存:許多 CUDA 程序員要求超過 16 KB 的 SM 來加速他們的應用程序。
-
更快的上下文切換:用戶要求在應用程序和更快的圖形和計算互操作之間進行更快的上下文切換。
-
更快的 Atomic Operations(原子操作):用戶要求為他們的并行算法提供更快的讀-修改-寫原子操作。
-
一個 Fermi GPU 擁有 16 個 SM。
-
每個 SM:
-
2 個 Warp(線程束)
-
2 組,共 32 個 CUDA Core
-
16 組加載存儲單元(LD/ST)
-
4 個特殊函數單元(SFU)
-
-
每個 Warp:
-
1 個 Warp 調度器(Warp Scheduler)
-
16 個 Core
-
分發單元(Dispatch Unit)
-
-
每個 Core:
-
1 個 FPU(浮點數單元)
-
1 個 ALU(邏輯運算單元)
-
2012 - Kepler(開普勒)?
Kepler 的架構設計思路是減少 SM 單元數(在這一代中叫 SMX 單元),增加每組 SM 單元中的 CUDA core 數,每個 SM 單元的 CUDA core 數由 Fermi 架構的 32 個增至 192 個。相較于 Fermi,Kepler 更快,效率更高,性能更好。
Kepler 將 SM 升級到了 SMX,支持動態創建渲染線程(下圖),以降低 CPU 和 GPU 之間的數據傳輸延遲。
每個 SMX:
-
4 個 Warp Scheduler,8 個 Dispatch Unit。
-
綠色:192 個 CUDA 內核,分在 12 條 lane 上,每條分別是 16 個。
-
黃色:64 個 DP 雙精度運算單元,分在 4 條 lane 上,每條 lane 上 16 個。
-
32 個 LD/ST Unit。
-
32 個 SFU。
2014 - Maxwell(麥克斯韋)?
Maxwell 的 SM 單元和 Kepler 相比又有很大變化,這一代的 SM 單元更像是把 4 個 Fermi 的 SM 單元,按照 2x2 的方式排列在一起,這一代稱之為 SMM 單元。
SMM 使用基于象限的設計,具有四個 32 CUDA core 的 Processing blocks(處理塊),每個處理塊都有一個專用的 Warp 調度程序,能夠在每個時鐘分派兩條指令。
-
每個 Maxwell GPU 有 4 個 GPC,每個 GPC 有 4 個 SMM。
-
每個 SMM 單元:
-
八個紋理單元(texture units)。
-
一個多態引擎(Polymorph engine)的圖形幾何處理。
-
專用寄存器文件和共享內存。
-
每個處理塊:
-
1 個 Warp Scheduler,2 個 Dispatch Unit。
-
綠色:32 個 CUDA core。
-
8個 LD/ST Unit。
-
8個 SFU。
2016 - Pascal(帕斯卡)?
Pascal 將處理器和數據集成在同一個程序包內,以實現更高的計算效率。
Pascal 的 CUDA core 總數從 Maxwell 的每組 SM 單元 128 個減少到了每組 64 個,這一代最大的特點是又把 DP 雙精度運算單元加回來了。制程工藝升級到了 16nm,性能大幅提升,功耗卻不增加。1080 系列、1060 系列基于 Pascal 架構。
Pascal 擁有 GP100、GP102 兩種大核心,核心是一個完整的 GPU 模組。
-
GP100:3840 個 CUDA core,60 組 SM 單元;
-
GP102:3584 個 CUDA core,28 組 SM 單元;
GP100 核心的 SM 單元:
-
每個 SM 單元中,分為 2 個 Process Block,每個 Process Block 中:
-
1 個 Warp Scheduler,2 個 Dispatch Unit。
-
綠色:32 個 CUDA core。
-
黃色:16 個 DP 雙精度運算單元,分在 2 條 lane 上,每條 lane 上 8 個。
-
8 個 LD/ST Unit。
-
8 個 SFU。
-
2017 - Volta(伏特)?
Volta 配備了 640 個 Tensor 核心,每秒可提供超過 100 兆次浮點運算(TFLOPS)的深度學習效能,用于深度學習、AI 運算等,比前一代的 Pascal 架構快 5 倍以上。
Tesla V100(Volta 架構)
-
CUDA 核心:5120 個
-
顯存容量:16GB/32GB HBM2
-
顯存帶寬:900 GB/s
-
浮點算力:
-
FP32:約 15.7 TFLOPS
-
FP64:約 7.8 TFLOPS(雙精度為單精度的一半)
-
-
價格:約 10,000 美元
從 Volta 開始,將一個 CUDA core 拆分為兩部分:
-
FP32
-
INT32
好處是在同一個時鐘周期里,可以同時執行浮點和整數指令,提高計算速度。
Volta 架構的 GV100 核心。每個 SM 單元中,分為 4 個 Process Block,每個 Process Block 中:
-
1 個 Warp Scheduler,1 個 Dispatch Unit。
-
8 個 FP64 Core。
-
16 個 INT32 Core。
-
16 個 FP32 Core。
-
2 個 Tensor Core。
-
8 個 LD/ST Unit。
-
4 個 SFU。
2018 - Turing(圖靈)?
Turing 架構配備了名為 RT Core 的專用光線追蹤處理器,能夠以高達每秒 10 Giga Rays 的速度對光線和聲音在 3D 環境中的傳播進行加速計算。
Turing 架構將實時光線追蹤運算加速至上一代 NVIDIA Pascal? 架構的 25 倍,并能以高出 CPU 30 多倍的速度進行電影效果的最終幀渲染。2060 系列、2080 系列顯卡也是跳過了 Volta 直接選擇了 Turing 架構。
Turing架構目前一共有 3 種核心:
-
TU102 核心
-
TU104 核心
-
TU106 核心
Turing 架構的 TU102 GPU,它的特點如下:
-
6 GPC(圖形處理簇)
-
36 TPC(紋理處理簇)
-
72 SM(流多處理器)
-
每個 GPC 有 6 個 TPC,每個 TPC 有 2 個 SM
-
4,608 CUDA core
-
72 RT core
-
576 Tensor core
-
288 紋理單元
-
12x32 bit GDDR6 內存控制器(共 384 位)
TU102 核心的單個 SM 的結構圖如下:
-
每個 SM 包含 4 個處理塊,每個處理塊中:
-
1 個 Warp Scheduler,1 個 Dispath Unit。
-
16 個 INT32 Core。
-
16 個 FP32 Core。
-
2 個 Tensor Core。
-
4 個 LD/ST Unit。
-
4 個 SFU。
-
256 KB 寄存器文件。
-
2020 - Ampere(安培)?
2020 年 5 月 14 日,NVIDIA 發布了最新一代的 A100 GPU 產品(簡稱 GA100),采用 Ampere 架構。
Tesla A100(Ampere 架構)
-
CUDA 核心:6912 個
-
顯存容量:40GB/80GB HBM2
-
顯存帶寬:1,555 GB/s(80GB 版本)
-
浮點算力:
-
FP32:約 19.5 TFLOPS
-
TF32(AI 優化):156 TFLOPS
-
-
價格:約 10,000 美元
下面我們通過 Ampere 架構為例,介紹 GPU 的組成部分。
Ampere 架構沿用了成熟的 GPC-TPC-SM 多級架構,包含了:
-
8 組 GPC(Graphics Processor Cluster,圖形處理簇)。
-
每組 TPC 包含 8 組 SM(Stream Multiprocessor,流多處理器)。
-
每組 GPC 包含 8 組 TPC(Texture Processor Cluster,紋理處理簇)。
-
-
2 組 L2 Cache,避免計算單元訪問遠端 L2 Cache 時出現高延遲。每組 L2 Cache 為 40MB,在一定程度上減輕計算單元對顯存帶寬的依賴。
-
PCI Express 4.0
-
NVLink 3.0
再將 A100 核心的 SM 展開,可以看到 Ampere 的 SM 單元設計沿用了從 Volta 開始的分精度計算思路,將計算核心分成了:
-
針對整數計算的 INT32 單元
-
針對浮點計算的 FP32、FP64 單元
-
針對 FP16、INT8 等 AI 計算中常見的數據類型的 Tensor Cores
每個 SM 包含了:
-
1 個共享的 L1 Ins-Cache(一級指令緩存)
-
1 個共享的 L1 Data-Cache(一級數據緩存)
-
1 個共享的 Shared Memory(共享內存)
-
4 個子模塊
其中 RT Cores 是游戲卡才有的,面對純計算用途的 GA100 并不需要。
每個子模塊包含了:
-
1 個 L0 I-Cache(指令緩存)
-
1 個 Warp Scheduler(線程調度器),每個 Warp(線程束)包含了 32 個并行的 Threads,它們使用不同的數據執行相同的命令,Scheduler 會負責這些 Threads 的調度。Warp Scheduler 的指令通過 Dispatch Units 發送到 Core 執行。
-
1 個 Dispatch Unit(取指/分發)部件。
-
1 個 Register File(寄存器文件)。
-
16 個針對浮點計算的 FP32 CUDA Core。
-
16 個針對整數計算的 INT32 CUDA Core。
-
8 個針對浮點計算的 FP64 CUDA Core。
-
1 個針對 FP16、INT8 等 AI 計算的 Tensor Core 3.0,幾乎可以加速所有的常見數據類型,包括:FP16、BF16、TF32、FP64、INT8、INT4 和二進制。
-
8 個 LD/ST(Load/Store Queues,訪問存儲單元),在 SM 和 Main Memory 之間快速傳輸數據;
-
1 個 SFU(Special Function Unit,特殊函數的計算單元),執行特殊數學運算,例如:Sin、Cos、Log 等。
而 GA102 核心的 SM 單元,分成 4 個處理塊,每個處理塊中:
-
1 個 Warp Scheduler,1 個 Dispatch Unit。
-
8 個 FP64 Core。
-
16 個 FP32 Core。
-
16 個 INT32 Core。
-
1 個 Tensor Core。
-
8 個 LD/ST Unit。
-
4 個 SFU。
2022 - Hopper(霍珀)?
Hopper 架構的 H100 GPU 是 NVIDIA 劃時代的產品,其 CUDA 核心數量達到了驚人的 14,592~16,896 顆,轉為 AI 大模型訓練開發。
Tesla H100(Hopper 架構)
-
CUDA 核心:14,592~16,896
-
顯存容量:80GB HBM3
-
顯存帶寬:3 TB/s(理論值)
-
浮點算力:
-
FP8(AI 優化):4,000 TFLOPS(稀疏模型)
-
-
價格:約 30,000 美元(含企業支持服務38)
-
應用:萬億參數語言模型訓練、超大規模數據中心
H100 相對于 A100 有了質的飛躍。配備 InfiniBand interconnect 的 H100 的性能是 A100 的 30 倍。新的 NVLink 交換系統互連針對一些最大且最具挑戰性的計算工作負載,這些工作負載需要跨多個 GPU 加速節點的模型并行性來適應。這些工作負載帶來了新一代的性能飛躍,在某些情況下, InfiniBand 的性能比 H100 再次提高了三倍。
H100 架構詳解推薦瀏覽官方文檔:https://developer.nvidia.com/zh-cn/blog/nvidia-hopper-architecture-in-depth/