快轉到主要內容

Ubuntu LTS如何安裝Nvidia顯示卡閉源驅動、CUDA Toolkit

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

適用系統版本:Ubuntu 24.04 LTS以上

讓Ivon為您解說如何在Ubuntu LTS安裝Nvidia閉源驅動(proprietary driver),以及相關的CUDA與NVIDIA Container Toolkit套件。

一般用戶玩遊戲只要裝完Nvidia閉源驅動即可收工。

要跑3D渲染、神經網路、深度學習的用戶才裝後面的CUDA、NVIDIA Container Toolkit套件。這些套件都依賴Nvidia閉源驅動,但是不一定要全裝,端看專案需求。

1. 前言
#

Ubuntu內建支援Nvidia顯示卡的開源驅動「nouveau」,為Linux社群逆向工程而來,不至於讓電腦開機沒畫面。那為什麼還要安裝Nvidia官方發表的閉源驅動(專有驅動)?因為nouveau驅動會導致Nvidia顯示卡性能下降,控制風扇失效,並且無法使用Nvidia獨家的加速技術「CUDA」、「NVENC」。欲發揮Nvidia顯示卡全部潛能,安裝Nvidia閉源驅動乃必要之舉。

根據Ubuntu文件與Nvidia官方文件,安裝Nvidia驅動的方式共有以下幾種:

途徑驅動版本穩定性適用情況
Ubuntu套件庫穩定從Ubuntu系統版本的套件庫安裝並透過DKMS裝載。也就是apt install或者交由ubuntu-drivers自動偵測。這些Nvidia驅動都是由Ubuntu開發者測試過的,通常很穩定,不過驅動版本偏舊。適合不在乎CUDA版本,穩定性為重的用戶。
Proprietary GPU Drivers PPA不穩定這是Ubuntu團隊維護的額外套件庫,能取得最新版Nvidia驅動,但可能不穩定。適合需要最新版Nvidia驅動但又不想使用Nvidia官方套件庫的用戶。
使用Nvidia CUDA套件庫的驅動不穩定Nvidia公司維護的套件庫。適用:需要最新版Nvidia驅動與最新CUDA版本。
從Nvidia官網下載deb檔匯入PPA安裝(Local)不穩定新增Nvidia公司維護的PPA套件庫,將完整驅動檔案下載下來,再apt install。適用:顯卡已經不受官方支援;需要特定版本的驅動;需要在完全離線的環境安裝。
從Nvidia官網套件管理員匯入PPA安裝(Network)不穩定新增Nvidia公司維護的PPA套件庫,再從Nvida的套件庫apt install下載驅動套件。適用:顯卡已經不受官方支援;需要特定版本的驅動。
手動執行.run檔案安裝驅動不穩定就是透過執行.run的安裝器來安裝驅動。通常不建議這樣裝,會無法被套件管理器追蹤。適用:顯卡已經不受官方支援;需要特定版本的驅動;需要在完全離線的環境安裝。

Linux的Nvidia驅動不會一直都是官方發表的最新版本,要看你是從哪一種途徑安裝。

這裡的「穩定」是以Ubuntu維護者的角度來看。事實上只要是Nvidia官方正式發表的驅動都是夠穩定的,上面寫不穩定只是相對Ubuntu收錄的Nvidia驅動版本來說,這些套件沒有經過長時間測試。

本文採用的是透過Ubuntu套件庫安裝Nvidia驅動與CUDA。

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

註解:雖然Ubuntu有提供圖形界面的「軟體更新中心」,內含Nvidia驅動安裝器,但我篇文章全部用終端機指令安裝,方便檢查安裝結果是否正常。

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

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

舉例來說:NVIDIA GeForce GTX 1050屬於Turing架構以前的舊卡,那麼最高就只能裝到580版本的驅動。在Turing架構以後推出的NVIDIA GeForce GTX 1650,可以直接裝最新版的590驅動。但是在這篇文章中,我們沒有要使用Nvidia官網的驅動安裝器,所以這裡的資訊僅是作為參考。

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

3. 安裝Nvidia閉源驅動
#

桌電與伺服器
#

  1. 如果有的話,先將舊版Nvidia套件解除安裝:
sudo apt update

sudo apt upgrade

sudo apt purge *nvidia*
  1. 接著使用ubuntu-drivers list工具列出目前Nvidia顯示卡可用的驅動版本。例如Nvidia GTX 1050Ti會看到以下畫面:

  2. ubuntu-drivers自動挑選適合的版本安裝,有時候最新版Nvidia驅動不見得穩定。它會自動執行apt install指令選取適合版本的驅動。

# 讓Ubuntu自動挑選推薦的驅動版本
sudo ubuntu-drivers install

# 或者手動指定版本,填入要安裝的Nvidia驅動版本號。
sudo ubuntu-drivers install nvidia:580

順帶一提,你可以使用這個語法搜尋其他版本的Nvidia驅動:sudo apt search nvidia-driver-

  1. 安裝後nouveau應會自動加入黑名單禁止載入。接著重開機,用指令sudo lshw -C display確認是否安裝成功,driver區段應會顯示"nvidia"

  2. 輸入nvidia-smi指令應會看到目前的驅動版本。

  3. 如果遇到NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.錯誤,可能是nouveau沒有成功加入黑名單。觀察上面lshw指令輸出結果,如果Kernel modules:後面顯示nouveau,那麼就是沒有黑名單,nouveau驅動會跟Nvidia驅動搶控制權。此時,需要手動將nouveau加入開機禁止載入的核心模組黑名單,更新核心設定,並重開機:

echo "blacklist nouveau" | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf

echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf

sudo update-initramfs -u

雙GPU筆電
#

搭載Nvidia獨立顯示卡的筆電安裝顯示卡驅動的方式跟桌上型電腦一樣。

不過,像Intel+Nvidia這種的雙GPU筆電,即使裝了Nvidia驅動也可能繼續用Intel的GPU渲染3D,導致3D性能低下。

此時可以使用prime-select指令,指定用Nvidia顯示卡負責渲染作業。

sudo prime-select nvidia

重開機後再使用指令:vulkaninfo --summary查看主顯示卡為何。

相關文章:Nvidia PRIME指令使用方式

3. 如何查看Nvidia GPU使用量
#

了解Nvidia GPU的使用率、VRAM佔用、影片編碼用量。

Nvidia閉源驅動附帶的nvidia-smi -l指令便能夠查看GPU使用量。

不過nvidia-smi的資料太簡陋,建議透過nvtop工具查看,它能夠詳細顯示3D渲染與影片編解碼的使用率,並且支援Intel與AMD的GPU。

透過套件管理器安裝:

sudo apt install nvtop

透過nvtop指令啟動nvtop。如果出現警告訊息就按方向鍵,移動Enter確定。

這樣子就會顯示有哪些行程正在使用Nvidia顯示卡計算。

4. 安裝CUDA
#

CUDA (Compute Unified Device Architecture),在做深度學習、Blender渲染時常用到的技術。

必須先裝Nvidia閉源驅動才能裝CUDA。

  1. 從Ubuntu套件庫安裝CUDA Toolkit,重開機。
sudo apt update

sudo apt install nvidia-cuda-toolkit
  1. nvcc --version指令確認CUDA版本

  2. Ubuntu套件庫收錄的CUDA版本可能是舊版,如果需要新版,請改用CUDA套件庫安裝CUDA

參考資料
#

相關文章


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

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

Click here to edit your comments.

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