OpenCL SDK概述和硬件互操作性

时间:2013-02-24 08:36:00

标签: opencl gpu gpgpu

我对OpenCL开发的总体情况有点困惑,所以我只是将我当前的理解和问题列为清单。如果我错了,请纠正我。

  1. 我知道英特尔,AMD都有SDK(“平台”)(我想在Nvidia SDK中也有OpenCL支持吗?)

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

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

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

  5. 谢谢!

3 个答案:

答案 0 :(得分:3)

1)英特尔SDK为CPU和GPU设备提供OpenCL 1.2支持(例如i7,HD4000,Xeon Phi等),AMD SDK为CPU和GPU设备提供OpenCL 1.2支持(例如Opteron,HD5xxx,HD6xxx, HD7xxx等),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以获取可用平台列表并使用其中一个或全部。我将日常的英特尔OpenCL CPU设备与多个AMD OpenCL GPU设备并排使用。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

英特尔OpenCL SDK支持CPU的OpenCL 1.2,但仅支持英特尔HD的OpenCL 1.1。引用他们的网页“在英特尔®高清显卡上混用OpenCL 1.1的CPU上的OpenCL 1.2”。但是,英特尔HD的驱动程序看起来并不是很好。它崩溃了大多数运行在其他所有代码上的代码。

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

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