当我按照官方指南安装 AMDGPU-Pro 驱动程序时(我尝试了 17.30 和最新的 17.40 版本),一切似乎都正常,但clinfo
仍然返回
Number of platforms 0
有人有什么想法吗?
答案1
我也花了一整天的时间在这上面 - 我找不到任何工作说明,所以这里是我在 Ubuntu 16.04 系统上为没有图形桌面的 AMD Radeon RX 580 想出的办法,通过 SSH 安装:
假设一个全新安装的 Ubuntu 系统
从以下位置获取 AMD APP SDK这里- 下载、解压然后运行
sudo
安装脚本。从以下网址下载最新的 Linux 驱动程序(撰写本文时为 17.50)这里,
.xz
使用 并将文件tar Jxvf <filename>
提取cd
到提取文件后创建的目录中.xz
。现在运行安装程序
sudo
:sudo ./amdgpu-pro-install --opencl=legacy -y
重启
再次运行
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