快轉到主要內容

Linux透過Nvidia官方套件庫安裝Nvidia驅動與CUDA Toolkit

· 民國115年丙午年
·
切換繁體/簡體
分類 Linux系統 Linux使用技巧
標籤 Nvidia CUDA Debian Ubuntu
目錄

Nvidia公司針對各種Linux發行版提供套件庫(repository),方便使用者安裝最新版Nvidia驅動與CUDA Toolkit。

支援的Linux發行版包含:Ubuntu、Debian、KylinOS、Fedora、RHEL、Rocky Linux、Amazon Linux、Azure Linux、SUSE Linux。

本文以Ubuntu為例。

注意:根據Nvidia官網建議,使用者應該優先使用Linux發行版套件庫打包的Nvidia驅動套件,比較穩定,參見Ubuntu安裝Nvidia驅動教學。真的需要新功能的時候才使用這裡的驅動。

1. 檢查Nvidia顯示卡相容性
#

  1. 確認Nvidia是否仍支援你的顯示卡驅動,到Nvidia官網查詢。只要不是十年以上的舊卡,Nvidia閉源驅動應該都會繼續提供支援。如果有支援,那麼就直接安裝最新版Nvidia閉源驅動。如果你的顯示卡已經停止支援,那麼頂多只能裝到特定舊版本的驅動。

舉例來說:NVIDIA GeForce GTX 1050屬於Turing架構以前的舊卡,那麼最高就只能裝到580版本的驅動。在Turing架構以後推出的NVIDIA GeForce GTX 1650,可以直接裝最新版的590驅動。

  1. 想知道目前電腦是使用哪一個主顯示卡,開啟終端機,安裝套件:sudo apt install vulkan-tools,再使用指令:vulkaninfo --summary指令查看,GPU0欄位應會印出Nvidia。

  2. 一些發行版,例如Ubuntu,可能在你第一次安裝系統的時候就自動裝好Nvidia驅動了。如何確認你現在是否已經安裝Nvidia閉源驅動程式?開啟終端機,執行nvidia-smi指令,看是否會印出Nvidia驅動版本。

  3. 若有Nvidia顯示卡但沒有安裝Nvidia閉源驅動,Linux預設應該會載入開源nouveau驅動。這可以用指令sudo lshw -C display確認,driver區段會顯示"nouveau"

2. 新增Nvidia套件庫
#

Nvidia官方套件庫,裡面含有各種CUDA版本與最新Nvidia閉源驅動。在你新增Nvidia套件庫之後,nvidia-driver-*相關套件的優先度會被替換為以Nvidia套件的為主,Ubuntu套件庫的次之。這點可以透過apt policy nvidia-driver-*指令確認。

  1. 安裝GCC與kernel headers
sudo apt install build-essential

sudo apt install linux-headers-$(uname -r)
  1. 如果有的話,刪除過期的套件庫金鑰
sudo apt-key del 7fa2af80
  1. 加入套件庫
# 使用環境變數os指定系統版本,系統太新可能會沒得下載
os=ubuntu2404

# 使用環境變數arch指定系統架構
arch=x86_64

# 取得套件庫鑰匙圈
wget https://developer.download.nvidia.com/compute/cuda/repos/$os/$arch/cuda-keyring_1.1-1_all.deb

# 安裝鑰匙圈
sudo apt install ./cuda-keyring_1.1-1_all.deb
  1. 重新整理套件庫
sudo apt update

3. 安裝Nvidia驅動
#

  1. 搜尋可用的Nvidia套件版本
sudo apt search nvidia-driver
  1. 以DKMS安裝Nvidia驅動

例如Turing架構以後的顯示卡,可以直接裝nvidia-open驅動

sudo apt install nvidia-open

Turing架構以前的顯示卡,要裝特定版本的舊版驅動。不過要注意的是,Nvidia套件庫可能不會收錄舊版驅動。

sudo apt install nvidia-driver-580
  1. 重開機,確認Nvidia驅動版本。
nvidia-smi

4. 安裝CUDA
#

必須先裝Nvidia專有驅動才能裝CUDA。

  1. 從Nvidia套件庫,安裝最新的CUDA Toolkit。由於Nvidia官方套件庫有最新版本驅動,若Ubuntu的Nvidia驅動版本對不上,在安裝CUDA的過程會強制升級。
sudo apt install cuda-toolkit
  1. 重開機。用nvcc --version指令確認CUDA版本

  2. 如果顯示Command nvcc not found,則編輯~/.bashrc

vim ~/.bashrc
  1. 加入以下兩條指令,將CUDA的路徑加入環境變數,撰文當下為CUDA 13-1。由於CUDA版本會一直更新,你可能要執行 ls /usr/local/查看CUDA的真正路徑,依照你的實際情況做修改。
export PATH=/usr/local/cuda-13-1/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda-13-1/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  1. 再嘗試檢查一次版本
source ~/.bashrc

nvcc --version
附錄:如何安裝舊版本CUDA?

如果裝了CUDA 12,才發現你需要的其實是CUDA 11,那就將其移除重裝。

註:如果常常需要在多個版本的CUDA之間切換,建議直接用Docker配合Nvidia Container Toolkit,每個容器有各自的CUDA版本,就不會受到宿主機的CUDA版本影響了。

  1. 刪除目前已安裝的Nvidia驅動與CUDA
sudo apt purge *nvidia*

sudo apt purge remove *cuda*

sudo apt autopurge
  1. 重新加入Nvidia CUDA套件庫
os=ubuntu2404

arch=x86_64

wget https://developer.download.nvidia.com/compute/cuda/repos/$os/$arch/cuda-keyring_1.0-1_all.deb

sudo apt install ./cuda-keyring_1.0-1_all.deb

sudo apt update
  1. 查看可用的CUDA版本。如果找不到舊版CUDA套件,那就是目前的系統不支援安裝舊版CUDA。
sudo apt search cuda
  1. 安裝舊版CUDA,例如CUDA 11.8
sudo apt install cuda-11-8
  1. 編輯~/.bashrc,將PATH修改為指向CUDA 11.8的路徑
export PATH=/usr/local/cuda-11/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda-11/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  1. 確認CUDA版本是否為11.8
source ~/.bashrc

nvcc --version

參考資料
#

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。