官方說明文件
https://docs.nvidia.com/cuda/index.html
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
好的,這一切顯得有些麻煩
首先,你要使用 CUDA,你需要使用 CUDA Toolkit,要使用者 CUDA Toolkit,你需要安裝 Driver,其實 NV 有提供整包的,但一般會分開裝
所以這邊會單獨說明如何安裝 CUDA Toolkit
有一些需要注意的狀況
以下依序說明
另外,本文將以 Fedora 42 為預設環境
最後更新 : 2025/11/03
系統相關
系統需求
要在系統上使用 NVIDIA CUDA,需具備以下項目:
- CUDA 相容 GPU
- 受支援的 Linux 版本,且安裝 gcc 編譯器與工具鏈
- CUDA Toolkit
請注意,在原文中有以下內容
- 可由一般使用者執行的指令,行首以
$表示。 - 需要管理者(root)權限的指令,行首以
#表示。
而在本文中,為求方便,會將 # 直接替換為 sudo,$ 則不另外標示
CUDA 開發環境與主機端(host)開發環境緊密整合(主機端編譯器與 C 執行期函式庫),僅支援已針對該 CUDA 版本完成相容性驗證的發行版。
下表為 CUDA 13.0 Update 2 所支援的 Linux 發行版。
注意:表格中「Codename」與括號中的架構(architecture),在本文中以
<distro>與<arch>代表。
| Distribution | OS Version | Kernel¹ | Default GCC | GLIBC |
|---|---|---|---|---|
| x86_64 | ||||
| RHEL 10.x | (x = 0) | 6.12.0-55 | 14.2.1 | 2.39 |
| RHEL 9.x | (x ≤ 6) | 5.14.0-570.12.1 | 11.5.0 | 2.34 |
| RHEL 8.x | (x ≤ 10) | 4.18.0-553 | 8.5.0 | 2.28 |
| Rocky Linux 10.x | (x = 0) | 6.12.0-55.21.1 | 14.2.1 | 2.39 |
| Rocky Linux 9.x | (x ≤ 6) | 5.14.0-570.19.1 | 11.5.0 | 2.34 |
| Rocky Linux 8.x | (x ≤ 10) | 4.18.0-553 | 8.5.0 | 2.28 |
| Oracle Linux | 9 | 5.14.0-427 | 11.4.1 | 2.34 |
| Oracle Linux | 8 | 4.18.0-553 | 8.5.0 | 2.28 |
| SUSE SLES 15.x | (x = 6/7) | 6.4.0-150600.21 | 7.5.0 | 2.38 |
| Ubuntu 24.04.x LTS | (x ≤ 3) | 6.14.0-29 | 13.3.0 | 2.39 |
| Ubuntu 22.04.x LTS | (x ≤ 5) | 6.5.0-45 | 12.3.0 | 2.35 |
| Debian 12.x | (x ≤ 12) | 6.1.148-1 | 12.2.0 | 2.36 |
| OpenSUSE Leap 15.x | (x = 6) | 6.4.0-150600.21 | 7.5.0 | 2.38 |
| Fedora | 42 | 6.14.0-63 | 15.1.1 | 2.41 |
| KylinOS | V10 SP3 2403 | 4.19.90-89.11.v2401 | 10.x | 2.28 |
| Amazon Linux 2023 | AL2023 | 6.1.82-99.168 | 11.4.1 | 2.34 |
| MSFT Azure Linux | 3.0 | 6.6.64.2-9.azl3 | 11.2.0 | 2.38-8 |
| MSFT Azure Linux | 2.0 | 5.15.158.2-1 | 13.2.0 | 2.35 |
| Generic amd64 systems (sbsa) | ||||
| RHEL 10.x | (x = 0) | 6.12.0-55.7.1.el10_0 | 14.2.1 | 2.39 |
| RHEL 9.x | (x ≤ 6) | 5.14.0-570.17.1 | 11.5.0 | 2.35 -2-63 |
| RHEL 8.x | (x ≤ 10) | 4.18.0-553 | 8.5.0 | 2.28 |
| Ubuntu 22.04.x LTS | (x ≤ 5) | 6.5.0-1019 | 11.4.0 | 2.35 |
| Ubuntu 24.04.x LTS | (x ≤ 3) | 6.8.0-83-generic | 13.3.0 | 2.39 |
| SUSE SLES 15.x | (x = 6/7) | 6.4.0-150700.51 | 7.5.0 | 2.38 |
| KylinOS V10 SP3 | V10 SP3 2403 | 4.19.90-52 | 7.3.0 | 2.28 |
| GRACE only arm64 systems (sbsa) | ||||
| Amazon Linux 2023 | AL2023 | 6.12.16-18 | 11.4.1 | 2.34 |
| MSFT Azure Linux | 3.0 | 6.6.64.2-9.azl3 | 13.2.0 | 2.38-8 |
| Ubuntu 22.04.x LTS | (x ≤ 5) | 6.8.0-1030-nvidia-64k | 11.4.0 | 2.35 |
| Ubuntu 24.04.x LTS | (x ≤ 3) | 6.8.0-1031-nvidia-64k | 13.2.0 | 2.39 |
| RHEL 10.x | (x = 0) | 6.12.0-55.9.1.el10_0 | 14.2.1 | 2.39 |
| RHEL 9.x | (x = 4/5/6) | 5.14.0-570.28.1.el9_6.aarch64+64k | 11.5.0 | 2.34 |
| SUSE SLES 15.x | (x = 6/7) | 6.4.0-150700.51 | 7.5.0 | 2.38 |
| arm64 sbsa Jetson (dGPU + iGPU with OpenRM) | ||||
| Ubuntu 24.04.x LTS Rel37 (JP7.x) | native | 6.8.12-tegra | 13.3.0 | 2.39 |
| Ubuntu 24.04.x LTS Rel37 (JP7.x) | cross | 6.11.0-28-generic | 13.3.0 | 2.39 |
作業系統支援政策(OS Support Policy)
支援各作業系統至其官方定義的 EOSS/EOL 為止。請參考各發行版的支援生命週期以掌握時程,並規劃升級。
主機端編譯器支援政策(Host Compiler Support Policy)
為了編譯 CUDA 原始碼中的 CPU “host” 端程式,CUDA 編譯器 NVCC 需要安裝相容的主機端編譯器。
NVCC 會檢查主機編譯器主要版本(major);
較新的 minor 版本通常可用,但 major 超出範圍則不支援。
支援的編譯器(Supported Compilers)
| Distribution | GCC | Clang | NVHPC | XLC | ArmC/C++ |
|---|---|---|---|---|---|
| x86_64 | 6.x – 15.x | 7.x – 20.x | 24.9–25.5 | No | No |
| Arm64 sbsa | 6.x – 15.x | 7.x – 20.x | 24.9–25.5 | No | 24.04–24.10 |
補充:
- 對於 GCC 與 Clang,上表標示最小版本與最新支援版本。若你的發行版預設編譯器版本低於需求,建議升級工具鏈(例如 RHEL 的 Developer Toolset)。
- 針對預設 GCC 6xx 以下的平臺,不支援連結 CUDA Toolkit 提供的靜態/動態函式庫。
- 僅支援 libstdc++(GCC 的實作)做為 C++ 標準函式庫。
主機編譯器相容套件(Host Compiler Compatibility Packages)
非常新的發行版可能預設採用比上表更高的編譯器版本(支援的編譯器附表)。
通常該發行版也會提供 GCC 相容性套件可供 NVCC 使用。
實作方式依發行版而異,但邏輯相同:最後會設定 NVCC_BIN 環境變數(詳見 NVCC 文件)。
支援的 C++ 語言版本(Supported C++ Dialects)
NVCC 與 NVRTC**(CUDA 執行期編譯器)在受支援主機編譯器上支援 C++11 / C++14 / C++17 / C++20。
NVCC 的預設 C++ 方言由「主機編譯器的預設」決定。
C++20 支援的主機編譯器(host 與 device 端皆適用):
| GCC | Clang | NVHPC | Arm C/C++ |
|---|---|---|---|
| >=10.x | >=11.x | >=22.x | >=22.x |
安裝
注意事項
這邊說明一下
CUDA 本身是要與相對應的 Driver 搭配,但是一個 Driver 可以裝多個 CUDA Toolkit;
另外在 CUDA 13.0 之前,為了方便,會包含一個 NVIDIA 顯示驅動程式。
而這個捆綁的驅動程式僅用於開發目的。NV 官方不建議將其用於生產環境,尤其是 Tesla GPU。
與此同時在安裝 CUDA Toolkit 期間,使用者可以選擇跳過驅動程式安裝:
- 在 Windows 上:透過互動式或靜默安裝選項。
- 在 Linux 上:透過跳過驅動程式的 meta 套件
簡單說就是如果安裝整個完整的 CUDA,則會包含驅動程式 + CUDA Toolkit
但我們上面已經安裝過 Driver 了,所以這裡只需要安裝 CUDA Toolkit
請注意,建議驅動與 CUDA Toolkit 分開安裝,不要用他包一起的
好的,事情是這樣的,首先,執行 nvidia-smi,你會看到一些輸出,如下
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 581.15 Driver Version: 581.15 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
可以看到 Driver Version 與 CUDA Version
這裡的 CUDA Version 指的是最高可以支援的 CUDA Toolkit 版本
詳情參閱表一
也就是說,如果你的驅動是在 525-580 之間,則 CUDA Toolkit 12.x 版本的都可以使用
此外,CUDA 驅動程式是向後相容的,這意味著針對特定 CUDA 版本編譯的應用程式,將能在後續(更新)的驅動程式版本上繼續運作。
也就世說,你也可以使用 11.x 的版本
但沒有向後相容,所以你不能裝 13.x 的版本
而表二則是如果你安裝完整 CUDA 包,會包含的 Driver,但這裡我們同時也可以當成辨認驅動版本對應的 CUDA Toolkit 版本的細項表格
也就是說如果你的驅動是 560.35.03 ,則你要安裝 CUDA 12.6 Update 2
或是任一 CUDA 12.x 版本也行
大概是這樣
表 1 : CUDA Toolkit 與 CUDA 次要版本相容性所需的最低驅動程式版本
| CTK 版本 | 驅動程式範圍 (用於次要版本相容性) | |
|---|---|---|
| 最低 (Min) | 最高 (Max) | |
| 13.x | >= 580 | N/A |
| 12.x | >= 525 | < 580 |
| 11.x | >= 450 | < 525 |
表 2 : CUDA Toolkit 與對應的 Driver 版本
| CUDA Toolkit | Linux x86_64 Driver Version | Windows x86_64 Driver Version |
|---|---|---|
| CUDA 13.0 Update 2 | >=580.95.05 | N/A |
| CUDA 13.0 Update 1 | >=580.82.07 | N/A |
| CUDA 13.0 GA | >=580.65.06 | N/A |
| CUDA 12.9 Update 1 | >=575.57.08 | >=576.57 |
| CUDA 12.9 GA | >=575.51.03 | >=576.02 |
| CUDA 12.8 Update 1 | >=570.124.06 | >=572.61 |
| CUDA 12.8 GA | >=570.26 | >=570.65 |
| CUDA 12.6 Update 3 | >=560.35.05 | >=561.17 |
| CUDA 12.6 Update 2 | >=560.35.03 | >=560.94 |
| CUDA 12.6 Update 1 | >=560.35.03 | >=560.94 |
| CUDA 12.6 GA | >=560.28.03 | >=560.76 |
| CUDA 12.5 Update 1 | >=555.42.06 | >=555.85 |
| CUDA 12.5 GA | >=555.42.02 | >=555.85 |
| CUDA 12.4 Update 1 | >=550.54.15 | >=551.78 |
| CUDA 12.4 GA | >=550.54.14 | >=551.61 |
| CUDA 12.3 Update 1 | >=545.23.08 | >=546.12 |
| CUDA 12.3 GA | >=545.23.06 | >=545.84 |
| CUDA 12.2 Update 2 | >=535.104.05 | >=537.13 |
| CUDA 12.2 Update 1 | >=535.86.09 | >=536.67 |
| CUDA 12.2 GA | >=535.54.03 | >=536.25 |
| CUDA 12.1 Update 1 | >=530.30.02 | >=531.14 |
| CUDA 12.1 GA | >=530.30.02 | >=531.14 |
| CUDA 12.0 Update 1 | >=525.85.12 | >=528.33 |
| CUDA 12.0 GA | >=525.60.13 | >=527.41 |
| CUDA 11.8 GA | >=520.61.05 | >=520.06 |
| CUDA 11.7 Update 1 | >=515.48.07 | >=516.31 |
| CUDA 11.7 GA | >=515.43.04 | >=516.01 |
| CUDA 11.6 Update 2 | >=510.47.03 | >=511.65 |
| CUDA 11.6 Update 1 | >=510.47.03 | >=511.65 |
| CUDA 11.6 GA | >=510.39.01 | >=511.23 |
| CUDA 11.5 Update 2 | >=495.29.05 | >=496.13 |
| CUDA 11.5 Update 1 | >=495.29.05 | >=496.13 |
| CUDA 11.5 GA | >=495.29.05 | >=496.04 |
| CUDA 11.4 Update 4 | >=470.82.01 | >=472.50 |
| CUDA 11.4 Update 3 | >=470.82.01 | >=472.50 |
| CUDA 11.4 Update 2 | >=470.57.02 | >=471.41 |
| CUDA 11.4 Update 1 | >=470.57.02 | >=471.41 |
| CUDA 11.4.0 GA | >=470.42.01 | >=471.11 |
| CUDA 11.3.1 Update 1 | >=465.19.01 | >=465.89 |
| CUDA 11.3.0 GA | >=465.19.01 | >=465.89 |
| CUDA 11.2.2 Update 2 | >=460.32.03 | >=461.33 |
| CUDA 11.2.1 Update 1 | >=460.32.03 | >=461.09 |
| CUDA 11.2.0 GA | >=460.27.03 | >=460.82 |
| CUDA 11.1.1 Update 1 | >=455.32 | >=456.81 |
| CUDA 11.1 GA | >=455.23 | >=456.38 |
| CUDA 11.0.3 Update 1 | >= 450.51.06 | >= 451.82 |
| CUDA 11.0.2 GA | >= 450.51.05 | >= 451.48 |
| CUDA 11.0.1 RC | >= 450.36.06 | >= 451.22 |
| CUDA 10.2.89 | >= 440.33 | >= 441.22 |
| CUDA 10.1 (10.1.105 general release, and updates) | >= 418.39 | >= 418.96 |
| CUDA 10.0.130 | >= 410.48 | >= 411.31 |
| CUDA 9.2 (9.2.148 Update 1) | >= 396.37 | >= 398.26 |
| CUDA 9.2 (9.2.88) | >= 396.26 | >= 397.44 |
| CUDA 9.1 (9.1.85) | >= 390.46 | >= 391.29 |
| CUDA 9.0 (9.0.76) | >= 384.81 | >= 385.54 |
| CUDA 8.0 (8.0.61 GA2) | >= 375.26 | >= 376.51 |
| CUDA 8.0 (8.0.44) | >= 367.48 | >= 369.30 |
| CUDA 7.5 (7.5.16) | >= 352.31 | >= 353.66 |
| CUDA 7.0 (7.0.28) | >= 346.46 | >= 347.62 |
安裝前準備
在 Linux 上安裝 CUDA Toolkit 前,請先完成以下事項:
- 確認 GPU 為 CUDA 相容。
- 確認作業系統版本受支援。
- 確認系統已安裝 gcc。
- 下載 NVIDIA CUDA Toolkit。
- 處理可能衝突的安裝方式。
確認 GPU 是否支援 CUDA(Verify CUDA‑Capable GPU)
從桌面環境的系統資訊查看,或在命令列輸入:
lspci | grep -i nvidia
若沒有偵測到,可先更新 Linux 所維護的PCI 硬體資料庫,再重試:
sudo update-pciids
lspci | grep -i nvidia
確認受支援的 Linux(Verify Supported Linux)
CUDA 開發工具僅支援特定的 Linux 發行版。查詢當前發行版與版本號:
hostnamectl
確認已安裝 gcc(Verify gcc)
編譯 CUDA 程式需要 gcc;僅執行 CUDA 應用則不一定需要。多數受支援的發行版預設安裝的 gcc 版本即可。
檢查 gcc 版本:
gcc --version
選擇安裝方式(Choose an Installation Method)
CUDA Toolkit 提供兩大安裝機制:
- 發行版專用套件:RPM / DEB(與系統套件管理整合)
- 與發行版無關的 runfile**:獨立安裝檔(但不會納入系統套件管理)
建議能用發行版套件就優先使用
安裝 CUDA Toolkit
這裡我們選擇使用網路安裝
使用以下指令
# 加入 repo
sudo dnf config-manager addrepo --from-repofile https://developer.download.nvidia.com/compute/cuda/repos/fedora42/x86_64/cuda-fedora42.repo
# 清除 cache
sudo dnf clean all
# 安裝 CUDA Toolkit
sudo dnf -y install cuda-toolkit-13-0
# 重新開機
reboot
完成安裝
安裝後動作(Post-installation Actions)
安裝後需要手動執行一些動作。這些動作分為必做(mandatory)、建議(recommended)、與可選(optional) 三類。
需要做的(Mandatory Actions)
在 CUDA Toolkit 可以被使用之前,安裝完成後必須執行以下步驟。
環境設定(Environment Setup)
必須將 CUDA 的 bin 路徑加入 PATH 環境變數;
先確定有沒有建立 symlinks
ls -l /usr/local/ | grep cuda
若沒有
sudo ln -s /usr/local/cuda-<version> /usr/local/cuda
之後建立一個腳本
sudo nano /etc/profile.d/cuda.sh
在裡面輸入以下指令來建立 PATH
if [ -d "/usr/local/cuda/bin" ]; then
export PATH=/usr/local/cuda/bin:${PATH:+:$PATH}
fi
之後存檔即可
可選(Optional Actions)
以下功能非使用 CUDA Toolkit 所必需,但可提供額外能力。
安裝第三方函式庫(Install Third-party Libraries)
部分 CUDA 範例會使用第三方函式庫,這些函式庫可能不是系統預設安裝。
範例在建置時會嘗試偵測所需函式庫;若偵測不到,該範例會自動跳過並提示缺少哪些套件。要建置與執行這些範例,請先安裝缺少的函式庫。
Fedora
sudo dnf install freeglut-devel libX11-devel libXi-devel libXmu-devel make mesa-libGLU-devel freeimage-devel libglfw3-devel
切換系統中的活動 CUDA 版本(Select the Active Version of CUDA)
對於依賴 /usr/local/cuda 與 /usr/local/cuda-MAJOR 這些 symlink 的應用程式,可使用 alternatives 機制切換到系統內另一個已安裝的 CUDA 版本。
顯示目前啟用版本與所有可用版本:
update-alternatives --display cuda
顯示指定主版本(例如 12)的活動次版本:
update-alternatives --display cuda-12
互動式切換活動版本:
sudo update-alternatives --config cuda
至此,所有安裝及設定完成