Ubuntu 22.04如何安裝Nvidia、CUDA、cuDNN、TensorRT專有驅動程式

本文解說如何在Ubuntu 22.04 LTS以終端機指令安裝Nvidia專有驅動,以及相關的CUDA、cuDNN、TensorRT套件。

一般用戶玩遊戲只要裝完Nvidia專有驅動即可收工。要跑3D渲染、神經網路、深度學習的用戶才視需求裝後面的CUDA、cuDNN、TensorRT套件。

Anaconda請參閱此篇安裝。

0. 前言

一切安裝指令以參考資料處的【官方文件】為準。

Nvidia官方文件提供的安裝方式主要有四種:1. 從tar檔安裝 2. 下載deb檔匯入PPA安裝(Local) 3. 套件管理員匯入PPA安裝(Network) 4. 下載.run檔安裝

本文盡量採用最省時省力的3.套件管理員匯入PPA安裝,這樣就不需要去官網註冊帳號下載安裝檔了,裝錯版本也比較好解除安裝。

要使用Tensorflow前務必參閱官網,了解對應的CUDA版本才安裝。

1. 安裝Nvidia專有驅動

為什麼Nvidia驅動並非自由軟體,也建議你安裝?因為Ubuntu預設採用的nouveau驅動會導致Nvidia顯示卡遊戲性能下降,並且無法使用Nvidia獨家的加速技術,例如CUDA。

欲發揮Nvidia顯示卡全部潛能,安裝Nvidia專有驅動乃必要之舉。

1.1. 桌上型電腦

  1. 若有Nvidia顯示卡,Ubuntu預設會載入開源的nouveau驅動,用指令sudo lshw -C display確認,driver區段會顯示"nouveau"

  2. 欲使用CUDA技術,必須安裝專有的Nvidia驅動程式。先將nouveau套件刪除:

1
2
3
sudo apt update
sudo apt upgrade
sudo apt purge *nvidia*
  1. 接著使用ubuntu-drivers list指令列出目前Nvidia顯示卡可用的驅動版本。例如GTX 1050Ti會看到以下畫面,顯示卡若太舊可能就沒有新版驅動能裝。

  2. 按照輸出內容,填入要安裝的Nvidia驅動版本號。如果你沒有要使用CUDA,那就挑最新版的裝;要使用CUDA請注意挑選正確的驅動版本。

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

  2. 輸入nvidia-smi指令應會看到目前的驅動狀況

1.2. 雙GPU筆電

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

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

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

1
sudo prime-select nvidia

2. 安裝CUDA

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

本文撰寫時點CUDA最新版本為12.1。

  1. 加入Ubuntu 22.04的Nvidia官方PPA,裡面含有各種CUDA版本
1
2
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
  1. 安裝最新的CUDA 12.1,重開機。
1
2
3
4
5
sudo apt update
sudo apt-get install cuda
# 或是 sudo apt-get install cuda-12-1

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

  2. 如果顯示Command nvcc not found,則將路徑加入至~/.bashrc

1
2
export PATH=/usr/local/cuda-12/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  1. 再嘗試檢查一次版本
1
2
source ~/.bashrc
nvcc --version
如何安裝舊版本CUDA

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

  1. 刪除目前已安裝的Nvidia驅動、CUDA、cuDNN
1
2
3
sudo apt purge *nvidia*
sudo apt-get --purge remove "*cublas*" "cuda*" "nsight*"
sudo apt autoremove
  1. 安裝舊版CUDA,會一併把對應的Nvidia驅動一起裝回來。
1
2
3
4
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt update
sudo apt install cuda-11-8
  1. 編輯~/.bashrc,將PATH修改為指向CUDA 11.8的路徑
1
2
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
1
2
source ~/.bashrc
nvcc --version

3. 安裝cuDNN

CUDA Deep Neural Network (cuDNN)

安裝cuDNN前務必檢查CUDA版本是否正確。

  1. 加入Ubuntu 22.04的Nvidia官方PPA
1
2
3
4
5
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
sudo apt-get update
  1. 安裝cuDNN執行時與範本。libcudnn8後面的數字應為cuda12.0cuda11.8。另外還需要安裝libfreeimage。
1
2
3
4
5
6
7
8
9
sudo apt install libfreeimage-dev

# CUDA 12.0
sudo apt-get install libcudnn8=8.8.0.121_1.0-1+cuda12.0
sudo apt-get install libcudnn8-dev=8.8.0.121-1+cuda12.0

# CUDA 11.8
sudo apt-get install libcudnn8=8.8.0.121_1-1+cuda11.8
sudo apt-get install libcudnn8-dev=8.8.0.121-1+cuda11.8
  1. 編譯執行官方範本,測試cuDNN安裝是否成功
1
2
3
4
cp -r /usr/src/cudnn_samples_v8/ $HOME
cd  $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
./mnistCUDNN
  1. 看到Test passed!代表安裝成功。

4. 安裝TensorRT

TensorRT是Nvidia推出的深度學習推理平台。

TensorRT目前還沒有PPA可以直接用,必須註冊Nvidia帳號下載匯入。

  1. Nvidia官網註冊帳號,登入,勾選同意授權條款,點選Ubuntu 22.04的deb檔下載

  2. 安裝TensorRT

1
2
3
4
5
sudo dpkg -i nv-tensorrt-local-repo-ubuntu2204-8.5.2-cuda-11.8_1.0-1_amd64.deb
sudo cp /var/nv-tensorrt-local-repo-ubuntu2204-8.5.2-cuda-11.8/nv-tensorrt-local-A4462430-keyring.gpg /usr/share/keyrings/

sudo apt-get update
sudo apt-get install tensorrt

參考資料

如果本網站文章對您有幫助,歡迎贊助我。