问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是OpenCL?面向FPGA的OpenCL有何优点

发布网友 发布时间:2022-05-01 04:31

我来回答

3个回答

懂视网 时间:2022-05-04 16:52

上文说到了没有ROI的情况下怎么优化add,现在看看有roi的情况。 ROI是opencv里面的一个特性,也可以说是图像处理库都有的特性,它的意思是对于整个一幅图像,只处理被ROI框起来的那一块,可以看做是一个mask。如果不注重性能,最简单的方法就是加上一个offse

上文说到了没有ROI的情况下怎么优化add,现在看看有roi的情况。

ROI是opencv里面的一个特性,也可以说是图像处理库都有的特性,它的意思是对于整个一幅图像,只处理被ROI框起来的那一块,可以看做是一个mask。如果不注重性能,最简单的方法就是加上一个offset即可

__kernel void matrix_add(__global uchar* src1,__global uchar* src2, __global uchar* dst, int rows, int cols,int src1_step,int src2_step,int dst_step,int src1_offset, int src2_offset, int dst_offset)

{

int x=get_global_id(0);

int y=get_global_id(1);

if(x

dst[mad24(y,dst_step,x+dst_offset)]=src1[mad24(y,src1t_step,x+src1_offset)]+src2[mad24(y,src2_step,x+src2_offset)];

}

但是在每次读4个点的时候不能这么做,因为这有对齐问题。比如一个矩阵是17列1行,ROI设置的是后16个点,起始地址就不会是4的整数倍,这样在指针强制转换的时候会出现未定义的情况,结果是错的。除此之外,长度不是4的倍数也会出现问题,所以要使用一些技巧。一个办法是可以先强制对齐地址,多读一些数据,判断是否是需要的,不是需要的就扔掉

__kernel void matrix_add (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst, int dst_step, int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);

if (x < cols && y < rows)
{
x = x << 2;

#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);

int dst_start = mad24(y, dst_step, dst_offset);
int dst_end = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);

uchar4 src1_data = vload4(0, src1 + src1_index);
uchar4 src2_data = vload4(0, src2 + src2_index);

uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
short4 tmp = convert_short4_sat(src1_data) + convert_short4_sat(src2_data);
uchar4 tmp_data = convert_uchar4_sat(tmp);

dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;

*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}

由于为了处理对齐多出来很多额外的操作,所以速度并不是理论上的4倍,而是2倍多一点

热心网友 时间:2022-05-04 14:00

OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
  OpenCL标准是第一个开放、免版税、统一的编程模型,能够在异构系统上加速算法实现。OpenCL支持在不同的平台上使用基于C的语言来开发代码——从CPU、GPU、数字信号处理(DSP)器件,到FPGA。Khronos集团的很多供应商都支持OpenCL。
  面向FPGA的OpenCL有什么优点?
  (1)使用户的产品能够更迅速面市
  a.与传统的FPGA设计流程相比,产品能够更迅速面市。
  b.使用OpenCL C (基于ANSI C)并行编程语言而不是传统的底层硬件描述语言(HDL)来描述您的算法。
  c.在更高层的设计抽象环境中迅速进行设计开发。
  d.针对目前和未来的FPGA重新定位OpenCL C代码,设计不会过时。
  e.跳过耗时的手动时序收敛以及FPGA、主机和外部存储器之间的通信接口设计工作,一个步骤中就可以在FPGA上实现您的OpenCL C代码。
  (2)能获得了性能更好、功效更高的解决方案
  a.把对性能要求较高的功能从主处理器中卸载到FPGA上,从而提高了性能。
   通过观看采用OpenCL,卸载到FPGA来加速算法性能的演示,了解详细信息。
  c.与其他硬件方案相比,显著降低功耗,提高性能。采用FPGA的精细粒度体系结构,Altera面向OpenCL的SDK只生成您需要的逻辑,功耗只有硬件方案的1/5。

热心网友 时间:2022-05-04 15:18

opencv和opencl都是为了减轻cpu压力,使用gpu进行数据处理,一般图形处理比较多,也可以为运算进行提速。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
成为百度用户,提问题要收费吗? 向百度提问题收费吗?谢谢! 向12398698发短信提问题要钱不 北大总裁班是什么机构 帮忙查一下邮局快递包裹现在到哪里了。KA04747114944 签订征地补偿协议的程序是什么呢 政府征收土地的程序是什么? ...感觉其它片子都比较差。无论是内涵、剧情、做工。希望能找到相同或... 王者荣耀里,韩信那句,破碎的身躯可以修复,友情亦是如此吗是什么意思... 王者荣耀 破碎的身躯可以修复,友情也是如此吗 什么叫做湿球温度?如何计算相对湿度? 手机微信聊天图片同步到电脑 大三学生能够去当兵吗?需要办什么手续? Intel OpenCL SDK 这个是什么 ??有什么用?? 做暖通的,一个城市的平均气温啊,大气压力啊,干球温度,湿球温度啊,在哪里里可以找到比较准确的数据 已知空气的干球温度和相对湿度怎么求含湿量、*温度、水份气压、湿球温度、焓。谢谢! 中央电视台是不是CLTV? 如何计算湿球温度 有没有什么软件或excel表格,再输入干球温度、湿球温度后,能直接得出相对湿度?不需要推导过程,只要能在 焓湿图查询计算软件使用方法, 如何根据相对湿度计算湿球温度?急求专家! 请问在建筑里面PL和CL是不是分别代表底标高和顶标高的意思? 标高里面CL代表什么 网络电视显示cltv是什么意思 内存参数中CL是什么意思? 奔驰CLK、CL、SL又什么区别? SPF30 PA+++能防晒多久? SPF35 PA++能防晒多久? 防晒时间如何换算? SPF30+的防晒可以持续多久?50 +的呢? 请问SPF28 的防晒露效果如何? 如何理解&#39;法治成为共同信仰&#39; fortran 湿球温度迭代算法的实现,求高手。 已知干球温度和湿球温度,怎么查空气湿度 专科大三上学期去当兵好吗? 什么是湿球温度和干球温度 怎样根据湿球温度计算冷却出水温度 急!今天有一家叫CL Future(也称CLF)的外汇平台公司联系我,我知道该公司挺专业但不是很了解,有人知道 就是已经知道干球温度和湿球温度,相对湿度怎么求 Win32/VC++ 开发平台是什么? 我今年上大三(专科),想去当兵,请问一下,是否有什么优惠 可以算毕业生吗? 微信发照片icloud同步 大三去当兵回来是不是就直接毕业? 求:如何根据相对湿度、温度通过经验公式计算出湿球温度 大专大三办离校之后可以去方兵吗? 我想问一下 24岁,在学校还没有毕业 大三的本科大学生也可以去当兵吗? 大学本科生大二和大三哪一年去当兵有好处?有何区别?- 问一问 在校大三女生能应征入伍吗? 大三读了几天去当兵有坏处吗? 新鲜的淘米水可以浇花吗 我是一个女孩子现在读大专上大三了怎么样可以去当兵? 大三的学生能当兵吗?