LoginSignup
14
11

More than 1 year has passed since last update.

WSL2でCUDAをインストールする

Posted at

概要

Windows 11およびWindows10 22H2から、WSL2でCUDAが使用できるみたいなので、環境構築してみます。
似たようなことをしている良記事はたくさんありますが、アウトプットの場としてメモを残すのを目的としました。

環境

  • Windows11
  • WSL2 : Ubuntu22.04.1

やったこと

WSL2を使用できるようにする

ここに従って、wsl2をインストールします.
windowsのPowerShellやWindowsのコマンドプロンプトで以下を実行するだけでいいみたいです.

wsl --install

このコマンドを打つと、自動的にWSL2になるようです。
オプションでバージョンを1にできますが
CUDAの公式ガイドではWSL2を使用しているのでこのままでいきます。
また、Linuxのdistributionも選べますが、デフォルトのままUbuntuで行いました。

WSL2を使用した、CUDAの設定では以下のように5.10.16.3以上を進められています。

Ensure you are on the latest WSL Kernel or at least 4.19.121+. We recommend 5.10.16.3 or later for better performance and functional fixes.

なのでもし、以下のコマンドで表示されるカーネルバージョンが足りていなかったら

wsl --version

以下のコマンドでアップデートをしておくといいかもしれません。

wsl --update

CUDAの環境を整える

ガイドを参考に勧めます。

ガイドにはいろいろ書いているのですが、
NVIDIAのWindows Driverを使用したうえで

Option 1: Installation of Linux x86 CUDA Toolkit using WSL-Ubuntu Package - Recommended

で推奨されている手順をするのが良さそうなのでそれに従う方針でいきます。

NVIDIAのWindows Driverをインストール

まずは、Windows Driverをインストールします。

The latest NVIDIA Windows GPU Driver will fully support WSL 2.

とのことなのでリンク先から、環境にあったものをダウンロードします。

今回は以下の画像のような環境なのでこの条件でSearchを押して、表示されたものをダウンロードしました。(表示されているものは最新バージョン?)
なお、Download Type SDのほうが安定性と品質を優先されているとの説明があったのでSDを選択しました。
image.png
image.png

ダウンロードが完了したら、Launcherを起動してインストールを完了させます。
なお、インストール後には再起動が必要です。

CUDA Toolkitのインストール

推奨された方法に記載されているコマンドを実行していきます。

その前にまずは、書いているように以下を実行します

sudo apt-key del 7fa2af80

その後、以下を実行していきます。

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

公式ガイドのOption2 の方法でもtoolkitはインストールできますが、注意書きによるとOption2の方法だと、先にインストールしたWidnowsのドライバを上書きしてしてしまうようです。
そのため、WSL2とWindows Driverを使う場合はOption1に従うのが無難です。

完了後、以下を実行しバージョン情報が出力されればインストールはできていそうです。

$ cat  /usr/local/cuda/version.json
{
   "cuda" : {
      "name" : "CUDA SDK",
      "version" : "12.0.0"
   },
   "cuda_cccl" : {
      "name" : "CUDA C++ Core Compute Libraries",
      "version" : "12.0.90"
   },
   "cuda_cudart" : {
      "name" : "CUDA Runtime (cudart)",
      "version" : "12.0.107"
   },
   "cuda_cuobjdump" : {
      "name" : "cuobjdump",
      "version" : "12.0.76"
   },
   "cuda_cupti" : {
      "name" : "CUPTI",
      "version" : "12.0.90"
   },
   "cuda_cuxxfilt" : {
      "name" : "CUDA cu++ filt",
      "version" : "12.0.76"
   },
   "cuda_demo_suite" : {
      "name" : "CUDA Demo Suite",
      "version" : "12.0.76"
   },
   "cuda_gdb" : {
      "name" : "CUDA GDB",
      "version" : "12.0.90"
   },
   "cuda_nsight" : {
      "name" : "Nsight Eclipse Plugins",
      "version" : "12.0.78"
   },
   "cuda_nvcc" : {
      "name" : "CUDA NVCC",
      "version" : "12.0.76"
   },
   "cuda_nvdisasm" : {
      "name" : "CUDA nvdisasm",
      "version" : "12.0.76"
   },
   "cuda_nvml_dev" : {
      "name" : "CUDA NVML Headers",
      "version" : "12.0.76"
   },
   "cuda_nvprof" : {
      "name" : "CUDA nvprof",
      "version" : "12.0.90"
   },
   "cuda_nvprune" : {
      "name" : "CUDA nvprune",
      "version" : "12.0.76"
   },
   "cuda_nvrtc" : {
      "name" : "CUDA NVRTC",
      "version" : "12.0.76"
   },
   "cuda_nvtx" : {
      "name" : "CUDA NVTX",
      "version" : "12.0.76"
   },
   "cuda_nvvp" : {
      "name" : "CUDA NVVP",
      "version" : "12.0.90"
   },
   "cuda_opencl" : {
      "name" : "CUDA OpenCL",
      "version" : "12.0.76"
   },
   "cuda_sanitizer_api" : {
      "name" : "CUDA Compute Sanitizer API",
      "version" : "12.0.90"
   },
   "libcublas" : {
      "name" : "CUDA cuBLAS",
      "version" : "12.0.1.189"
   },
   "libcufft" : {
      "name" : "CUDA cuFFT",
      "version" : "11.0.0.21"
   },
   "libcufile" : {
      "name" : "GPUDirect Storage (cufile)",
      "version" : "1.5.0.59"
   },
   "libcurand" : {
      "name" : "CUDA cuRAND",
      "version" : "10.3.1.50"
   },
   "libcusolver" : {
      "name" : "CUDA cuSOLVER",
      "version" : "11.4.2.57"
   },
   "libcusparse" : {
      "name" : "CUDA cuSPARSE",
      "version" : "12.0.0.76"
   },
   "libnpp" : {
      "name" : "CUDA NPP",
      "version" : "12.0.0.30"
   },
   "libnvjitlink" : {
      "name" : "JIT Linker Library",
      "version" : "12.0.76"
   },
   "libnvjpeg" : {
      "name" : "CUDA nvJPEG",
      "version" : "12.0.0.28"
   },
   "libnvvm_samples" : {
      "name" : "NVVM Samples",
      "version" : "12.0.94"
   },
   "nsight_compute" : {
      "name" : "Nsight Compute",
      "version" : "2022.4.0.15"
   },
   "nsight_systems" : {
      "name" : "Nsight Systems",
      "version" : "2022.4.2.18"
   },
   "nvidia_fs" : {
      "name" : "NVIDIA file-system",
      "version" : "2.14.12"
   }
}

参考

14
11
0

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
14
11