跳到內容

CUDA

NVIDIA 在 2006 年推出 CUDA,讓開發者能把 GPU 用在圖形以外的通用運算。CUDA 應用程式通常由 CPU 端的程式安排工作與資料,再把適合大量平行處理的部分交給 GPU 執行。

今日所說的 CUDA 不只是一種程式語言或單一軟體。它同時涵蓋程式模型、API、編譯與開發工具、執行函式庫,以及圍繞 NVIDIA GPU 建立的加速函式庫生態。開發者可以直接使用 C++、Python 或 Fortran,也可以透過 PyTorch 等上層框架間接使用 CUDA。

使用 Local AI 不一定要自己寫 CUDA

Section titled “使用 Local AI 不一定要自己寫 CUDA”

多數 Local AI 使用者接觸 CUDA,是因為應用程式、Runtime 或機器學習框架已經提供 CUDA 後端。使用者選擇相容的安裝套件、載入模型並啟動推論,底層軟體便會呼叫 CUDA 函式庫與 NVIDIA 驅動程式。

Local AI 應用程式或框架
CUDA 後端與函式庫
NVIDIA 驅動程式
NVIDIA GPU

因此,專案文件寫著「支援 CUDA」,通常表示它已有一條能在 NVIDIA GPU 上執行的軟體路徑。寫著「需要 CUDA」則可能表示該專案目前只提供或只測試了 CUDA 後端。這項限制來自軟體實作與發布方式;同一份模型權重仍可能由支援其他後端的工具執行。

CUDA、Toolkit 與 Driver 分別是什麼?

Section titled “CUDA、Toolkit 與 Driver 分別是什麼?”
名稱 主要作用 一般使用者何時會遇到?
CUDA 平台與程式模型 定義軟體如何安排 CPU 與 GPU 分工,並在 GPU 上平行執行工作 閱讀工具支援的硬體後端時
CUDA Toolkit 提供編譯器、開發函式庫、除錯與效能分析工具 編譯 CUDA 程式、套件或自訂運算元時
NVIDIA Driver 讓作業系統與應用程式使用 NVIDIA GPU,並提供 CUDA Driver API 安裝與執行 CUDA 應用程式時
CUDA 加速函式庫 提供已最佳化的矩陣、深度學習與其他常見運算 由框架或 Runtime 間接呼叫時

只想執行既有應用程式時,不一定需要完整的 CUDA Toolkit;應用程式可能已附帶所需的 CUDA Runtime 函式庫。自行編譯 CUDA 程式、第三方套件或自訂運算元時,才通常需要安裝相容版本的 Toolkit 與編譯工具。

CUDA 發展時間長,許多機器學習框架、研究程式與最佳化函式庫都優先支援 NVIDIA GPU。當專案已提供成熟的 CUDA 安裝套件與測試結果,使用者通常比較容易找到相容文件、問題解法與效能資料。

這項生態優勢不代表每個 AI 任務都必須使用 CUDA。像 llama.cpp 這類工具也支援 Metal、HIP、Vulkan 與 CPU 等後端;Apple silicon、AMD GPU、NPU 和其他專用加速器也有各自的軟體路線。實際選擇仍取決於指定模型、功能、模型格式、Runtime 與硬體支援。

看到 CUDA 需求時,至少要確認:

  1. 電腦是否有受支援、且記憶體足夠的 NVIDIA GPU。
  2. 作業系統是否在該 CUDA 版本的支援範圍內。
  3. NVIDIA Driver 是否符合應用程式或 CUDA Toolkit 的版本需求。
  4. 應用程式、框架與第三方函式庫使用的是哪個 CUDA 版本。
  5. GPU 的 Compute Capability 是否支援應用程式需要的功能。

Compute Capability 是 NVIDIA 用來標示各代 GPU 支援哪些 CUDA 硬體功能的版本號。相同的 CUDA Toolkit 不代表所有 NVIDIA GPU 都具備相同功能,仍要核對應用程式的最低需求。

CUDA 的版本相容性不只看一個數字。較新的驅動程式通常能執行以較舊 Toolkit 建置的應用程式;反過來搭配時則有版本範圍與功能限制。安裝或升級前,應以該應用程式的需求與 NVIDIA 相容性文件一起確認。