Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
23
Help us understand the problem. What are the problem?

Windows11のWSL上でGPUを使おう!(2021/10時点)

1.本記事の目的

Windows11ではWSL上でGPUが使用できるようになりました。(WSLg:Windows Subsystem for Linux GUI、と呼ばれています)WSL側でGPUが使用できるようになったことで、GUIプログラムや機械学習のプログラムをWSL上で動作させることができるようになります。

さっそく、Window11上で環境を構築していきましょう!

2.使用する環境の前提

  • Windows 11がインストールしてあること
  • NVIDIAのグラフィックボードが搭載されていること

もし、Windows11への更新がまだの場合は手動のインストール(参考:)ができますので、そちらをためしてみましょう。残念ながらWindows10秋の更新(21H2)には、グラフィック機能はサポートされない様子ですので、Windows11にアップデートを行ってください。

グラフィックスの機能は当初、WSL2で搭載されるという話でした。Windows10でWSL2はサポートされましたが、グラフィックスの機能は搭載されず、結局、Windows11からのサポートとなったようです。Windows11に移行できないHWも多そうですので、ぜひ、Windows10のWSL2にもサポートしてほしいところです。

3.Windows側でグラフィックドライバーの更新

WSLgを使用するには、Windows側のグラフィックドライバーを更新する必要があります。以下から最新版のグラフィックドライバーをダウンロードします。

3.WSL上にLinuxをインストール

Power Shellを管理者権限で起動します。

スクリーンショット 2021-10-13 092113.jpg

Ubuntu-20.04 をインストールします。

> wsl --install -d Ubuntu-20.04

4.LinuxにWSL用のCUDAをインストール

Linuxを起動し、WSL用のCUDAを入れていきます。ポイントはここです。]

  • ①Linux側でのドライバーは不要
  • ②WSL用のCUDAを入れる

以下、WSL上でのLinuxでのCUDA 11.4.0の場合のコマンドを示しています。機械学習ユーザー(TensorFlow/PyTorch)の方は必要なバージョンに適宜読み替えてCUDAをインストールお願いします。

$ 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.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda

通常、CUDAをインストールするとグラフィックドライバ等までインストールされてしまいますが、その依存関係を修正したうえで最後にインストールかけているということでしょうか。

5. GPUが使える仮想環境(Docker)をインストール

WSL上のLinuxにDockerもインストールできます。この場合、Dockerの中でもGPUを使うことができます。Windows->WSLのLinux->Docker内のLinuxという3階建て構成です。

この場合、DockerもGPU対応にする必要があります。

まずは素のDocker-CEをインストールします。

$ curl https://get.docker.com | sh       

つづいて、NVIDIA Container Toolkit(旧名:nvidia-docker2)をインストールします。

$ 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
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2      

また、ユーザーをdockerグループに追加します。(これをしないとdockerコマンドがユーザーから起動できません)

$ sudo usermod -aG docker $USER

最後にWSL上のdockerサービスを再起動します。

$ sudo service docker stop
$ sudo service docker start

以上で環境は構築されたと思います。

6. nvidia-smiコマンドのパス

なお、nvidia-smiコマンドは、ちょっと変なところにインストールされていてびっくりしました。
パスが通っていないので、最後にパスを通してください。

$ sudo cp /usr/lib/wsl/lib/nvidia-smi /usr/bin
$ sudo chmod +x /usr/bin/nvidia-smi

7. 参考

本稿では以下を参考にしています。
https://docs.nvidia.com/cuda/wsl-user-guide/index.html

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
23
Help us understand the problem. What are the problem?