OpenCL程序分为两个部份,一部份是内核代码,负责具体算法。另一部份是主程序负责初始化OpenCL和准备数据。主程序加载内核代码,并按照即定方法进行运算。 内核代码可以写在主程序里面,也可以写在另一个文本文件里,有点像DX中的HLSL和OPENGL里的GLSL。哈哈,明白意思就行了。我们用第一种方法,把代码跟源程序分开写。

调用OpenCL大至分7个步骤

  1. 初始化OpenCL

  2. 创建上下文设备

  3. 创建命令队列

  4. 创建数据缓冲区

  5. 将数据上传到缓冲区

  6. 加载编译代码,创建内核调用函数

  7. 设置参数,执行内核

  8. 读回计算结果。

下面我们通过一个向量相加的程序来了解OpenCL 。有A,B两个四维向量,相加后值存在C向量里。OpenCL会根据用户提供的维数,将向量分解成多个任务分发给多个CPU计算。简单来说就是向量每个维同时相加。 源码分两部份

(一)vecadd.cl核心代码。

如何用codeblocks运行出图形(用Codeblocks进行OpenCL编程4)(1)

如何用codeblocks运行出图形(用Codeblocks进行OpenCL编程4)(2)

如何用codeblocks运行出图形(用Codeblocks进行OpenCL编程4)(3)

如何用codeblocks运行出图形(用Codeblocks进行OpenCL编程4)(4)

如何用codeblocks运行出图形(用Codeblocks进行OpenCL编程4)(5)

运行结果:

[1,2,3,4] [5,6,7,8] = [6,8,10,12]

,