英特尔OpenCL Vs. Khronos OpenCL

时间:2014-11-15 12:25:53

标签: opencl

Intel,AMD和Khronos OpenCL之间有什么区别。我是OpenCL的新手,并希望从它开始。我不知道在我的操作系统上安装哪一个更好。

3 个答案:

答案 0 :(得分:9)

OpenCL是C和C ++语言的“扩展”,可以在计算设备上实现软件的并行化:CPU,GPU等。

OpenCL由标准(由Khronos Group 创建)和由硬件供应商Intel,AMD,nVidia等实施定义。因此每个OpenCL实现都需要特定于供应商的OpenCL驱动程序,以便能够使用供应商的硬件。

总而言之,如果您使用的是基于Intel的系统,请使用Intel OpenCL ,因为只有这样您才能使用计算机中的所有计算设备。如果你有一个AMD系统,也是如此。另外,请注意,没有Khronos OpenCL实现。

当然,您可以拥有一个平台,其中包含来自多个供应商的OpenCL设备(例如Intel CPU + GPU和nVidia分立卡)。在这种情况下,OpenCL运行时包含一个通用层(动态加载库)。该层是一个接口,它根据所选的OpenCL平台调用每个设备驱动程序中提供的实现。

答案 1 :(得分:1)

OpenCL是Kronos定义的标准。他们必须给你的编译器distribute header files。他们不会分发二进制文件来链接。为此,您必须获得一个ICD(可安装的客户端驱动程序),在Windows上,这是一个DLL文件的形式。你可以通过安装一个或多个......来获得它。

不要担心针对一个供应商进行编译而不是另一个供应商,OpenCL经过精心设计以解决这个问题。根据您拥有的任何版本进行编译,无论是谁,都可以使用相同或更新的任何其他版本。

要注意,AMD OpenCL驱动程序将作为Intel CPU的OpenCL驱动程序运行。例如,如果您有AMD GPU和Intel CPU,并安装了Intel OpenCL驱动程序 AMD OpenCL驱动程序,则AMD驱动程序将报告它可以提供GPU设备和CPU设备(您的CPU)和Intel驱动程序将报告具有CPU设备(也是您的C​​PU),并且很可能也是GPU设备(Intel CPU芯片上的GPU,例如在i7-3770上,这将是一个HD4000)。如果你盲目地询问OpenCL"所有CPU可用"您将获得AMD驱动程序和英特尔驱动程序,为您提供相同的CPU 。在这种情况下,您的代码将无法正常运行。

在Windows上,您需要自己download the header files,然后从DLL(MSVC)创建一个库,或直接链接到DLL(Mingw& Clang默认行为)。

在Linux上,您的软件包管理器可能会有一个库链接,请查阅您的发行版文档。在Ubuntu和Debian上,这个命令会起作用......

sudo apt-get install ocl-icd-opencl-dev

在Mac上,无需安装,尝试安装某些内容可能会损坏您的系统。只需安装Xcode,然后使用框架" OpenCL"。

还有其他平台,例如Android。一些FPGA供应商提供OpenCL库。请参阅供应商文档。

答案 2 :(得分:0)

Khronos定义了OpenCL标准。每个供应商/开源都将实施该标准。

Khronos定义了一组一致性测试,如果供应商声称他的opencl实现符合标准,则需要通过这些测试。