Intel,AMD和Khronos OpenCL之间有什么区别。我是OpenCL的新手,并希望从它开始。我不知道在我的操作系统上安装哪一个更好。
答案 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设备(也是您的CPU),并且很可能也是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实现符合标准,则需要通过这些测试。