【Ubuntu 24.04 LTS】NVIDIAドライバおよびCUDAのインストール

# 本記事の目的
**Ubuntu環境におけるNvidiaドライバおよびCUDA Toolkitのインストール**

Ubuntu環境におけるNVIDIAドライバおよびCUDAのインストール方法について、なかなかうまくいかなかったので、うまくいった方法を紹介します。

# 環境
```bash
        `:+ssssssssssssssssss+:`           --------------------- 
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 24.04 LTS x86_64 
    .ossssssssssssssssssdMMMNysssso.       Host: A620I AX 
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Kernel: 6.8.0-39-generic 
  +ssssssssshmydMMMMMMMNddddyssssssss+     Uptime: 3 hours, 38 mins 
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Packages: 2214 (dpkg), 17 (snap) 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Shell: bash 5.2.21 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Resolution: 1920x1080, 1920x1080 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   DE: GNOME 46.0 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   WM: Mutter 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   WM Theme: Adwaita 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Theme: Yaru-bark-dark [GTK2/3] 
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/    Icons: Yaru-bark [GTK2/3] 
  +sssssssssdmydMMMMMMMMddddyssssssss+     Terminal: gnome-terminal 
   /ssssssssssshdmNNNNmyNMMMMhssssss/      CPU: AMD Ryzen 7 7700X (16) @ 5.573G 
    .ossssssssssssssssssdMMMNysssso.       GPU: NVIDIA GeForce RTX 4060 Ti 16GB 
      -+sssssssssssssssssyyyssss+-         GPU: AMD ATI 0f:00.0 Raphael 
        `:+ssssssssssssssssss+:`           Memory: 12125MiB / 31196MiB 
            .-/+oossssoo+/-.
```

# 方法
## 【準備】　Ubuntuに残存する既存ドライバの削除
すでにNvidiaドライバやCUDA Toolkitがインストールされており、バージョンアップ（ダウン）を行う場合にはこの手順を踏む必要があります。

### ① ドライバの削除
下記のコマンドをターミナルで入力し、残存するドライバ等の削除を行います。

```bash
$ sudo apt --purge remove -y nvidia-*
$ sudo apt --purge remove -y cuda-*
$ sudo apt --purge remove -y libcudnn*
$ sudo apt --purge remove -y cudnn-*
$ sudo apt autoremove -y
```

完了後、再起動を行います。
再起動後、互換ドライバがあたっているかと思います。

# 1. NVIDIAドライバのインストール
ここからは、ドライバのインストールを行っていきます。
## ① リポジトリの追加
CUDA Toolkit Archive( https://developer.nvidia.com/cuda-toolkit-archive )にアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2676391/dbe7aa10-447b-fa0b-ca75-2129b2a932a4.png)

インストールしたいバージョンを選択します。

:::note info
今回は、執筆時点で最新版のCUDA 12.6のインストールを想定しています。
:::
Operating System, Architecture, Distribution, Installer Typeを以下のように選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2676391/38648378-7406-fa04-9c09-b9a5cd38fa7b.png)

Versionは、自身の環境に合わせて適当に選んでください。

このようにすると、Base InstallerとDriver Installerのインストールコマンドが下段にそれぞれ表示されると思います。基本的には、Base Installerの指示に沿って行っていくのですが、
**3行目までを実行した後、CUDA Toolkitのインストールをそのまま行わず、Nvidiaドライバのインストールを行います。**

おそらく、イメージがつかないかと思いますので例を挙げて説明していきます。

### 例：CUDA Toolkit 12.6の場合
サイトに記載の``Base Installer``のインストール方法は以下のように記述されています。
```Base Installer.bash
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
$ sudo dpkg -i cuda-keyring_1.1-1_all.deb
$ sudo apt-get update
$ sudo apt-get -y install cuda-toolkit-12-6
```
 このとき、3行目の``sudo apt-get update``までを実行し、**4行目の``sudo apt-get -y install cuda-toolkit-12-6``は実行せずに、次のステップに進みます。

## ② NVIDIAドライバのインストール
先程のステップまでで、ドライバのリポジトリ登録は完了しましたので、続いてドライバのインストールを行います。

Ubuntuのプリインストールアプリの``追加のドライバー``を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2676391/c474ac81-a94f-ad36-f5cd-c03a9cf57f59.png)

ここで、インストールしたいバージョンのNvidiaドライバを選択し、変更の適用を押して、インストールを行ってください。

インストールが完了すると再起動を促されますので、 *（もし促されなかった場合でも）* 再起動してください。

:::note info
***インストールするドライバのバージョン***
ドライバのバージョンは、基本的にお好きなバージョンを入れれば良いのですが、
CUDA Toolkitで推奨するバージョンをインストールしてください
:::

## 2. CUDA Toolkitのインストール
ここまできたら、CUDA Toolkitをインストールしていきます。

再度、先程のサイトの``Base Installer``の欄を確認してください。
先程までのステップで、3行目まで実行したはずですので、続いて**4行目のコマンドを入力**してください。
```Base Installer.bash
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
$ sudo dpkg -i cuda-keyring_1.1-1_all.deb
$ sudo apt-get update
$ sudo apt-get -y install cuda-toolkit-12-6　← これを実行
```

すると、CUDA Toolkitのインストールが始まります。環境によって待ち時間はまちまちですが、私の環境では10分程度かかりましたので、気長に待ちましょう。

## 3. 環境変数の追加
最後に環境変数の追加を行っていきます。

:::note info
バージョンの変更等で、環境を変更した場合は環境変数の追加は不要な場合があります。
後述の動作確認を行ってみてうまくいかないようであれば、この手順を実施すると良いでしょう。
:::

``~/.bashrc``を管理者権限を付与したテキストエディタ等で開いてください。
ここでは、Ubuntuのデフォルトシェルである``bash``を例にしていますが、``zsh``などの別のシェルをお使いの場合は、そのシェルに対応した``rcファイル``を開いてください。

開けましたら、次の記述を末尾に追加してください。
```~/.bashrc
# CUDA Toolkit
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
```

追加できたら、保存を行ってシェルの設定を行います。
```bash
$ source ~/.bashrc
```

何もエラーが表示されなければ、ここまででインストール作業は終了です。
お疲れ様でした！


# 動作確認
最後に動作確認を行います。ターミナルで以下のコマンドを入力してください。
```bash
$ nvidia-smi
```

```bash
user@hoge:~$ nvidia-smi

Mon Aug  5 12:17:00 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 555.42.06              Driver Version: 555.42.06      CUDA Version: 12.5     |
|-----------------------------------------+------------------------+----------------------+
| 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  NVIDIA GeForce RTX 4060 Ti     Off |   00000000:01:00.0  On |                  N/A |
|  0%   56C    P2             34W /  165W |    1392MiB /  16380MiB |      5%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A      2841      G   /usr/lib/xorg/Xorg                            228MiB |
|    0   N/A  N/A      3086      C   ...libexec/gnome-remote-desktop-daemon        120MiB |
|    0   N/A  N/A      3149      G   /usr/bin/gnome-shell                           57MiB |
|    0   N/A  N/A      3236      G   ...libexec/gnome-remote-desktop-daemon          0MiB |
|    0   N/A  N/A      3648      G   /usr/libexec/xdg-desktop-portal-gnome          14MiB |
|    0   N/A  N/A      3991      G   ...seed-version=20240802-130108.496000         96MiB |
|    0   N/A  N/A      5665      G   /usr/bin/gnome-control-center                  17MiB |
|    0   N/A  N/A      6815      G   ...erProcess --variations-seed-version         73MiB |
|    0   N/A  N/A      8055      G   ...nglingPtr --variations-seed-version         57MiB |
|    0   N/A  N/A      8536      G   ...yOnDemand --variations-seed-version         27MiB |
|    0   N/A  N/A     36891      G   /usr/bin/nautilus                              14MiB |
|    0   N/A  N/A     37979      C   .../.anaconda3/envs/PyTorch/bin/python        618MiB |
+-----------------------------------------------------------------------------------------+
```
細かい表示は異なりますが、このような画面が表示されるはずです。
このようになっていれば、NVIDIAドライバは正しくインストールされています。

続いて、以下のコマンドを入力してください。
```
$ nvcc -V
```
すると、
```bash
user@hoge:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Jun__6_02:18:23_PDT_2024
Cuda compilation tools, release 12.5, V12.5.82
Build cuda_12.5.r12.5/compiler.34385749_0
```
となれば正しくCUDA Toolkitがインストールされています。
エラーとなった場合は、``~/.bashrc``を確認してみましょう。


# 参考文献
https://www.kkaneko.jp/tools/ubuntu/ubuntu_cudnn.html