多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

195、MLIR在移动端芯片(如Qualcomm Hexagon)中的应用

195、MLIR在移动端芯片(如Qualcomm Hexagon)中的应用 MLIR在移动端芯片(Qualcomm Hexagon)中的应用一个让我熬夜到凌晨三点的bug去年夏天,我在调试一个移动端AI推理引擎的Hexagon后端。模型在PC上跑得飞快,量化精度也达标,一上手机就崩——不是段错误,是Hexagon DSP直接挂起,连个像样的错误码都不给。我盯着Hexagon Simulator的日志看了两个小时,只看到一行“TCM overflow”的提示。TCM是Tightly Coupled Memory,Hexagon的本地内存,总共就几百KB。我当时的模型权重加上中间激活,怎么算都不该超。后来用MLIR的-print-ir-after-all一帧一帧看,才发现问题出在算子融合后的中间结果生命周期上——MLIR的bufferization pass把本该流式传输的中间张量全部物化到了TCM里,而Hexagon的DMA引擎根本没被正确触发。这个坑让我意识到:MLIR在移动端芯片上的应用,远不是“把IR翻译过去就行”那么简单。Hexagon这种VLIW架构的DSP,对内存层次、指令并行、数据流模式都有极其苛刻的要求。今天这篇笔记,就聊聊我在Hexagon上折腾MLIR的一些真实经验。Hexagon的脾气:VLIW、HVX和TCMQualcomm Hexagon DSP从v60开始引入Hexagon Vector eXtensions(HVX),这是它的杀手锏——128字节宽的向量单元,支持整数和定点运算,专门为AI推理优化。但HVX有个怪癖:它只能
返回列表