快轉到主要內容

Rocky Linux如何安裝Nvidia專有驅動、CUDA、NVIDIA Container Toolkit

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

適用版本:Rocky Linux 9以上

以Nvidia顯示卡來說,Linux預設載入的是nouveau開源驅動,需要手動安裝Nvidia專有驅動,之後才能夠安裝CUDA套件。

雖然Rocky Linux安裝指令跟RHEL很像,但是有些服務不太一樣,所以特別寫一篇介紹。

1. 安裝Nvidia專有驅動
#

Rocky Linux的「RPM Fusion」和「EPEL」套件庫都有收Nvidia專有驅動套件,但是我選擇從Nvidia官方的套件庫安裝,以取得最新版的套件。

本文安裝的時候並未啟用Secure Boot。

1.1. 桌電與伺服器
#

  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. 啟用EPEL和CRB套件庫
sudo dnf install epel-release

sudo crb enable
  1. 加入Nvidia官方套件庫,選取RHEL 9版本
curver="rhel$(rpm -E %rhel)"

sudo wget -O /etc/yum.repos.d/cuda-$curver.repo \
http://developer.download.nvidia.com/compute/cuda/repos/$curver/$(uname -i)/cuda-$curver.repo
  1. 更新系統,重開機
sudo dnf update

sudo systemctl shutdown now -r
  1. 安裝編譯依賴套件
sudo dnf groupinstall "Development Tools"

sudo dnf install kernel-devel

sudo dnf install dkms
  1. 以DKMS方式安裝Nvidia驅動
# 安裝最新版本驅動
sudo dnf module install nvidia-driver:latest-dkms

# 或者解除安裝現有驅動,改裝指定版本的驅動
sudo dnf module list nvidia-driver
sudo dnf erase *nvidia*
sudo dnf module reset nvidia-driver
sudo dnf module install nvidia-driver:560-dkms
  1. 你可能要編輯GRUB,手動將nouveau驅動加入黑名單
sudo vim /etc/default/grub

# 在GRUB_CMDLINE_LINUX後面加入:rd.driver.blacklist=nouveau

sudo grub2-mkconfig -o /boot/grub2/grubenv
  1. 重開機
sudo reboot
  1. 確認Nvidia驅動版本:
nvidia-smi
  1. 順利的話應該會看到驅動版本
# 範例輸出
Sat Oct 26 15:01:38 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.03              Driver Version: 560.35.03      CUDA Version: 12.6     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce GTX 1050 Ti     Off |   00000000:07:00.0 Off |                  N/A |
| 29%   43C    P8             N/A /   75W |      11MiB /   4096MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
  1. 再度執行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.2. 雙GPU筆電
#

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

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

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

sudo prime-select nvidia

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

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

2. 安裝CUDA
#

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

  1. 加入Nvidia官方套件庫,選取RHEL 9版本
curver="rhel$(rpm -E %rhel)"

sudo wget -O /etc/yum.repos.d/cuda-$curver.repo \
http://developer.download.nvidia.com/compute/cuda/repos/$curver/$(uname -i)/cuda-$curver.repo
  1. 安裝最新版CUDA套件
sudo dnf install cuda-toolkit
  1. 目前CUDA最新版本為12.6,將路徑加入到PATH
echo "export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}" >> ~/.bashrc

source ~/.bashrc
  1. 確認CUDA版本
nvcc --version
  1. 應該會看到以下字串
# 範例輸出
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Sep_12_02:18:05_PDT_2024
Cuda compilation tools, release 12.6, V12.6.77
Build cuda_12.6.r12.6/compiler.34841621_0

3. 安裝NVIDIA Container Toolkit
#

在Docker或Podman容器內跑CUDA的技術。宿主機必須安裝Nvidia專有驅動,但不需要安裝CUDA。

  1. 在Rocky Linux安裝Podman
sudo dnf install podman
  1. 新增Nvidia官方套件庫
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
  sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
  1. 安裝Nvidia Container Toolkit
sudo dnf install nvidia-container-toolkit
  1. 建立Nvidia的CDI環境定義
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml

sudo nvidia-ctk cdi list
  1. 測試跑容器,看能否偵測到Nvidia驅動版本
podman run --rm --device nvidia.com/gpu=all --security-opt=label=disable ubuntu nvidia-smi
  1. 應該能顯示Nvidia驅動版本
# 範例輸出
Sat Oct 26 12:13:55 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.03              Driver Version: 560.35.03      CUDA Version: 12.6     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce GTX 1050 Ti     Off |   00000000:07:00.0 Off |                  N/A |
| 29%   38C    P8             N/A /   75W |      70MiB /   4096MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
+-----------------------------------------------------------------------------------------+

參考資料
#

相關文章

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

留言板

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

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

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