Ubuntu 16.04 安裝 CUDA、cuDNN 教學

李謦伊
謦伊的閱讀筆記
9 min readOct 19, 2020

在做深度學習訓練時,常常都會使用 GPU 來加速訓練,但應該要安裝什麼版本的 GPU driver、CUDA、cuDNN 呢? 本文將要來介紹如何選擇安裝版本以及安裝流程

安裝流程分為以下步驟,作業系統使用 Ubuntu 16.04.6 LTS

  • 如何選擇安裝的版本
  • 安裝前的準備動作
  • 安裝 CUDA
  • 安裝 NVIDIA GPU driver
  • 安裝 cuDNN

Step 0 如何選擇安裝的版本

在安裝之前要先確認以下幾點

  • GPU 版本資訊
$lspci | grep -i nvidia
  • 檢查 GPU 是否支援 CUDA

➔ CUDA 的官方網站: https://developer.nvidia.com/cuda-gpus

  • 確認 Linux 版本是否支援 CUDA
$uname -m && cat /etc/*release# 輸出結果
x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
...

選擇好版本後就來看顯卡驅動程式與 CUDA 的版本對應,驅動程式的版本不能低於以下規格

查看顯卡支援的 CUDA 版本: https://www.nvidia.com/Download/index.aspx

Step 1 安裝前的準備動作

  • 確認是否安裝 gcc
$gcc --version
  • 若未安裝使用以下命令進行安裝
$sudo apt-get install build-essential
  • 確認是否安裝 kernel header和 package development
# 查看 kernel 版本$uname -r# 安裝對應版本的 kernel header和 package development$sudo apt-get install linux-headers-$(uname -r)
  • 若之前有安裝過 CUDA,要先清除舊資料
$sudo apt-get remove --purge nvidia*$sudo apt-get autoremove$sudo ./NVIDIA-Linux-x86_64–384.183.run –uninstall
  • 檢查是否全都移除,若有未刪除的都刪掉
$sudo dpkg -l 'nvidia'$sudo dpkg --remove nvidia-{name}

Step 2 安裝 CUDA

CUDA 有兩種安裝方式: 使用 Runfile 或是 Debian

可以參考 CUDA 官方的安裝流程: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#pre-installation-actions

首先,下載需要版本的 CUDA,本文使用 CUDA 9.0 版本的 Debian

CUDA 下載: https://developer.nvidia.com/cuda-toolkit-archive

  • 進入至 CUDA 安裝包的資料夾後,安裝 repository meta-data, key, apt-get cache, CUDA
$sudo dpkg -i cuda-repo-ubuntu1604–9–0-local_9.0.176–1_amd64.deb$sudo apt-key add /var/cuda-repo-9–0-local/7fa2af80.pub$sudo apt-get update$sudo apt-get install cuda
  • 添加環境變數
$sudo gedit ~/.bashrc
  • 在檔案最後面添加以下內容

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

$source ~/.bashrc
  • 再重開機之前,要先更改系統設定值,否則會在登入頁面時一直循環跳出進不去

➔ 開啟 ubuntu system settings

➔ 按 software & updates,更改回 X.Org X服務器後,再重新開機

⭐️ 若是打不開 software & updates

  • 先試試用 terminal 的方式打開,一樣更改回 X.Org X服務器後,再重新開機
$sudo software-properties-gtk
  • 還是不行,則查看 software & updates 報錯的原因
$software-properties-gtk
  • 若出現以下訊息
  • 重新安裝所有支持的安裝包
$sudo aptitude reinstall apt apt-utils aptdaemon aptdaemon-data update-manager update-manager-core dbus

資料來源: https://qastack.cn/ubuntu/789966/software-updates-crashes-and-will-not-open

  • 重啟系統
$reboot
  • 確認 cuda 安裝版本
$nvcc -V

⭐️ 若是不小心關機以至於卡在登入畫面

➔ 將所有安裝過的NVIDIA 驅動解除安裝

$sudo apt-get remove --purge nvidia-*$sudo apt-get autoremove

➔ 檢查是否全都移除,若有未刪除的都刪掉

$sudo dpkg -l 'nvidia'$sudo dpkg --remove nvidia-{name}

Step 3 安裝 NVIDIA GPU driver

因為 CUDA 內所提供的驅動不是我們需要的,因此要另外安裝與電腦版本相同的 driver

  • 下載與 GPU 相同的版本
# 先查詢 GPU 版本$lspci | grep -i nvidia

➔ GPU driver 下載: https://www.nvidia.com/Download/index.aspx

  • 安裝可能需要的依賴
$sudo apt-get update$sudo apt-get install dkms build-essential linux-headers-generic$sudo apt-get install gcc-multilib xorg-dev$sudo apt-get install freeglut3-dev libx11-dev libxmu-dev install libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
  • 禁用 Nouveau
$sudo gedit /etc/modprobe.d/blacklist.conf

在文件中最後面加入以下內容

blacklist nouveau

options nouveau modeset=0

執行

$sudo update-initramfs -u

執行以下指令 若沒有輸出任何東西,則表示禁用 Nouveau 成功

$lsmod | grep nouveau
  • 關閉圖形介面
$sudo service lightdm stop

再按 Ctrl-Alt+F1 進入 terminal

======================

➔ 若要恢復開啟圖形介面可輸入

$sudo service lightdm start

然後再按 Ctrl-Alt+F7

======================

  • 安裝驅動
$sudo chmod +x NVIDIA-Linux-x86_64–384.183.run$sudo ./ NVIDIA-Linux-x86_64–384.183.run --no-opengl-files

接著按照指示進行安裝

  • 測試: 若有顯示代表安裝成功
$nvidia-smi

Step 4 安裝 cuDNN

下載跟 CUDA 版本一樣的 cuDNN 選擇 linux,需先申請成為會員才能下載

cuDNN 下載: https://developer.nvidia.com/rdp/cudnn-archive

下載完會得到 cudnn-9.0-linux-x64-v7.6.5.32.solitairetheme8 檔案

  • 為了解壓縮先做處理
$cp cudnn-9.0-linux-x64-v7.6.5.32.solitairetheme8 cudnn-9.0-linux-x64-v7.6.5.32.tgz
$tar -xzf cudnn-9.0-linux-x64-v7.6.5.32.tgz
  • 進入剛剛解壓縮的 cuda 資料夾
$cd cuda
  • 將檔案複製到 /usr/local/cuda
$sudo cp lib64/lib* /usr/local/cuda/lib64/$sudo cp include/cudnn.h /usr/local/cuda/include/
  • 更新鏈結
$cd /usr/local/cuda/lib64/#刪除原本鏈結$sudo rm -rf libcudnn.so$sudo rm -rf libcudnn.so.7#新增新鏈結$sudo chmod +r libcudnn.so.7.6.5$sudo ln -s libcudnn.so.7.6.5 libcudnn.so.7$sudo ln -s libcudnn.so.7 libcudnn.so
  • 查看 cuDNN 版本
$cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A2

若有出現上圖的輸出就表示安裝成功啦!

--

--