
硬體設備有了圖形處理單元(graphical processing units,GPU),當然也要有相對應的軟體。CUDA 就是 NVIDIA 發明用於 GPU 的平行運算平台和程式設計模型,有了 CUDA 我們才能在寫程式時享受到 GPU 帶來的高速運算能力。而 cuDNN.tw 是為了深層神經網路設計的 GPU 加速原式函式庫,常見的應用有:convolution、pooling 和 softmax 等。在前一個環境(亦是 Ubuntu)中我並沒有安裝,但我想反正這些也是常用之功能,NVIDIA 都大發慈悲的給予加速器,不用白不用,於是一起安裝。
安裝過程
CUDA
CUDA 的版本選擇是初學者容易搞錯的一大步驟,這裡有兩點要注意,一是你要使用的深度學習框架支援到哪個版本,二是驅動程式是支援哪個版本。
以我這次的安裝為例子,我使用的是 Pytorch,而 Pytorch 目前只支援到版本 11.3,因此我最高只能裝此版本。又根據指令 $ nvidia-smi
所給的 GPU 基本資訊,右上角顯示 470.86 的驅動程式支援的 CUDA 版本為 11.4。前者要求的是 CUDA Runtime API 的版本,後者則是 CUDA Driver API 的版本。CUDA Driver API 能向下兼容,因此我安裝 11.3(<11.4) 是沒有問題的。
確定版本之後,進入官方網站選擇相對應的版本連結。我選擇的是 CUDA Toolkit 11.3.0,以 deb(local) 的方式下載。按照頁面的指示點選,即可出現下載和安裝的指令。這邊附上我選擇的指令:
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
$ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda-repo-ubuntu2004-11-3-local_11.3.0-465.19.01-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu2004-11-3-local_11.3.0-465.19.01-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-ubuntu2004-11-3-local/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda
安裝完成後,再調整路徑。調整路徑的指令為:
$ echo 'export PATH=/usr/local/cuda-11.3/bin${PATH:+:${PATH}}' >> ~/.bashrc
$ echo 'export LD_LIBRARY_PATH=/usr/local/cuda11.3/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
到這裡重啟電腦後, CUDA 就安裝完成了。確認 CUDA 和檢查版本的指令為:
$ cat /usr/local/cuda/version.txt
$ nvcc --version
cuDNN
cuDNN 版本的選擇是依據 CUDA 的版本。我選擇版本 v8.2.1,這是提供給 CUDA 版本 11.X 的。下載 cuDNN 需要先註冊登入。如果在 Ubuntu 介面可使用瀏覽器,若使用遠端登入 Ubuntu,則可以先下載到本機端,再傳資料到遠端電腦。檔案大小約為 1.88 GB。下載完成後,根據官方提供的方法,解壓縮後再安裝,指令為:
$ tar -xvf cudnn-11.3-linux-x64-v8.2.1.32.tgz
$ sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
$ sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
最後如果要檢查是否安裝成功,可以查看 cudnn*.h 檔案:
$ cat /usr/local/cuda/include/cudnn*.h | grep CUDNN_MAJOR -A 2
版本選擇流程整理
這次的安裝是和上一篇在 Windows 中安裝 Ubuntu 20.04 雙系統一起安裝的,因為我很確定要使用的是 Pytorch,因此是以 Pytorch 支援的版本作為選擇依據。
- 查看 Pytorch 官方網頁,只支援到 CUDA 11.3
- 接著再查看 CUDA 官方網頁,CUDA 11.3 有提供 Ubuntu 20.04
因此確定安裝順序和版本為:
- Ubuntu 20.04 (NVIDIA-SMI 470.86)
- cuda: 11.3
- cudnn: v8.2.1