在Ubuntu 20.04上安装ROCm失败。

5
我想在Ubuntu上为深度学习设置AMD Radeon。 我工作的主要库是keras和pytorch。我严格遵循了ROCM安装指南这里,但在第三步使用命令sudo apt install rocm-dkms时失败。 错误消息如下所示。
Setting up dkms (2.8.1-5ubuntu1) ...
Setting up hip-rocclr (4.0.20496.5685.40000-23) ...
Setting up rock-dkms (1:4.0-23) ...
Loading new amdgpu-4.0-23 DKMS files...
Building for 5.8.0-41-generic
Building for architecture x86_64
Building initial module for 5.8.0-41-generic
Error! Bad return status for module build on kernel: 5.8.0-41-generic (x86_64)
Consult /var/lib/dkms/amdgpu/4.0-23/build/make.log for more information.
dpkg: error processing package rock-dkms (--configure):
 installed rock-dkms package post-installation script subprocess returned error 
exit status 10
Setting up g++-9 (9.3.0-17ubuntu1~20.04) ...
Setting up g++ (4:9.3.0-1ubuntu2) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mo
de
Setting up build-essential (12.8ubuntu1.1) ...
dpkg: dependency problems prevent configuration of rocm-dkms:
 rocm-dkms depends on rock-dkms; however:
  Package rock-dkms is not configured yet.

dpkg: error processing package rocm-dkms (--configure):
 dependency problems - leaving unconfigured
Setting up gcc-multilib (4:9.3.0-1ubuntu2) ...
No apport report written because the error message indicates its a followup erro
r from a previous failure.
                          Setting up g++-9-multilib (9.3.0-17ubuntu1~20.04) ...
Setting up g++-multilib (4:9.3.0-1ubuntu2) ...
Processing triggers for sgml-base (1.29.1) ...
Setting up x11proto-dev (2019.2-1ubuntu1) ...
Setting up libxau-dev:amd64 (1:1.0.9-0ubuntu1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
Processing triggers for man-db (2.9.1-1) ...
Setting up libxdmcp-dev:amd64 (1:1.1.3-0ubuntu1) ...
Setting up x11proto-core-dev (2019.2-1ubuntu1) ...
Setting up libxcb1-dev:amd64 (1.14-2) ...
Setting up libx11-dev:amd64 (2:1.6.9-2ubuntu1.1) ...
Setting up libglx-dev:amd64 (1.3.2-1~ubuntu0.20.04.1) ...
Setting up libgl-dev:amd64 (1.3.2-1~ubuntu0.20.04.1) ...
Setting up mesa-common-dev:amd64 (20.2.6-0ubuntu0.20.04.1) ...
Setting up rocm-opencl-dev (3.6Beta-17-g875c1f8-rocm-rel-4.0-23) ...
Settin XT g up rocm-clang-ocl (0.5.0.64-rocm-rel-4.0-23-50fb51a) ...
Setting up rocm-utils (4.0.0.40000-23) ...
Setting up rocm-dev (4.0.0.40000-23) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
Errors were encountered while processing:
 rock-dkms
 rocm-dkms
E: Sub-process /usr/bin/dpkg returned an error code (1)

我的内核版本是5.8.0-41-generic。我的显卡是技嘉Radeon RX6900 XT。我的CPU是AMD Ryzen 9 3900 XT。我尝试了以前帖子中建议的几个解决方案,但它们没有解决我的问题。请问你有什么建议来解决这个问题。


1
我也遇到了同样的问题。我注意到指令警告说Ubuntu 20可能与rock-dkms不兼容",你可能希望将其排除在外"。但是我不确定该怎么做。 - J Bernardi
2个回答

8

我也遇到了同样的问题。唯一解决方法是回滚到5.6.0-1042-oem内核。AMD驱动似乎不支持此内核之后的任何内核。

编辑:这也是安装amdgpupro驱动程序时不出问题的方法。

警告:我在事后写下了所有这些内容,可能错过了某个步骤或中途出了什么差错。请非常小心,特别是在尝试删除内核和工作于您的启动目录时。如果您不放心会损坏系统,请始终将grub的默认选择设为安全得多的方法,而不是删除initramfs。

以下是我如何使RocM工作的方法

sudo apt install linux-image-5.6.0-1042-oem linux-headers-5.6.0-1042-oem && reboot

确保通过在grub中访问Ubuntu高级选项来启动5.6内核。

sudo apt remove linux-image-5.8.0-41-generic linux-headers-5.8.0-41-generic && sudo apt autoremove && reboot

再次,您需要通过高级选项重新启动为5.6版本。 (在BIOS完成加载后按住Shift键,以获取Ubuntu高级选项菜单。)在您回到系统后,建议将标题和图像设置为保留状态,因为内核更新很可能会破坏RocM。

sudo apt-mark hold linux-image-generic linux-headers-generic

现在我们要尝试刷新5.8内核。首先清除临时文件。
sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*

现在列出所有已安装的内核。

dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+'

尝试移除5.8内核。对于任何高于我们安装的5.6内核,都需要这样做。

sudo update-initramfs -d -k 5.8.0-41-generic

现在,initramfs、Systemmap和config仍然存在于启动目录中,因此我们需要清除它们,以便再次使grub正常工作。
cd /boot/
sudo rm vmlinuz-5.8.0-41-generic System.map-5.8.0-41-generic config-5.8.0-41-generic

现在你应该已经准备好更新 grub 了。

sudo update-grub && reboot

现在当您重新加载后,您应该能够安装RocM。
sudo apt install rocm-dkms

感谢您的建议。我按照您的步骤进行操作,收到了安装已完成的消息。然而,运行命令/opt/rocm/bin/rocminfo时出现以下错误,但运行命令/opt/rocm/opencl/bin/clinfo是可以的。 ROCk模块未加载,可能没有GPU设备。 无法打开/dev/kfd读写:没有这样的文件或目录 ratchainant是video组的成员 hsa api调用失败:/src/rocminfo/rocminfo.cc:1142 调用返回HSA_STATUS_ERROR_OUT_OF_RESOURCES:运行时无法分配必要的资源.... 请问如何解决这个问题? - Ratchainant Thammasudjarit

2
根据此链接中的官方说明(https://github.com/RadeonOpenCompute/ROCm#rocm-installation-updates),AMD ROCm平台旨在支持Ubuntu 20.04.1(5.4和5.6-oem)和18.04.5(Kernel 5.4)。因此,不支持内核版本5.8。但是,可以选择降级,而不是着急降级,您可以简单地启动旧版本的内核。请尝试以下步骤:1.重新启动计算机,2.等待grub菜单打开(如何打开grub菜单:链接),3.选择“高级选项 for ubuntu”,4.从显示的列表中选择备用内核。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接