LoginSignup
4
3

More than 3 years have passed since last update.

Winsows 10 Homeでwsl2からCUDAを使う

Last updated at Posted at 2020-09-06

環境

  • Windows 10 Home
  • OSビルド 20206.1000
  • ubuntu 18.04
  • NVIDIA Container Toolkit for Docker 19.03
  • CUDA10.1

pytorchやTensorflowを使いたいのでCUDA toolkit 10.Xが必要(?)
http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/
を見た感じubuntuのバージョンは2004はCUDA11しかないっぽいので1804でやってみる

手順

準備

  • Windows 10 Insider Preview Buildをインストールしておく
  • wsl1からwsl2にしておく

私は終わっていたので省略

windows側にGPUドライバインストール

ここからダウンロードしてインストールするだけ

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

Microsoft storeからubuntu 18.04インストール

Installing, this may take a few minutes...

Enter new UNIX username: 
New password:
Retype new password:
  • 名前とパスワードを設定
  • Windows側でWSL2か確認
> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-18.04    Running         2

CUDA toolkit インストール

これを参考にインストール。

  • 準備
$ sudo apt update
$ sudo apt upgrade
  • インストール
$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
$ sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list'
$ sudo apt update
$ sudo apt-get install -y cuda-toolkit-10-1

Nvidia container toolkitインストール

$ 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/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list

$ sudo apt update

$ sudo apt-get install -y nvidia-docker2
  • docker 起動
$ sudo service docker start
 * Starting Docker: docker                                                                                       [ OK ]
$ sudo service docker status
 * Docker is running

動いている様子

docker run時のエラー

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"process_linux.go:432: running prestart hook 0 caused \\\"error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: detection error: stat failed: /dev/dxg: no such file or directory\\\\n\\\"\"": unknown.

wslのバージョンが古い可能性がある。Windows側からwslをアップデートする。

wsl --update
更新をチェック中...
更新をダウンロード中...
更新をインストール中...
この変更は、次回の WSL 再起動時に有効になります。強制的に再起動するには、' wsl --shutdown ' を実行してください。
カーネル バージョン: 4.19.128
wsl --shutdown
wsl --update
更新をチェック中...
カーネルの更新を受けるには、Windows Update の「Windows の更新時に他の Microsoft 製品の更新プログラムを受け取る」設定をオンにしてください。
詳細については、 https://aka.ms/wsl2kernel.
 を参照してください

最初どのバージョンか把握していなかったが、4.19.128になったら上記エラーは出なくなった。

pytorch を入れてみる

$ sudo docker pull pytorch/pytorch

$ sudo docker run -it --gpus all pytorch/pytorch
root@ee5e5884320e:/workspace# python
Python 3.7.7 (default, May  7 2020, 21:25:33)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True

無事GPUを認識しているようです。

忘備録:Windows側のVSCodeからWSL内のContainerにアクセスできない

WSL2でDockerを使いたい場合、Docker Desktop for windowsを使うようにという情報多数あるが、GPUを使いたい場合、wsl側にNVIDIA Container Toolkitを入れる必要がある。
Windows側のVSCodeからWSL内のContainerにアクセスしContainer内の開発を行いたかった…。(できないので解決した人いればコメント下さい)

以下やったことなど。

VSCodeの以下の拡張機能をインストールした。
- Local
 - Remote - WSL
 - Remote - Container
- Remote(WSL:UBUNTU-18.04)
 - Docker

エラー:"connect EACCES /var/run/docker.sock"

vscode1.png

これで解決

https://docs.docker.com/engine/install/linux-postinstall/

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker 

WSLのDockerを起動しておくと、Docker拡張機能から各Containerの存在は見えるようになった。
vscode2.png

エラー(未解決):Docker returned an error. Make sure the Docker daemon is running.

起動したコンテナに対してAttach Visual Studio Codeするとエラーダイアログがでる。

参考

4
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3