Ubuntu 20.04 でCuPy (v11.1) を動かすまで

# はじめに  
この記事ではUbuntuでGPUを動かすためにCuPyをインストールするまでを備忘録として記録します。 

#### ゴールは以下のとおりです。

1. Ubuntu 20.04にNVIDIA driverをインストール

1. CUDA Toolkit 11.1をインストール

1. CuPy 11.1をインストール

# 実行環境

- OS: Ubuntu 20.04

- GPU: RTX 2060 SUPER  

- CPU: Ryzen 3600  

私がやりたいこととしては、poetryを使った仮想環境を作り、その中に諸々をインストールしますが、ここでは割愛します。

# インストール方法

#### 1. Ubuntu 20.04にNVIDIA driverをインストール

以下のコマンドで、推奨ドライバーを見つける。

```
ubuntu-drivers devices
```

ソフトウェアとアップデートの追加ドライバーから推奨されたドライバーをインストールできます。

もしくは、以下のコマンドでNVIDIAのPPAリポジトリを追加してドライバーをインストールします。

```
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-xxx
```
（コメント: もしかしたらこの辺が逆かもしれない。）

ドライバーがインストールできたら以下のコマンドで確認できます。

```
nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.27.04    Driver Version: 460.27.04    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce RTX 206...  On   | 00000000:06:00.0  On |                  N/A |
| 29%   31C    P3    39W / 175W |   1114MiB /  7979MiB |     19%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1104      G   /usr/lib/xorg/Xorg                101MiB |
|    0   N/A  N/A      3110      G   /usr/lib/xorg/Xorg                586MiB |
|    0   N/A  N/A      3271      G   /usr/bin/gnome-shell              134MiB |
|    0   N/A  N/A      4748      G   ...AAAAAAAA== --shared-files      212MiB |
+-----------------------------------------------------------------------------+

```
（コメント: できない場合は再起動する。）

#### 2. CUDA Toolkit 11.1をインストール

CUDA ToolkitとCuPyはバージョンを合わせる必要がある（はず）ので、自分に必要なバージョンのCUDA Toolkitをインストールします。
今回は現時点（2021/1/8）で最新であるCuPy 11.1を入れたいので、それに合わせてCUDA Toolkitも11.1をインストールします（この時点で最新なバージョンは11.2）。

（コメント: 先程のコマンドの表示で右上にCUDA Version: 11.2と表示していますが、これは入れられるバージョンだそうです）

過去のバージョンは[CUDA Toolkit Archive](https://developer.nvidia.com/cuda-toolkit-archive)にあります。
CUDA Toolkit 11.1.1 -> Linux -> x86_64 -> Ubuntu -> 20.04 -> runfile (local)
の順で進みます。

下に示されるコマンドに従い、インストールします。

```
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run
sudo sh cuda_11.1.1_455.32.00_linux.run
```

ここで、Continue -> accept と進みます。
CUDA Installerでは、Driverのチェックを外します（エンターキーで外れます）。外したあとにInstallへ進みます。

（コメント: Driverをインストールしてしまうとエラーを起こします。）

#### 3. CuPy 11.1をインストール

[公式サイト](https://docs.cupy.dev/en/stable/install.html)を参考に自身の仮想環境なりで以下のコマンドでインストールします。

```
pip install cupy-cuda111
```

# おわりに

いろいろ試行錯誤した結果、この方法が一番ラクだった気がします。