AMD Radeon RX 6800 XT 在 Debian/WSL2 中不可见

AMD Radeon RX 6800 XT 在 Debian/WSL2 中不可见

我有一块 6800 XT GPU,运行在 Windows 10 21H2(OS Build 19044.1889)上,并安装了 WSL2 Debian(内核版本5.10.102.1-microsoft-standard-WSL2)。图形驱动程序(Adrenaline 22.5.2)安装在 Windows 系统上,运行正常:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS C:\Users\Quant> wmic path win32_VideoController get name
Name
AMD Radeon RX 6800 XT

但是,当我打开 WSL2 终端并运行lspciglxinfo我希望看到有关 GPU 的信息时,我没有看到:

DESKTOP-NHBC022@arman: ~ $ lspci
831e:00:00.0 3D controller: Microsoft Corporation Device 008e
DESKTOP-NHBC022@arman: ~ $ glxinfo
Error: unable to open display

我尝试过的事情:

  • 将内核更新至 5.10.x
  • 检查是否/dev/dxg存在(确实存在)
  • sudo apt-get install libegl-mesa0(我有版本18.3.6-2+deb10u1

我尝试阅读本教程;https://docs.microsoft.com/en-us/windows/wsl/tutorials/gpu-compute,但它似乎假设你的 GPU 已经在 WSL 中可用,而我的不是。

我如何让 Debian 看到/使用 GPU?请注意,我对 GUI 应用程序不感兴趣,据我所知,这是 Windows 11 的功能。我只希望 GPU 可以在 Debian 中用于 Tensorflow。

更新

我已经卸载了 Debian,并从头安装了 Ubuntu。同样的问题:

quant@DESKTOP-NHBC022:~$ uname -r
5.10.102.1-microsoft-standard-WSL2
quant@DESKTOP-NHBC022:~$ lspci
5254:00:00.0 3D controller: Microsoft Corporation Device 008e

答案1

不幸的是,我所有剩余的 Windows 10 系统都配备了较旧的 GPU,不支持 WSL GPU Compute,所以我无法确认这一点,但是......

我强烈怀疑你已经拥有了你需要的一切。

检查是否/dev/dxg存在(确实存在)

这实际上是一个很好的指标,表明 GPU Compute 已经准备就绪。

当我……运行时lspciglxinfo我期望看到有关 GPU 的信息,但我没有

  • 来自手册页: glxinfo程序显示有关在给定 X 显示器上运行的 OpenGL 和 GLX 实现的信息

    由于您无法在 Windows 10 下运行 X,因此glxinfo失败也就不足为奇了。即使在 Windows 11 上,如果我取消DISPLAY设置变量,glxinfo也会显示相同的消息。

    对我来说这很正常。

  • lspci对我来说,Windows 11 上返回的内容相同。这也是意料之中的。实际设备是由 WSL 创建的虚拟设备,它将虚拟设备的基本功能映射到物理 GPU。

    我可以确认,即使有了3D controller: Microsoft Corporation Device 008e基本的 TensorFlow/DirectML 测试这里工作正常。

因此我建议你现在尝试一下 TensorFlow/DirectML。如果你在使用,我建议在 Stack Overflow 上提出一个问题(因为它在 SU 上与主题无关)。

如果您遇到问题,我会尽力在 Stack Overflow 上提供帮助,但我不保证我能帮助您解决此问题。我基本上是 TensorFlow 新手,但我对 WSL 有相当多的经验。

附注——这是我在 WSL 上运行 TensorFlow 的方法:

  • 我使用的是 Ubuntu 22.04,其中默认的 Python 是基于 3.10 的。即使在 Debian Bullseye 上,据我所知,软件包版本也是 3.9,所以这实际上是太新了for tensorflow-directml,只能在 3.7 及以下版本上运行。

  • 出于这个原因,并且由于我已经安装了 Docker Desktop,我决定在基于 Debian 的 Python 3.7 Docker 映像中运行。

  • --gpus allGPU 需要通过或构造共享到 Docker 容器中--device

  • 最关键的是,WSL 中的 GPU 计算功能在启动时被“注入”到 WSL 实例中。该目录/usr/lib/wsl/lib是作为“覆盖”挂载创建的。但它没有当然,它存在于 Docker 容器中。所以我们也需要共享它,并进行LD_LIBRARY_PATH适当的设置。礼貌这个博客显然是几天前的事了。我还没有翻译它,但至少命令行是英文的 ;-)。

  • 最后,protobuf安装的软件包tensorflow-directml太新,需要按这个答案

  • 我正在使用 nVidia GPU,但对于 AMD 来说,过程应该相同。

  • 我也使用 5.10.102.1 内核,但在 Windows 11 上使用 WSL Preview 版本 0.64.0。

考虑到所有这些...

docker pull python:3.7
docker run --gpus all --mount type=bind,src=/usr/lib/wsl,dst=/usr/lib/wsl -e LD_LIBRARY_PATH=/usr/lib/wsl/lib -it --rm python:3.7 bash
pip install protobuf==3.20.*
pip install tensorflow-directml
python

在这里进行快速测试然后在那个 Python 会话中工作。

相关内容