UbuntuにNVIDIA driverをインストール/再インストールする方法

### 更新履歴
- 2020/6/27：方法②を見つけたので追記
- 2020/11/16：方法① ⇒ その他の方法，方法② ⇒ おすすめの方法 に修正
- 2024/8/28：依存関係で躓いた際の解決方法を追加

:::note alert
注意点
これらの手順は一例です。参考程度にご覧ください。
自己責任でお願いします。
:::
## 1. おすすめの方法
### 参考文献
本ページは以下を参考にしています。

- [NVIDIA Docker って今どうなってるの？ (19.11版):おまけ: NVIDIA ドライバーのインストール](https://qiita.com/ksasaki/items/b20a785e1a0f610efa08#%E3%81%8A%E3%81%BE%E3%81%91-nvidia-%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)

### 注意点
:::note warn
- Ubuntu18.04インストール直後のクリーンな環境では成功
- [その他の方法](edit#2-その他の方法)でドライバーをインストールしていた環境で以下のコマンドを実行したところ、`libnvidia*`関連の依存関係が満たせずインストールできない状況が発生
    - `sudo apt-get purge libnvidia*`により依存関係を満たせないファイルを削除
    - インストール完了
- Ubuntu22.04にておすすめの方法で再インストールを試みた際、エラー（メモ忘れ）によってインストール失敗
    - 旧ドライバの削除と新ドライバのインストールが中段された影響か、互いの依存関係が原因で、何をしても受け付けない。依存関係の修復等を試みたが効果なし。nvidia関連ファイルの削除もエラーにより不可。
    - [パッケージ依存関係が修復できない時の対処法](https://qiita.com/shinkou/items/329f6db093f042789a5f)を参考に依存関係の問題を改善
    - インストール完了
:::note info
ドライバの削除は不要
2以降の手順でドライバのみをインストールする際に既存のドライバは削除されました。
<font color=red>※環境により変わる可能性はありますのでご注意ください</font>
`$ sudo apt-get install cuda-drivers`（※確認ポイント※）実行時に削除する項目，インストールする項目が表示されますのでご確認ください。
:::
:::

2. インストール手順（コマンドの取得）
[CUDA Toolkit Archive](https://developer.nvidia.com/cuda-toolkit-archive)のページから所望のCUDA Toolkitバージョンを選んで、自身の環境に合わせたインストール手順を取得（[CUDA Toolkit 11.1.1, Linux, x86_64, Ubuntu, 18.04, deb(local)の例](https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=deblocal)）

3. コマンドの一部を変更してインストール（<font color=red>※NVIDIA ドライバのみインストール，CUDA Toolkitはインストールされない</font>）

    ```bash
    # ※基本的にはCUDA Toolkitのページで示された手順通り
    # /tmpへ移動
    $ cd /tmp
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
    sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
    wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda-repo-ubuntu1804-11-1-local_11.1.1-455.32.00-1_amd64.deb
    sudo dpkg -i cuda-repo-ubuntu1804-11-1-local_11.1.1-455.32.00-1_amd64.deb
    sudo apt-key add /var/cuda-repo-ubuntu1804-11-1-local/7fa2af80.pub
    sudo apt-get update
    # インストール（※※ここが違う※※）
    $ sudo apt-get install cuda-drivers # ※確認ポイント※
    # 再起動
    $ sudo reboot
    ```

4. 確認
    `nvidia-smi`

    ```shell
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 440.33.01    Driver Version: 440.33.01    CUDA Version: 10.2     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+======================+======================|
    |   0  GeForce GTX 1080    On   | 00000000:01:00.0  On |                  N/A |
    |  0%   48C    P0    47W / 240W |    489MiB /  8116MiB |      1%      Default |
    +-------------------------------+----------------------+----------------------+
    ```


## 2. その他の方法
### 参考文献
本ページは以下を参考にしています。

- [Ubuntu Linux 18.04にGPUドライバをインストールする](https://note.com/setoyama60jp/n/n600df9f34230)

### 手順
1. ドライバの削除
`sudo apt-get purge nvidia-*`
<font color=red>※Docker+GPU環境（NVIDIA Container Toolkit）を使用している場合はそれも含めて削除される可能性あり</font>

2. aptのリポジトリにNVIDIAのドライバのリポジトリを追加　<font color=red>※以下は参考ページの手順通りです。</font>
`sudo add-apt-repository ppa:graphics-drivers/ppa`

3. アップデート
`sudo apt update`

4. 推奨ドライバを確認
`ubuntu-drivers devices`

    ```bash
    == /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
    modalias : pci:v000010DEd00001B80sv00001462sd00003367bc03sc00i00
    vendor   : NVIDIA Corporation
    model    : GP104 [GeForce GTX 1080]
    driver   : nvidia-driver-415 - third-party free
    driver   : nvidia-driver-440 - third-party free recommended
    driver   : nvidia-driver-435 - distro non-free
    driver   : nvidia-driver-390 - third-party free
    driver   : nvidia-driver-410 - third-party free
    driver   : xserver-xorg-video-nouveau - distro free builtin
    ```
　nvidia-driver-440がrecommendedとなっています。（2020.4.28）

4. ドライバのインストール
`sudo apt install nvidia-driver-440`

5. 再起動
`sudo reboot`

6. 確認
`nvidia-smi`

    ```bash
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 440.82       Driver Version: 440.82       CUDA Version: 10.2     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+======================+======================|
    |   0  GeForce GTX 1080    Off  | 00000000:01:00.0  On |                  N/A |
    |  0%   32C    P8    15W / 240W |    478MiB /  8116MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
    ```

以上