適用系統版本:Ubuntu 24.04 LTS以上
本文解說如何在Ubuntu LTS以終端機指令安裝Nvidia專有驅動(proprietary driver),以及相關的CUDA、NVIDIA Container Toolkit套件。
一般用戶玩遊戲只要裝完Nvidia專有驅動即可收工。
要跑3D渲染、神經網路、深度學習的用戶才裝後面的CUDA、cuDNN、TensorRT、NVIDIA Container Toolkit套件。這些套件都依賴Nvidia專有驅動,但是不一定要全裝,端看專案需求。
0. 前言#
Ubuntu內建支援Nvidia顯示卡的開源驅動「nouveau」,為Linux社群逆向工程而來,不至於讓電腦開機沒畫面。那為什麼Nvidia官方發表的專有(閉源)驅動並非開源軟體,仍建議您安裝?因為nouveau驅動會導致Nvidia顯示卡性能下降,控制風扇失效,並且無法使用Nvidia獨家的加速技術「CUDA」、「NVENC」。欲發揮Nvidia顯示卡全部潛能,安裝Nvidia專有驅動乃必要之舉。
一切安裝指令以參考資料處的【Nvidia官方文件】為準。
Nvidia官方文件提供的安裝方式主要有四種:
- 從tar檔安裝
- 下載deb檔匯入PPA安裝(Local)
- 套件管理員匯入PPA安裝(Network)
- 下載
.run
檔安裝
本文採用「3.套件管理員匯入PPA安裝」,這樣就不需要去官網註冊帳號下載安裝檔了,Nvidia驅動會自動跟著系統套件管理員更新,裝錯版本也比較好解除安裝。
儘管Ubuntu本身的套件庫有Nvidia驅動相關的套件,但是有的是舊版本,所以我們使用Nvidia官方維護的套件庫取得最新驅動套件。
1. 安裝Nvidia專有驅動#
這裡的Nvidia驅動是從Ubuntu官方套件庫安裝的。
1.1. 桌電與伺服器#
想知道目前電腦是使用哪一個主顯示卡,開啟終端機,安裝套件:
sudo apt install vulkan-tools
,再使用指令:vulkaninfo --summary
指令查看,GPU0
欄位應會印出Nvidia。若有Nvidia顯示卡,Ubuntu預設會載入開源的nouveau驅動,用指令
sudo lshw -C display
確認,driver區段會顯示"nouveau"先將nouveau套件與舊版Nvidia套件解除安裝:
sudo apt update
sudo apt upgrade
sudo apt purge *nvidia*
接著使用
ubuntu-drivers list
指令列出目前Nvidia顯示卡可用的驅動版本。例如Nvidia GTX 1050Ti會看到以下畫面:如果您沒有要使用CUDA,那就讓Ubuntu自動挑選適合的版本安裝;要使用CUDA請注意挑選正確的驅動版本。
# 讓Ubuntu自動挑選推薦的驅動版本
sudo ubuntu-drivers install
# 或者手動指定版本,填入要安裝的Nvidia驅動版本號。
sudo ubuntu-drivers install nvidia:560
安裝後nouveau應會自動加入黑名單禁止載入。接著重開機,用指令
sudo lshw -C display
確認是否安裝成功,driver區段應會顯示"nvidia"輸入
nvidia-smi
指令應會看到目前的驅動狀況
1.2. 雙GPU筆電#
搭載Nvidia獨立顯示卡的筆電安裝顯示卡驅動的方式跟桌上型電腦一樣。
不過,像Intel+Nvidia這種的雙GPU筆電,即使裝了Nvidia驅動也可能繼續用Intel的GPU渲染3D,導致3D性能低下。
此時可以使用prime-select
指令,指定用Nvidia顯示卡負責渲染作業。
sudo prime-select nvidia
重開機後再使用指令:vulkaninfo --summary
查看主顯示卡為何。
相關文章: Nvidia PRIME指令使用方式
2. 安裝CUDA#
CUDA (Compute Unified Device Architecture),在做深度學習、Blender渲染時常用到的技術。
必須先裝Nvidia專有驅動才能裝CUDA。
- 安裝GCC與kernel headers
sudo apt install build-essential
sudo apt install linux-headers-$(uname -r)
- 刪除過期的金鑰
sudo apt-key del 7fa2af80
- 加入的Nvidia官方PPA,裡面含有各種CUDA版本與最新Nvidia專有驅動。
# 使用環境變數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
- 安裝最新的CUDA Toolkit,重開機。由於Nvidia官方套件庫有最新版本驅動,若Ubuntu的Nvidia專有驅動版本對不上,在安裝CUDA的過程會自動升級。
sudo apt update
sudo apt install cuda-toolkit
用
nvcc --version
指令確認CUDA版本如果顯示
Command nvcc not found
,則將路徑加入至~/.bashrc
:
export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
- 再嘗試檢查一次版本
source ~/.bashrc
nvcc --version
如何安裝舊版本CUDA
如果裝了CUDA 12.6,才發現你需要的其實是CUDA 11.8,那就將其移除重裝。
- 刪除目前已安裝的Nvidia驅動、CUDA、cuDNN
sudo apt purge *nvidia*
sudo apt --purge remove "*cublas*" "cuda*" "nsight*"
sudo apt autoremove
- 安裝舊版CUDA,會一併把對應的Nvidia驅動一起裝回來。
os=ubuntu2204
arch=x86_64
wget https://developer.download.nvidia.com/compute/cuda/repos/$os/$arch/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
- 編輯
~/.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}}
- 確認CUDA版本是否為11.8
source ~/.bashrc
nvcc --version
3. 安裝NVIDIA Container Toolkit#
這是設計給Docker和Podman容器用的Nvidia工具,使容器可以使用CUDA計算。
即使宿主機沒有安裝CUDA套件,容器內照樣可以使用CUDA計算。
必須先安裝Nvidia專有驅動才可以安裝NVIDIA Container Toolkit。
在Ubuntu 安裝Docker
加入Nvidia的套件庫
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
- 安裝NVIDIA Container Toolkit
sudo apt update
sudo apt install nvidia-container-toolkit
- 向Docker註冊Nvidia裝置
sudo nvidia-ctk runtime configure --runtime=docker
- 重新啟動Docker
sudo systemctl restart docker
- 執行Ubuntu容器,測試能否印出Nvidia顯示卡的資訊。
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
4. 安裝cuDNN#
CUDA Deep Neural Network (cuDNN)
必須先裝CUDA才能裝cuDNN,安裝cuDNN前務必檢查CUDA版本是否正確。
- 如果有新增CUDA套件庫,從Nvidia官方套件庫安裝cuDNN即可。CUDA 12就安裝cuDNN 9的套件:
sudo apt install cudnn9-cuda-12
- 安裝cuDNN執行時與範本。
sudo apt install libcudnn9-samples
- 編譯執行官方範本,測試cuDNN安裝是否成功
cd $HOME/cudnn_samples_v9/mnistCUDNN
make clean && make
./mnistCUDNN
- 看到
Test passed!
代表安裝成功。
5. 安裝TensorRT#
TensorRT是Nvidia推出的深度學習推理平台。
必須先安裝CUDA才能安裝TensorRT。
TensorRT目前還沒有PPA可以用,很多套件都找不到,必須註冊Nvidia帳號下載匯入。至 Nvidia官網註冊帳號,登入,勾選同意授權條款,點選TensortRT 10,選Ubuntu 22.04的deb檔下載
安裝TensorRT的deb檔,加入套件庫
# 指定系統版本
os="ubuntu2204"
# 指定TensorRT版本
tag="10.5.0.x-1+cuda12.6"
sudo dpkg -i nv-tensorrt-local-repo-${os}-${tag}_1.0-1_amd64.deb
sudo cp /var/nv-tensorrt-local-repo-${os}-${tag}/*-keyring.gpg /usr/share/keyrings/
sudo apt update
- 安裝TensorRT
sudo apt install tensorrt
參考資料#
- NVIDIA drivers installation - Ubuntu Server documentation
- Nouveau: Accelerated Open Source driver for nVidia cards - freedesktop.org
- NVIDIA Driver Installation Quickstart Guide
- NVIDIA CUDA Installation Guide for Linux
- NVIDIA Deep Learning cuDNN Documentation
- NVIDIA Deep Learning TensorRT Documentation
- NVIDIA Container Toolkit Installation Guide