WIndow11 または WIndows10 (version 21H2 以降) であれば大丈夫とのこと。 手元のPCは Windows 11 Pro version 24H2 であり、この条件を満たしている。
CUDA ML workflows を使うために、 NVIDIA CUDA Enabled driver for WSL のリンク先から NVIDIA App for Enterprise をダウンロードし、インストールする。
NVIDIA APP は "Best for Games/Creators" か "Best for Professionals/Workstation Users" という2種類のうちどちらかを選択する。 ここでは "Best for Profesionals/Workdstation Users" を選択した。
どのドライバをインストールするかについては、以下の情報を参考にするらしい。
要点は、 「Windows に WSL2 をインストールすること」 「Windows に Windows NVIDIA GPU ドライバをインストールする」 「WSL2 内に NVIDIA GPU Linux ドライバーをインストールしてはいけない」 ことのようだ。
[注意] 以下の文章では、"WSL" はすべて "WSL2" を意味している。
上記のドライバ (NVIDIA Appのこと?) をインストールしたら、 「WSLを動作可能」にして 「glibc ベースのディストリビューション UbuntuかDebian を動作可能」にする。
Windows Update で Check for updates を選択して、Windows を更新する。
WIndows Update の Advanced Options において、 Receive updates for other Microsoft products を選択しておくこと。
wsl --install2024/12/07時点では、いきなり WSL2 (2.3.26) がインストールされた。 その後、続いて Ubuntu もインストールされた。
Enter new Unit username: nitta New password: ← Windows と共通にしておく
[Windowsのコマンドプロンプト上で] C:\Users\nitta>wsl -l -v NAME STATE VERSION * Ubuntu Running 2
WSL を動作可能にしたときに自動的に行われたので、ここですべきことはない。
[Ubuntu ウィンドウの上で] nitta@gtunes2:~$ cat /proc/version Linux version 5.15.167.4-microsoft-standard-WSL2 (root@f9c826d3017f) (gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.37) #1 SMP Tue Nov 5 00:21:55 UTC 2024
[管理者として起動した「コマンドプロンプト」上で] C:\Users\nitta>wsl cat /proc/version Linux version 5.15.167.4-microsoft-standard-WSL2 (root@f9c826d3017f) (gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.37) #1 SMP Tue Nov 5 00:21:55 UTC 2024
すでに Windows には NVIDIAドライバはインストールされているので、ここでは何もしない。
WSL2上でCUDAアプリケーションをコンパイルするには、Linx x86 用のCUDA Toolkit が必要である。 しかし、標準の CUDA Toolkit は Linux用のGPUドライバを含んでいるので使ってはいけない。 必ず WSL2 用をインストールすること。
上記の Web ページにアクセスすると、ダウンロード方法が示される。$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin $ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 $ wget https://developer.download.nvidia.com/compute/cuda/12.6.3/local_installers/cuda-repo-wsl-ubuntu-12-6-local_12.6.3-1_amd64.deb $ sudo dpkg -i cuda-repo-wsl-ubuntu-12-6-local_12.6.3-1_amd64.deb $ sudo cp /var/cuda-repo-wsl-ubuntu-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/ $ sudo apt-get update $ sudo apt-get -y install cuda-toolkit-12-6
nitta@gtunes2:~$ sudo apt-key del 7fa2af80 [sudo] password for nitta:パスワード Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)). OK
nitta@gtunes2:~$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
--2024-12-07 17:53:42-- https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
Resolving developer.download.nvidia.com (developer.download.nvidia.com)... 152.199.39.144
Connecting to developer.download.nvidia.com (developer.download.nvidia.com)|152.199.39.144|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 190 [application/octet-stream]
Saving to: ‘cuda-wsl-ubuntu.pin’
cuda-wsl-ubuntu.pin 100%[=================================================>] 190 --.-KB/s in 0s
2024-12-07 17:53:43 (6.66 MB/s) - ‘cuda-wsl-ubuntu.pin’ saved [190/19
nitta@gtunes2:~$ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
[sudo] password for nitta:
nitta@gtunes2:~$ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
[sudo] password for nitta:
nitta@gtunes2:~$ wget https://developer.download.nvidia.com/compute/cuda/12.6.3/local_installers/cuda-repo-wsl-ubuntu-12-6-local_12.6.3-1_amd64.deb
--2024-12-07 18:28:15-- https://developer.download.nvidia.com/compute/cuda/12.6.3/local_installers/cuda-repo-wsl-ubuntu-12-6-local_12.6.3-1_amd64.deb
Resolving developer.download.nvidia.com (developer.download.nvidia.com)... 152.199.39.144
Connecting to developer.download.nvidia.com (developer.download.nvidia.com)|152.199.39.144|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3008426530 (2.8G) [application/x-deb]
Saving to: ‘cuda-repo-wsl-ubuntu-12-6-local_12.6.3-1_amd64.deb’
cuda-repo-wsl-ubuntu-12-6-loc 100%[=================================================>] 2.80G 9.69MB/s in 5m 0s
2024-12-07 18:33:21 (9.57 MB/s) - ‘cuda-repo-wsl-ubuntu-12-6-local_12.6.3-1_amd64.deb’ saved [3008426530/3008426530]
nitta@gtunes2:~$ sudo dpkg -i cuda-repo-wsl-ubuntu-12-6-local_12.6.3-1_amd64.deb
Selecting previously unselected package cuda-repo-wsl-ubuntu-12-6-local.
(Reading database ... 40788 files and directories currently installed.)
Preparing to unpack cuda-repo-wsl-ubuntu-12-6-local_12.6.3-1_amd64.deb ...
Unpacking cuda-repo-wsl-ubuntu-12-6-local (12.6.3-1) ...
Setting up cuda-repo-wsl-ubuntu-12-6-local (12.6.3-1) ...
The public cuda-repo-wsl-ubuntu-12-6-local GPG key does not appear to be installed.
To install the key, run this command:
sudo cp /var/cuda-repo-wsl-ubuntu-12-6-local/cuda-56752864-keyring.gpg /usr/share/keyrings/
nitta@gtunes2:~$ sudo cp /var/cuda-repo-wsl-ubuntu-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
nnitta@gtunes2:~$ sudo apt-get update
Get:1 file:/var/cuda-repo-wsl-ubuntu-12-6-local InRelease [1572 B]
Get:1 file:/var/cuda-repo-wsl-ubuntu-12-6-local InRelease [1572 B]
Get:2 file:/var/cuda-repo-wsl-ubuntu-12-6-local Packages [18.8 kB]
Hit:3 http://archive.ubuntu.com/ubuntu noble InRelease
Hit:4 http://security.ubuntu.com/ubuntu noble-security InRelease
Get:5 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Hit:6 http://archive.ubuntu.com/ubuntu noble-backports InRelease
Fetched 126 kB in 1s (108 kB/s)
Reading package lists... Done
nitta@gtunes2:~$ sudo apt-get -y install cuda-toolkit-12-6
...(略)...
Setting up cuda-toolkit-12-6 (12.6.3-1) ...
WSL 内に直接 tensorflow や PyTorch をインストールしても GPU が利用可能だそうだ。
C:\Program Files\Docker\Docker
にインストールされる。
インストール先を変更したい場合は、コマンドプロンプトからインストールする。
D:\sys\Docker\Docker
にインストールする。start /w "" ""Docker Desktop Installer.exe" install --install-dir=D:\sys\Docker\Docker
net localgroup docker-users/add [コマンドプロンプト上で] net localgroup docker-users nitta /add
Configuration (x) Use WSL 2 instead of Hyper-V (recommended) <-- どちらも選択する (x) Add shortcut to desktop <-- どちらも選択する
Resources Advanced Disk image location (default) C:\Users\nitta\AppData\Local\Docker\wsl (変更先) D:\Users\nitta\AppData\Local\Docker\wsl
Resource WSL integration Configure which WSL 2 distors you want to access Docker from. (〆) Enable integration with my default WSL distro Enable integration with additional distors: (〆) Ubuntu ← これを選んだ方がよい?
docker run --name 4semi7 --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 --gpus all \ -p 7077:22 -p 8087:8888 \ -v /home/docker/4semi7:/root/doc \ -it nvcr.io/nvidia/tensorflow:20.08-tf2-py3
apt-get update apt-get upgrade -y apt-get install -y openssh-server echo 'root:パスワード' | chpasswd sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/" /etc/ssh/sshd_config service ssh start
Windows のエクスプローラの上では、Linux という形で見えている。
Ubuntu (WSL2) からは、Windows のドライブは /mnt
の下で見えている。