在aCPU上运行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,线程良好)程序时,是否有任何速度优势中央处理器?

解决方法

有关基本信息,请参阅 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内核要容易得多.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...