はじめに:WSL2でCUDAを使うとどうなるか
Windows 11環境でDeep LearningやGPUコンピューティングを行いたい場合、WSL2(Windows Subsystem for Linux 2)は非常に強力な選択肢です。Linux環境とWindows環境をシームレスに切り替えながら、NVIDIA GPUのCUDA機能を活用できます。しかし、多くのユーザーがWSL2にCUDAをインストールしても「CUDAが認識されない」という問題に直面します。
本記事では、WSL2環境でCUDAが正しく認識されない原因と、その具体的な解決方法について解説します。
発生する問題の原因
WSL2でCUDAが認識されない主な原因は以下の通りです:
- Windows側にWSL2用のNVIDIA.driverがインストールされていない
- WSL2内のCUDA ToolkitとWindows側のdriverのバージョン互換性问题
- WSL2のLinuxカーネルGPUサポートが無効になっている
- 通常のデスクトップ用driverをインストールしている(WSL2非対応)
結論:WSL2用の特別なNVIDIA driverが必要
WSL2でCUDAを使用するには、Windows側にWSL2専用のNVIDIA driverをインストールする必要があります。通常のデスクトップ用driverではWSL2内のCUDAを認識できません。Windows 11(バージョン21H2以降)にWSL2用driverをインストールすることで、WSL2内のLinux環境からGPUを認識できるようになります。
具体的な解決手順
ステップ1:Windows 11のバージョンを確認する
まず、Windows 11のバージョンが21H2以上であることを確認します。
winver
または設定→システム→バージョン情報から確認できます。21H2未満の場合は、Windows Updateで更新してください。
ステップ2:WSL2用NVIDIA driverをインストールする(Windows側)
これは最も重要なステップです。通常のNVIDIA driverではなく、WSL2用のCUDA対応driverをダウンロードしてインストールします。
- NVIDIA公式サイトのダウンロードページにアクセス
- 以下の選択を行う:
- 产品系列:GeForce
- 产品家族:お使いのGPUを選択
- 操作系统:Windows 11
- 下载类型:Game Ready Driver または Studio Driver
- 「検索」ボタンをクリックしてダウンロード
- ダウンロードしたexeファイルを実行し、案内に従ってインストール
※Microsoft Learnによると、WSL2用のCUDA対応driverを別途ダウンロードする必要があるとされています。
ステップ3:WSL2をインストール・有効化する
PowerShellを管理者権限で開き、以下のコマンドを実行します:
wsl --install
または、手動で有効化する場合は:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
PCを再起動後、WSL2をデフォルトに設定:
wsl --set-default-version 2
ステップ4:Ubuntuをインストールする
Microsoft StoreからUbuntuをインストールします:
wsl --install -d Ubuntu-22.04
インストール後、ユーザー名とパスワードを設定します。
ステップ5:WSL2内にCUDA Toolkitをインストールする
Ubuntu側で以下のコマンドを実行します:
sudo apt-get update
sudo apt-get upgrade
wsl.exe -e sudo apt-get install cuda-toolkit-12-8
または、 NVIDIA公式リポジトリを追加してインストール:
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-wsl-ubuntu.pin
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/ /"
sudo apt-get update
sudo apt-get install cuda
ステップ6:環境変数を設定する
~/.bashrc または ~/.zshrc に以下を追加:
export PATH=/usr/local/cuda-12.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH
変更を反映:
source ~/.bashrc
ステップ7:CUDAが認識されているか確認する
以下のコマンドを実行して確認します:
nvidia-smi
GPU情報が表示されれば成功です。また、CUDAバージョンの確認:
nvcc --version
ステップ8:PyTorch/TensorFlowでGPUを確認する
Python環境がある場合の確認例:
pip install torch
python -c "import torch; print(torch.cuda.is_available())"
Trueが返ってくれば、GPU認識成功です。
補足・注意点
バージョン依存について
- Windowsバージョン:21H2以上が必須
- CUDA Toolkitバージョン:使用するフレームワーク(PyTorch、TensorFlow)と互換性のあるバージョンを選択
- NVIDIA driver:最新のWSL2対応driverを使用することを推奨
よく気をつけるべき落とし穴
- Desktop Driver vs WSL2 Driver:通常のGeForce Desktop DriverではWSL2内のCUDA認識できません。必ずWSL2対応driverをインストールしてください。
- WSL2再起動の重要性:driverインストール後、WSL2を再起動(wsl –shutdown後に起動)することで変更が反映されます。
- GPUモードの確認:NVIDIA Control Panelで「高性能NVIDIAプロセッサ」を設定。
- 仮想化技術の有効化:BIOS/UEFIでIntel VT-xまたはAMD-Vが有効になっているか確認。
それでも解決しない場合のチェックポイント
- WindowsとWSL2两侧でdriverバージョンが一致しているか確認
- WSL2のLinuxカーネルアップデートを実行(wsl –update)
- 防火墙やセキュリティソフトが干渉していないか確認
- GPUが物理的に正しく接続されているか確認
参考元
- CUDA on WSL User Guide — CUDA on WSL 13.1 documentation
- Enable NVIDIA CUDA on WSL 2 | Microsoft Learn
- How to Set Up CUDA and WSL2 for Windows 11
- Installing WSL2, PyTorch and CUDA on Windows 11 | by Dr. Joe Logan