1.内核编程简介
内核函数与普通C/C++函数的区别:
1)每个内核函数的声明都是以_kernel开头的
2)每个内核函数的返回值必须是void
3)有些平台拒绝编译那些不带参数的内核函数
向量和数组的区别:
1)某种特定类型的向量只能装特定个数的元素。
2)对向量中的元素操作时是对它们同时进行的,对他们操作时是一个原子操作。
3)向量的初始化其元素必须放在圆括号内,而不是花括号内。而且须要进行类型转换。
4)访问向量元素的形式主要有3种:数字(v.0-F),字母(v.x,y,z,w)和后缀形式(v.hi,lo,odd和even)
2.OpenCL的内存模型
说明:
1)Work-item是最小的计算单元,每一个Work-Item有两个ID,一个ID用来标识与Work-group中的其它Work-item的区别(班号),另一个ID用来标识与Device中其它Work-item的区别(学号)
2)Compute Unit是固定不动的,相当于盛装Work-group的容器,一个Work-group计算完,Compute unit还可以用来计算其它的group。当我们在为一个内核分配工作项和工作组数量的时候是没有限制的。但如果一个设备只含有M个计算单元,N个工作项/工作