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)相关推荐

  1. 高通SNPE框架简介

    SNPE(Snapdragon Neural Processing Engine),是高通公司推出的面向移动端和物联网设备的深度学习推理框架. SNPE提供了一套完整的深度学习推理框架,能够支持多种深 ...

  2. 基于高通SNPE推理引擎的yolov5目标检测算法

    上图源自Snapdragon Neural Processing Engine SDK Reference Guide,它展示了一个Deep Learning Neural Network在SNPE环 ...

  3. 边缘计算:万字长文详解高通SNPE inception_v3安卓端DSP推理加速实战

    本文是在以下文章的基础上编写,关于SNPE环境部署和服务器端推理可以参考上一篇文章: 边缘计算:万字长文详解高通SNPE inception_v3推理实战_seaside2003的博客-CSDN博客 ...

  4. 高通baseband多媒体简介

    由于baseband并不会拥有像AP一样强大完整的多媒体功能,所以高通的baseband方案(如QSC6075)并不会像Packetvideo.Nextreaming那样一套统一框架下的完整多媒体解决 ...

  5. 高通Camera数字成像系统简介

    转载: https://deepinout.com/qcom-camx-chi/qcom-camx-system-intro.html 整理:小驰笔记 相机的硬件层,作为整个框架的最底层,通过硬件模块 ...

  6. 美国高通 Snapdragon Neural Processing Engine SDK (SNPE) 系列 (1):用户自定义层JNI实现

    Snapdragon Neural Processing Engine SDK是美国高通公司出品的神经网络处理引擎(SNPE),可运行于搭载了高通Zeroth机器智能平台的820芯片处理器,开发者可以 ...

  7. 重磅!2021 高通人工智能应用创新大赛今日开赛

    由高通技术公司.高通创投主办,极视角.小米.中科创达.CSDN共同协办,TensorFlow Lite作为开源技术合作伙伴的"2021高通人工智能应用创新大赛"于今日正式开赛. 依 ...

  8. 2021高通人工智能应用创新大赛--创新赛道-决赛阶段小结

    20212021高通人工智能应用创新大赛–创新赛道-决赛阶段小结 一.APP开发应用的问题 目前开发的基于高通SNPE技术的安卓APP,功能部分尚且只能实现封装好的图片进行识别,距离拍照和调用相册进行 ...

  9. SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程

    Qualcomm高通AI神经网络处理SDK部署流程 系统要求 我们建议在专用机器上执行以下操作,以更好地了解 SDK 依赖关系: 安装 Ubuntu 18.04 (推荐),例如在虚拟机上. 安装pye ...

最新文章

  1. tf.GradientTape() 示例
  2. Cs Round#56 D Find Path Union
  3. MySQL—表中添加数据
  4. 11月7日邀您参加成都微软MVP圆桌之夜!
  5. 1025 反转链表 (25 分
  6. 面向区块链的高效物化视图维护和可信查询论文学习
  7. 本地连接和音量图标显示
  8. 【openjudge】【字符串+模拟】1777:文件结构“图”
  9. python获取线程返回值_如何从python中的线程获取返回值?
  10. 你的第一个java_【JAVA SE基础篇】3.你的第一个JAVA程序
  11. 【详解】P问题、NP问题和NPC问题详解(千禧年问题之首)
  12. 43大学计算机,加州大学戴维斯分校计算机科学排名第43(2020年TFE美国排名)
  13. 五项python小游戏代码测试
  14. 100G多模光模块介绍及应用
  15. rm -rf 命令 与正则表达式
  16. tp路由器 拨号失败 服务器无响应,tp路由器wdr8500拨号不成功怎么办
  17. 用C语言实现打开一个网页
  18. 安卓自定义计时器控件
  19. ssm+java计算机毕业设计大学生就业管理系统26cjn(程序+lw+源码+远程部署)
  20. TSQL与PL/SQL的比较(不完全版)

热门文章

  1. iOS 音频的实时录制和播放
  2. 为什么软件项目开发要写规格书
  3. linux 的pwd文件被删,恢复被删除的文件-linux篇
  4. 戴尔发布Inspiron 3000/5000系列笔记本电脑和一体机
  5. 不同角色进入使用不同功能_书写不同人生角色中的精彩
  6. 获取当前访问的浏览器类型--处理各个浏览器兼容
  7. 如何在Linux中安装nasm最新版本
  8. oracle sysdate mysql_SYSDATE, NOW等“误区”-Oracle, PostgreSQL, MySQL
  9. java多线程计算1/1+1/2+...+1/n为何比单线程要慢?!?
  10. android searchview属性,SearchView的用法(一)