|
DE1SOC OpenCL方式加速Sobel算法
[复制链接]
本帖最后由 nolnew 于 2017-8-27 23:11 编辑
最近测试了一下DE1SOC使用OpenCL方式和软件处理Sobel算法的速度,参考Altera官方的例子,Sobel算法分别使用:纯软件,arm的neon 指令 和 OpenCL方式 实现。
最终测得在处理1920x1080的图像上,软件处理168ms,NEON指令处理 37ms, OpenCL 方式14.9ms。OpenCL处理性能是软件处理的10倍,是NEON处理2倍。 其中ARM工作在900Mhz,OpenCL内核130Mhz。
实现带图形界面的OpenCL镜像,可参考帖子https://bbs.eeworld.com.cn/thread-545423-1-1.html 。该帖子提供了在OpenCL环境中硬件方式显示图形界面的方法,比通过VNC登录显示图像界面的方式更快,可以释放ARM的处理器占用率。
处理效果如下:
原始图像
软件处理168ms
OpenCL处理14.9ms,按照内核处理方式。每个时钟计算出一个像素位置的sobel特征值,时间应该是7.692ns*1920*1080=15.9ms。(有点出入,内核时间是使用opencl event 测量的。可能具体运行频率需要用API获取才对,也可能是其他未考虑到的因素)
现把镜像文件分享给大家,以方便大家做类似带图像界面的OpenCL的例子。较之前的版本,更新镜像内的OpenCL ARM的运行时环境为16.1。镜像较大,附件中提供下载地址:
OpenCL Sobel镜像下载地址.txt
(31 Bytes, 下载次数: 22, 售价: 1 分芯积分)
运行的方法(已经编译好内核和host ,无opencl license也可运行):
1.下载镜像卡烧到SD卡,设置MSEL拨码开关[4:0] MSEL——> 00010,即SW10【4:0】on,on,on,off,on
2.连接USB转串口到PC,给串口供电(D版串口需要供电才能启动),连接鼠标键盘到DE1SOC
3.上电,在图形界面中按 Ctrl+Alt+T启动终端,执行sobel文件夹内的host即可。
4.鼠键点中窗口,使用横排数字键 1~6切换处理模式,使用 加号 减号修改阈值,等号复位阈值 。
标题会显示处理方式和时间
|
|