WSL2環境に新たにGPGPU(CUDA)対応ディストリビューションを構築する手順

# 1. 本家の情報

https://docs.nvidia.com/cuda/wsl-user-guide/index.html#release-notes

# 2. 始める前にディストリビューションを追加する。

## 2.1 とにかく何も考えずに追加したい人
こんな記事を見る方はすでにWSL2環境があると思います。新しく作りたいですよね。

パワーシェルでディストリビューションをUbuntu2という名前でEドライブに追加してデフォルトに設定しています。

```powershell:環境追加コマンド
PS> wget https://cloud-images.ubuntu.com/releases/groovy/release/ubuntu-20.10-server-cloudimg-amd64-wsl.rootfs.tar.gz
PS> wsl --import Ubuntu2 "E:\WSL2\Ubuntu2" "ubuntu-20.10-server-cloudimg-amd64-wsl.rootfs.tar.gz"
PS> wsl -l -v
  NAME       STATE           VERSION
* Ubuntu     Running         2
  Ubuntu2    Stopped         2
PS> wsl --set-default Ubuntu2
```

ちなみに、
インストール先に指定したディレクトリにはイメージが作成されていました。
![SnapCrab_NoName_2021-10-8_23-37-48_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/a27581aa-df66-b457-23a3-56bf1d714e5f.png)



## 2.2  WSL2の基本コマンドの簡易版
Cドライブ以外にディストリビューションをインストール

### 1) 以下に従ってディストリビューションをダウンロード

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

### 2) ダウンロードしたXXX.appxをインストールする

### 3) 現在のインストール済みディストリビューション確認

```shell:インストール済みディストリビューション確認
> wsl -l --all
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定)
```

### 4) インストール可能なディストリビューション確認

```shell:インストール可能なディストリビューション確認
> wsl.exe -l -o
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl --install -d <Distro>' を使用してインストールします。

NAME            FRIENDLY NAME
Ubuntu          Ubuntu
Debian          Debian GNU/Linux
kali-linux      Kali Linux Rolling
openSUSE-42     openSUSE Leap 42
SLES-12         SUSE Linux Enterprise Server v12
Ubuntu-16.04    Ubuntu 16.04 LTS
Ubuntu-18.04    Ubuntu 18.04 LTS
Ubuntu-20.04    Ubuntu 20.04 LTS
```

##

# 3. CUDA on WSLをインストール

https://developer.nvidia.com/cuda/wsl

ダウンロードします。

![SnapCrab_NoName_2021-10-8_22-33-46_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/9d6f2898-5e7b-26d8-d925-4e27d8f0abb8.png)

とっても丁寧な注意書きがされています。
曰く

> これがテメーが唯一インストールが必要なドライバーだ。（This is the only driver you need to install. ）
> Linux Display Driverなどとにかく何もWSLにインストールするな（Do not install any Linux display driver in WSL.）
> CUDA, DirectML , Direct Xはこのドライバーによってサポートされる（CUDA, DirectML and DirectX support will be available with this driver.）
> 追加のドライバーはWSL2には必要ない（No additional drivers are needed for WSL 2.）

ダウンロード完了後、実行します。（毎回思うけど、これはテンポラリフォルダなんですよね…）

![SnapCrab_NoName_2021-10-8_22-42-22_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/da31a2f6-00a4-7b92-6109-94df9fc7ca54.png)

進めるためには選択の余地なく同意して続行する。

![SnapCrab_NoName_2021-10-8_22-43-53_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/91fcb455-b073-04e4-b55f-c32bac5e47a6.png)

悩むだけ無駄なので高速を選択。

![SnapCrab_NoName_2021-10-8_22-45-30_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/f9c0c64f-d410-6ba1-b7e3-bec7a4e73196.png)

自動的にインストールが進みます。（この辺は普通のドライバと同じですね）

![SnapCrab_NoName_2021-10-8_22-47-36_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/694fd532-de96-30f8-6169-a30fc59b3636.png)

終わりました。邪魔くさいオプションにチェックがついていますが、いったんそのままで閉じるを選択。

![SnapCrab_NoName_2021-10-8_22-48-29_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/14dc708c-a8ce-5e85-ef24-e4d9a58e902b.png)

立ち上がったGeforceExperienceから、ギアのアイコンを選択。念のためバージョンを確認。(まぁ、当然入っています）

![SnapCrab_NoName_2021-10-8_22-50-18_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/622994f3-c903-f2d9-c375-6c27fb850215.png)

# 4. WSL2をインストール、起動する。

```shell:念のためアップグレードして起動
C:\> wsl.exe --update
C:\> wsl.exe  
```


起動後、GPU認識状態を確認する。

```shell:GPU確認
$ /usr/lib/wsl/lib/nvidia-smi
Fri Oct  8 23:12:31 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.00       Driver Version: 510.06       CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| 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 ...  On   | 00000000:2E:00.0  On |                  N/A |
| 32%   48C    P8    11W / 180W |    618MiB /  8192MiB |     N/A      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
```

# 5. Blender をためす。

3Dソフト Blenderをためす。
https://www.blender.org/download/

![SnapCrab_NoName_2021-10-9_0-8-44_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/04f0d1fc-f5ba-136b-b31e-b4ce1421415e.png)


からダウンロード。
*apt get install blenderではCUDA対応のcyclesに必要なパッケージがインストールされません。

展開してBlender実行！
動いてCUDAも認識して動いています。ただ、画面にノイズが載っており、何が原因かは不明です。

![SnapCrab_NoName_2021-10-9_0-38-3_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/0a406d3c-b425-fe5d-8efe-00a008e6f956.png)

出来上がった画像についてはノイズが載っていないので、X代わりの何らかの機能にバグがあるのかなぁという感じです。

![untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/9f3dfa20-7ffa-2d3f-902b-98d4800a6d0d.png)

で、気になる実行結果ですが… マジですか。
ほとんどWindowsと変わらんじゃないですか。

| WSL2 | Windows |
|:-:|:-:|
| 1分22秒  |   1分20秒  |
|  ![SnapCrab_NoName_2021-10-9_0-52-56_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/504f1697-63d3-b8a0-87c5-06fce06299d1.png) |  ![SnapCrab_NoName_2021-10-9_0-58-42_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/8d060f59-a652-3c22-5ce5-2512c9da4853.png) |