安裝 Nvidia driver 545 CUDA 12.3 cudnn 12.x on Ubuntu 22.04

Javier Zhang
6 min readDec 6, 2019

先手動將現有的nvidia driver清理乾淨,如果没有装过,跳過此步驟

sudo apt autoremove
sudo apt remove --purge '^nvidia-.*'
sudo apt remove --purge '^cuda-.*'

下面指令看是否還有殘留的,或者其他方式安裝的,如果有顯示就自己去手動刪除

find /usr/lib -iname "*nvidia*"
find /usr/lib -iname "*cuda*"

安裝 Nvidia Driver

sudo apt-get install nvidia-common
sudo add-apt-repository ppa:graphics-drivers
sudo apt update
ubuntu-drivers devices
sudo apt install nvidia-driver-545

因爲等下要安裝的cuda12.3默認對應的driver是545,所以這裡儘量選擇一致

安裝 CUDA

到cuda官網follow下面的指令 https://developer.nvidia.com/cuda-downloads

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
wget https://developer.download.nvidia.com/compute/cuda/12.3.2/local_installers/cuda-repo-ubuntu2204-12-3-local_12.3.2-545.23.08-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-3-local_12.3.2-545.23.08-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-3-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-3

配置環境

sudo vim ~/.bashrc

最後面加入

export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64

重新載入

source ~/.bashrc
sudo ldconfig

檢查 CUDA是否順利安裝

nvcc -V

如果有出現下列字樣,表示CUDA Toolkit已經安裝成功了

安裝完成後重新開機,然後來編譯一個 deviceQuery 的小程式來看看。因爲現在安裝裏移除了sample,需要自己去下載編譯測試。

git clone https://github.com/NVIDIA/cuda-samples
cd cuda-samples/Samples/1_Utilities/deviceQuery
make

會產生一個叫 deviceQuery 的執行檔,執行後,會有相關資訊

CUDA Device Query (Runtime API) version (CUDART static linking)Detected 1 CUDA Capable device(s)......
......
......
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 12.3, CUDA Runtime Version = 12.3, NumDevs = 1
Result = PASS

安裝cudnn

旋转ubuntu22.04的 x86_64 deb包安装

選擇下载 Linux的Tar檔案自行解壓縮到cuda的位置. Local Installer for Linux x86_64 (Tar)。 解壓後,把裡面的文件分別copy到cuda裡面,最後修改權限

tar -xvf 文件名
cd 文件夾
sudo cp include/* /usr/local/cuda-12.3/include
sudo cp lib/libcudnn* /usr/local/cuda-12.3/lib64
sudo chmod a+r /usr/local/cuda-12.3/include/cudnn*
sudo chmod a+r /usr/local/cuda-12.3/lib64/libcudnn*
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

測試cudnn

因为目前NVIDIA没有新的测试code,可以自己去github上搜索cudnn samples v8测试,link

git clone https://github.com/li-weihua/cudnn_samples_v8 
cd cudnn_samples_v8/mnistCUDNN
make clean && make

如果遇到 fatal error: FreeImage.h: No such file or directory

$ sudo apt install libfreeimage3 libfreeimage-dev

再編譯一下

$ make clean && make
$ ./mnistCUDNN

都沒有問題通過會有下面的畫面

Executing: mnistCUDNN
cudnnGetVersion() : 8500 , CUDNN_VERSION from cudnn.h : 8500 (8.9.7)
Host compiler version : GCC 12.3.2
.........
.........
.........
Test passed!

--

--