如何让 Radeon RX 550 在 Ubuntu 16.04 上与 OpenCL 协同工作?

如何让 Radeon RX 550 在 Ubuntu 16.04 上与 OpenCL 协同工作?

当我按照官方指南安装 AMDGPU-Pro 驱动程序时(我尝试了 17.30 和最新的 17.40 版本),一切似乎都正常,但clinfo仍然返回

Number of platforms 0

有人有什么想法吗?

答案1

我也花了一整天的时间在这上面 - 我找不到任何工作说明,所以这里是我在 Ubuntu 16.04 系统上为没有图形桌面的 AMD Radeon RX 580 想出的办法,通过 SSH 安装:

假设一个全新安装的 Ubuntu 系统

  1. 从以下位置获取 AMD APP SDK这里- 下载、解压然后运行sudo安装脚本。

  2. 从以下网址下载最新的 Linux 驱动程序(撰写本文时为 17.50)这里.xz使用 并将文件tar Jxvf <filename>提取cd到提取文件后创建的目录中.xz

  3. 现在运行安装程序sudo

    sudo ./amdgpu-pro-install --opencl=legacy -y
    
  4. 重启

  5. 再次运行clinfo,你会看到现在有了 OpenCL1.2支持:

    $ clinfo|grep OpenCL
    
    Platform Version:               OpenCL 2.1 AMD-APP (2527.3)
    Execute OpenCL kernels:         Yes
    Device OpenCL C version:        OpenCL C 1.2
    Version:                        OpenCL 1.2 AMD-APP (2527.3)
    

其原因在于指定了通常未安装的--legacy拉手。opencl-amdgpu-pro-icd

我认为这是因为最新的驱动程序想要使用 ROCm 来做一些事情: https://rocm.github.io/ROCmInstall.html

在我自己的设备上,ROCm 无法使用,因为我有带转接器的 PCI-e 1x 插槽和一个基本的 Pentium CPU(而不是 i7)。您可以检查 ROCm 是否已禁用,如下所示:

$ dmesg |grep atomic
[4.885958] kfd kfd: skipped device 1002:67df, PCI rejects atomics

所以我想这就是为什么我必须这么做遗产让 OpenCL 正常工作。

我不确定 OpenCL 1.2、OpenCL 2.0 和 ROCm 的优缺点是什么,或者 ROCm 驱动程序是否在外部显示为 OpenCL 2.0 - 如果有更有见地的人可以发表评论那就太好了。

答案2

由于我的内核导致构建 DKMS 模块时出现问题,因此 OpenCL 失败了。

将我的内核升级到以下版本后,clinfo 报告 Ubuntu 16.04.4 LTS 支持 OpenCL。

http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15.11/

Linux 头文件

Linux 标头-4.15.11-041511-generic_4.15.11-041511.201803190530_amd64.deb

Linux 映像-4.15.11-041511-generic_4.15.11-041511.201803190530_amd64.deb

clinfo|grep OpenCL
  Platform Version          OpenCL 2.0 AMD-APP (2482.3)
  Device Version            OpenCL 1.2 AMD-APP (2482.3)
  Device OpenCL C Version   OpenCL C 1.2 
    Run OpenCL kernels      Yes

相关内容