openCL标量数据类型,以cl_开头
openCL字节对其是以2的幂对其的
openCL中用户定义的数据类型前面需要添加_attribute_((aligned));
opencl中的隐式转换
cl_int x=9;
cl_float y=x; //y将得到9.0
向量是opencl中比较强大的地方,它允许硬件从存储器批量加载数据或者将批量数据存储到存储器中**,这里可以利用算法的时间或空间的局部性**。
float a=1.0f;
float a=1.0f;
float a=1.0f;
float3 vf=(float3)(a,b,c);//定义一个向量
float3 vf=(float3)(1.0f);//定义一个向量,(1.0f,1.0f,1.0f)
分向量的访问
基于c.x c.y c.z etc
向量数据类型的组合
.lo和.hi
openCL的数据存储方式
0x01234567
0x01是最高有效字节MSB,0x67是最低有效字节LSB。
高位优先存储首先存储MSB,直到其遇到LSB
half-precision数据类型
half值,确定你的设备是否支持half值。
SIMD并行机制,单指令多数据流,SSE单指令多数据流式扩展
设备裂变,分裂扩展。
理解opencl的向量类型
什么是向量和标量?
工作项分配的计算单元,计算单元分配很多快,每块有很多工作项,每个块称之为一个wavefront,每个wavefront有一个程序计数器,其被视为小型工作单元,它们是以锁步方式执行。
每个计算单元包含如下:
标量ALU和标量GPR
4个SIMD
本地存储器
通过一级缓存的向量存储器读写访问
指令缓存,由4个CU共享
常量缓存,由4个CU共享
隐式向量化
OpenCL定义的4个地址空间:
__global、__local、__constant、__private
设备是否支持单精浮点,双精浮点,或者半精浮点运算。
使用Opencl的函数
从向量存储数组
从数组加载向量
OpenCL查找大型整型容器中最小数字。
OpenCL乘加指令(MAD)以及混合乘加指令(FMA)