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

Posted

技术标签:

【中文标题】一台机器上的 OpenCL Nvidia 和 Intel 平台【英文标题】:OpenCL Nvidia and Intel platforms on one machine 【发布时间】:2014-07-02 01:42:02 【问题描述】:

我正在使用具有 CPU Intel Xeon (E5-2620)、Intel MIC (5110P) 和 GPU Nvidia K20m 的服务器。 我的 OpenCL 代码能够看到每个平台(Nvidia 和 Intel)的每个设备。 出于某种原因,我现在只能看到 Intel 设备。 我想不通的是我使用 Nvidia OpenCL 库编译我的代码。 /etc/OpenCL/vendors/nvidia.icd 文件内容正确。 在我的代码中,我明确指定了 OpenCL 的 Nvidia 库。 看来我们的管理员重新安装或更新了驱动程序,从那以后它就不再起作用了。

我也尝试了测试代码 clInfo.c 并遇到了同样的问题。

这是我的构建方式:

gcc -w -lOpenCL clInfo.c

输出如下所示:

./a.out: /usr/lib64/nvidia/libOpenCL.so.1: no version information available (required by ./a.out)
Found 1 platform(s).
platform[0xa69cc0]: profile: FULL_PROFILE
platform[0xa69cc0]: version: OpenCL 1.2 LINUX
platform[0xa69cc0]: name: Intel(R) OpenCL
platform[0xa69cc0]: vendor: Intel(R) Corporation
... 

有人可以解释一下吗? 谢谢。

【问题讨论】:

您如何在clInfo.c 中扫描平台?您的配置发生了什么变化,导致它自发停止工作? 它应该可以通过 ICD 机制工作,并且你让它工作过一次。某些驱动程序安装可能会在 ICD 上被踩踏。尝试安装缺少的系统驱动程序,看看它是否修补了 ICD 表。 @Tom 我使用 clGetPlatformIDs 和 clGetDeviceIDs。我不知道到底发生了什么,管理员重新安装了我猜的驱动程序。由于他现在不在,我必须自己考虑一下。 @Dithermaster 谢谢,如何检查 ICD 的状态。您的意思是重新安装 Nvidia 驱动程序? @Eric 对不起,我不知道 ICD 表在 Linux 下是如何工作的。在 Windows 下,条目存储在注册表中。由于缺少 NVIDIA,我会尝试安装它。 【参考方案1】:

实际上,我卸载了驱动,发现有一些冲突。 然后我安装了最新版本,现在可以正常使用了。 感谢大家的帮助。

【讨论】:

Arch linux 上同样的问题。我安装了 CUDA 和 OpenCL-nvidia。 pacman -R cuda,现在一切正常。

以上是关于一台机器上的 OpenCL Nvidia 和 Intel 平台的主要内容,如果未能解决你的问题,请参考以下文章

使用 Visual Studio 2010 在 Nvidia GEFORCE 上的 OpenCL 代码

Nvidia Tesla 上的 OpenCL:未找到任何平台

Nvidia GEForce 上的 OpenCL 示例程序问题

对 nvidia GPU 上的计算单元和预期内核的混淆

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

NVIDIA OpenCL 设备版本