在 QNN C++ 应用中,如何为输入张量设置静态形状和动态形状,动态形状又会带来哪些性能代价?

weixin_32225865 2026-10-20 15:49:39

在 QNN C++ 应用中,如何为输入张量设置静态形状和动态形状,动态形状又会带来哪些性能代价? 
 

...全文
55 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38498942 10-22 15:33
  • 打赏
  • 举报
回复

QNN 中静态形状在模型编译阶段就确定输入尺寸,运行时直接复用已编译好的上下文二进制;动态形状则需要在运行时根据实际输入重新构造或部分重建计算图。设置静态形状时,在模型编译阶段通过 --input_dims 指定固定尺寸:
qnn-onnx-converter --input_dims input:1,3,640,640 ...
设置动态形状时,使用 --input_dims_range 给出尺寸范围,并确保模型编译时开启动态形状支持:
qnn-onnx-converter --input_dims_range input:1,3,[1:4],[1:4] ...
动态形状的代价主要包括:运行时图重构开销、内存分配与释放频率增加、部分 HTP 优化失效、小 batch 或小尺寸输入时单位算子成本上升。因此在边缘部署中,若业务尺寸稳定,优先使用静态形状;只有输入尺寸必须变化时才启用动态形状。参考文档:高通 QNN 动态形状部署指南。

7,900

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、IoT、PC 、XR、Auto等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
物联网人工智能开源 企业社区 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧