OpenCL:内核代码? 我正在研究C++中的ADAS算法的优化。

OpenCL:内核代码? 我正在研究C++中的ADAS算法的优化。,opencl,Opencl,我想用OpenCL技术优化这个算法 我已经阅读了OpenCL的一些基本文档 我知道内核代码是用C编写的,它正在进行优化 但我想知道内核内部是如何将工作分解成不同的工作项的 单语句对循环任务的作用如何 请在OpenCL上与我分享您的知识 Tr, Ashwin首先,C代码没有进行优化。并行性是。OpenCL的优化只适用于能够大量利用并行性的算法。如果您像使用常规C一样使用OpenCL,则可能会减慢算法的速度。这是因为在主机和设备之间移动数据需要很多时间 其次,内核没有将工作拆分为不同的工作项。相反,

我想用OpenCL技术优化这个算法

我已经阅读了OpenCL的一些基本文档

我知道内核代码是用C编写的,它正在进行优化

但我想知道内核内部是如何将工作分解成不同的工作项的

单语句对循环任务的作用如何

请在OpenCL上与我分享您的知识

Tr,

Ashwin

首先,C代码没有进行优化。并行性是。OpenCL的优化只适用于能够大量利用并行性的算法。如果您像使用常规C一样使用OpenCL,则可能会减慢算法的速度。这是因为在主机和设备之间移动数据需要很多时间

其次,内核没有将工作拆分为不同的工作项。相反,程序员通过启动多个内核来并行运行相同的内核代码来拆分它。您可以通过设置
clEnqueueNDRangeKernel
global\u work\u size
来设置要启动多少内核

如果您有一个for循环,其中迭代互不依赖,那么使用OpenCL进行优化可能是一个很好的部分。如果在循环中有相当多的计算,但没有太多的数据进出,这也是很好的。在这种情况下,您将循环的内部部分放入OpenCL内核,并以与for循环的总循环计数相等的全局工作大小启动它