![WSL2:安装新内核时出现问题](https://linux22.com/image/210165/WSL2%EF%BC%9A%E5%AE%89%E8%A3%85%E6%96%B0%E5%86%85%E6%A0%B8%E6%97%B6%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
我会先说:我在 Linux 环境方面没有很多经验。
我正在尝试在运行 Ubuntu 的 WSL2 上安装 ROCm。我将在课程中使用 PyTorch,并且想使用 GPU 进行计算。 ROCm 安装正常,但是,我不断收到错误ROCk module is NOT loaded, possibly no GPU devices
。
我发现这帖子指出问题可能是 WSL 不允许您安装模块。链接到一条评论这里它展示了如何安装新内核。我按照说明进行操作,但运行时遇到错误make
。
错误是:
No rule to make target '/home/<USER>/lkm_example.o', needed by '/home/<USER>/lkm_example.mod'. Stop.
(<USER>
是我的用户名,我只是不想让它在这里出现)
通过Google,我发现了几个帖子说我需要安装linux-headers
.我尝试运行sudo apt-get install kernel-headers
,但这导致了错误:E: Unable to locate package kernel-headers
我该如何继续?
答案1
我发现这个帖子这表明问题可能是 WSL 不允许您安装模块。
嘿,这就是我的答案!记住:
我这样开头:
“虽然我没有任何 AMD GPU 系统可供尝试(我也不确定 ROCm 是否适用于 WSL2)……”。
它没有赞成票,没有被接受,也没有任何评论让我们知道它是否有帮助。
所以……不要相信它是可靠的!甚至可以随意投反对票!很难说我自己的答案,但回想起来,它可能是不是准确的。我将添加一个链接到这个答案但是,以便它重定向到最新信息。以下信息是否现在正确的要么不,我需要你帮我!
我将在课程中使用 PyTorch,并且想使用 GPU 进行计算。
好的,那是我要解决的问题,而不是如何构建具有 ROCm 支持的内核(因为我不再认为这会有帮助)。
目前,我仍然没有 AMD GPU 来直接测试这一点,但至少我现在已经在 WSL2 下的 nVideo 2070 上完成了一些 GPU 计算工作。
所以这是我的最新的思考,查看过去的问题、你的问题和其他一些信息:
WSL2 下可能不需要 ROCm。 WSL2 使用以下方式通过直通系统使 GPU 可供 Linux 使用:视窗(非 Linux)驱动程序。如果您查看
/usr/lib/wsl
,您会发现两个目录已安装到您的 WSL2 实例中 -../drivers
和../lib
。它们通过(也注入)添加到库缓存中/etc/ld.so.conf/ld.wsl.conf
。它是这些使您能够访问 GPU 的库和驱动程序。
当我去年看另一个问题时,我没有意识到ROCm是LinuxGPU 计算的等效库。如果它确实作为模块安装,那么它在 WSL2 下不太可能有用,因为它无法直接访问所需的 GPU。现在回想起来,以我当时所知道的知识,我应该能够弄清楚这一点。
所以呢做您需要在 AMD GPU 上的 WSL2 下使用 Pytorch 吗?再次,在这里猜测一下,但是......
这个文档似乎表明您需要 Windows 11。虽然我认为大多数 GPU 计算支持在 Windows 10 中可用,但这可能是需要 Windows 11 的一个领域。您没有提到您的 Windows 版本,所以我不确定这对你来说是否可能。
最新的 AMD 驱动程序视窗。去年左右的大部分事情都应该足够了。
合适的Python环境。微软推荐康达。至少我最终自己将 Docker 用于 TensorFlow。
依赖项是
libblas3 libomp5 liblapack3
进而
pip install pytorch-directml
老实说,应该就是这样。根据这个文档, AMD 支持带有 DirectML 的 PyTorch。
在 WSL2 下的 nVidia 上运行 TensorFlow 时,我不需要任何额外的本机驱动程序/模块。我做过必须/usr/lib/wsl/lib
向 Docker 提供目录,但这只是因为我需要为 TensorFlow 运行特定的旧 Python 版本,而最简单的方法是通过 Docker。