晶片層 開放閱讀

CUDA

CUDA, Compute Unified Device Architecture

概念 ID
cuda-compute-unified-device-architecture
更新時間
2026-05-29
來源數量
待補

CUDA

由於檢索工具返回錯誤,本文所有硬規格均來自公開權威資料(如 NVIDIA CUDA 程式設計指南、技術白皮書)與行業常識的定性表述。凡涉及具體代際歸屬、效能數字、市場份額等,若無直接來源則標註【估算】或【定性描述】;無法確定歸屬的代際細節,一律用定性說明。

3 秒看懂

CUDA(Compute Unified Device Architecture)是 NVIDIA 推出的一套平行計算平台與程式設計模型,讓開發者能用 C/C++ 等語言直接排程 GPU 裡成千上萬個執行緒,將圖形處理器變成通用平行計算引擎。今天幾乎所有主流深度學習架構的訓練推論,底層都跑在 CUDA 之上。

3 分鐘產業解釋

CUDA 本質上是一套軟體棧:包含 GPU 驅動程式、CUDA 編譯器(nvcc)、執行時庫、以及高度最佳化的數學庫(cuBLAS、cuDNN、NCCL 等)。開發者編寫核心函式(kernel),在 NVIDIA GPU 上以海量執行緒並行的方式執行。 在深度學習產業裡,CUDA 的角色類似“基礎設施語言”:PyTorch、TensorFlow、JAX 等架構通過 CUDA 呼叫 GPU 進行矩陣乘法、卷積等運算,不需要使用者直接寫 CUDA 程式碼,但所有加速都依賴 CUDA 生態。這種軟硬緊密繫結的模式,使得 NVIDIA GPU + CUDA 組合成為 AI 訓練的實質標準,形成極高的遷移成本與生態護城河。

15 分鐘專家深入

  • 程式設計模型的層次:一個 GPU 計算任務被組織成網格(Grid)→ 執行緒塊(Block)→ 執行緒(Thread)。網格是一維/二維/三維的執行緒塊陣列,每個執行緒塊內包含最多 1024 個執行緒(具體上限取決於計算能力版本)。這種層次結構使程式能自然擴充套件到不同規模的 GPU。
  • 記憶體模型與生命週期:每個執行緒有私有區域性記憶體(暫存器優先,溢位到本地記憶體);執行緒塊內共享記憶體(shared memory)供塊內執行緒協作,速度接近 L1 cache;全域性記憶體(global memory)由所有執行緒訪問,通常搭配 L2 cache;還有常量記憶體、紋理記憶體等專用空間。
  • 執行模型:硬體以流多處理器(SM)為單位排程執行緒塊。一個 SM 將執行緒塊內的執行緒以 32 個為一組形成 warp,按 SIMT(單指令多執行緒)模型執行。同一 warp 內執行緒若因分支發散,會被序列化,故 warp 內執行緒最好遵循相同控制流。
  • 硬體對映:每個 SM 包含多個 CUDA 核心(負責浮點/整數運算)、張量核心(Tensor Core,專用於矩陣乘累加)、載入/儲存單元、特殊函式單元、暫存器檔案、共享記憶體/L1 cache 等。執行緒塊被髮放到有空閒資源的 SM 上,同一個 SM 可併發駐留多個執行緒塊以隱藏延遲。
  • 張量核心:從 Volta 架構開始引入,提供混合精度矩陣運算,例如 FP16 輸入累加到 FP32,後擴充套件到 INT8、FP64、TF32 等格式,是深度學習訓練/推論吞吐的關鍵引擎。
  • 開發工具鏈
    • nvcc:分離主機程式碼(CPU)與裝置程式碼(GPU),把裝置程式碼編譯為 PTX(並行執行緒執行)中間碼,再組裝成特定 GPU 架構的二進位制(cubin)。
    • CUDA 執行時與驅動 API:管理裝置、上下文、記憶體、流(stream)和事件,支援非同步執行與重疊。
    • 庫:cuBLAS(密集矩陣/向量)、cuDNN(深度神經網路原語)、cuFFT、cuSPARSE、NCCL(多 GPU 通訊)、Thrust(並行模板庫)等。
  • 計算能力(Compute Capability):用一個主版本號表示 GPU 架構特性集合(如 SM 數量、共享記憶體大小、warp 尺寸等),編譯時可指定目標架構以生成最佳化程式碼。

技術原理(最深)

GPU 的 SIMT 與 warp 排程

NVIDIA GPU 的一個 SM 內部有多個 warp 排程器。每個時鐘週期,排程器從駐留的 warp 中挑選符合條件的指令發射。warp 大小為 32,即 32 個執行緒共享同一個程式計數器。同一 warp 內所有執行緒執行同一條指令,但各自操作不同的暫存器資料(掩碼可以停用部分執行緒)。分支發散時,硬體用執行掩碼序列執行各分支路徑。為隱藏指令延遲,SM 依賴大量 warp 並行:當一個 warp 在等待記憶體時,排程器立刻切換到另一個就緒的 warp,實現零開銷切換。因此,佔用率(occupancy)—— 即每個 SM 上同時駐留的 warp 數與理論最大 warp 之比 —— 成為最佳化關鍵引數,但不是唯一,有時更少的佔用率配合更好的指令級並行反而更優。

記憶體層次與延遲處理

[Global Memory (HBM/GDDR)]

[L2 Cache (device-wide)]

[SM]
 ├── Shared Memory / L1 Data Cache
 ├── Registers (per-thread)
 ├── Constant Cache
 └── Texture Cache
  • 全域性記憶體訪問延遲通常為幾百個時鐘週期,必須通過合併訪問(coalesced access)使同一 warp 的執行緒訪問連續對齊的地址段,以單次事務完成。否則會產生分散事務,導致頻寬利用率劇烈下降。
  • 共享記憶體可程式設計,程式設計者可將頻繁複用的資料從全域性記憶體搬運到共享記憶體,供執行緒塊內執行緒高速協作,常見於矩陣乘法 tile 分塊。共享記憶體被劃分為多個 bank,若無衝突可按每個時鐘多個位元組的頻寬併發訪問;若同一 bank 被多個執行緒同時訪問,則引發 bank conflict,降低吞吐。
  • 暫存器是每個執行緒最快速的儲存,若單執行緒使用的暫存器過多,將減少 SM 上能駐留的執行緒塊數量,降低延遲隱藏能力。編譯器的 --maxrregcount 可控制暫存器使用。

Tensor Core 運算機制

Tensor Core 在一個時鐘週期內完成形如 D = A \times B + C 的小矩陣乘加操作,例如 Volta 的 Tensor Core 可對 4×4 的 FP16 矩陣乘積累加到 4×4 的 FP32 矩陣。軟體通過 warp-level 的矩陣乘法指令(如 mma.sync)呼叫,資料通常由 warp 內的執行緒協力提供。Tensor Core 支援的形狀和輸入型別因架構代際而擴大,如 Ampere 架構增加了對 TF32、BF16 等的支援,Hopper 架構引入了 FP8(【NVIDIA 架構白皮書定性描述】)。深度學習架構通過 cuBLAS/cuDNN 自動將矩陣乘法對映到適當的 Tensor Core 指令,極大提升卷積和全連線層效能。

多 GPU 程式設計與通訊

CUDA 提供 NCCL 庫實現 GPU 間的高效通訊原語(AllReduce、AllGather、ReduceScatter 等),通過 NVLink 或 PCIe/NVSwitch 實現高頻寬互聯。在資料並行訓練中,每個 GPU 持有模型副本,計算區域性梯度後用 AllReduce 求和並平均,再由 NCCL 在幕後完成。NVLink 頻寬及拓撲直接影響多卡擴充套件效率。


技術演進史

  • 2006 — G80 (計算能力 1.0):首個支援 CUDA 的 GPU 架構,引入統一著色器模型,CUDA 釋出,將 GPU 變成通用 SIMD 處理器。程式設計模型基礎奠定:grid/block/thread,共享記憶體,柵欄同步。
  • 2010 — Fermi (計算能力 2.x):增加 L1/L2 cache 層次,提升雙精度效能,引入錯誤糾正(ECC)支援,使 GPU 進入科學計算/HPC 領域。
  • 2012 — Kepler (計算能力 3.x):SM 重新設計,動態並行(kernel 中啟動 kernel),Hyper-Q 多流,GPUDirect RDMA 初步支援,改善多 GPU 通訊。
  • 2014 — Maxwell (計算能力 5.x):能效比大幅提升,每個 SM 分成四個處理塊,邏輯上分離排程,功耗控制改善。
  • 2016 — Pascal (計算能力 6.x):首個採用 HBM2 的 GP100,引入 NVLink 高速互聯,統一記憶體增強(支援大頁面、原子操作),FP16 打包指令為深度學習初步加速。
  • 2017 — Volta (計算能力 7.0):引入第一代 Tensor Core,獨立執行緒排程改進 SIMT 模型,NVLink 2.0 提供更高頻寬,建置多 GPU 訓練基石。
  • 2018 — Turing (計算能力 7.5):Tensor Core 增加 INT8/INT4 支援用於推論,RT Core 用於光線追蹤,同時面向圖形與 AI。
  • 2020 — Ampere (計算能力 8.x):第三代 Tensor Core,支援 TF32、BF16、FP64,稀疏化加速,MIG(多例項 GPU)技術實現安全隔離分割槽,NVLink 3.0 提升。
  • 2022 — Hopper (計算能力 9.0):第四代 Tensor Core 引入 FP8 支援,Transformer Engine 動態精度調整,NVLink 4.0 + NVSwitch 建置高頻寬域,DPX 指令加速動態規劃(【NVIDIA Hopper 架構白皮書】)。
  • 未來趨勢:CUDA 工具鏈繼續深度整合到 AI 架構,引入更多自動化最佳化(如 CUDA Graphs),並擴充套件對非 NVIDIA 硬體的支援(通過可移植層),但核心仍與 NVIDIA 硬體強耦合。

技術路線對比(量化表)

對比維度CUDAOpenCLAMD ROCm / HIPIntel oneAPI / DPC++
硬體支援範圍僅 NVIDIA GPU跨廠商(GPU/CPU/FPGA)僅 AMD GPU(通過 HIP 可編譯到 CUDA)跨 XPU(CPU、GPU、FPGA)
程式語言擴充套件 C/C++,Python 繫結C/C++,但抽象層級低HIP(語法幾乎等同 CUDA)SYCL(基於 C++17)
深度學習架構支援度全部主流架構原生深度支援極低,不被主流架構採用PyTorch/TF 正在適配,仍不如 CUDA 成熟初步支援,社群較小
關鍵加速庫生態cuBLAS, cuDNN, cuFFT, NCCL 等,開箱即用,最佳化成熟庫碎片化,無統一深度計算庫rocBLAS, MIOpen, RCCL 對應,但覆蓋度與最佳化差距明顯【估算】oneMKL, oneDNN 等,生態尚在早期
效能可移植性針對 NVIDIA 硬體極致最佳化,無法跨廠商理論上跨平台,實際效能差異大通過 HIP 可編譯到 NVIDIA GPU,但最佳化路徑不統一依賴 DPC++ 執行時,效能依賴裝置後端成熟度
開發者工具成熟度Nsight 系列(System/Compute/Graphics),極成熟工具鏈分散,除錯最佳化不便ROCm 工具鏈持續改善,但仍落後於 CUDA【定性】Intel VTune/Advisor 整合,但 CUDA 生態慣性巨大
佔據 AI/HPC 訓練份額據估算 > 90%【行業估算,來源於各雲端廠商與超算排名公開資料趨勢】< 1%快速增長但不足 10% 【估算】尚在培育期,佔比極小

上下游

上游

  • 硬體定義:NVIDIA 的 GPU 晶片設計(SM 架構、Tensor Core 代數、記憶體控制器、NVLink 拓撲)直接決定 CUDA 能力邊界。
  • 軟體工具開發:CUDA Toolkit 團隊,維護編譯器、數學庫、分析器。
  • 標準與生態:CUDA 與各架構團隊合作,提前適配新硬體特性;NVIDIA 也通過 CUDA-X 元件將加速庫覆蓋到資料處理、基因、訊號等領域。

下游

  • AI 架構層:PyTorch、TensorFlow、JAX、MXNet 等,通過自定義運算元或自動微分將其計算圖對映到 CUDA 核心。
  • 中介軟體/服務:雲端 GPU 服務(AWS、Azure、GCP 等)提供預裝 CUDA 的映象;超算中心使用 CUDA 支撐科學模擬;企業私有化部署推論服務。
  • 終端應用:生成式 AI、自動駕駛感知與規控、醫療影像分析、金融風險模型等。任何需要大規模並行數值計算的場景,幾乎都直接或間接依賴 CUDA。

關鍵指標

(以下指標隨 GPU 型號與架構變化,定量資料請參考對應白皮書)

  • 計算能力(Compute Capability):決定可用的硬體特性和API支援範圍。
  • SM 數量與 CUDA 核心總數:單 GPU 理論峰值 FP32 FLOPS = 核心數 × 頻率 ×2(FMA),但實際效率受吞吐限制。
  • Tensor Core 數量與支援格式:決定矩陣計算吞吐,例如 FP16、BF16、TF32、FP8 的 FLOPS。
  • 視訊記憶體容量與頻寬:高頻寬(HBM2e、HBM3)支援大型模型訓練,決定著資料載入效率。
  • NVLink 頻寬與 GPU 間互聯拓撲:多卡擴充套件的伸縮效率關鍵。
  • CUDA 工具鏈版本:決定編譯器最佳化、新特性(如 CUDA Graphs、MIG)是否可利用。
  • 佔用率:軟體層面的調優指標,反映 SM 上活躍 warp 比例,影響延遲隱藏。

供需與市場資料

由於本次檢索未能返回即時資料,以下均為基於行業公開趨勢的定性描述:

  • CUDA 生態形成了極強的供給壁壘:幾乎全部 AI 模型訓練與主要雲端 GPU 例項均依賴 CUDA,開發者技能、教學資源、開源模型權重與加速程式碼均圍繞 CUDA 建置。【定性描述】
  • NVIDIA 資料中心 GPU(A100, H100 等)長期處於供不應求狀態,相關雲端服務例項常需排隊獲得。這反映了 CUDA 生態對高階 GPU 的鎖死效應。【可觀察的市場現象】
  • 據市場調研機構綜合估計,NVIDIA 佔據 GPU 加速卡市場約 80% 以上份額,在 AI 訓練領域更高。【估算】
  • 競爭對手的軟體棧(ROCm、oneAPI)在相容性、效能最佳化、架構支援方面仍存在差距,短期內難以撼動 CUDA 的統治地位。【行業普遍認知】

代表公司與資本對映

  • NVIDIA(核心):CUDA 是其軟硬一體的護城河,資料中心業務營收在近年快速增長,帶動市值躍升。CUDA 的開發者粘性讓客戶遷移成本極高,形成“賣鏟人”的持久獲利。
  • 雲端服務商:Amazon(AWS)、微軟(Azure)、Google(GCP)大規模採購 NVIDIA GPU,並配套提供 CUDA 相關服務,成為 AI 算力租賃的主要渠道。
  • AI 晶片創業公司:如 Cerebras、Graphcore 等試圖以專用架構繞過 CUDA,但面臨生態適配的嚴峻挑戰,其軟體棧不得不提供 CUDA 轉譯層,側面印證 CUDA 事實標準地位。
  • AMD:通過 ROCm/HIP 提供 CUDA 程式碼轉換工具(hipify),試圖將 CUDA 生態移植到自家 GPU,但仍需在效能與架構支援上持續追趕。
  • Intel:oneAPI 試圖開放跨架構程式設計,但其 GPU 硬體份額尚小,對 CUDA 生態衝擊有限。

產業觀察邏輯

  1. 生態護城河:CUDA 作為 AI 時代的“x86 指令集”,其網路效應(開發者眾多、架構支援完善、教育資料豐富)使得硬體即使被超越,市場份額仍將因遷移成本而緩慢變化。產業研究應把 NVIDIA 在 AI 算力領域的主導地位與 CUDA 生態的遷移成本放在一起觀察。
  2. 替代風險與差異化競爭:關注 AMD 的 ROCm 與架構整合進度、Google TPU 的自主生態閉環、以及雲端廠商自研晶片(AWS Trainium)能否剝離 CUDA 依賴。一旦有架構能實現跨硬體無縫編譯且效能無損,CUDA 綁定價值可能稀釋。
  3. CUDA 間接驅動 NVIDIA 營收:資料中心 GPU 的 ASP 與銷量強依賴於 CUDA 帶來的生產力,故任何威脅 CUDA 生態的因素都將影響 NVIDIA 估值。
  4. 二級效應:CUDA 工具鏈和庫的強大使 AI 模型開發門檻降低,加速了 AI 應用的爆發,從而進一步提升對算力的需求,形成正向飛輪。
  5. 政策與地緣風險:部分國家/地區可能扶持自主加速計算生態,可能給 CUDA 施加本地化替代壓力,需關注開源方案與國產 GPU 相容程序。

常見誤讀糾偏

  • 誤讀 1:“CUDA 核心就是 GPU 裡面的計算單元,數量越多效能越強” 糾正:CUDA 核心是 GPU 中的流水線算術單元,但不同架構的核心設計差異巨大(例如 Volta 後的核心可同時執行 FP32 和 INT32 操作)。比較 GPU 效能應看實際吞吐量(FLOPS)和軟體最佳化,而非簡單比較 CUDA 核心數量。兩個擁有相同核心數的不同代次 GPU,效能可能相差數倍。

  • 誤讀 2:“Tensor Core 就是萬能加速器,什麼計算都能用” 糾正:Tensor Core 的加速範圍限於矩陣乘累加(GEMM)和特定規模的卷積運算,其輸入格式也受限制(需要 FP16/BF16/TF32/INT8 等)。對於一些非矩陣運算、不規則計算、稀疏操作(除非利用 Ampere 的稀疏特性),Tensor Core 無法介入。而且,要高效利用 Tensor Core,需要資料 layout 和 tile 尺寸遵循嚴格的契約,架構雖然能隱藏部分複雜性,但並非所有運算元都能自動獲得 Tensor Core 加速。

  • 誤讀 3:“只要裝了 CUDA 驅動,任何 GPU 都能跑深度學習” 糾正:CUDA 僅支援 NVIDIA 的 GPU,並需要 GPU 的計算能力至少達到一定版本(例如 CUDA 12 通常要求計算能力 5.0 以上,視具體版本而定)。而且,只有擁有 Tensor Core 的 GPU 才能實現硬體上的混合精度訓練加速。此外,視訊記憶體容量必須裝得下模型,否則需要多卡或用模型並行策略,並非“有 CUDA 就能跑”。


學習路徑

  1. 預備知識:掌握 C/C++ 基礎,理解指標、記憶體地址、並行概念(執行緒、鎖、原子操作)。
  2. 入門:閱讀《CUDA C Programming Guide》前幾章,理解主機-裝置模型,寫一個向量加法的 kernel,學會視訊記憶體分配(cudaMalloc)、資料傳輸(cudaMemcpy)和 kernel 啟動語法(&lt;&lt;&lt;grid, block)。
  3. 進階模型理解:研究執行緒網格、共享記憶體最佳化矩陣乘法(tiled matrix multiply),使用 nvprof/Nsight Systems 分析效能,理解合併訪問與 bank conflict。
  4. 深度學習相關:學習 cuBLAS 和 cuDNN 的基本用法,瞭解卷積、池化在 CUDA 中的實現思路;檢視 PyTorch 自定義 C++/CUDA 擴充套件的編寫方法,能夠把 Python 無法高效表達的操作寫成 CUDA 核心。
  5. 多 GPU 與通訊:學習 NCCL 的基本操作,掌握單機多卡資料並行訓練中的 AllReduce 梯度同步原理。
  6. 高階最佳化:利用 Tensor Core(通過 wmma 或 mma 指令)、CUDA Graphs 減少啟動開銷、協作組(cooperative groups)靈活控制執行緒。查閱 GTC 演講、NVIDIA 開發者部落格獲取不同架構最佳化案例。
  7. 閱讀官方文件:《CUDA C++ Programming Guide》《Best Practices Guide》《cuBLAS Library》《cuDNN Developer Guide》,以及各代 GPU 調優指南(如 NVIDIA A100/H100 白皮書)。

一句話總結

CUDA 並非只是一套程式設計工具,而是將 NVIDIA GPU 與 AI 時代算力需求深度焊接的軟硬體一體化生態,其網路效應讓任何試圖繞過它的替代方案都面臨極高的遷移成本與生態重建壓力。


延伸閱讀與來源

  • 核心文獻
    • NVIDIA CUDA C++ Programming Guide(最新版)
    • NVIDIA CUDA Best Practices Guide
    • NVIDIA A100、H100 等 GPU 架構白皮書
    • cuDNN Developer Guide
    • NCCL 使用者指南
  • 線上資源
    • NVIDIA Developer 網站及部落格
    • GTC 大會技術演講錄影(GPU 架構、CUDA 最佳化專題)
    • PyTorch 自定義 C++/CUDA 擴充套件教程
  • 書籍推薦
    • 《CUDA by Example: An Introduction to General-Purpose GPU Programming》
    • 《Programming Massively Parallel Processors: A Hands-on Approach》(David Kirk 等)
  • 備註:本文撰寫時檢索工具未返回有效結果,所有技術描述均基於自 2006 年至今的公開知識體系與開發者社群共識。具體架構引數、效能數字請以 NVIDIA 官方最新文件為準。部分市場資料屬定性推導或行業估算,不構成精確市場統計。
source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型