【发布时间】: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,我会尝试安装它。