WSL2安装配置GPU驱动

上一级:index-wsl

驱动安装–驱动只装在win端

习惯了ubuntu里面装nvdia驱动?那你可能要搞错了,wsl不需要你在ubuntu里面装驱动,你需要在win中装一个支持wsl2的驱动

安装Windows的nvidia驱动(Windows下的驱动)

下载并安装带有WSL2驱动的Windows-nvidia-驱动

再次强调, 不要在wsl里面的ubuntu装显卡驱动,显卡驱动应该装在windows端

根据自己电脑显卡类型,分GeForce和QUADRO两个版本,自己电脑是哪个就选哪个。下载驱动后,安装。(安装过程中可以直接选择“精简”模式)

有人会问:不是安装WSL2的驱动吗?为什么装Windows的?

实际上,官网文档上标注 了,包括有WSL2驱动的官方windows nvidia驱动是整个过程唯一要装的GPU驱动!!!

千万别被其他指南带错路了!(我就是没找到这个,白白浪费很多时间)

Pasted%20image%2020220512145242.png

访问Update Drivers & Optimal Playable Settings | NVIDIA GeForce Experience

下载GeForce Experience,用它来安装nvidia驱动

或者直接下载驱动Official Drivers | NVIDIA

windows端的驱动确认

正常情况下,采用Windows默认更新即可安装NVIDIA对应的显卡驱动。此时,开始菜单会存在NVIDIA Control Panel应用,打开该应用即可查看驱动版本。本文对应的驱动版本如下图所示。

1647512687943446139.png

或者打开Windows Terminal,在其默认标签页(windows 环境下的shell,如 cmd等)中输入如下命令:

1
nvidia-smi.exe

如果输出类似如下内容,即表示驱动安装成功。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Thu Mar 17 14:58:36 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 472.42 Driver Version: 472.42 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| 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:2D:00.0 Off | N/A |
| N/A 0C P8 N/A / N/A | 64MiB / 2048MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+

如果上述驱动无问题,在Windows Terminal中新建Ubuntu标签页,然后输入如下命令:

1
nvidia-smi

会输入类似如下内容,表示Ubuntu中NVIDIA驱动正常。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Thu Mar 17 15:07:02 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.83 Driver Version: 472.42 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:2D:00.0 Off | N/A |
| N/A 39C P0 N/A / N/A | 64MiB / 2048MiB | ERR! Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+

值得注意的是,wsl里面nvidia-smi不能用,并没有具体进程的占用信息

检查WSL端显卡驱动

跟着nVidia官方文档来安装CUDA on WSL :: CUDA Toolkit Documentation (nvidia.com)

用户不得在WSL 2中安装任何NVIDIA GPU Linux驱动程序

Windows Terminal进入Ubuntu。把wsl2中安装的NVIDIA驱动卸载:

1
sudo /usr/bin/nvidia-uninstall

卸载过程一路都是yes。

nouveau禁用

可以使用下面命令查看,如果没有输出,代表nouveau已经禁用:

1
lsmod | grep nouveau

没有禁用nouveau的话,首先需要禁用nouveau,不然会碰到冲突的问题,导致无法安装nvidia显卡驱动。

禁用方法如下,已经禁用的直接跳转到检查环境(下一小节):

编辑文件/etc/modprobe.d/blacklist.conf

1
sudo vim /etc/modprobe.d/blacklist.conf

在文件最后部分插入以下两行内容

1
2
blacklist nouveau
options nouveau modeset=0

更新系统

1
sudo update-initramfs -u

之后需要重新启动

检查vulkan驱动,cuda驱动等

事实上,您不得在WSL端安装任何驱动,包括mesa-vulkan-driver以及其他mesa-*-driver,它们均由windows端的显卡驱动提供完整支持

vulkan将在未来的WSLG版本提供支持。Vulkan以及OpenCL的相关情况可以关注wsl-cuda-opengl-opencl-vulkan支持情况

cuda则直接被包含在了教新的Nvidia GPU 驱动 (Window)中

1
2
3
sudo apt remove mesa-vulkan-driver
# 同理,sudo apt remove mesa-*-driver

GPU使用情况分析–wsl里面nvidia-smi不能用

wsl里面nvidia-smi不能用,并没有具体进程的占用信息,这种情况很常见,

再次强调, 不要在wsl里面的ubuntu装显卡驱动,显卡驱动应该装在windows端

在上述进行测试时,在Ubuntu内使用watch -n 0.1 -d nvidia-smi命令进行GPU使用情况监测,发现GPU显存占用会增加,但是并没有具体进程的占用信息,同时GPU-Util显示为ERR!。具体情况如下图所示:

1647512736850156864.gif

你直接在win10里面看:

如果在Windows系统shell内使用nvidia-smi.exe进行监测,会显示Insufficient Permissions线程正在运行。

1
2
3
4
5
6
7
8

+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 4 C Insufficient Permissions N/A |
+-----------------------------------------------------------------------------+

Pasted%20image%2020220513005306.png

通过搜索,发现该问题是WSL 2目前存在的一个问题,所以读者可不必纠结于此问题。有关该问题的情况可以参考WSL 2.0 Windows 11 insider build GPU-Util ERR!

实时检测

1
nvidia-smi.exe -l 5

每5秒更新一次

ctrl + z退出,可以试试

修复libcuda.so.1 is not a symbolic link

修复libcuda-so-1-is-not-a-symbolic-link

参考、引用、致谢

MindSpore入门-基于Windows10系统WSL2安装GPU版本MindSpore_MindSpore_昇腾论坛_华为云论坛 (huaweicloud.com)

(24条消息) Linux安装CUDA的正确姿势_FlyWine的博客-CSDN博客_linux安装cuda

作者:小丁同学_99 https://www.bilibili.com/read/cv14608547 出处:bilibili