Intel、AMD和Khronos OpenCL之间有什么区别?我对OpenCL完全不了解,想要开始学习。我不知道哪一个更好地安装在我的操作系统上。
Intel、AMD和Khronos OpenCL之间有什么区别?我对OpenCL完全不了解,想要开始学习。我不知道哪一个更好地安装在我的操作系统上。
OpenCL是针对C和C++语言的扩展,可以在计算设备(CPU、GPU等)上并行化软件。
OpenCL由Khronos Group制定标准,并由硬件厂商Intel、AMD、nVidia等实现。因此,每个OpenCL实现都需要特定于供应商的OpenCL驱动程序,以启用使用供应商的硬件。
因此,如果您有一个基于英特尔的系统,请使用英特尔OpenCL,因为只有这样才能使用机器中的所有计算设备。如果您拥有AMD系统,则同样适用。另请注意,没有Khronos OpenCL实现。
当然,您可以拥有来自多个厂商的OpenCL启用设备的平台(例如Intel CPU + GPU和nVidia离散卡)。在这种情况下,OpenCL运行时包含一个通用层(动态加载库)。该层是一个接口,根据所选的OpenCL平台调用每个设备驱动程序提供的实现。
不用担心针对一个供应商进行编译而在另一个供应商上无法工作,OpenCL已经被精心设计以解决这个问题。针对任何版本进行编译,它都可以与相同或更新的任何其他版本配合使用,无论是谁制造的。
注意:AMD的OpenCL驱动程序将作为Intel CPU的OpenCL驱动程序运行。例如,如果您拥有AMD GPU和Intel CPU,并安装了Intel OpenCL驱动程序和AMD OpenCL驱动程序,则AMD驱动程序将报告可以提供GPU设备和CPU设备(您的CPU),Intel驱动程序将报告拥有CPU设备(也是您的CPU),很可能还有GPU设备(例如i7-3770上的GPU在Intel CPU芯片上,这将是HD4000)。如果您盲目地请求“所有可用CPU”,则会得到AMD驱动程序和Intel驱动程序都提供相同的CPU。在这种情况下,您的代码将无法很好地运行。sudo apt-get install ocl-icd-opencl-dev