0

在谈到 OpenCL 开发时,我对整体情况有点困惑,所以我将我目前的理解和问题列成一个列表。如果我错了,请纠正我。

  1. 我知道英特尔、AMD 有 SDK(“平台”)(我猜 Nvidia SDK 中也有 OpenCL 支持?)

  2. 是否有其他供应商的 SDK?

  3. 一个供应商的 SDK 会支持另一个供应商的设备吗?例如带有 AMD sdk 的 Nvidia 设备?我可以使用 AMD SDK 在我的 Intel CPU 上运行程序。

  4. 这是一次安装多个平台并在运行时处理它们的方法吗?

谢谢!

4

3 回答 3

3

1) Intel SDK 为 CPU 和 GPU 设备(例如 i7、HD4000、Xeon Phi 等)提供 OpenCL 1.2 支持,AMD SDK 为 CPU 和 GPU 设备(例如 Opteron、HD5xxx、HD6xxx、HD7xxx 等)提供 OpenCL 1.2 支持.),NVIDIA SDK 仅为 GPU 提供 OpenCL 1.1 支持(例如 GTX 2xx、GTX 4xx、GTX 5xx、Tesla 等)。

2) 是的,来自 Apple、ARM 等。

3) 是的,感谢 OpenCL ICD,您可以在 NVIDIA SDK 上编译可执行文件并在 AMD 硬件上运行。但是,您必须小心使用 OpenCL 版本,使用 OpenCL 1.2 SDK 编译并在 1.1 上运行可能会出现一些问题。平台。

4) 是的,您可以在运行时查询 OpenCL 以获取可用平台列表并使用其中一个或全部。我将日常使用的 Intel OpenCL CPU 设备与多个 AMD OpenCL GPU 设备并排使用。

于 2013-02-24T16:50:02.950 回答
2

这是How to use 2 OpenCL runtimes的副本,已回答。简短的回答:SDK 只是为您提供标题。安装的驱动程序提供平台和设备。您可以使用任何已安装的。

于 2013-02-24T16:43:13.007 回答
0

Intel OpenCL SDK 支持用于 CPU 的 OpenCL 1.2,但仅支持用于 Intel HD 的 OpenCL 1.1。引用他们的网页“OpenCL 1.2 on CPU with OpenCL 1.1 on Intel® HD Graphics”。但是,Intel HD 的驱动程序似乎不是很好。它在运行在其他所有东西上的大多数代码上崩溃。

Nvidia SDK 不包含 C++ 绑定文件 cl.hpp。您可以从另一个 SDK 复制它或从 Khronos Group OpenCL 站点获取它。

我在使用 AMD SDK 的非 AMD 设备上运行 OpenCL 时遇到问题,因此我改用 Intel SDK,它适用于 AMD、Intel 和 Nvidia。但是,1.1 C++ 绑定和 1.2 C++ 绑定不是 100% 兼容的。如果您希望您的代码同时在 Nvidia 和 AMD GPUS 上运行,请仅使用 OpenCL 1.1 并定义:#define CL_USE_DEPRECATED_OPENCL_1_1_APIS

于 2013-03-09T19:29:47.120 回答