为什么nvidia-smi return "GPU access blocked by the operating system" in WSL2 under Windows 10 21H2
Why does nvidia-smi return "GPU access blocked by the operating system" in WSL2 under Windows 10 21H2
在 WSL2 上安装 CUDA
我已经按照 https://docs.nvidia.com/cuda/wsl-user-guide/index.html 上的说明在我的台式机(AMD 5950X 系统和 RTX3080)和我的笔记本电脑(戴尔 XPS 9560 和 i7-7700HQ 和 GTX1050)上安装了 Windows 10 21H2 :
- 在 Windows
中安装支持 CUDA 的驱动程序
- 在 PowerShell 中更新 WSL2 内核:
wsl --update
- 在 WSL2 的 Ubuntu 20.04 中安装 CUDA 工具包
(请注意,您没有在 WSL2 中安装 CUDA 驱动程序,说明明确告诉您不应安装 CUDA 驱动程序。):
$ 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/11.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda
错误
在我的桌面上 nvidia-smi
和 CUDA 示例在 WSL2 中运行良好。
但是在我的笔记本电脑上 运行 nvidia-smi
在 WSL2 returns:
$ 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
我知道我的笔记本电脑有 NVIDIA Optimus 与英特尔 IGP 和 NVIDIA GTX1050,但 CUDA 在 Windows 中运行良好。只是在 WSL2 中没有。
但是我也找不到任何关于 CUDA 不应该在 Optimus 系统的 WSL2 中工作的信息。
我试过的
我已经尝试了以下缓解措施,但错误仍然存在:
- 再次重新安装 Windows CUDA 驱动程序并重新启动
- 在 NVIDIA 控制面板的全局设置中将 GTX1050 设为首选 GPU
- 使 GTX1050 成为默认的 physx 处理器
- 按照相同的步骤在 WSL2Ubuntu 18.04
问题
这是 CUDA WSL2 错误吗?还是 CUDA 根本无法与 Optimus 一起使用?或者我该如何修复或进一步调试它?
更多详情
我比较了 运行 nvidia-smi.exe
在 Windows powershell 中我的台式机和笔记本电脑,它们都 return 相同的软件版本:
PS C:\WINDOWS\system32> nvidia-smi
Wed Nov 17 21:46:50 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.06 Driver Version: 510.06 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| 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 Off | N/A |
| N/A 44C P8 N/A / N/A | 75MiB / 4096MiB | 1% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
更多细节
我的笔记本电脑 Windows Powershell 中的完整 nvidia-smi.exe -q
return 关于我笔记本电脑 GPU 的以下信息:
PS C:\WINDOWS\system32> nvidia-smi -q
==============NVSMI LOG==============
Timestamp : Wed Nov 17 21:48:19 2021
Driver Version : 510.06
CUDA Version : 11.6
Attached GPUs : 1
GPU 00000000:01:00.0
Product Name : NVIDIA GeForce GTX 1050
Product Brand : GeForce
Product Architecture : Pascal
Display Mode : Disabled
Display Active : Disabled
Persistence Mode : N/A
MIG Mode
Current : N/A
Pending : N/A
Accounting Mode : Disabled
Accounting Mode Buffer Size : 4000
Driver Model
Current : WDDM
Pending : WDDM
Serial Number : N/A
GPU UUID : GPU-7645072f-7516-5488-316d-6277d101f64e
Minor Number : N/A
VBIOS Version : 86.07.3e.00.1c
MultiGPU Board : No
Board ID : 0x100
GPU Part Number : N/A
Module ID : 0
Inforom Version
Image Version : N/A
OEM Object : N/A
ECC Object : N/A
Power Management Object : N/A
GPU Operation Mode
Current : N/A
Pending : N/A
GSP Firmware Version : N/A
GPU Virtualization Mode
Virtualization Mode : None
Host VGPU Mode : N/A
IBMNPU
Relaxed Ordering Mode : N/A
PCI
Bus : 0x01
Device : 0x00
Domain : 0x0000
Device Id : 0x1C8D10DE
Bus Id : 00000000:01:00.0
Sub System Id : 0x07BE1028
GPU Link Info
PCIe Generation
Max : 3
Current : 3
Link Width
Max : 16x
Current : 16x
Bridge Chip
Type : N/A
Firmware : N/A
Replays Since Reset : 0
Replay Number Rollovers : 0
Tx Throughput : 0 KB/s
Rx Throughput : 0 KB/s
Fan Speed : N/A
Performance State : P8
Clocks Throttle Reasons
Idle : Active
Applications Clocks Setting : Not Active
SW Power Cap : Not Active
HW Slowdown : Not Active
HW Thermal Slowdown : Not Active
HW Power Brake Slowdown : Not Active
Sync Boost : Not Active
SW Thermal Slowdown : Not Active
Display Clock Setting : Not Active
FB Memory Usage
Total : 4096 MiB
Used : 75 MiB
Free : 4021 MiB
BAR1 Memory Usage
Total : 256 MiB
Used : 2 MiB
Free : 254 MiB
Compute Mode : Default
Utilization
Gpu : 0 %
Memory : 0 %
Encoder : 0 %
Decoder : 0 %
Encoder Stats
Active Sessions : 0
Average FPS : 0
Average Latency : 0
FBC Stats
Active Sessions : 0
Average FPS : 0
Average Latency : 0
Ecc Mode
Current : N/A
Pending : N/A
ECC Errors
Volatile
Single Bit
Device Memory : N/A
Register File : N/A
L1 Cache : N/A
L2 Cache : N/A
Texture Memory : N/A
Texture Shared : N/A
CBU : N/A
Total : N/A
Double Bit
Device Memory : N/A
Register File : N/A
L1 Cache : N/A
L2 Cache : N/A
Texture Memory : N/A
Texture Shared : N/A
CBU : N/A
Total : N/A
Aggregate
Single Bit
Device Memory : N/A
Register File : N/A
L1 Cache : N/A
L2 Cache : N/A
Texture Memory : N/A
Texture Shared : N/A
CBU : N/A
Total : N/A
Double Bit
Device Memory : N/A
Register File : N/A
L1 Cache : N/A
L2 Cache : N/A
Texture Memory : N/A
Texture Shared : N/A
CBU : N/A
Total : N/A
Retired Pages
Single Bit ECC : N/A
Double Bit ECC : N/A
Pending Page Blacklist : N/A
Remapped Rows : N/A
Temperature
GPU Current Temp : 40 C
GPU Shutdown Temp : 102 C
GPU Slowdown Temp : 97 C
GPU Max Operating Temp : 78 C
GPU Target Temperature : N/A
Memory Current Temp : N/A
Memory Max Operating Temp : N/A
Power Readings
Power Management : N/A
Power Draw : N/A
Power Limit : N/A
Default Power Limit : N/A
Enforced Power Limit : N/A
Min Power Limit : N/A
Max Power Limit : N/A
Clocks
Graphics : 0 MHz
SM : 0 MHz
Memory : 405 MHz
Video : 0 MHz
Applications Clocks
Graphics : N/A
Memory : N/A
Default Applications Clocks
Graphics : N/A
Memory : N/A
Max Clocks
Graphics : 1911 MHz
SM : 1911 MHz
Memory : 3504 MHz
Video : 1708 MHz
Max Customer Boost Clocks
Graphics : N/A
Clock Policy
Auto Boost : N/A
Auto Boost Default : N/A
Voltage
Graphics : N/A
Processes : None
原来 Windows 10 更新助手错误地报告它在我的笔记本电脑上将我的 OS 升级到了 21H2。
通过 运行 winver
检查 Windows 版本报告说我的 OS 仍然是 21H1。
当然,如果没有 21H2,WSL2 中的 CUDA 将无法在 Windows10 中工作。
成功安装 21H2 后,我可以确认 CUDA 可以与 WSL2 一起使用,即使对于配备 Optimus NVIDIA 卡的笔记本电脑也是如此。
在 WSL2 上安装 CUDA
我已经按照 https://docs.nvidia.com/cuda/wsl-user-guide/index.html 上的说明在我的台式机(AMD 5950X 系统和 RTX3080)和我的笔记本电脑(戴尔 XPS 9560 和 i7-7700HQ 和 GTX1050)上安装了 Windows 10 21H2 :
- 在 Windows 中安装支持 CUDA 的驱动程序
- 在 PowerShell 中更新 WSL2 内核:
wsl --update
- 在 WSL2 的 Ubuntu 20.04 中安装 CUDA 工具包 (请注意,您没有在 WSL2 中安装 CUDA 驱动程序,说明明确告诉您不应安装 CUDA 驱动程序。):
$ 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/11.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda
错误
在我的桌面上 nvidia-smi
和 CUDA 示例在 WSL2 中运行良好。
但是在我的笔记本电脑上 运行 nvidia-smi
在 WSL2 returns:
$ 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
我知道我的笔记本电脑有 NVIDIA Optimus 与英特尔 IGP 和 NVIDIA GTX1050,但 CUDA 在 Windows 中运行良好。只是在 WSL2 中没有。 但是我也找不到任何关于 CUDA 不应该在 Optimus 系统的 WSL2 中工作的信息。
我试过的
我已经尝试了以下缓解措施,但错误仍然存在:
- 再次重新安装 Windows CUDA 驱动程序并重新启动
- 在 NVIDIA 控制面板的全局设置中将 GTX1050 设为首选 GPU
- 使 GTX1050 成为默认的 physx 处理器
- 按照相同的步骤在 WSL2Ubuntu 18.04
问题
这是 CUDA WSL2 错误吗?还是 CUDA 根本无法与 Optimus 一起使用?或者我该如何修复或进一步调试它?
更多详情
我比较了 运行 nvidia-smi.exe
在 Windows powershell 中我的台式机和笔记本电脑,它们都 return 相同的软件版本:
PS C:\WINDOWS\system32> nvidia-smi
Wed Nov 17 21:46:50 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.06 Driver Version: 510.06 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| 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 Off | N/A |
| N/A 44C P8 N/A / N/A | 75MiB / 4096MiB | 1% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
更多细节
我的笔记本电脑 Windows Powershell 中的完整 nvidia-smi.exe -q
return 关于我笔记本电脑 GPU 的以下信息:
PS C:\WINDOWS\system32> nvidia-smi -q
==============NVSMI LOG==============
Timestamp : Wed Nov 17 21:48:19 2021
Driver Version : 510.06
CUDA Version : 11.6
Attached GPUs : 1
GPU 00000000:01:00.0
Product Name : NVIDIA GeForce GTX 1050
Product Brand : GeForce
Product Architecture : Pascal
Display Mode : Disabled
Display Active : Disabled
Persistence Mode : N/A
MIG Mode
Current : N/A
Pending : N/A
Accounting Mode : Disabled
Accounting Mode Buffer Size : 4000
Driver Model
Current : WDDM
Pending : WDDM
Serial Number : N/A
GPU UUID : GPU-7645072f-7516-5488-316d-6277d101f64e
Minor Number : N/A
VBIOS Version : 86.07.3e.00.1c
MultiGPU Board : No
Board ID : 0x100
GPU Part Number : N/A
Module ID : 0
Inforom Version
Image Version : N/A
OEM Object : N/A
ECC Object : N/A
Power Management Object : N/A
GPU Operation Mode
Current : N/A
Pending : N/A
GSP Firmware Version : N/A
GPU Virtualization Mode
Virtualization Mode : None
Host VGPU Mode : N/A
IBMNPU
Relaxed Ordering Mode : N/A
PCI
Bus : 0x01
Device : 0x00
Domain : 0x0000
Device Id : 0x1C8D10DE
Bus Id : 00000000:01:00.0
Sub System Id : 0x07BE1028
GPU Link Info
PCIe Generation
Max : 3
Current : 3
Link Width
Max : 16x
Current : 16x
Bridge Chip
Type : N/A
Firmware : N/A
Replays Since Reset : 0
Replay Number Rollovers : 0
Tx Throughput : 0 KB/s
Rx Throughput : 0 KB/s
Fan Speed : N/A
Performance State : P8
Clocks Throttle Reasons
Idle : Active
Applications Clocks Setting : Not Active
SW Power Cap : Not Active
HW Slowdown : Not Active
HW Thermal Slowdown : Not Active
HW Power Brake Slowdown : Not Active
Sync Boost : Not Active
SW Thermal Slowdown : Not Active
Display Clock Setting : Not Active
FB Memory Usage
Total : 4096 MiB
Used : 75 MiB
Free : 4021 MiB
BAR1 Memory Usage
Total : 256 MiB
Used : 2 MiB
Free : 254 MiB
Compute Mode : Default
Utilization
Gpu : 0 %
Memory : 0 %
Encoder : 0 %
Decoder : 0 %
Encoder Stats
Active Sessions : 0
Average FPS : 0
Average Latency : 0
FBC Stats
Active Sessions : 0
Average FPS : 0
Average Latency : 0
Ecc Mode
Current : N/A
Pending : N/A
ECC Errors
Volatile
Single Bit
Device Memory : N/A
Register File : N/A
L1 Cache : N/A
L2 Cache : N/A
Texture Memory : N/A
Texture Shared : N/A
CBU : N/A
Total : N/A
Double Bit
Device Memory : N/A
Register File : N/A
L1 Cache : N/A
L2 Cache : N/A
Texture Memory : N/A
Texture Shared : N/A
CBU : N/A
Total : N/A
Aggregate
Single Bit
Device Memory : N/A
Register File : N/A
L1 Cache : N/A
L2 Cache : N/A
Texture Memory : N/A
Texture Shared : N/A
CBU : N/A
Total : N/A
Double Bit
Device Memory : N/A
Register File : N/A
L1 Cache : N/A
L2 Cache : N/A
Texture Memory : N/A
Texture Shared : N/A
CBU : N/A
Total : N/A
Retired Pages
Single Bit ECC : N/A
Double Bit ECC : N/A
Pending Page Blacklist : N/A
Remapped Rows : N/A
Temperature
GPU Current Temp : 40 C
GPU Shutdown Temp : 102 C
GPU Slowdown Temp : 97 C
GPU Max Operating Temp : 78 C
GPU Target Temperature : N/A
Memory Current Temp : N/A
Memory Max Operating Temp : N/A
Power Readings
Power Management : N/A
Power Draw : N/A
Power Limit : N/A
Default Power Limit : N/A
Enforced Power Limit : N/A
Min Power Limit : N/A
Max Power Limit : N/A
Clocks
Graphics : 0 MHz
SM : 0 MHz
Memory : 405 MHz
Video : 0 MHz
Applications Clocks
Graphics : N/A
Memory : N/A
Default Applications Clocks
Graphics : N/A
Memory : N/A
Max Clocks
Graphics : 1911 MHz
SM : 1911 MHz
Memory : 3504 MHz
Video : 1708 MHz
Max Customer Boost Clocks
Graphics : N/A
Clock Policy
Auto Boost : N/A
Auto Boost Default : N/A
Voltage
Graphics : N/A
Processes : None
原来 Windows 10 更新助手错误地报告它在我的笔记本电脑上将我的 OS 升级到了 21H2。
通过 运行 winver
检查 Windows 版本报告说我的 OS 仍然是 21H1。
当然,如果没有 21H2,WSL2 中的 CUDA 将无法在 Windows10 中工作。
成功安装 21H2 后,我可以确认 CUDA 可以与 WSL2 一起使用,即使对于配备 Optimus NVIDIA 卡的笔记本电脑也是如此。