如何让 OpenCl 看到 intel 和 nvidia 设备?

Posted

技术标签:

【中文标题】如何让 OpenCl 看到 intel 和 nvidia 设备?【英文标题】:How to let OpenCl see intel and nvidia devices? 【发布时间】:2013-11-05 07:38:01 【问题描述】:

我想知道如何让 OpenCl “看到”我的 K20。至强和至强融核同时使用?

尤其是我对这里使用两个库(来自 NVidia 和 Intel)感到困惑。

如果可能的话,该怎么做?

【问题讨论】:

【参考方案1】:

OpenCL 可安装客户端驱动程序 (ICD) 会为您解决这个问题。无论您安装了谁的实现,它都是相同的,并将所有实现公开为单独的 OpenCL“平台”。

当您调用 clGetPlatformIDs 时,它会告诉您安装了多少个平台。例如,AMD 可能有一个,NVIDIA 一个,Intel 一个。

然后在每个平台内调用 clGetDeviceIDs,它将返回该平台内的设备数量。在您的 NVIDIA 平台上,您会找到您的 K20,在您的 Intel 平台上,您会找到您的 Xeon CPU 和 Xeon Phi 协处理器。

如果您构建或下载 clInfo 实用程序,您会看到所有已安装平台和设备以及每个平台和设备的功能的良好转储。

【讨论】:

谢谢,我已经为自己编写了这样的程序。关键是在 OpenCl 能够看到我的所有平台之前,并且由于我更新了 Intel 编译器,nvidia 不再出现。 然后重新安装NVIDIA驱动。听起来 Phi 驱动程序可能已经覆盖了 ICD 或者(恐怖)不使用 ICD。 更新任何平台的驱动程序都不会导致此类问题,因此请将此错误报告给英特尔。【参考方案2】:

问题解决了。 查看关键目录:

/etc/OpenCL/vendors/*.icd 

我注意到,对于 Nvidia,所使用的库是一个链接,该链接在不同的地方重复,并指向两个不同的版本。 我只是将前一个替换为最近安装的那个,我最近安装的那个,我们开始吧。 我猜 Opencl 不知道该使用哪一个。 这就像两个nividia版本之间的安装位置发生了变化。 当我应该在重新安装之前将其删除时,这实际上是不正确的。 谢谢大家的地狱。

【讨论】:

我一直在寻找解决这个问题的方法,但我对你的“谢谢大家的地狱”有点笑了。 =)。反正。感谢分享此解决方案

以上是关于如何让 OpenCl 看到 intel 和 nvidia 设备?的主要内容,如果未能解决你的问题,请参考以下文章

一台机器上的 OpenCL Nvidia 和 Intel 平台

OpenCL 同时用于 Intel CPU 和 Nvidia GPU

OpenCL设计优化(基于Intel FPGA SDK for OpenCL)

为啥相同的 OpenCL 代码从 Intel Xeon CPU 和 NVIDIA GTX 1080 Ti GPU 具有不同的输出?

在 Linux 中的多个平台上启用 OpenCL?如何处理 ICD 文件?

OpenCL:GPU 上的单个计算设备?