在aCPU上运行OpenCL代码有什么好处?

0x9*_*x90 7 c performance processor intel opencl

我正在学习OpenCL编程,并注意到一些奇怪的东西.

也就是说,当我在我的机器上列出所有支持OpenCL的设备(Macbook Pro)时,我得到以下列表:

  • Intel(R)Core(TM)i7-4850HQ CPU @ 2.30GHz
  • Iris Pro
  • GeForce GT 750M

第一个是我的CPU,第二个是英特尔的板载图形解决方案,第三个是我的专用显卡.

研究表明,英特尔已将其硬件OpenCL兼容,以便我可以利用板载图形单元的强大功能.那将是Iris Pro.

考虑到这一点,CPU与OpenCL兼容的目的是什么?仅仅为了方便,内核可以在CPU上运行,因为备份不应该找到其他卡,或者当运行代码作为OpenCL内核而不是常规(C,良好线程)程序时,是否存在任何速度优势中央处理器?

小智 9

有关基本信息,请参阅https://software.intel.com/sites/default/files/m/d/4/1/d/8/Writing_Optimal_OpenCL_28tm_29_Code_with_Intel_28R_29_OpenCL_SDK.pdf.

基本上,英特尔OpenCL编译器为某些类型的内核执行水平自动向量化.这意味着使用SSE4,您可以在单个核心中并行运行8个线程,类似于Nvidia GPU在单个32宽simd单元中运行32个线程.

这种方法有两个主要好处:如果在2年内它们将SSE矢量宽度增加到16,会发生什么?然后,当您在该CPU上运行时,您将立即获得16个线程的自动向量化.无需重新编译代码.第二个好处是,与在ASM或C中编写并使编译器生成高效代码相比,编写一个易于自动向量化的OpenCL内核要容易得多.