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)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值