0

我有一台运行 Windows 7 的具有 Intel CPU 和 NVIDIA GPU 的计算机。我有一个用 NVIDIA CUDA 编写的软件模块,以及另一个用 OpenCL 编写的模块。我想在 CPU 上运行 OpenCL 模块,使用 OpenCL 的 Intel 实现,同时使用 CUDA 模块。

在我的系统中,我首先安装了 CUDA SDK,然后是 Intel 的 SDK。

I've compiled the program in Visual Studio 2012, instructing the linker to use the Intel's library (and I compiled against the OpenCL headers provided by intel).

However when I run a simple program to query the hardware I'm only able to see the NVIDIA card.

I've tried modifying the Windows Registry, and the PATH variable, with no look. When I query the dependencies with "Dependecy Walker" I see that the program depends on a dll located in c:\windows\system32, which is not the folder where the Intel dll is. I've tried deleting this dll but I still see this dependency, and I'm only able to access the GPU.

Any idea about what could be happening?

4

2 回答 2

2

在 Windows 上,“OpenCL.dll”由 Khronos 提供并由 AMD、NVIDIA 和 Intel 重新分发的 ICD。

实际的驱动程序由注册表引用,ICD 将它们全部枚举。

当您查询 OpenCL 平台时,您会看到每个已安装的驱动程序(AMD、NVIDIA、Intel)都有一个。

在每个平台中都会有设备(或设备),例如,在 NVIDIA 平台中您会找到您的 NVIDIA GPU,而在 Intel 平台下您会找到您的 CPU。

不要替换 OpenCL.dll

运行 clinfo 或 GPU-Z 以查看它看到的 OpenCL 平台和设备。

重新安装 Intel CPU 驱动程序(2 天前刚刚发布了一个新驱动程序)以确保安装了他们的驱动程序。

注意:您的 CPU 需要 SSE 4.2 才能使 Intel CPU 驱动程序正常工作。

于 2013-10-16T18:43:56.207 回答
1

你可以试试Installable Client Driver (ICD) Loader。但是,如果它适用于 Windows,我没有经验。

或者:

由于您不想将 GPU 与 OpenCL 一起使用,您可以简单地将 Intel 复制OpenCL.dll到您的工作目录中。.dll加载 s时首先访问工作目录。因此,即使将 NvidiaOpenCL.dll安装到您的windows/system32目录中,也会首先找到并加载 Intel 库。可能有更好的解决方案可能会按需加载 dll,如此处所述从 DLL 动态加载函数,但作为一种快速解决方案,它应该可以工作。

于 2013-10-15T12:51:13.173 回答