FPGA - OpenCL异构并行计算 学习日记(四)

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)

FPGA - OpenCL异构并行计算 学习日记(四)FPGA - OpenCL异构并行计算 学习日记(四) qq_33479881 发布了28 篇原创文章 · 获赞 20 · 访问量 1万+ 私信 关注
上一篇:opencv + opencl


下一篇:C++文件读写详解