---
# System prepended metadata

title: '**Ubuntu 18.04安裝NVIDIA驅動+ CUDA + cuDNN + tensorflow-gpu**'
tags: [Tensorflow, CUDA, Nvidia, cuDNN, GPU, Ununtu, '18.04']

---

# **Ubuntu 18.04安裝NVIDIA驅動+ CUDA + cuDNN + tensorflow-gpu**
###### tags: `Ununtu` `18.04` `Nvidia` `CUDA` `cuDNN` `Tensorflow` `GPU`
本篇文章我會分為兩個區塊來寫，分別是：
1. 直接用終端機來架設全域環境（NVIDIA驅動、CUDA、cuDNN）
2. 用Anaconda+虛擬環境
 
因為我本人習慣使用Anaconda裡的IDE: **spyder**，
而如果不使用虛擬環境的話，不同版本的套件都會打架。
剛開始安裝時啥都不懂一直亂裝，浪費了許多時間XD
（後記：因為用Anaconda會自動幫我們安裝好CUDA跟cudnn，所以也可以先裝虛擬環境裡的套件，參考完他的版本後再回來裝全域的，感覺也可行。）


---
先簡介一下我的顯卡跟環境：

    -顯卡 RTX 2070 Super
    -NVIDIA driver 440.100
    -CUDA 10.2
    -cuDNN v7.6.5
    -GCC 7.5.0
    -Anaconda 4.8.3
    -tensorflow-gpu 1.14.0
    -Keras 2.2.4
    -Python (全域是3.7 虛擬3.6)

---
先講一下如何卸載，如果發現環境打架或版本不符：
```
sudo apt-get –purge remove nvidia*
sudo apt autoremove
```
要移除 CUDA Toolkit（3個方法看哪個喜歡）：
```
sudo apt-get –purge remove “*cublas*" “*cuda*"
sudo apt-get remove — auto-remove nvidia-cuda-toolkit
sudo apt-get purge nvidia-cuda-toolkit or sudo apt-get purge — auto-remove nvidia-cuda-toolkit
```
要移除 NVIDIA Drivers：
```
sudo apt-get –purge remove “*nvidia*"
```

## 1. 直接用終端機來架設全域環境（NVIDIA驅動、CUDA、cuDNN）
### Step1. 安裝NVIDIA驅動
首先裝一些環境
```
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev libfreeimage3 libfreeimage-dev
```
接著禁用nouveau驅動
```
sudo gedit /etc/modprobe.d/blacklist.conf
```
在文本的最底下，加入這兩行
```
blacklist nouveau
options nouveau modeset=0
```
接著執行下面這行
```
sudo update-initramfs -u
```
重新開機後輸入以下這行，如果螢幕沒有輸出則代表成功
```
lsmod | grep nouveau
```
（電腦的顯示可能會怪怪的，不用特意更動，之後灌完驅動就會好了）

接著正式進入裝NVIDIA驅動的環節
```
sudo add-apt-repository ppa:graphics-drivers
```
對package作更新
```
sudo apt update
```
輸入下面這行去選擇自己要裝的驅動版本（通常是選third-party free recommended）
```
ubuntu-drivers devices
```
![](https://lucaho99.files.wordpress.com/2020/08/screenshot-from-2020-08-20-20-09-12.png)

想安裝第三方推薦就輸入下面這行（如果有特殊版本需求就輸入再更下一行）
```
sudo ubuntu-drivers autoinstall
sudo apt install nvidia-driver-440 
```
(以我自己為例就是選440)
安裝好後重新啟動電腦，可輸入以下指令
```
sudo reboot
```
再用下面這行指令確定使否安裝成功
```
nvidia-smi
```
![](https://lucaho99.files.wordpress.com/2020/08/screenshot-from-2020-08-19-20-46-29.png)

### Step2. 安裝CUDA
根據剛剛輸入nvidia-smi出現的資訊去看對應CUDA的版本..（以我為例就是10.2）
到[CUDA官網](https://developer.nvidia.com/cuda-toolkit-archive)去下載對應版本的包，接著選Linux >>> x86_64 >>> Ubuntu >>> 18.04 >>> runfile(local) 下面會出現安裝指令，如圖。
![](https://lucaho99.files.wordpress.com/2020/08/screenshot-from-2020-08-20-20-22-10.png?w=1024)

接著一直按Enter到底出現選取的頁面，如果已經安裝好顯卡驅動，
在**CUDA Installer**就不要勾選cuda提供的顯卡驅動程式！
![](https://lucaho99.files.wordpress.com/2020/08/screenshot-from-2020-08-20-20-25-54.png)

別忘記設置環境變量～～～ 請在終端機輸入：
```
sudo gedit /etc/profile
```
輸入密碼後進去，打開文件最底下，加入以下兩行後按Save（記得密碼一定要是英文輸入法，而且linux terminal密碼是不會顯示的，不要像我耍北七！）
```
export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda10.2/lib64
```
接著一樣再終端機輸入
```
sudo gedit ~/.bashrc
```
然後一樣再文件最底下加入這三行：
```
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.2/lib64
export PATH=$PATH:/usr/local/cuda-10.2.0/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.2
```
要記得對應好自己安裝的CUDA版本，不要我打什麼你就跟著哦！再來要讓環境生效！
```
source ~/.bashrc
```
最後輸入以下指令看看是否成功（下圖為成功的情況）
```
nvcc -V
```
![](https://lucaho99.files.wordpress.com/2020/08/screenshot-from-2020-08-20-20-41-24.png)

### Step3. 安裝cuDNN
到[cuDNN官網](https://developer.nvidia.com/rdp/cudnn-archive)先下載，記得要先註冊然後填問卷，然後cuDNN是跟著CUDA版本的，
所以要記得找對應的來下載喔！！！
進入到終端機，輸入：
```
cd Downloads
```
然後對剛剛的檔案去進行解壓縮
```
tar -zxvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
```
藉著要把解壓縮出來的文件複製到安裝的CUDA環境中，可輸入以下兩行試試看：
```
sudo cp cuda/include/cudnn.h /usr/local/cuda/inlude
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
```
如果**像我一樣資料夾名字不太對，也可以用手動去移動(詳細方法在下面的P.S)**，
簡單來說就是把Downloads解壓縮出來的cudnn檔案裡面的cudnn.h和libcudnn兩個檔案
要移到usr/local/cuda(我的這個資料夾叫做cuda-10.2，超怪)
-    註:然後然後如果找不到usr，可以先進到Home點右鍵選Properties，
    進去後就有一個磁盤可以點了，如附圖。
    
![](https://lucaho99.files.wordpress.com/2020/08/screenshot-from-2020-08-20-21-06-34.png)

最後要更改權限：
```
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
```
如果系統提示找不到cudnn.h，可複製cuda/include/cudnn.h到usr/local/cuda/include/ 目錄下！

原則上到這邊是大功告成了…
再來就輸入幾個指令就可以安裝tensorflow-gpu跟keras了（<font color="red">注意tensorflow有分cpu版本跟gpu版本</font>)
首先更新一下pip，打開終端機輸入：
```
pip install –upgrade pip
```
接著就直接用pip來安裝tensorflow-gpu跟keras，記得這兩個套件的版本是有對應關係的，詳情要麻煩上網查，不過有些網路沒寫到的好像也能相容。指令如下：
```
pip install tensorflow-gpu==1.14.0
pip install keras==2.2.4
```
我是以我自己為例，當然==後面的數字(版本)可以自己改。

(P.S)如果要自己手動移動cudnn資料夾的兩個檔案，可能需要先取得"**管理員權限**"！
    打開終端機，輸入以下指令：
    ```
    sudo apt install nautilus-admin
    ```
    接著需要重新啟動Nautilus，輸入以下指令後按Enter：
    ```
    nautilus -q
    ```
    之後就可以對你想移動的檔案按右鍵，並以管理員的身分移動它了！

## 2. 用Anaconda+虛擬環境
首先到[Anaconda官網](https://www.anaconda.com/products/individual)下載，選64-Bit(x86)那個。
![](https://lucaho99.files.wordpress.com/2020/08/screenshot-from-2020-08-20-21-23-41.png)

可以看到現今的tensorflow-gpu所支持的python版本，所以要來創建虛擬環境！
打開終端機，輸入以下指令：
```
conda create -n ENV python=3.6
```
說明一下 ENV 是這個虛擬環境的名稱，你可以自由更改，但是要記住他的名字，因為你每次要開啟虛擬環境都會要輸入，至於後面python的版本數可依使用需求改變。
之後要啟用剛剛建構出來的虛擬環境：
```
source activate ENV
```
接著你要安裝你所需要的套件包，以下提供一些指令幫助你安裝：
```
conda update conda 更新你的conda
conda list 可以看見你目前有的套件
conda env list 可以看環境
conda install XXX 安裝XXX這個套件（ex: numpy scipy matplotlib）
conda uninstall XXX 卸載XXX這個套件
conda remove -n ENV –all 把剛剛建構的虛擬環境整個刪除
```

好！所以要來裝一下tensorflow-gpu跟keras，可以先進行搜尋
```
conda search tensorflow-gpu
conda search keras
```
找到要的版本後就開始安裝吧！如果是用conda安裝的話，它會自動偵測系統環境，幫你裝好cuda toolkit和cudnn，就不用自己手動安裝了！
```
conda install tensorflow (這個是會直接安裝最新的版本的樣子) 所以我還是推薦用pip 
```
install可以指定版本，在虛擬環境中可安裝跟全域環境不同版本的！
```
pip install tensorflow-gpu==1.12
pip install keras==2.1.6
```
可以確認一下自動安裝的版本：
```
conda list | grep “cudatoolkit"
conda list | grep “cudnn"
```
最後來確認一下有沒有安裝成功，再終端機打上：
```
python3
```
進入到python shell後，打以下命令，沒有出現error就是成功了
```python=
import tensorflow as tf
hello = tf.constant(‘Hello, Tensorflow!’)
sess = tf.Session()
print(sess.run(hello))
```
可以另外再開一個終端機視窗，輸入nvidia-smi來間看顯存使用情況！

## 結語
安裝這東西真的是頭痛心又累，可是完整的把過程寫出來會得到滿滿的成就感，
如果能幫助到他人又得到反饋，那就更再完美不過了！
可以的話，幫我分享給你需要的朋友吧！
參考網址:
[csdn大神](https://blog.csdn.net/sscc_learning/article/details/85334549)
[Lin Tzung-ying](https://medium.com/@ljn3333/install-anaconda-tansorflow-gpu-keras-in-ubuntu-18-04-with-cuda9-0-for-nvidia-1080-ti-83bd7bea5798)
[林塔恩](https://medium.com/@mikethreeacer/ubuntu-18-04-%E5%AE%89%E8%A3%9D-cuda-cudnn-anaconda-pytorch-1f170b3326a4)
[每天都要深度學習](https://blog.csdn.net/Lucifer_zzq/article/details/76675239?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&fbclid=IwAR3BG8TyeQTdFzx2FTb6z1QaorbnkKWtqTFwWtQ9-ZxrmRXz0OSqCqktjjU)
[古月居](https://www.guyuehome.com/10177)