高通SNPE SDK介绍 (2)

sdk 专栏收录该内容
113 篇文章 7 订阅

一、Snapdragon NPE Runtime

如下图:
在这里插入图片描述
此图描述了在设备上运行的Snapdragon NPE Runtime Library的某些组件。
在较高的层次上,该库包含以下内容:
DL容器加载器:加载由snpe-framework-dlc转换工具之一创建的DLC。

模型验证:验证所需的运行时是否支持已加载的DLC。请参阅支持的网络层

运行时引擎:在请求的运行时执行加载的模型,包括收集性能分析信息和支持UDL(请参阅用户定义的层(UDL)教程)。

分区逻辑:处理模型,包括验证所需目标的层,并根据需要在运行时目标的基础上将模型划分为子网。
对于UDL,分区程序创建分区,以便在CPU运行时执行UDL。
如果启用了CPU后备,则分区程序将模型划分为目标运行时支持的层,以及将在CPU运行时执行的其余层(如果支持的话)。

CPU运行时在CPU上运行模型;支持32位浮点或8位量化执行。
GPU运行时在GPU上运行模型;支持混合或完整16位浮点模式。
DSP Runtime使用Q6和Hexagon NN在Hexagon DSP上运行模型,并在HVX上执行;支持8位量化。

二、AIP Runtime

在这里插入图片描述

AIP(AI处理器)运行时是将Q6,HVX和HTA的软件抽象为单个实体(AIP),以便在所有三个实体中执行模型。
将模型加载到Snapdragon NPE中并选择AIP运行时作为目标的用户,该模型的一部分将在HTA上运行,而一部分在HVX上(由Q6协调)。
注意:为了在HTA上执行模型的各个部分,需要对模型进行脱机分析,并将相关部分的二进制文件嵌入到DLC中。

Snapdragon NPE在DSP上加载一个库,该库与AIP运行时进行通信。该DSP库包含一个执行器(用于管理HTA和HVX中的模型的执行),用于在HTA上运行子网的HTA驱动程序和用于使用HVX来运行子网的Hexagon NN。执行程序使用模型描述,该模型描述还包含分区信息-描述模型的哪些部分将在HTA上运行以及在HVX上运行。划分的部分在下文中称为“子网”。DSP执行器在相应的内核上执行子网,并根据需要协调缓冲区交换和格式转换,以将适当的输出返回给运行在ARM CPU上的Snapdragon运行时(如果需要,还包括反量化)。

在AIP运行时上执行模型
使用以下模型的说明性示例,该模型嵌入在Snapdragon NPE snpe-framework-dlc转换工具之一创建的DL容器中(圆圈代表模型中的操作,矩形表示包含并实现这些操作的图层)。
在这里插入图片描述
顶级Snapdragon NPE运行时将模型的执行细分为子网,这些子网将根据层亲缘关系在不同的内核上运行。一种情况是完全使用AIP运行时执行整个网络。

Snapdragon NPE运行时将自动添加CPU运行时,以执行确定为回退到CPU的其余部分。我们使用上面的示例更仔细地检查AIP运行时执行,在该示例中,整个模型都是使用AIP作为参考来执行的。

AIP运行时进一步将AIP子网分解为以下内容:
HTA子网:由HTA编译器编译的子网的一部分,由HTA编译器生成的其元数据显示在DLC的HTA部分中。
HNN子网:可以使用Hexagon NN库在DSP上运行的其余子网,其元数据显示在DLC的HVX部分中。
AIP运行时中的分区可能产生几种可能的组合。 以下是一些代表性案例(AIP子网可以完全在HTA上运行):
在这里插入图片描述

在这种情况下,整个AIP子网都与HTA兼容。当将DLC加载到Snapdragon NPE并选择AIP运行时时,运行时将识别出具有单个HTA子网的HTA部分等于整个AIP子网。

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

weixin_38498942

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值