android 平台上使用opencl 调用gpu 进行加速
嗯现在就不吝啬了~奉献给大家~
后面在Android上还实现了很多种并行化的算法,比如SHA-1、HDR、K-means、NL-means、SRAD等等,会在近期整理好之后开源的。
原文发表在了异构开发技术社区
整理成教程是队友做的,十分感谢~
原博文地址
队友的博客
代码CSDN地址
Android平台利用OpenCL框架实现并行开发初试
常见智能手机的硬件信息 款式CPU型号GPU型号OpenCL支持
三星GalaxyS5高通骁龙801(4核)Adreno330是
Iphone5S苹果A7(2核)Imagination PowerVR G6430是
小米3联通版高通骁龙800(4核)Adreno330是
魅族M3三星5410(8核)Imagination SGX544是
(2)make –v,返回make命令的版本信息
3)gcc -v,返回gcc命令的版本信息
第三步,配置NDK的系统环境变量,为了避免编译时警告,可采用Linux风格的路径,如我的NDK安装路径为:“D:\android-ndk-r8-windows \android-ndk-r8”,在系统变量中名为“ndk”的变量路径为:“/cygdrive/ android-ndk-r8-windows/ android-ndk-r8”
(安装时不要勾选“Group items by category”选项,否则会出现列表为空的情况)。然后在Window->preferences->Android->本机开发选项中添加NDK的安装路径。
其次,我会简要的介绍OpenCL在Android开发过程中的一些设置和代码。在Android平台实现并行化的过程中,我主要遵循下面的框图进行:
主要思路就是利用JAVA中的JNI接口,结合Cygwin环境和NDK工具,将OpenCL实现的并行算法编译为可以被Android工程调用的libSobelFilter.so(lib***.so均可),然后在程序中调用该文件中的算法实现并行。
Application.mk文件:
然后将OpenCL头文件拷贝到jni文件夹下,供工程编译时调用:
接下来需要我们按照OpenCL的框架流程进行并行化的初始化和内核入队操作,主要包括:
上述几个Android平台需要的文件在不同版本的安卓系统中有不同的位置,上例
此外,该程序使用了OpenCV的相关函数完成图像操作,因此需要在对应的安卓手机上安装OpenCV-Manager来完成对OpenCV函数的调用工作(可从http://opencv.org/下载相关资料和安装包)。同时,为了程序编译的方便,建议将程序文件放置到OpenCV-android-sdk的samples目录下,同时在Eclipse的项目属性Android选项中将"…\OpenCV-2.4.8-android-sdk\sdk\java"工程加入Android工程中,如图所示:
在完成运行环境的配置后,在Cygwin中完成该项目的编译和库文件生成工作,如下图所示:
可在项目工程目录下的libs/armeabi-v7a下查看生成的.so文件(libSobelFilter.so):
至此,Sobel滤波程序已经编译完成。下面介绍一些运行结果。
以下的图表分别展示了程序的运行界面和加速比对比。
表中是一些测量得到的结果:
图片大小 | 并行时间(ms) | 串行时间(ms) | 加速比 |
256*256 | 4.95 | 7,67 | 1.55 |
512*512 | 27.62 | 44.27 | 1.58 |
1024*1024 | 88.86 | 138.66 | 1.57 |
2048*2048 | 154.41 | 241.65 | 1.56 |
4096*4096 | 247.65 | 468.28 | 1.71 |
5000*5000 | 693.92 | 1321.41 | 1.91 |
android 平台上使用opencl 调用gpu 进行加速相关推荐
- 在Android上使用OpenCL调用GPU加速
转载:http://blog.csdn.net/dj0379/article/details/39484061 其实去年就已经把Android上OpenCL的demo做出来了,但是由于种种原因一直没有 ...
- cocos2d js调用java_【cocos2d-js官方文档】二十四、如何在android平台上使用js直接调用Java方法...
在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法.它的使用方法很简单: var o = jsb.reflection. ...
- cocos2dx在Android studio运行 以及在 Android 平台上使用 JavaScript 直接调用 Java 方法
cocos2dx在Android studio运行 以及在 Android 平台上使用 JavaScript 直接调用 Java 方法 cocos2dx在Android studio运行 使用Andr ...
- 【cocos2d-js官方文档】二十四、如何在android平台上使用js直接调用Java方法
在cocos2d-js 3.0beta中加入了一个新特性,在Android平台上我们可以通过反射直接在js中调用Java的静态方法.它的使用方法很简单: var o = jsb.reflection. ...
- 奥比中光Gemini 3D双目结构光深度相机在Android平台上深度数据噪点非常多的问题
相机:Gemini 3D双目结构光深度相机 环境:Android7.1 软件:SDK中的java demo下的depthforopenni2 问题: 在Android样例depthforopenni2 ...
- Gemini 3D双目结构光深度相机在Android平台上深度数据噪点非常多的问题
相机:Gemini 3D双目结构光深度相机 环境:Android7.1 软件:SDK中的java demo下的depthforopenni2 问题: 在Android样例depthforopenni2 ...
- MVP在Android平台上的应用
2019独角兽企业重金招聘Python工程师标准>>> MVP在Android平台上的应用 原文链接 : Introduction to Model-View-Presenter o ...
- 在 Android* 平台上设置原生 OpenGL ES*
Setting up Native OpenGL ES* on Android* Platforms final.docx BSD2.0.txt ParticleSystemNDK.zip READM ...
- Android平台上集成萤石SDK
这篇文章,就Android平台上如何集成萤石SDK进行讲解. 前言: 萤石是海康威视集团旗下的一家做视频云的公司.我们接入萤石设备,实现实时预览.远程回放.抓图.切换画质等功能. 关于具体如何接入,包 ...
最新文章
- OSChina 技术周刊第十六期 —— 每周技术精粹
- 关键帧动画html例子,Bounce.js 是一个漂亮的CSS3关键帧动画生成工具和类库_前端开发者...
- 如何更改OST、OAB文件的默认路径?
- 各种排序笔记---基于比较排序部分
- 走线和交互式布线_画PCB时,一些非常好的布线技巧
- 微信小程序 - 基本学习资源
- Linux MySQL单实例源码编译安装5.6
- elasticsearch docker无法挂载_Docker 容器监控方案怎么选?看看这套开源方案
- python从入门到精通需要多久-Python从入门到精通:一个月就够了
- HardSoft-Viewer SQL
- SpringBoot法律知识分享问答论坛 lawbbs.liuyanzhao.com
- 「企业架构」TOGAF的权威指南
- java初级程序员需要掌握哪些,附源代码
- tumblr_使用Tumblr创建美丽且易于更新的博客
- 如何修改计算机无线mac地址,如何修改无线网卡物理地址,求指教
- Win10文件名排序
- 带你一步步破解亚马逊 淘宝 京东的反爬虫机制!
- <<视觉问答>>2022:SwapMix: Diagnosing and Regularizingthe Over-Reliance on Visual Context in VQA
- JZOJ6362. 【NOIP2019模拟2019.9.18】数星星(star)
- ios app 解决微信扫二维码不能跳转问题
热门文章
- 这里没大路 华军软件网
- 用matplotlib获取雅虎股票数据并作图【转载】
- [Holo_wo]-计算机专业(物联网工程)应该如何学习?
- 论文写作排版小技巧(更新中)
- 商城+前后端分离+课程设计+大作业 Springboot+vue+swagger+好看的安卓界面
- 超越竞争文化:致善式创新能否打造手机产业的“海法城”
- 拓嘉辰丰电商:做好拼多多电商有哪些技巧
- proxmox tesla_大众One Ups Tesla突破性的电池突破
- Python 绘制热图
- Ubuntu系统使用输入法只能输入英文不能输入中文解决方法