在Android上使用OpenCL调用GPU加速
其实去年就已经把Android上OpenCL的demo做出来了,但是由于种种原因一直没有开源–
嗯现在就不吝啬了~奉献给大家~
后面在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 进行加速
其实去年就已经把Android上OpenCL的demo做出来了,但是由于种种原因一直没有开源– 嗯现在就不吝啬了~奉献给大家~ 后面在Android上还实现了很多种并行化的算法,比如SHA-1.HDR ...
- 编译GDAL支持OpenCL使用GPU加速
##前言 GDAL库中提供的gdalwarp支持各种高性能的图像重采样算法,图像重采样算法广泛应用于图像校正,重投影,裁切,镶嵌等算法中,而且对于这些算法来说,计算坐标变换的运算量是相当少的,绝大部分 ...
- GDAL使用OpenCL开启GPU加速
GDAL可以借助OpenCL,对特定重采样方法(只记得最邻近不行,三次卷积可以,双线性忘了),使用GPU提升计算效率 需要 GDAL源码 OpenCL Visual Studio SQLite(可选) ...
- Python Numba实现GPU加速
Python与GPU Python作为解释型语言,.py文件一般是没法直接用GPU加速的,关于Python与GPU的结合点,以及GPU.CPU.CUDA.多核.并行.机器码-等底层实现,参考: < ...
- MATLAB GPU加速
以前使用matlab 的时候,很多人都用过里面的并行工具箱,用的最多的应该就是parfor.实际上,matlab里面已经有不少工具箱里面都有了支持GPU加速的函数.使用matlab+GPU加速的前提是 ...
- Caffe2-windows下caffe的gpu加速
摘要:本篇日志承载上篇内容,在上篇基础上进行优化和添加.主要说明在正确cpu的caffe框架下如何添加gpu加速的过程. 正文: 上篇说明了如何安装cpu版本的caffe框架,其中我提到过,只有cpu ...
- Ubuntu18.04下安装深度学习框架Pytorch(GPU加速)
前面我们已经在windows10环境下成功安装了CPU版本的Pytorch,推荐的是利用Anaconda安装. 经过接近一天的奋战,博主成功在linux系统安装GPU加速的pytorch,博主使用的发 ...
- RK3588实战:调用npu加速,yolov5识别图像、ffmpeg发送到rtmp服务器
前言:最近在学习一些rk3588相关的东西,趁着这个项目,把学习的相关东西整合下,放到一个项目里面,巩固学习的知识. 项目名称:yolov5识别图像.ffmpeg发送到rtmp服务器 功能:1.ope ...
- gpu超算算法_英伟达推GPU加速Arm服务器参考设计!微软Azure启动GPU超算实例
芯潮(ID:aichip001)文 | 韦世玮 芯潮11月20日消息,昨天,英伟达在2019国际超级计算大会(SC19)上推出用于构建GPU加速Arm服务器的参考设计,以及用于优化网络和存储数据处理的 ...
最新文章
- AI一分钟 | 万达网科裁员95%高达5000余人,被爆下一步将转型AI; 英伟达放话了:研究人员放心用,不更新驱动就没啥事儿
- “深度学习一点也不难!”
- 【Spark】Spark SQL, DataFrames and Datasets Guide(翻译文,持续更新)
- linux搭建--DISPLAY环境变量问题(一)
- Boost:boost::bimaps::set_of的测试程序
- Axure实现多用户注册验证
- ObjectiveC 深浅拷贝学习
- Java,JavaFX的流利设计风格文本字段和密码字段
- RFID技术与应用 复习用
- ArcCatalog添加数据库连接
- react中使用sass报错SassError: Expected newline.
- 彼得林奇投资策略精髓
- unity3d 本地化数据PlayerPrefs详解
- OPENCV函数介绍:normalize()
- Personal deposit calculator(个人存款计算器)C#实现
- 简历模板...自行下载
- TARS 斩获 2018 年最佳原创开源软件奖
- 两年数据对比柱形图_2018年、2019年的数据对比图!想学习这种对比图的做法!安排...
- ig信息增益 java_【Python 编程】实现文本分类中的信息增益算法
- 生产计划自动排程目标是什么?
热门文章
- mysql某个表的列除以2_mysql常见面试题(二)
- openstack(Queens版) 安装FWaaS
- 工程是.java文件_1.8 工程相关解析(各种文件,资源访问)
- 云服务器怎么拷贝和删除文件,怎样给云服务器拷贝文件
- 南京林业大学计算机专升本,2018江苏专转本学校之:南京林业大学
- 计算机上没有找到服务was,win10系统搭建网站提示计算机“.”上没有找到wAs服务的步骤介绍...
- 主机漏洞-SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)【原理扫描】-RC4密码套件
- 济南计算机中考分数,【更新版】2017济南各初中中考成绩汇总!
- php n维数组扁平化,js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解...
- PHP获取其他网站上的内容,php – 从外部网站获取DIV内容