スポンサーリンク

Windows 11にDocker Desktopを導入(5)(不完全メモ)Windows 11上、WSL2(Ubuntu)のDockerコンテナのUbuntuからCUDAを使う

できるようにはなったが、想定した手順の再現が思ったようにできていない(環境の初期化に自信がない)。(いつもそうだが今回はいつのも増して)自分用のメモなので、参考にされる方は注意。

登場人物

・Windows 11  ... いつも使っている Windows 11

・WSL2 ... Windowsの上で動かしているUbuntu

・コンテナ ... docker内で動いている環境。今回はUbuntu。

・Docker ... WSL2の中でコンテナを動かす。導入済みとする。

手順1 windows 11にNVIDIA ドライバのインストール

CGとかゲームやってる人ならすでに入っていると思う。Windows 11 に、自分のグラフィックボード用のドライバを入れた記憶があるなら次の手順へ。

よく注意されるのは、ドライバのインストールはあくまで普通の「Windowsへドライバを入れる作業(公式から.exeを落としてマウスでアイコンをポイントしダブルクリックしインストール画面を開きウィザードに従って次へを押していく)」として行わなければならず「WSL2でLinuxを使っているからと言ってaptコマンドで入れないように」という所。

公式: https://www.nvidia.co.jp/Download/index.aspx?lang=jp

動作チェック

WSL2上で以下のコマンドを打って、ドライバのバージョンの表記が出れば成功。

なおここでCUDAバージョンが表示されるが、これはこのドライバが対応しているCUDAドライバの最大バージョンとなる。これより新しいCUDAは入れられないという意味。

nvidia-smi

手順2 WSL2へnvidia-container-toolkitのインストール

公式のインストール方法に従って、WSL2上に、aptを使ってインストールする。

公式: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

以下を写経


curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

手順3 WSL2へCUDA Toolkitを導入

Docker内のUbuntuは、WSL2にインストールされたCUDA Toolkitを参照する形で使用する。

CUDA Toolkitのインストールコマンドを入手

公式へ行く。例えばCUDA 11.8を導入したい場合、以下。

https://developer.nvidia.com/cuda-11-8-0-download-archive

Linux → x86_64 → WSL-Ubuntu → 2.0 → deb(local)

の順で選択するとコマンドが表示されるのでそれをWSL2で実行する。


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.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

手順4 コンテナを作成

CUDAを使うためには -v と --gpusを指定しなければいけない。

-v ... WSL2側のディレクトリをコンテナにマウントする。これにより、WSL2側にインストールしたcudart.so.11.0等をコンテナ側から使えるようになる。

--gpus ... コンテナからGPUを使う設定。allを指定する

docker create -it -v /usr/local/cuda-11.8/:/usr/local/cuda-11.8/ --gpus all --name cuda_test ubuntu:latest

-vオプションでは、WSL2側のCUDAのインストールディレクトリを、コンテナ側の指定したパスでアクセスできるようにしている。

手順5 確認

まずはコンテナを起動し、

docker start -ai cuda_test

ドライバが読めていることを確認

nvidia-smi

CUDA Toolkitが使えることを確認

ls /usr/local/cuda-11.8/lib64/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: