高通SNPE - OpenCL简介(4)
Adreno OpenCL应用程序开发
本文章将要简要讨论Adreno OpenCL应用程序的一些基本要求开发,然后介绍如何调试和分析应用程序。
Android上的OpenCL应用程序开发
目前,Adreno GPU主要在Android操作系统(OS)和更高版本上支持OpenCL。选择Linux系统。要开发与OpenCL一起运行的Android应用,开发人员需要获得熟悉Android软件开发套件(SDK)和本机开发套件(NDK)。请参阅https://developer.android.com/index.html和分别用于Android SDK和NDK的https://developer.android.com/ndk/index.html 。
本文假定您的开发正在进行中。Android平台和开发人员具有Android SDK和NDK的经验。该应用程序Linux上的开发应该相似。在Snapdragon平台上进行OpenCL开发有一些先决条件:
∎具有OpenCL支持的Snapdragon设备。并非所有Snapdragon设备都支持OpenCL。。
∎ OpenCL的软件。Adreno GPU上的OpenCL依赖于QTI专有库。□检查设备是否安装了OpenCL库。–核心库为libOpenCL.so,通常位于设备上的/ vendor / lib中。□某些供应商可能选择不包括OpenCL软件(例如Google的Nexus和Pixel设备)。
∎的OpenCL必须在NDK层运行。
∎根访问权限对于开发和测试不是必需的,但对于在性能模式下运行SOC。
下表总结了使用Adreno GPU开发OpenCL的关键要求。
调试工具
由于GPU执行具有并行性,因此调试OpenCL内核通常具有挑战性。的Adreno GPU支持内核内部的printf函数,这对于调试非常有用。使用printf ,建议减少工作量,打印带条件的变量,并避免打印过多的变量,因为printf会减慢代码执行速度。例如,一个可能仅启用有问题的工作组,甚至启用单个有问题的工作项(通过设置函数CLEnqueueNDRangeKernel中的适当偏移量)了解设备的软件版本非常重要,因为可能存在一些错误或问题。在新版本中修复。要查询软件(驱动程序)和编译器版本,请使用API函数可以使用名为clGetDeviceInfo的方法。
Snapdragon ProfilerSnapdragon Profiler
是QTI提供的配置文件工具,可在Windows,Mac和Windows XP上运行。Linux平台,允许开发人员分析CPU,GPU,DSP,内存,电源,散热,运行Android的Snapdragon处理器的网络数据。它支持OpenCL和许多图形API,例如OpenGL ES和Vulkan。有关更多详细信息,请参阅https://developer.qualcomm.com/software/snapdragon-profiler 。以下是Snapdragon Profiler为OpenCL分析提供的一些关键功能。
∎探查器具有内核分析器,它使开发人员可以对给定的对象进行静态分析。核心。它提供信息,例如寄存器占用空间,总指令和数量有关每种操作类型的说明等,以帮助开发人员更好地优化内核。
∎探查器为给定的OpenCL应用程序提供OpenCL API跟踪和日志。它允许开发人员从API级别识别并解决瓶颈,并调试应用。
∎分析器提供诸如GPU繁忙率,ALU利用率,L1 / L2缓存之类的信息命中率等,这对于开发人员识别内核中的性能问题至关重要。
∎探查器支持基于命令行的应用程序以及Android GUI应用程序。
性能分析
对于一个应用程序,准确地描述其性能至关重要。两种常用方法之后将讨论CPU计时器和GPU计时器及其主要区别。本节先来看CPU计时器。
CPU计时器
CPU计时器用于测量来自主机端的OpenCL调用的完整执行时间。这个可以通过使用标准库的一部分中的任何日期和时间函数来实现C / C ++编程语言。
OpenCL运行时入队API函数可以归类为阻止调用和非阻塞呼叫。对于非阻塞调用,必须谨慎使用CPU计时器:
∎非阻塞调用意味着主机在提交后继续执行下一条指令(通常排队等待在另一个CPU线程中执行),而不是等待函数调用完成。□内核执行API函数clEnqueueNDRangeKernel是非阻塞的功能。
∎对于非阻塞调用,实际执行时间不是函数之间的时间差呼叫。当使用CPU计时器从主机端测量内核执行时间时,必须使通过使用clWaitforEvent调用(如果有事件ID)来确保功能已完成(用于无阻塞呼叫),或clFinish。相同的规则适用于内存传输调用。
之后的文章我们将继续讨论GPU计时器,及其与CPU计时器的主要区别。
高通SNPE - OpenCL简介(4)相关推荐
- 高通SNPE框架简介
SNPE(Snapdragon Neural Processing Engine),是高通公司推出的面向移动端和物联网设备的深度学习推理框架. SNPE提供了一套完整的深度学习推理框架,能够支持多种深 ...
- 基于高通SNPE推理引擎的yolov5目标检测算法
上图源自Snapdragon Neural Processing Engine SDK Reference Guide,它展示了一个Deep Learning Neural Network在SNPE环 ...
- 边缘计算:万字长文详解高通SNPE inception_v3安卓端DSP推理加速实战
本文是在以下文章的基础上编写,关于SNPE环境部署和服务器端推理可以参考上一篇文章: 边缘计算:万字长文详解高通SNPE inception_v3推理实战_seaside2003的博客-CSDN博客 ...
- 高通baseband多媒体简介
由于baseband并不会拥有像AP一样强大完整的多媒体功能,所以高通的baseband方案(如QSC6075)并不会像Packetvideo.Nextreaming那样一套统一框架下的完整多媒体解决 ...
- 高通Camera数字成像系统简介
转载: https://deepinout.com/qcom-camx-chi/qcom-camx-system-intro.html 整理:小驰笔记 相机的硬件层,作为整个框架的最底层,通过硬件模块 ...
- 美国高通 Snapdragon Neural Processing Engine SDK (SNPE) 系列 (1):用户自定义层JNI实现
Snapdragon Neural Processing Engine SDK是美国高通公司出品的神经网络处理引擎(SNPE),可运行于搭载了高通Zeroth机器智能平台的820芯片处理器,开发者可以 ...
- 重磅!2021 高通人工智能应用创新大赛今日开赛
由高通技术公司.高通创投主办,极视角.小米.中科创达.CSDN共同协办,TensorFlow Lite作为开源技术合作伙伴的"2021高通人工智能应用创新大赛"于今日正式开赛. 依 ...
- 2021高通人工智能应用创新大赛--创新赛道-决赛阶段小结
20212021高通人工智能应用创新大赛–创新赛道-决赛阶段小结 一.APP开发应用的问题 目前开发的基于高通SNPE技术的安卓APP,功能部分尚且只能实现封装好的图片进行识别,距离拍照和调用相册进行 ...
- SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程
Qualcomm高通AI神经网络处理SDK部署流程 系统要求 我们建议在专用机器上执行以下操作,以更好地了解 SDK 依赖关系: 安装 Ubuntu 18.04 (推荐),例如在虚拟机上. 安装pye ...
最新文章
- tf.GradientTape() 示例
- Cs Round#56 D Find Path Union
- MySQL—表中添加数据
- 11月7日邀您参加成都微软MVP圆桌之夜!
- 1025 反转链表 (25 分
- 面向区块链的高效物化视图维护和可信查询论文学习
- 本地连接和音量图标显示
- 【openjudge】【字符串+模拟】1777:文件结构“图”
- python获取线程返回值_如何从python中的线程获取返回值?
- 你的第一个java_【JAVA SE基础篇】3.你的第一个JAVA程序
- 【详解】P问题、NP问题和NPC问题详解(千禧年问题之首)
- 43大学计算机,加州大学戴维斯分校计算机科学排名第43(2020年TFE美国排名)
- 五项python小游戏代码测试
- 100G多模光模块介绍及应用
- rm -rf 命令 与正则表达式
- tp路由器 拨号失败 服务器无响应,tp路由器wdr8500拨号不成功怎么办
- 用C语言实现打开一个网页
- 安卓自定义计时器控件
- ssm+java计算机毕业设计大学生就业管理系统26cjn(程序+lw+源码+远程部署)
- TSQL与PL/SQL的比较(不完全版)
热门文章
- iOS 音频的实时录制和播放
- 为什么软件项目开发要写规格书
- linux 的pwd文件被删,恢复被删除的文件-linux篇
- 戴尔发布Inspiron 3000/5000系列笔记本电脑和一体机
- 不同角色进入使用不同功能_书写不同人生角色中的精彩
- 获取当前访问的浏览器类型--处理各个浏览器兼容
- 如何在Linux中安装nasm最新版本
- oracle sysdate mysql_SYSDATE, NOW等“误区”-Oracle, PostgreSQL, MySQL
- java多线程计算1/1+1/2+...+1/n为何比单线程要慢?!?
- android searchview属性,SearchView的用法(一)