本文解說如何在Debian GNU/Linux系統安裝Nvidia驅動程式與CUDA套件。系統版本為Debian11 (Bullseye,Stable分支)。
安裝方法參考自Debian Wiki與Nvidia官方文件,以APT套件管理員線上安裝(Network Installation)為主,方便升級與解除安裝。
在安裝Debian的時候,如果有Nvidia顯示卡,預設會安裝開源的nouveau驅動。但是要使用CUDA技術,就得安裝Nvidia的專有驅動。
以lspci | egrep 'VGA|NVIDIA'
確認電腦顯示卡型號,應會看到如下輸出。
01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
用指令lsmod | grep nouveau
查看目前使用的驅動程式是否為nouveau,應會顯示已載入nouveau核心模組
nouveau
nouveau是含在mesa套件裡面的,一般不需要刪除套件,在安裝Nvidia專有驅動後nouveau就會自動被停用。
另外,需要多版本Python共存的請安裝 Anaconda。
1. 安裝Nvidia專有驅動#
Debian官方非自由(non-free)的套件庫有收錄Nvidia驅動的套件。
- 首先要啟用非自由的套件庫
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository contrib
sudo add-apt-repository non-free
sudo apt update
- 接著以DKMS安裝Nvidia驅動
sudo apt install nvidia-driver firmware-misc-nonfree
- 安裝後重開機,執行
nviia-smi
指令查看目前驅動版本。
Debian Stable提供的nvidia-driver
套件版本可能有點舊,這沒有關係,下面安裝CUDA的時候會自動裝上新版驅動。
2. 安裝CUDA#
Debian有收錄CUDA套件:nvidia-cuda-dev
和nvidia-cuda-toolkit
和nvidia-visual-profiler
,但是要取得最新版本得用Nvidia官方的儲存庫。
- 取得Nvidia提供的儲存庫金鑰。
$distro
是Debian版本號碼,$arch
是作業系統架構。
distro=debian11
arch=x86_64
wget https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/cuda-keyring_1.0-1_all.deb
- 安裝CUDA套件,目前最新版CUDA為12.1。
sudo apt-get update
sudo apt-get -y install cuda
# 或是指定舊版CUDA
sudo apt-get install cuda-11.8
- CUDA會安裝至
/usr/local/
,以VIM編輯~/.bashrc
vim ~/.bashrc
- 將以下二行加到檔案末尾,這樣系統才找得到CUDA 12的檔案
export PATH=/usr/local/cuda-12/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
- 重開機,執行
nvcc --version
指令查看CUDA版本
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Feb__7_19:32:13_PST_2023
Cuda compilation tools, release 12.1, V12.1.66
Build cuda_12.1.r12.1/compiler.32415258_0
3. 安裝cuDNN#
- 安裝gcc, zlib1g, libfreeimage
sudo apt-get install build-essential zlib1g libfreeimage-dev
- 加入Nvidia官方的儲存庫
OS=debian11
wget https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/cuda-${OS}.pin
sudo mv cuda-${OS}.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/ /"
sudo apt-get update
- 安裝cuDNN執行時
# 如果找不到套件請用apt search libcudnn8查找其確切版本號碼
cudnn_version=8.8.1.3
cuda_version=cuda12.0
sudo apt-get install libcudnn8=${cudnn_version}-1+${cuda_version}
sudo apt-get install libcudnn8-dev=${cudnn_version}-1+${cuda_version}
要驗證cuDNN安裝的方法就是嘗試編譯官方給的範本…但Nvidia好像忘了給Debian提供範本,只有Ubuntu才找得到
libcudnn8-samples
。到 Nvidia官網,註冊登入,手動下載CUDA套件庫
Local Installer for Debian 11 (Deb)
,並安裝範本:
OS=debian11
cudnn_version=8.8.1.3
cuda_version=cuda12.0
sudo dpkg -i cudnn-local-repo-${OS}-${cudnn_version}_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install libcudnn8-samples=${cudnn_version}-1+${cuda_version}
- 嘗試編譯範本,顯示
Test passed!
代表cuDNN安裝成功。
cp -r /usr/src/cudnn_samples_v8/ $HOME
cd $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
./mnistCUDNN