晶片層 開放閱讀

執行緒束

Warp

概念 ID
warp
更新時間
2026-05-29
來源數量
待補

執行緒束

3 秒看懂

執行緒束(Warp)是 NVIDIA GPU 執行指令的最小排程單元,固定包含 32 個並行執行緒。與其說它是一個程式設計概念,不如說是硬體層面的“單指令多執行緒(SIMT)”執行包。理解 Warp,是寫出高效深度學習運算元、避免 bank conflict、榨乾 GPU 算力的第一性起點。

3 分鐘產業解釋

在深度學習的世界裡,所有矩陣乘法、卷積、注意力計算最終都落到 GPU 上。GPU 之所以快,靠的是在一個時鐘週期內讓成千上萬個核心同時做同一件事。NVIDIA 把這 32 個執行緒捆成一組叫 Warp,硬體取指、譯碼後,同一個 Warp 裡的 32 個執行緒必須執行同一條指令(但資料可以不同)。Warp 內部的分支發散、記憶體訪問模式,直接決定了訓練和推論的吞吐與延遲。產業界最佳化 FlashAttention、定製 FP8 kernel,本質都是在與 Warp 排程器和共享記憶體打交道;工程師口中“這個 kernel 有一個 warp 的分支”“shared memory 設計要避免 warp 內的 bank conflict”,正是 Warp 的產業語言。

15 分鐘專家深入

把 AI 大型模型拆到底層,一個 GPT 的前向計算最終會變成幾百個 CUDA kernel 連續發射。每一個 kernel 再被分解成一個 Grid,Grid 包含多個 Block,Block 裡再切分為 Warp。執行緒束這一層決定了程式設計師的最佳化意圖能否在物理硬體上成立:

  • 指令發射:每個 SM(流式多處理器)有多個 Warp Scheduler,每個週期挑選一個就緒的 Warp 發射指令。上下文切換幾乎零開銷,靠海量 Warp 遮蓋訪存與計算延遲。
  • 執行特徵:同一個 Warp 內的執行緒如果走了不同分支,會被序列執行(執行緒掩碼遮蔽),嚴重影響吞吐。
  • 記憶體系統:Warp 是共享記憶體訪問時銀行衝突(bank conflict)的最小分析粒度。每個執行緒的訪存地址如果在同一 bank 內重複,會導致請求排隊,損失頻寬。
  • 同步語義:__syncthreads() 是 block 級屏障,但 warp 內部也可以通過 __syncwarp() 等實現細粒度同步(Volta 以後的重整 warp shuffle 更安全)。
  • AI 運算元的具體對映:在 Tensor Core 密集的 kernel 中,資料載入常由一組 Warp 負責搬入共享記憶體,計算 Warp 負責呼叫 mma.sync 指令。warp-level primitives (如 warp shuffle) 用於高效歸約,減少共享記憶體壓力。

技術原理(最深)

GPU 採用的是單指令多執行緒(SIMT)執行模型,而 Warp 是 SIMT 在硬體上的具體實現形式。本節從機制、引數與資料流三個維度全面解析。

1. 硬體執行機制與 Warp 排程

一個 Warp 包含 32 個執行緒,執行時被分配給一個 SM。SM 內部的 Warp 排程器每週期從活動 Warp 池中選擇一個就緒(無資料依賴、無斷點)的 Warp,發出一條指令,送入 32 個 CUDA 核心(或 Tensor Core)並行執行。

  • 掩碼執行:當 Warp 內發生分支(if-else),排程器會生成活動掩碼,先執行走一條路徑的執行緒,其餘執行緒休眠;再反過來執行另一路徑。這被稱為“執行緒發散”(Thread Divergence),對延遲隱藏能力造成嚴重摺損。
  • 獨立性演變:Volta 架構前,Warp 內所有執行緒共享同一個程式計數器(Program Counter),任意執行緒的分支都會引發全 Warp 序列。Volta 之後的 NVIDIA GPU 引入了獨立執行緒排程(Independent Thread Scheduling),允許每個執行緒有自己的 PC 和呼叫棧,但 Warp 的併發執行單元仍然是 32 執行緒打包,硬體依然按 SIMT 粒度分配 ALU。深層上的“按需收斂”讓部分發散可以更高效處理,但不改變“同一週期執行相同指令”這一底層約束。

2. Warp 與記憶體子系統互動

[Warp 0]  Thread0 .. Thread31
           \ 訪存請求 /
           [ L1 Data Cache / Shared Memory ]
           [  Crossbar / Interconnect ]
           [  Bank 0 | Bank 1 | ... | Bank 31 ]  共享記憶體 bank 陣列
  • 共享記憶體 bank:每個 bank 在一個週期內只能服務一個地址。若 Warp 內兩個執行緒訪問同一 bank 的不同地址(雙字為 stride),就產生 bank conflict,請求序列變多週期。
  • 全域性記憶體合併訪問:Warp 內所有執行緒的全域性記憶體請求如果能落入同一 L1 快取行(128 Bytes),會被合併為一次或幾次記憶體事務。否則,離散訪問導致事務數膨脹,頻寬利用率雪崩。
  • warp shuffle(__shfl_sync):允許同一 Warp 內執行緒間直接交換暫存器值,無需通過共享記憶體。這在 AI kernel 的區域性歸約、分散式 Softmax、LayerNorm 的 partial sum 通訊中大量使用。

3. 在深度學習典型運算元中的對映

以矩陣乘法的分塊策略為例(簡化):

  1. Block 被設計為 256 執行緒(8 Warp),每個 Warp 負責載入 C 矩陣的一個 tile 的一部分。
  2. 載入 Warp 迴圈將全域性記憶體資料拽入共享記憶體,地址錯位設計避免 bank conflict。
  3. 計算 Warp 使用 mma.sync.aligned(Tensor Core 指令),以 Warp 為粒度喂入 mma 矩陣乘加。
  4. 最後,歸約 Warp 用 warp shuffle 將 C tile 的片段兩兩相加,寫出結果。

整個過程中,Warp 數量與工作量的匹配、Warp 內部無分支、記憶體訪問模式對 bank 友好,是制勝關鍵。

4. 關鍵量化引數(基於常見架構通識,未完全繫結具體代際)

  • 每 Warp 執行緒數:固定 32(所有 CUDA 架構恆定)。
  • Warp 排程器數量 / SM:不同 GPU 二代不同,例如早期 Kepler 為 4 個,每個可每週期發射兩條指令(雙發射);Volta/Turing 為 4 個,Ampere 部分 SM 調整為 4 個,每個可每週期發射一條指令。
  • 最大常駐 Warp 數 / SM:由暫存器、共享記憶體及最大 Warp 限制聯合決定。通常一個 SM 可容納 64 個 Warp(2048 執行緒)是軟體上限之一(具體按架構有差異)。

[注:以上排程器數目與常駐上限隨架構迭代有變化,具體數值未引用最新官方資料,標註為估算範圍,建議參考 CUDA Programming Guide 特定版本確定。]

技術演進史

  • 2006 – G80 (Tesla架構):首次引入 Warp 概念,固定 32 執行緒,採用 SIMT 模型,無獨立執行緒排程。
  • 2010 – Fermi:增強共享記憶體 bank 配置,支援 32 bank,緩解 bank conflict,開始出現 warp shuffle 的早期軟體模擬。
  • 2012 – Kepler:提出 warp shuffle 指令,允許暫存器內執行緒通訊;引入動態並行,父子 kernel 間 warp 上下文儲存更復雜。
  • 2016 – Pascal:支援 Page Migration,Warp 訪問統一記憶體時頁錯誤機制透明,但底層執行仍然是 Warp 打包。
  • 2017 – Volta里程碑 — 引入獨立執行緒排程(Independent Thread Scheduling),PC 和呼叫棧 per thread,且支援同步 warp 的 sync 原語。Tensor Core 引入,mma 指令以 Warp 為單位協作。
  • 2018 – Turing:延續獨立執行緒排程,新增 Warp 級 FP16/INT8 矩陣加速。
  • 2020 – Ampere:改進 Tensor Core(支援稀疏),Warp 排程器依然 4 個/SM(GA102),增強非同步複製與同步能力,讓 Warp 能更敏捷地切換計算/載入角色。
  • 2022 – Hopper:引入 Warp Group(以 4 個 Warp 組成的組)協作,支援 TMA(Tensor Memory Accelerator)非同步資料搬運,warp 間通過新的同步屏障進行更高效的資料交換。

整體看,Warp 從單純的執行束進化為可獨立排程、可同步、可組成群的微觀並行單元,每一代都在削弱分支發散的懲罰並增強內部資料交換能力,這直接服務於越來越大的深度學習模型對並行粒度與效率的苛刻要求。

技術路線對比(量化表)

特性 / 架構NVIDIA Warp (CUDA)AMD Wavefront (GCN/RDNA)說明(AI 相關)
執行緒束大小3264 (GCN wavefront 固定為 64),RDNA 部分 wave32/wave64 可切換NVIDIA 固定 32;AMD 後續可變,但 wave64 是多數硬體原生執行寬度
執行緒獨立排程自 Volta 起支援獨立 PCGCN 無,RDNA 有逐步增強NVIDIA 在 AI 架構中重構 kernel 更安全,不用過慮 warp 內死鎖
同步原語__syncwarp, warp shuffle, mma 組同步類似 DS_SWIZZLE_B32 等排列指令NVIDIA 的 warp-level 程式設計範型更成熟,AI kernel 庫生態更厚
Tensor 加速單元Tensor Core (Volta+)Matrix Core (CDNA)雙方均以 warp/wave 為粒度發矩陣指令
AI 生態CUDA, cuBLAS, cutlass, FlashAttentionROCm, MIOpen, Composable KernelWarp 最佳化概念可遷移,但工具鏈成熟度 NVIDIA 領先明顯

注:未引用具體 GPU 型號的製程/頻率/頻寬,對比側重於並行程式設計模型。

上下游

上游:CUDA 編譯器(NVCC)、PTX 彙編、LLVM 後端都是將使用者執行緒塊分解為 Warp 指令流並最佳化發散的源頭。GPU 架構設計(SM 排程器、暫存器檔案、L0/L1 快取)直接決定 Warp 執行效率。
下游:深度學習運算元庫(cuBLAS、cuDNN、cutlass)、訓練/推論架構(PyTorch、TensorFlow、TensorRT)、大規模分散式訓練中的通訊庫(NCCL 中的 reduce kernel)以及各種手寫 AI kernel(MLP、Attention、MoE 分發)全部建置在 Warp 最佳化之上。Warp 的排程模型是“運算元效率”的直接決定者。

關鍵指標

  • 佔用率(Occupancy):每個 SM 上活躍 Warp 數量與理論最大 Warp 數量之比。高佔用有助延遲隱藏,但不一定等於高效能(暫存器壓力可能導致溢位到 L1)。
  • 執行緒發散度:同一 Warp 內 if/else 導致序列執行的比例。
  • 共享記憶體 bank conflict 率:以 Warp 為觀測視窗,訪問衝突導致的頻寬損失。
  • Warp 執行效率(Issue Slot Utilization):每個 Warp Scheduler 有效發射指令的週期比例。
  • warp shuffle 效率:通過暫存器交換完成的歸約與廣播延遲,通常遠低於共享記憶體/全域性記憶體。

這些指標是剖析 AI kernel 效能的顯微鏡,尤其對大規模 transformer 訓練中的 kernel fusion 最佳化至關重要。

供需與市場資料

執行緒束本質是一個硬體執行概念,無獨立市場供需。但背後是 GPU 與 AI 加速器的供需:

  • GPU 供需:大型模型軍備競賽導致 NVIDIA H100/B200 等供不應求,截至 2024 年多份供應鏈估算,交貨週期曾長達數月,單價溢價嚴重。GPU 的每一代迭代都會微調 Warp 排程、增加常駐 Warp 上限,這直接影響叢集有效算力供給。
  • 人才供需:能針對 Warp 級進行 kernel 最佳化的 GPU 軟體工程師極度稀缺,企業高薪爭搶,成為 AI Infra 領域的關鍵瓶頸之一。

無單獨 Warp 直接交易,但其能力通過 GPU 的 TFLOPS 交付給 AI 訓練市場。

代表公司與資本對映

  • NVIDIA:發明並持續定義 Warp 概念,CUDA 生態使 Warp 最佳化成為 AI Infra 的核心競爭力。
  • AMD:以 Wavefront 競爭,ROCm 生態在追趕,通過 Matrix Core 和 CDNA 架構在 HPC/AI 領域試圖截流。
  • AI 架構與加速庫:OpenAI Triton(類 CUDA 語言)將 block 級程式設計顯式暴露,但底層仍編譯為 Warp 友好的 PTX;Moody’s 和 Google 的 JAX 也依賴 XLA 生成可利用 Warp 效率的 HLO。
  • 雲端端供應商:AWS Trainium、Google TPU 使用自有並行模型(非 Warp),與 NVIDIA 路線不同,但在軟體棧上仍借鑑 warp-level 最佳化的思想(如 systolic array 的資料分塊邏輯)。

資本對映上,NVIDIA 的市值增長與 Warp 所支撐的 GPU 計算霸權高度繫結;Warp 最佳化工程師被初創 AI Infra 公司、大廠重點投資。

投資邏輯

  1. GPU 算力供給彈性:每一代 Warp 上下文切換能力、Tensor Core 利用效率的提升,是單卡效能 TCO 的核心因子。投資 AI 算力需關注 NVIDIA 架構對 Warp 吞吐的改進(如 Hopper 的 TMA + warp group)。
  2. 最佳化門檻與護城河:Warp 級程式設計的高門檻維持了 CUDA 的深度鎖定效應。市場對能榨乾硬體效率的 Infra 團隊給予溢價,相關工具鏈(Triton, cutlass)提升了生產力但未完全抹平差異。
  3. 替代架構評估:若出現新的並行範式(如更為粗粒度的資料流架構或脈動陣列自排程)替代傳統的 Warp 排程,將威脅 NVIDIA 的護城河。但目前來看,Warp 仍是最高效的機器模型。

常見誤讀糾偏

  • 誤讀 1:“一個 Warp 的 32 個執行緒可以執行不同指令。”
    事實:硬體 SIMT 決定了同一 Warp 內的執行緒在任何給定週期必須執行相同指令(掩碼除外),即使 Volta+ 有獨立 PC 和呼叫棧,也只是允許執行緒在時間上錯開執行不同路徑,而非同一週期執行不同指令。AI 工程師常誤以為獨立排程 = 完全 MIMD,這是錯誤。

  • 誤讀 2:“Warp 大小固定為 32,程式設計師可以直接控制 Warp 分組。”
    事實:GPU 硬體自動將 block 內的執行緒順序劃分為連續的 32 執行緒組作為 Warp,程式設計師不能隨意指定 Thread 0~31 必然組成同一個 Warp。因此,避免分支發散常需要按 warp 尺寸(32)對齊邏輯分割槽,如將 block 大小設為 32 的倍數,且 threadIdx.x 連續範圍的執行緒應對應到同一條資料路徑。

  • 誤讀 3:“使用 __any_sync 或 __all_sync 等 warp 原語,無需考慮 mask。”
    事實:Volta 之後,這些同步函式要求傳入一個顯式的掩碼,用於指定參與通訊的執行緒。隱式使用 full mask 是常見 bug,會導致某些執行緒雖在 Warp 中但期望不參與時死鎖。

學習路徑

  1. 基礎:熟讀《CUDA C++ Programming Guide》的 SIMT Architecture 章節,瞭解 Warp 執行模型、指令同步、記憶體合併等。
  2. 工具:使用 Nsight Compute 剖析 warp 佔用、發散、bank conflict 開銷,讀懂“Warp State Statistics”等報告。
  3. 運算元實踐:以 cutlass 為例,分析其 warp tile 迭代器、warp-level mma 呼叫的寫法;動手寫一個簡單 GEMM,體會共享記憶體 padding 避免 bank conflict 和 warp shuffle 歸約。
  4. 高階:深入 Hopper 架構白皮書,學習 TMA 與 warp group 同步;研究 FlashAttention-2/3 的 warp 粒度的任務劃分及資料雙緩衝技巧。
  5. 理論擴充套件:閱讀經典論文“A Survey of CPU-GPU Heterogeneous Computing Techniques”中有關 SIMT 與 Warped-SIMD 的比較,理解在 AI 負載下為何 Warp 延遲隱藏依然卓越。

一句話總結

執行緒束是 GPU 並行執行的最小交響樂團,32 個樂手必須同時演奏同一個音符(指令),深度學習的終極效能正取決於指揮家(kernel 設計者)能否讓他們永不跑調(無分支發散)、記憶體搬運整齊劃一(合併訪問、避免 bank conflict)。

延伸閱讀與來源

  • NVIDIA CUDA C++ Programming Guide, “SIMT Architecture” 章節。
  • NVIDIA Tesla V100 / A100 / H100 白皮書(架構說明中有關 Warp Scheduler 和 Tensor Core 的部分)。
  • “Inside Volta: The World’s Most Advanced Data Center GPU” – 獨立執行緒排程官方說明。
  • Cutlass: https://github.com/NVIDIA/cutlass (大量 warp-level 程式碼實踐)。
  • Yuan, Z. et al., “FlashAttention: Fast and Memory-Efficient Exact Attention” 及後續版本,揭示 Warp 在 Attention kernel 中的排程方法。
  • AMD ROCm Documentation, “Wavefront” 概念對比。
    注:具體硬體引數如某代 Warp Scheduler 數量/常駐 Warp 上限,以對應架構 CUDA Programming Guide 或 Parallel Thread Execution ISA 檔案為準。本文部分數值為公開資訊的定性引用,為保持準確性未給出無據的精確數字。
source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型