Open3

WSL2にubuntuを入れて、DockerいれてGPUを動かすぞ。

wokwok

前提

Ubuntuのインストール

その前に、Distroの削除方法

$ wsl --unregister Ubuntu-20.04

使用可能Distro一覧

$ wsl --list --online

Ubuntu 20.04インストール

$ wsl --install -d Ubuntu-20.04

Ubuntuの設定(好みによる)

ビープ音消す

echo "set bell-style none" >> ~/.inputrc

たいていの場合ネットワークが死んでいるので。

$ sudo sh -c "echo 'nameserver 8.8.8.8' > /etc/resolv.conf"

dotfileを投入しておく

下記のあたりかな?

.aws
.ssh

GPUをDockerで動かせるようにする

Cudaインストール

https://qiita.com/ksasaki/items/ee864abd74f95fea1efa
を参考に。

$ 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/11.1.0/local_installers/cuda-repo-wsl-ubuntu-11-1-local_11.1.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-1-local_11.1.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-1-local/7fa2af80.pub
$ sudo apt-get update\
$ sudo apt-get -y install cuda
$ cd /usr/local/cuda/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery

Docker インストール

$ curl https://get.docker.com | sh
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container-experimental.list | sudo tee /etc/apt/sources.list.d/libnvidia-container-experimental.list

$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2
$ sudo usermod -aG docker $USER
$ sudo service docker start
$ docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark

Kaggleカーネルをインストール

docker run  -it -p 8080:8080 -v `pwd`:/work --name hogehoge gcr.io/kaggle-gpu-images/python

⇒動かない。原因未調査。 ⇒動いた。なぜだ?

Kaggleカーネルを自分でビルド

./build --gpu

こちらでやれば動く。

wokwok

2023/06/27 追記

https://docs.nvidia.com/cuda/wsl-user-guide/index.html#getting-started-with-cuda-on-wsl-2
このページの CUDA Toolkit Downloads からインストールしてみる。

$ sudo apt-key del 7fa2af80
[sudo] password for wataru:
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK
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.1.1/local_installers/cuda-repo-wsl-ubuntu-12-1-local_12.1.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-1-local_12.1.1-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

テスト

過去記事の通りdockerをインストールしてテスト
→動かない

$ sudo docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
[sudo] password for wataru:
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
ERRO[0000] error waiting for container:

https://qiita.com/murakamixi/items/5f6cf5c1ab6b4090f64a
を参考にnividia-container-runtimeのみインストール。→動いた。

sudo apt-get install nvidia-container-runtime
sudo service docker restart
docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody  -benchmark

試しにこちらも → 動いた

sudo docker run --rm --gpus all nvidia/cuda:11.7.0-base-ubuntu22.04 nvidia-smi