Hetcompute image processing example (1)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38498942/article/details/97958228

一、抽象
1)在Tutorial中,介绍了基于HetCompute编程模型下,使用并行方法对图片进行去噪。
二、实现过程
1)环境搭建:
Snapdragon Heterogeneous Compute SDK
android-ndk-r14b
需要下载以上工具,建议在对应官网下载。
2)实例简介:在这里插入图片描述以上部分声明了图片的存取路径,我的测试手机型号为sdm845,最后通过adb将图片可以从手机的上述路径中拿到PC端。在这里插入图片描述以上为main()函数,最终可以在adb logcat中打印出CPU、GPU、DSP分别所需的时间。注释“函数调用”部分实现了图片加载,第二处注释部分实现的是图片权重预处理,它在去噪算法中使用。在这里插入图片描述 以上为GPU实现过程的主要代码。基于Heterogeneous Compute SDK创建task实现并行处理。在此处调用SDK提供的接口函数创建了一个二维数组,传参给gpu_task,用于对像素点数据进行遍历。此处创建的GPU任务,只需要传入相对应的参数即可(函数原型可自行搜索),Heterogeneous Compute SDK会自行调用GPU来进行处理。在这里插入图片描述以上为GPU处理部分的核心代码,在此处实现了图片去噪算法,并将此处作为参数传入上面的GPU任务中,只需要调用任务即可通过SDK实现去噪。此处的参数中_global声明部分为SDK提供的可以进行数据交互的缓冲区,在GPU任务创建之前申请,同时在此处也实现了权重值的初始化。
CPU、DSP部分与GPU类似,CPU的降噪算法是直接通过C函数处理即可实现,然后被CPU创建的任务函数调用,即可在CPU上实现图片去噪。
DSP则在DSP创建的任务中调用降噪算法处理函数实现了图片去噪的任务,此处需要下载qualcomm_hexagon_sdk,解压出后将DSP去噪算法实现模块内容复制到/examples/commom/目录下,执行后生成.so文件通过adb命令放入/ventor/lib64/目录下(我最后运行的可执行文件为64位,32位的则放入相应目录下),此时DSP任务在main()函数中被调用后即可调用去噪函数在DSP中实现对图片进行去噪处理。此处较为复杂,调用DSP处理DSP任务时需要给手机指定位置上传生成的库文件,因此就必须下载上面提到的内容(我在此处下载的为qualcomm_hexagon_sdk_3_3_3_linux.zip),下载好后直接安装即可。通过此工程便可以生成需要的.so库,最终成功启动DSP来对图片进行去噪。
三、实验结果分析
在这里插入图片描述 通过上图实现结果,我们可以看到,CPU、GPU、DSP都成功的独立完成了图片去噪任务,DSP的速度最慢,GPU最快,CPU次之。(CPU 1278ms、GPU 643ms、DSP 510940ms)
通过Heterogeneous Compute SDK提供的API,就完全不需要去针对底层调用进行编程,节省了大量的时间和精力。

展开阅读全文

没有更多推荐了,返回首页