OpenCL程序分为两个部份,一部份是内核代码,负责具体算法。另一部份是主程序负责初始化OpenCL和准备数据。主程序加载内核代码,并按照即定方法进行运算。 内核代码可以写在主程序里面,也可以写在另一个文本文件里,有点像DX中的HLSL和OPENGL里的GLSL。哈哈,明白意思就行了。我们用第一种方法,把代码跟源程序分开写。
调用OpenCL大至分7个步骤
初始化OpenCL
创建上下文设备
创建命令队列
创建数据缓冲区
将数据上传到缓冲区
加载编译代码,创建内核调用函数
设置参数,执行内核
读回计算结果。
下面我们通过一个向量相加的程序来了解OpenCL 。有A,B两个四维向量,相加后值存在C向量里。OpenCL会根据用户提供的维数,将向量分解成多个任务分发给多个CPU计算。简单来说就是向量每个维同时相加。 源码分两部份
(一)vecadd.cl核心代码。
运行结果:
[1,2,3,4] [5,6,7,8] = [6,8,10,12]
,