快轉到主要內容

如何在Debian系統安裝Nvidia驅動、CUDA、NVIDIA Container Toolkit

分類  
標籤   Debian Nvidia
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

適用系統版本:Debian 12 Bookworm

本文解說如何在Debian GNU/Linux系統安裝Nvidia驅動程式與CUDA套件。

安裝方法參考自Debian Wiki與Nvidia官方文件,以APT套件管理員線上安裝(Network Installation)為主,方便升級與解除安裝。

lspci -nn | egrep -i "3d|display|vga"確認電腦顯示卡型號,應會看到如下輸出。

01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)

在安裝Debian的時候,如果有Nvidia顯示卡,預設會載入開源的nouveau驅動。但是要使用CUDA技術,就得安裝Nvidia的專有驅動。

nouveau是含在mesa套件裡面的,一般不需要刪除套件,在安裝Nvidia專有驅動後nouveau就會自動被停用。

另外,需要多版本Python共存的請安裝 Anaconda

1. 安裝Nvidia專有驅動
#

1.1. 桌電與伺服器
#

Debian官方非自由(non-free)的套件庫有收錄Nvidia驅動的套件。

  1. 查看現在Nvidia GPU是使用哪個驅動。
sudo lspci -k | grep -A 2 -i "NVIDIA"
  1. 沒安裝Nvidia專有驅動前,Linux應該會載入nouveau核心模組。
# 範例輸出
07:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
        Subsystem: ASUSTeK Computer Inc. Device 85d6
        Kernel modules: nouveau
  1. 啟用非自由的套件庫
sudo apt update

sudo apt install software-properties-common

sudo add-apt-repository contrib

sudo add-apt-repository non-free

sudo apt update
  1. 接著以DKMS安裝Nvidia驅動
sudo apt install linux-headers-amd64

sudo apt install nvidia-driver firmware-misc-nonfree
  1. 安裝後重開機,執行nvidia-smi指令查看目前驅動版本。

  2. 再度執行lspci指令

sudo lspci -k | grep -A 2 -i "NVIDIA"
  1. 查看nouveau是否已經變成nvidia。
# 範例輸出
07:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
        Subsystem: ASUSTeK Computer Inc. Device 85d6
        Kernel modules: nvidia_drm, nvidia
  1. Debian Stable提供的nvidia-driver套件版本可能有點舊,這沒有關係,下面安裝CUDA的時候會自動裝上新版驅動。

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
#

Debian套件庫有收錄CUDA的套件,但是要取得最新版本得用Nvidia官方的套件庫。

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

  1. 取得Nvidia提供的套件庫金鑰。$distro是Debian版本號碼,$arch是作業系統架構。
distro=debian12

arch=x86_64

wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-keyring_1.1-1_all.deb

sudo apt install ./cuda-keyring_1.1-1_all.deb
  1. 安裝CUDA套件,目前最新版CUDA為12.6。
sudo apt update

sudo apt install cuda-toolkit
  1. CUDA會安裝至/usr/local/,以VIM編輯~/.bashrc
vim ~/.bashrc
  1. 將以下二行加到檔案末尾,這樣系統才找得到CUDA 12.6的檔案
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}}
  1. 重開機,執行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. 安裝CUDA Container Toolkit
#

這是設計給Docker和Podman容器用的Nvidia工具,使容器可以使用CUDA計算。

即使宿主機沒有安裝CUDA套件,容器內照樣可以使用CUDA計算。

必須先安裝Nvidia專有驅動才可以安裝NVIDIA Container Toolkit。

  1. 在Debian 安裝Docker

  2. 加入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
  1. 安裝NVIDIA Container Toolkit
sudo apt update

sudo apt install nvidia-container-toolkit
  1. 向Docker註冊Nvidia裝置
sudo nvidia-ctk runtime configure --runtime=docker
  1. 重新啟動Docker
sudo systemctl restart docker
  1. 執行Ubuntu容器,測試能否印出Nvidia顯示卡的資訊。
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

參考資料
#

相關文章

Ubuntu LTS如何安裝Nvidia顯示卡驅動、CUDA、NVIDIA Container Toolkit套件
分類   Linux系統 Linux使用技巧
標籤   Ubuntu Nvidia
FreeBSD安裝Nvidia專有驅動與CUDA,透過GPU加速程式執行
分類   資訊科技 電腦軟體分享
標籤   FreeBSD Nvidia
教你在Arch Linux安裝Nvidia專有驅動、CUDA、NVIDIA Container Toolkit
分類   Linux系統 Linux使用技巧
標籤   Arch Linux Nvidia

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

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