在 AMD APU 上使用 OpenCL,但在 X 服务器上使用独立 GPU

Use OpenCL on AMD APU but use discrete GPU for the X server

是否可以在 A10-7800 上启用 OpenCL 而无需将其用于 X 服务器?我有一个用于 GPGPU 编程的 Linux 框。我开发的 X 服务器和 运行 OpenCL & Cuda 程序都使用了独立的 GEForce 740 卡。我还希望在 APU 的集成 GPU 内核上选择 运行 OpenCL 代码。

到目前为止我读到的所有内容都暗示,如果我想将 APU 用于 OpenCL,我必须安装 Catalyst,据我所知,这意味着将它用于 X 服务器。这是真的?将 APU 用于我的 X 服务器并仅将 GEForce 用于 GPGPU 代码会有优势吗?

我维护着一个 Linux 服务器(OpenSUSE,但发行版应该无关紧要),其中包含 NVIDIA 和(独立的)AMD GPU。它是无头的,所以从技术上讲我不知道 X 服务器是否会产生额外的问题,但我不这么认为。您始终可以配置 xorg.conf 以完全使用您想要的驱动程序。或者就此而言:安装 Catalyst,但删除 X 服务器驱动程序文件本身,与 OpenCL 所需的 不同。

然而,我注意到混合供应商系统存在一个问题:AMD 的 OpenCL 驱动程序 (ICD) 将探索 libGL.so 库,我想是为了 OpenCL/OpenGL-interop .如果它找到任何 NVIDIA 提供的 libGL.so,它就会感到困惑并挂起 - 至少在我的机器上是这样。我 "solved" 通过删除所有 libGL.so(我在无头计算服务器上不需要它)来做到这一点,但这可能不是您可以接受的解决方案。也许你可以安排一些事情,让 AMD 提供的 libGL.so 优先,可能是最后安装 AMD 驱动程序。

我有一个类似的目标,所以我用 AMD APU(4 个常规内核 + 6 个 GPU)和 Nvidia 独立显卡构建了一个系统。很抱歉让它工作并不容易,所以我在 Ask Ubuntu 论坛上问了一个 question,没有得到任何答案,在硬件和软件设置方面进行了大量试验,终于有了发表了我自己对我的问题的回答。

我将在这里再次描述我的设置 - 谁知道,我在 Ask Ubuntu 上的自动回答问题会发生什么?

起初,我必须通过 BIOS 标志启用集成图形硬件。这个标志在我的主板(华硕A88X-PRO)上叫做IGFX Multi-Monitor

第二步是找到低级图形驱动程序和高级 OpenCL 实现的正确组合。 AMD 处理器的低级驱动程序称为 AMD Catalyst,文件名为 fglrx。我没有从 Ubuntu 软件中心安装此驱动程序 - 我使用的是直接从 AMD 网站下载的 15.302 版本。我必须为此驱动程序安装大量先决条件。最重要的发现是我必须在 fglrx 安装后 跳过 运行 aticonfig 命令——这个命令实际上配置了 X 服务器以使用这个图形输出驱动程序,我不想要那个。

然后我安装了 AMD SDK Ver 3.0(版本 130.136,早期版本不适用于我的 fglrx)- 它是 AMD 的 OpenCL 实现。 clinfo 命令现在报告 CPU 和 GPU 的内核数正确。

所以,我有一个混合 AMD 处理器,由 OpenCL 支持,具有所有图形输出,由带有 Nvidia 处理器的独立显卡支持。

祝你好运!