WSL2 中的 Cuda:“GPU 访问被操作系统阻止”

mjm*_*tis 5 gpu graphics-card cuda windows-subsystem-for-linux

我正在尝试在 WSL2 中安装 cuda 以与 TensorFlow 一起使用(根据TF 指令,其中包括NVIDIA 指令)。

Windows 端工具nvidia-smi.exe可以运行并提供以下输出:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 517.40       Driver Version: 517.40       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ... WDDM  | 00000000:01:00.0  On |                  N/A |
| 38%   28C    P8     7W / 120W |    473MiB /  6144MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
Run Code Online (Sandbox Code Playgroud)

我已确保在 WSL2 中安装正确的 cuda 工具包(按照 NVIDIA 说明,为 11.7 的非驱动程序版本)。但是当我运行 WSL2 端工具时,nvidia-smi我看到以下错误:

Failed to initialize NVML: GPU access blocked by the operating system
Failed to properly shut down NVML: GPU access blocked by the operating system
Run Code Online (Sandbox Code Playgroud)

其他帖子中的解决方案(包括重新启动、重新安装驱动程序、禁用安全启动和升级到 Windows 21H2)对我不起作用。

如何为 WSL2 正确配置 cuda?

(为了清晰起见进行了编辑)

Pas*_*Wei 5

“我已确保在 WSL2 中安装正确(即非驱动程序)且匹配版本的 cuda 工具包。”

我认为这不是正确的方法,因为您链接的 NVIDIA 说明说:

使用最新的 Windows x86 生产驱动程序。R495 及更高版本的 Windows 将为 WSL 2 提供 CUDA 支持。

我可以想象在 WSL 中安装驱动程序会产生这些问题。最近我创建了一个新的 Ubuntu WSL2 安装,但没有在其中安装任何东西,nvidia-smi 仍然工作正常。

  • 我还可以确认,我在未安装任何东西的新 Ubuntu WSL2 实例上看到了相同的错误。 (2认同)

mjm*_*tis 0

6个月后我重新审视了这个问题并设法找到了解决方案。我需要按照 Ramhound 的说明升级到 Windows 11,然后从 Windows 管理员帐户使用 WSL2。后一步要求我在 BIOS 中启用虚拟化。