GPUwithWSL

ここに記載の内容は、個人的にこうしているというだけで、こうするとうまくいきます、という主旨ではありません。記載内容が間違っている場合や、バージョン等によって環境依存部分が生じて、結果「こうではない」というようなこともあるかもしれません。とにかく、私こうしてますというメモに過ぎないことをご承知ください。

なお、2025年11月時点でのメモになります。

1.やりたいこと

ホストマシンがWindows11Proで、その上の仮想マシンのOSをUbuntuとして、ゲスト側でGPUを使って対応コードを動かしたい。

2.個人的な選択肢(無償でできる範囲)

Hyper-Vでの仮想マシン(Ubuntu) or WSL2上のUbuntu(22.04)。ただし、Hyper-Vゲスト機にDDAやGPUPartitioningで渡すということができませんでしたので、WSL2上のUbuntuに直接、という選択肢でやってみます。

3. 作業・走査

  • ホスト側のWindows11ProにはWSL対応Driverを入れます(下記URLで”Get CUDA Driver”選択)
  • https://developer.nvidia.com/cuda/wsl
  • 例えば、NVIDIA GeForce RTX3080 でWindows11のようにして選択
  • Game ReadyとStudioの選択になればpythonコードで計算させるなら、ということで後者を選びました(これを書いてる時に使ってるマシンには、既に566.03のドライバが入ってる状態なので、実際にはアップデートになりますが、581.57まで上がります)
  • DL元はnvidiaでもセキュリティスキャンはします
  • で、ホスト側でインストール(この時点で、ゲスト側でnvidia-smiすると版が上がっているけどこれはホスト側の情報が出てます。逆にいうと、WSLはホスト側と同じリソースを認識しているということではあるのですが、wslのcuda-toolkitは明示的に上げないといけないと思います。このためゲスト側で以下を実施)
  • sudo apt install nvidia-cuda-toolkit
  • nvcc –version
  • で見ますと、あまり新しくないです。で、結局
  • sudo apt-get remove –purge cuda-toolkit*
  • sudo apt-get autoremove
  • して
  • wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
  • して
  • sudo dpkg -i cuda-keyring_1.1-1_all.deb
  • します。で、最新版は以下かな。
  • sudo apt-get install cuda-toolkit-12-6
  • で、パスを~/.bashrc
  • export PATH=/usr/local/cuda-12.6/bin:$PATH
  • source ~/.bashrc
  • で、確認
  • nvcc –version
  • 上がっている(12.6)を確認しておく。