Ubuntu18.04にCUDA9.0、CuDNN7.4.1、Driver410をいれよう

# パソコン初心者の方へ
私自身「Ubuntu？何それ変な名前わろた」みたいな初心者です。深層学習用環境を作るのは正直マジでわけわからんことがたくさんあります。
今回は初めてデスクトップを買ってから環境構築に成功するまでの約一ヶ月を書いていきますので、どうか同じ立場の方はめげずに頑張ってください。（ただし主に題にあることに触れたいのでそこのところはご了承ください）

# 環境
- intel i7 8700
- GTX 1080
- SSDにWindows 10

# やったこと一覧
- パソコン、ディスプレイ、キーボード、LANケーブルを買った
- Ubuntu18.04のLiveUSBを作成した
- パソコンにUbuntuをインストールした
- Anacondaをインストールした
- nvidia-driver 410.78をインストールした
- CUDA9.0をインストールした
- CuDNN7.4.1をインストールした
- CuPyをインストールした
- Chainer5.0.0をインストールした

#### ドライバから下がこの記事の主な目的です

# Driverのインストール
Ubuntuの操作は基本ターミナルで行います。`Ctrl + Alt + T`で開きます。
そこで$に続いて以下のコマンドを順にコピペ、エンターキーを押してください。

```
sudo apt-get update
sudo apt-get upgrade
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt install nvidia-driver-410
sudo apt install nvidia-settings
```

終わったら`reboot`と打って再起動させます。同様にターミナルを開いて`nvidia-smi`と打ってください。表のようなものが表示されたら成功です。次の項目へ進んでください。

*以下、うまくいかなかった人用*
> 「画面が真っ暗なままだよ！」ってなっている人は私と同じで慌てているでしょう。私の場合の原因は、おそらくGPUに不具合があったことで、HDML端子からの出力がうまくいっていないことでした。他の端子のケーブルを買ってディスプレイに繋いでみてください。多分いけます。

> 次のエラー`NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.`が出たときは[こちら](https://qiita.com/bohemian916/items/7637b9b0b3494f447c03)か[こちら](https://askubuntu.com/questions/762254/why-do-i-get-required-key-not-available-when-install-3rd-party-kernel-modules)が役に立ちます。

# CUDA9.0のインストール
「え、最新のやつじゃだめなの？」Tnsrflw「だめです」

ということでいろんなことに対応できるように昔のバージョンを入れます。[こちら](https://developer.nvidia.com/cuda-toolkit-archive)からまずダウンロードしてきます。

たいていはLinux --> x86_64 --> Ubuntuと選んでいけば大丈夫です。すると、「18.04がないじゃないか」となると思いますが17.04で大丈夫でした。Installer typeはrunfileのものを選んでください。ダウンロードします。デフォルトでしていけばダウンロードディレクトリに入ってます。

では以下を実行してください。（バージョンが少し違うかもしれないので確認を忘れず行ってください。）

```

cd ダウンロード
chmod +x ./cuda_9.0.176_384.81_linux.run
sudo ./cuda_9.0.176_384.81_linux.run
```


すると規約的なものを読まなくてはならないので文章がたくさん出てきます。スペースキーで進めます。その後、インストールにあったて入力する必要があるので次のようにしてください。

- 規約に同意する？的な英語 --> accept
- Install with an unsupported configuration　--> y
- Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81? --> n

残りはデフォルトで大丈夫でした。
終わったら再起動しましょう。

またターミナルを開いて`nvcc -V`を実行してください。これで

```
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
```
のように表示された人はハッピーです。PATHを追加しましょう。（Userには自分のユーザー名をいれてください）

```
export PATH="/home/User/anaconda3/bin:/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
source ~/.bashrc
```
さあ、CuDNNをインストールしましょう！

*以下、うまくいかなかった人用*
>`Error: unsupported compiler: 7.3.0. Use --override to override this check.`と出るときは`sudo ./cuda_9.0.176_384.81_linux.run --override`とするといいです。

>nvccコマンドで`Command 'nvcc' not found, but can be installed with`が出るときは次の
`export PATH=/usr/local/cuda-9.0/bin:${PATH}`と`export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:${LD_LIBRARY_PATH}`も通すといけます。

> 追記：source ~/.bashrcをしても何故かターミナルを落とすとにPATH消える減少が発生。テキストエディタで.bashrcを開いて直接exportからの文を追加しておくと良かったです。

# CuDNNのインストール
まず[こちら](https://developer.nvidia.com/cudnn)からダウンロードしてきます。その際NVIDIAに登録する必要があります。終わったら以下を実行してください。

```
cd ダウンロード
tar -zxvf cudnn-9.0-linux-x64-v7.tgz
sudo cp -P cuda/lib64/* /usr/local/cuda-9.0/lib64/
sudo cp  cuda/include/* /usr/local/cuda-9.0/include
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h
```

CuDNNに関しては特に何も起きませんでした。

# CuPyとChainerのインストール

```
pip install cupy-cuda90
pip install chainer
```

...
###以上です！お疲れ様でした！

何か躓いたことがあってもググればほとんどは出るので頑張ってください。

# とても参考になったサイト
https://hackernoon.com/ubuntu-18-04-deep-learning-environment-setup-345ba0b11892
http://mirai-tec.hatenablog.com/entry/2018/09/15/220040
https://docs-cupy.chainer.org/en/stable/install.html

##CUDAパッチについて
chmod -x patch --> sudo patch としてもだめだった。
sudo sh patch　とすると大丈夫