首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

GPU 架構演進深度解析:從 Fermi 到 Kepler 的 SM 設計、Dynamic Parallelism 與 Hyper-Q

     編輯:關於C語言

前言

SM (Streaming Multiprocessor) 是 GPU 並行算力的核心單元。本文對比 Fermi (CC 2.x) 與 Kepler (CC 3.x) 架構的 SM 微架構、執行管線、資源配置,並詳細解析 Kepler 引入的 Dynamic Parallelism 與 Hyper-Q 兩大創新特性。

Fermi 架構 (CC 2.0, 2010)

  • 512 CUDA Cores:16 SM × 32 cores/SM。
  • SM 結構:32 CUDA Cores、16 Load/Store、4 SFU、2 Warp Scheduler、2 Dispatch Unit、64KB 共享記憶體/L1 (可配置 16/48)、32K 暫存器檔。
  • GigaThread Engine:全域 Block 調度分發。
  • 6×384-bit GDDR5:支援 6GB 顯存、ECC。
  • 768KB L2 Cache:統一快取。
  • 並行能力:每 SM 48 Warps (1536 線程) 駐留。

Kepler 架構 (CC 3.0/3.5, 2012)

  • 15 SMX (K20X):每 SMX 192 單精度 Cores、64 雙精度、32 SFU、32 LD/ST。
  • SMX 結構:4 Warp Scheduler、8 Dispatch Unit → 每週期最多發射 4 Warps (128 指令)。
  • 64K 暫存器檔:較 Fermi 翻倍。
  • 6×64-bit Memory Controller:頻寬優化。
  • 並行能力:每 SM 64 Warps (2048 線程) 駐留。

架構關鍵參數對比表

參數Fermi (GF100)Kepler (GK110)
SM 數量1615
Cores/SM32192 (SP)
雙精度比率1/21/3
Warp Scheduler/SM24
Dispatch Unit/SM28
Max Warps/SM4864
Max Threads/SM15362048
暫存器檔/SM32K64K
共享記憶體/SM64KB (可配置)64KB (可配置)
L2 Cache768KB1536KB

Dynamic Parallelism (動態並行)

痛點

Fermi 要求所有 Kernel 從 Host 啟動,遞歸、自適應演算法、動態任務圖需 Host 參與 → 高延遲、複雜同步。

Kepler 解決方案

  • Kernel 內可直接啟動子 Kernel (<<<>>>))。
  • 硬體級工作隊列,無需 Host 干預。
  • 支援遞歸、巢狀並行、動態負載平衡。

應用場景

  1. 自適應網格剖分 (AMR)。
  2. 光線追蹤遞歸反射/折射。
  3. 動態任務圖 (DAG) 就地展開。

代碼範例

__global__ void childKernel(int *data) { ... }
__global__ void parentKernel(int *data) {
    if (condition) childKernel<<<1, 256>>>(data);
    // 需配合 cudaDeviceSynchronize() 或事件同步
}

Hyper-Q (超級隊列)

Fermi 瓶頸

單一硬體工作隊列 → 任務序列化 → 長任務阻塞短任務 → GPU 利用率低。

Kepler 創新

  • 32 硬體工作隊列 (Hardware Work Queues)。
  • CPU 多線程可同時提交 Kernel 至不同隊列。
  • 硬體調度器跨隊列公平調度,消除 Head-of-Line Blocking。

效能提升

  • MPI 多進程每進程綁定一隊列 → 並行啟動無干擾。
  • Hyper-Q + MPS (Multi-Process Service) → 單 GPU 服務多進程零干擾。

SIMT vs SIMD 核心差異

SIMT 保留標量程式設計模型,硬體自動將獨立線程聚合為 Warp 執行。

總結

Fermi 奠定通用 GPU 計算基礎;Kepler 通過 4×Warp Scheduler、Dynamic Parallelism、Hyper-Q 三大創新,大幅提升並行效率、程式靈活性與多任務隔離能力。理解架構演進有助於針對目標硬體選擇最優並行策略:Fermi 側重佔用率平衡,Kepler 鼓勵精細粒度並行與動態任務分解。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性SIMDSIMT
執行模式鎖步向量獨立線程
指令計數器單一每線程獨立
狀態暫存器共享每線程獨立
分支處理全向量掩碼Warp 級分歧