Qualcomm Hexagon Compute DSP (cDSP)是高通平台上专门用来做通用计算的硬件加速单元,与主机 CPU 相比,DSP 通常以较低的时钟速度运行,并提供更多的并行指令级。 这使得 DSP 在功耗方面成为 CPU 的更好替代品。 因此,将尽可能多的大型计算密集型任务移植到 DSP 上,可以降低设备的整体功耗。

cDSP主要用途有:

  1. 摄像头、视频的图像增强相关处理
  2. 计算机视觉、增强、虚拟现实处理
  3. 深度学习硬件加速

cDSP在SOC架构中位于下图红色框内。

cDSP硬件架构

Hexagon Scalar Core

Hexagon 标量核心包含4个或更多的DSP 硬件线程,每个 DSP 硬件线程都可以访问 Hexagon 标量单元,这些单元对单个或成对 32 位寄存器执行定点和浮点运算。每个硬件线程包含4个通用寄存器(R0-R31)、4个预测判断寄存器(P0-P3)及4个执行单元(S0-S3)。

HVX

Qualcomm Hexagon Vector eXtensions-HVX(“Hexagon矢量扩展”,Hexagon-六边形、Vector-矢量、Extensions-扩展)是Hexagon 680 DSP的典型特性,能够在执行图像处理应用中的计算负载当中发挥重要作用,比如虚拟现实、增强现实、图像处理、视频处理、计算视觉等。此前这些任务均是由CPU或GPU来执行,如今交给Hexagon 680 DSP,能够达到更加高效、功耗更低的效果。

  HVX之所以这么重要是因为它能比CPU处理像素的速度更快,CPU只能在同一时间处理1个或2个像素。但有了HVX,能够在同一时间处理超过100个像素,这种并行算法结合先进的HVX指令体系,创造了一种在处理相机图片时,比CPU更加快速高效的效率及更低的功耗。根据高通数据,Hexagon 680 DSP相比于以前只有NEON优化的情况下,性能可提升1到3倍,而功耗可降低到原来的1/18到1/4。而支持HVX的Hexagon 680 DSP能够比直接通过CPU处理,达到更快的处理速度——其能够完成原本需要CPU来完成的工作,并且无需唤醒,全时间待命,更高效、效果更好。

  通过集成HVX,Hexagon 680 DSP中添加了对于视频即时处理的支持,搭载骁龙820和骁龙821处理器的手机拍摄视频时,也能运用自适应增量功能,视频中过暗的部分可以自动进行增亮。当DSP察觉到画面较暗的区域,会自动将这些区域调亮,搭载Hexagon 680 DSP的骁龙820和骁龙821在处理这些内容时,处理速度相比上一代技术快3倍,而功耗却仅有此前的10%。

内存

cDSP软件架构

FastRPC

Skel动态库

HAP

QuRT

cDSP开发

以Example/calculator_c++为例

编译

Hexgon DSP SDK V4.5支持用CMake编译。

    build_cmake hexagon BUILD=Debug DSP_ARCH=v66build_cmake android BUILD=Debug

运行

直接在模拟器运行

$DEFAULT_HEXAGON_TOOLS_ROOT/Tools/bin/hexagon-sim -mv66 --simulated_returnval --usefs hexagon_Debug_toolv85_v66 --pmu_statsfile hexagon_Debug_toolv85_v66/pmu_stats.txt --cosim_file hexagon_Debug_toolv85_v66/q6ss.cfg --l2tcm_base 0xd800 --rtos hexagon_Debug_toolv85_v66/osam.cfg ~/Qualcomm/Hexagon_SDK/4.5.0.3/rtos/qurt/computev66/sdksim_bin/runelf.pbn -- ~/Qualcomm/Hexagon_SDK/4.5.0.3/libs/run_main_on_hexagon/ship/hexagon_toolv85_v66/run_main_on_hexagon_sim -- ./hexagon_Debug_toolv85_v66/ship/libcalculator_plus_q.so

在设备上运行

#建立运行环境
adb root
adb remount
#push android libs
adb shell mkdir -p /vendor/bin/
adb push android_Debug_aarch64/ship/calculator_plus /vendor/bin/
adb shell chmod 777 /vendor/bin/calculator_plus
adb push android_Debug_aarch64/ship/libcalculator_plus.so /vendor/lib64/

把DSP库push到设备

adb shell mkdir -p /vendor/lib/rfsa/dsp/sdk
adb push hexagon_Debug_toolv85_v66/ship/libcalculator_plus_skel.so /vendor/lib/rfsa/dsp/sdk/
adb push hexagon_Debug_toolv85_v66/libc++.so.1 /vendor/lib/rfsa/dsp/sdk/
adb push hexagon_Debug_toolv85_v66/libc++abi.so.1 /vendor/lib/rfsa/dsp/sdk/

运行

export LD_LIBRARY_PATH=/vendor/lib64/
export DSP_LIBRARY_PATH=/vendor/lib/rfsa/dsp/sdk
calculator_plus  -m sum -i 100

调试

调试Log输出

在代码中加入FARF log打印

#include <HAP_farf.h>FARF(LOW, "something happened: %s", (const char*)string);

设置Log输出级别,通过logcat查看

adb shell echo "0x1f > /vendor/lib/rfsa/dsp/sdk/calculator_plus.farf"
adb logcat -s adsprpc

cDSP性能调优

Profiling

在DSP上可用的profile方法如下:

HAP perf 需要在代码上加入性能统计API,统计代码运行的性能开销。

Hexagon Trace Analyzer可以在模拟器上运行并生成性能分析报告,目前在XR2上还不支持在设备上运行,可能在高版本上支持。

sysMon支持在设备上运行,通过sysMon可以监控DSP运行的性能数据,如频率、指令数、核心状态等。

编译优化

DSP编译Debug版本没有做性能优化,Release做了比较多的优化,性能要比Debug版本好10倍以上,所以在测试性能时,必须要在Release版本上进行。

另外要注意向量化选项是否开启,编译选项增加-fvectorize可以让编译器自动优化向量运算。不过编译器并不能很好的自动优化,所以尽量在代码中使用内联函数并行化优化。

代码优化

QHL

QHL HVX

dspCV

fastCV

待补充。。。

高通Hexagon通用计算DSP介绍相关推荐

  1. 高通 Hexagon V65 HVX 编程参考手册(1)

    高通 Hexagon V65 HVX 编程参考手册(1) 1介绍 1.1 SIMD协处理器 1.2 HVX features 1.2.1矢量长度 1.2.2向量上下文 1.2.3内存访问 1.2.4向 ...

  2. 高通about.html 文件,高通平台UEFI有关介绍

    高通平台UEFI有关介绍 背景 我需要在高通平台上学习点亮LCD,目前通过同事在别的平台的配置代码,我已经将kernel部分的屏幕点亮了:剩余的工作量就在BP侧,也就是系统刚开机的那一段时间.在开发过 ...

  3. 高通Hexagon环境搭建和camera_streaming example运行方法

    搭建Hexagon环境可以在windows和linux下进行,本文档以linux虚拟机环境搭建Hexagon环境说明: 首先是在Linux环境下安装QPM(Qualcomm Package Manag ...

  4. 用Vuforia(高通)开发VR/AR介绍

    Vuforia开发介绍 引言:Vuforia是与高通公司的合作的产品,致力于虚拟现实的技术,其技术最大的优点是在于Mixed Reality.(VR/AR相结合)我目前认为这是比较好的交互方式(当然依 ...

  5. 高通物联网平台9205介绍

    2018年12月17日,高通宣布推出下一代物联网(IoT)专用调制解调器Qualcomm MDM9205.全新Qualcomm 9205 LTE调制解调器在单芯片上集成了支持蜂窝物联网产品及服务所需的 ...

  6. 高通QMI IDL格式介绍,方便增加QMI message

    主要方便单个的增加qmi 消息. [背景] 由于idl文件和自动生成工具不开放给客户,客户如果想要扩展qmi结构或者新增QMI 消息需要手动按照IDL的格式修改qmi消息对应的<api>. ...

  7. Windows 10下配置高通hexagon sdk环境

    下载hexagon_sdk 我使用的是hexagon_sdk_win_3_5_installer_eval_00004_1.zip 解压安装 这一步我没有勾选eclipse,等很久才安装完毕 配置环境 ...

  8. 汽车厂商对高通骁龙820A系统平台的支持

    随着物联网和汽车智能化时代的加速到来,使用高通骁龙汽车平台的汽车厂商也越来越多.三大汽车厂商捷豹路虎. 本田和比亚迪宣布与高通合作,使用高通骁龙820A平台为汽车上的车载信息处理.电子仪表,及后座娱乐 ...

  9. 高通QCS603/QCS605物联网系统芯片介绍,QCS603/QCS605处理器参数比较

    QCS603/QCS605 10nm SoC是专为下一代智能相机和智能家居应用程序提供高性能.高效的边缘计算而建造的. 高通qcs60x系列高性能物联网系统芯片(Socs)集成了构建高级用例包括机器学 ...

  10. Qualcomm NPU 高通神经网络处理芯片

    "专人专事专办"听起来是个很诱人的事情,当在某一方面有需要就去找专门对应的人员或是硬件进行快速处理和反馈,这个道理似乎很简单.然而在当今的移动领域满足人工智能运算需求这方面,移动平 ...

最新文章

  1. 2022-2028年中国微藻行业市场调查研究及前瞻分析报告
  2. linux 无法挂载系统,解决无法挂载Linux文件系统的问题
  3. IOS开发中UIBarButtonItem上按钮切换或隐藏实现案例
  4. 机器学习笔记:logistic regression
  5. Java NIO——Selector机制源码分析---转
  6. ASP.NET3.5 企业级项目开发 -- 第二章(续) 数据访问层(DAL)的开发解决方案提出...
  7. C# 读写excel 用于导入数据库 批量导入导出excel
  8. 每日一笑 | 今天是植树节,我想在你心里种点逼树
  9. 【英语学习】【Daily English】U02 Daily Routine L01 Sadly, my schedule is very tight.
  10. 在ubuntu中使用cv2.imshow()报错 No protocol specified qt.qpa.xcb: could not connect to display :0
  11. ajax+MultipartFile上传文件到本地
  12. HDOJ(HDU) 1563 Find your present!(异或)
  13. java中使用unzip_unzip命令_Linux unzip命令用法示例详解
  14. (12) 基于深度时空残差网络ResNet的城市交通流预测
  15. 微信公众号:地图定位
  16. Swift游戏实战-跑酷熊猫 14 熊猫打滚
  17. 面试5173的奇葩经历——老板与员工的博弈论
  18. 戴尔易安信引领科技创新,以全面的端到端解决方案助力企业“数”造未来
  19. 双节连壁,iMindMap钜惠来袭
  20. 哪些行业适合开发小程序商城

热门文章

  1. safari 插件安装之alipay
  2. P2627 [USACO11OPEN]Mowing the Lawn G
  3. 机器人工程行业算制造业吗
  4. 卷积神经网络(CNN)详解
  5. Lombok requires enabled annotation processing
  6. 硬核南大!一天两篇Nature正刊!
  7. 从鼠标点击位置发射射线检测是否点击到3D世界中的物体
  8. 彼得林奇的成功投资三——回购+提高股息+无多元化
  9. Q1营收超华尔街预期,挚文集团的价值等待回归
  10. 你属于哪种性感女人?