【クイックスタート】WSL2でCUDAをインストールする

# はじめに

WSL2(Ubuntu)にCUDAをインストールするとき、色々とハマって調べて何度もトライしたのでTipsを備忘録用にまとめてみました。
今回はUbuntu 20.04、CUDA 11.7を例にまとめます。

# まずは、NVIDIA Driverをインストールしよう

[公式サイト](https://www.nvidia.co.jp/Download/index.aspx?lang=jp#)を見ながらWindowsにNVIDIA Driverをインストールしましょう。

 　

![89d951aa6ed3c4e0b0de5254906b0cce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471633/bec6d458-e432-3179-497b-ea47c0c3b319.png)

　

 
:::note warn
ダウンロードタイプの、Game ReadyドライバーとStudioドライバーはどちらでも良いです
:::

# WSLでLinuxディストリビューションをインストール

以下のサイトを参考にLinuxのディストリビューションをインストールします。

https://learn.microsoft.com/ja-jp/windows/wsl/install

　
あるいはMicrosoft Storeでインストールしましょう。
例えば、Microsoft Storeで「Ubuntu」と検索して入手できます。

 　

![スクリーンショット 2023-11-24 205913.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471633/6d5ef49b-5aa3-07bd-a043-a393eabf14f1.png)



# ようやく、CUDA Toolkitをインストール

ここでハマるポイントがあります！！！

まずは以下のサイトにアクセスします。

[CUDA Toolkit Archive](https://developer.nvidia.com/cuda-toolkit-archive)

目的のバージョンを選択します。
この選択後に表示されるコマンドを後で実行していきます。

簡単と思いきや、最後の一行のコマンドを実行するときは一度立ち止まってください。
勢いでやってしまうと後悔します。

CUDA 11.7を入れるときの例を使って説明します。
[CUDA Toolkit 11.7 Downloads](https://developer.nvidia.com/cuda-11-7-0-download-archive)

Operating SystemからInstaller Typeまで合致するものを選択していきます。

　
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471633/b35666bd-84e9-4a02-9db2-336bd9c20695.png)


:::note warn
Installer Typeは任意のものを選択します
**deb (local)** と **deb (network)** どちらでやってもうまくいきました
:::



  　
すると以下のようなコマンドが表示されます（deb localの場合）。



![スクリーンショット 2023-11-24 210840.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471633/d4d23c5b-8bde-75be-474b-daae3de132ee.png)


 しつこいですが、これをこのまま実行してはだめです。
 　

ここで先程インストールしたLinuxを開きます。
今回の場合は、WindowsのスタートメニューからUbuntuを開きます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471633/658c5970-f850-c8d2-e28f-34c2c534767e.png)
　

Linuxを開き、コマンドを実行していきます。
`sudo apt-get update`までは勢いよくやりましょう。

　
問題は最後の一行です。

:::note alert
最後の一行の`sudo apt-get -y install cuda`とあるが、
このまま実行しては、だめ！！！
必ず、`cuda-<version>`とバージョンを指定すること！！！
:::

このまま実行するとCUDA toolkitの最新版がインストールされてしまいます。



 　
例えば、CUDA 11.7をインストールするときは以下のコマンドを実行します。

```sh
$ sudo apt-get -y install cuda-11-7
```

# 目的のCUDAがインストールされていることを確認

インストールが終わった後、以下のコマンドを実行して目的のCUDA（今回の場合は11.7）がインストールされることを確認します。

```sh
$ apt list --installed | grep cuda
```

# 最後に環境設定をしよう

以下のサイトを参考に環境設定をしましょう。

[Environment Setup](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#environment-setup)

今回はCUDA 11.7なので`.bashrc`ファイルに以下を記載します。

```
export PATH=/usr/local/cuda-11.7/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
```

あるいはWSL上で以下のコマンドを実行します。

```sh
$ echo 'export PATH=/usr/local/cuda-11.7/bin${PATH:+:${PATH}}' >> ~/.bashrc
$ echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}'  >> ~/.bashrc
```

`/cuda-11.7/`の部分は入れたバージョンに応じて数字を変更します。

最後に`nvcc -V`を実行し、詳細なバージョンが出力されることを確認します。


　

ちなみに`nvidia-smi`を実行すると以下のような画面が出てきます。



```sh
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 546.01                 Driver Version: 546.01       CUDA Version: 12.3     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                     TCC/WDDM  | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
...
```

:::note warn
この右上のCUDAバージョンは、インストールされているCUDAのバージョンとは関係ないので一致してなくても焦らないでください
:::

# 間違ってしまった場合

CUDAのバージョンを間違って入れてしまった、やり直したい場合は以下の記事も参考にCUDAをアンインストールして再度トライしてみてください。

[WSL(Ubuntu)のCUDAをアンインストールする](https://qiita.com/insilicomab/items/838681868871635ce021)