7,845
社区成员
发帖
与我相关
我的任务
分享QNN 推理时,如何在 C++ 代码里使用共享内存方式传递 Tensor 数据,减少 CPU 与 Hexagon 之间的数据拷贝开销?
可以使用 QNN 的 MemHandle 共享内存机制,注册 ION/memfd 内存句柄给 QNN 张量,避免内存复制。核心流程:创建共享内存 fd → 填充输入数据 → 将 memHandle 绑定到 Qnn_Tensor_t 结构体 → 执行推理。 极简参考代码片段:
Qnn_Tensor_t inputTensor;
Qnn_MemDescriptor_t memDescriptor;
memDescriptor.memType = QNN_TENSORMEMTYPE_MEMHANDLE;
memDescriptor.memHandle.fd = memfd; // 共享内存文件描述符
inputTensor.v2.memHandle = &memDescriptor;
注意事项:注册共享内存后,上下文 finalize 完成前不能释放 buffer;VTCM、spill-fill 缓冲区也支持注册共享内存,适合视频流、高分辨率图像这类大数据输入场景,降低推理时延。 参考文档:高通 QNN HTP Shared Buffer 官方教程。