# Ubuntu 18.04 NVIDIA顯示卡驅動和CUDA安裝
###### tags: `Installation Guide` `Ubuntu`
## 問題描述
NVIDIA顯示卡驅動安裝有許多方法,透過官網下載、透過apt-get安裝或是使用autoinstall安裝。Ubuntu 18.04允許我們可以使用autoinstall直接安裝預設的顯示卡驅動版本,透過更新顯示卡驅動的PPA來獲得最新的版本。
## 準備工具
- Ubuntu 18.04
- NVIDIA顯示卡
- 良好的網路環境
## 顯示卡驅動安裝
首先開啟`Terminal`,安裝驅動之前先將`apt`更新:
```=Ubuntu 18.04
$sudo apt-get update
$sudo apt-get upgrade
```
首先安裝Python3相關的套件和編譯器
```=Ubuntu 18.04
$sudo apt-get install python3-pip python3-dev python3-tk python-imaging-tk python3
$sudo apt-get install gcc g++ unzip pkg-config screen cmake build-essential
```
若需要使用影像相關的套件可以複製下列的指令
```=Ubuntu 18.04
$sudo apt-get install libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev
$sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
$sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$sudo apt-get install libxvidcore-dev libx264-dev
$sudo apt-get install libopenblas-dev libatlas-base-dev liblapack-dev gfortran
$sudo apt-get install libhdf5-serial-dev
$sudo apt-get install libgtk-3-dev
```
安裝完後可以使用下列指令查詢NVIDIA顯示卡狀態
```=Ubuntu 18.04
$sudo lspci | grep -i nvidia
```
更新顯示卡驅動PPA
```=Ubuntu 18.04
$sudo add-apt-repository ppa:graphics-drivers/ppa
$sudo apt-get update
```
更新完後可以在`ubuntu-drivers`查看符合的驅動和建議
```=Ubuntu 18.04
$ubuntu-drivers devices
```
確認`recommend`的版本符合需求後直接使用`autoinstall`安裝
```=Ubuntu 18.04
$sudo ubuntu-drivers autoinstall
```
若需要手動選擇版本可以使用`apt`安裝
```=Ubuntu 18.04
$sudo apt-get install nvidia-driver-450 //450為版本號
```
安裝完成重新啟動電腦,輸入`nvidia-smi`查看顯示卡狀態
```=Ubuntu 18.04
$nvidia-smi
```
## CUDA (10以上)和cuDNN (7.3以上)安裝
### 下載並安裝CUDA
首先去NVIDIA官方網站下載[CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit-archive),選擇正確的版本和作業系統後下載`runfile`的格式。本篇使用CUDA 10.0作為範例說明安裝流程。
下載完後開啟`Terminal`進到與檔案相同的路徑下,並更改CUDA安裝檔的權限為可執行,並使用`sh`執行安裝檔
```=Ubuntu 18.04
$sudo chmod a+x <download_cuda_filename>.run
$sudo sh ./<download_cuda_filename>.run
```
執行後一開始會跑出合約,按下`q`後輸入`accept`同意合約內容。接著出現安裝選單,利用`空白建`選定和取消選項。第一個安裝顯示卡驅動的選項可以取消勾選,因前步驟已經安裝過不需要再安裝一次,最後選擇執行開始安裝。
安裝完成後打開位於`~`的`.bashrc`檔案,載檔案的最末端輸入環境變數
```=Ubuntu 18.04
$sudo gedit ~/.bashrc //開啟圖形化編輯視窗
開啟完成後在最末端輸入下列3行
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
輸入完後儲存關閉圖形化視窗並接著啟用檔案
$source ~/.bashrc
```
完成後重新開機,使用`nvcc`查看CUDA安裝狀態,若出現版本號表示安裝成功
```=Ubuntu 18.04
$nvcc -V
```
### 下載並安裝cuDNN
首先去NVIDIA官方網站下載[cuDNN](https://developer.nvidia.com/rdp/cudnn-archive),下載cuDNN時需要注意Ubuntu的版本和CUDA版本,並且下載`Runtime`、`Developer`和`Samples`等3個函式庫。本篇使用cuDNN 7.4作為範例說明安裝流程。
下載完後開啟`Terminal`進到與檔案相同的路徑下,使用`dpkg`依序安裝`cudnn`、`-dev`和`-doc`
```=Ubuntu 18.04
$sudo dpkg -i libcudnn7_7.4.2.24-1+cuda10.0_amd64.deb
$sudo dpkg -i libcudnn7-dev_7.4.2.24-1+cuda10.0_amd64.deb
$sudo dpkg -i libcudnn7-doc_7.4.2.24-1+cuda10.0_amd64.deb
```
安裝完成後可以到`/usr/src/<cudnn sample>`中,make範例程式執行測試
## CUDA解除安裝
```=Ubuntu 18.04
-使用uninstall程式移除CUDA
$sudo /usr/local/cuda/bin/cuda-uninstaller
-使用apt移除CUDA(官方)
$sudo apt-get --purge remove "*cublas*" "cuda*"
```
## 顯示卡驅動解除安裝
```=Ubuntu 18.04
-使用uninstall程式移除NVIDIA驅動程式
$sudo /usr/bin/nvidia-uninstall
-使用uninstall程式移除NVIDIA驅動程式(使用autoinstall安裝驅動時使用)
$ sudo apt-get remove --purge nvidia-*
$ sudo apt-get autoremove
-用apt移除NVIDIA驅動程式(官方)
$sudo apt-get --purge remove "*nvidia*"
-使用apt移除NVIDIA驅動程式(第三方)
$sudo apt-get remove --purge '^nvidia-.*'
$sudo apt-get install ubuntu-desktop
$sudo rm /etc/X11/xorg.conf
$echo 'nouveau' | sudo tee -a /etc/modules
```
## 參考文獻
https://gist.github.com/andyweizhao/639e94b60c166f57964aafedeb465e90
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
https://linuxhint.com/ubuntu_nvidia_ppa/
https://hackmd.io/@kcchien/BJzHPQdSN?type=view
https://www.pyimagesearch.com/2019/12/09/how-to-install-tensorflow-2-0-on-ubuntu/