如何读懂 NPUSim 指令流水图Perfetto 可视化操作与关键字段全解【免费下载链接】npu-simulatorNPUSim全称NPU Simulator是一款面向算子开发场景的SoC级芯片仿真工具用于分析运行在AI仿真器上的AI任务在各阶段的精度和性能数据如指令执行情况等。该工具有助于用户进行深度性能调优使研发人员在无法获取或芯片资源紧缺的情况下也能获得与真实芯片几乎一致的验证效果和性能反馈。项目地址: https://gitcode.com/cann/npu-simulatorNPUSimNPU Simulator是一款面向算子开发的SoC 级芯片仿真工具它能还原 AI 任务在各阶段的精度与性能数据其中最有价值的产物之一就是指令流水图Trace。本文带你用Perfetto打开并读懂 NPUSim 生成的trace_core*.json一次性搞懂泳道结构、关键指令字段和快速定位瓶颈的方法让新手也能像老手一样分析性能。为什么指令流水图是性能调优的核心指令流水图以指令维度还原每条指令在 AI Core 上的执行时序并关联调用栈帮助快速定位瓶颈。它比一个汇总数字更直观看并行计算与搬运流水是否重叠是否存在空泡看延迟某条指令在流水线里停留多久卡在哪一级看分布向量、标量、矩阵指令各自占比与耗时生成指令流水图的完整流程见 使用指南 · 指令流水图其报告目录结构大致如下report/ └── results/ └── kernel_*_reports/ ├── summary.json # 性能分析汇总 ├── aicore_utilization.json # AI Core 利用率 └── core_0/ └── trace_core0.json # 指令流水图Chrome Tracing JSON用 Perfetto 三步打开指令流水图trace_core*.json是标准 Chrome Tracing JSON推荐优先用 Perfetto 打开也支持 Chrome 浏览器导入文件访问 Perfetto 网页版点击 Open trace file选择trace_core*.json导入。缩放浏览用滚轮/快捷键放大缩放到感兴趣的 kernel 时间区间观察各泳道轨道的指令块分布。点击切片单击任意一个指令块底部会自动展开Details面板显示该指令的Name / Category / Start time / Duration / Thread与Arguments参数。Perfetto 支持大文件加载、多泳道筛选与 SQL 查询体验优于 Chrome 内置 tracing。下面是导入后的实际效果可以看到RVECEX_SL000到RVECEX_SL031一条条向量轨道上RV_VADD、RV_VMUL等执行块密集排布小提示浏览器单页运行时内存上限通常约2GB超大 trace 可能加载失败此时可用report -n指定少数核如单核先生成减小文件体积。看懂轨道泳道命名规律流水图里每个轨道泳道的名字都由核心类型_流水线分组 区段_指令类型组合而成例如AIC_CUBEINSTR_CUBE表示 AIC 核 Cube 流水线。掌握这套命名规律就能快速定位到目标子核心。常见轨道前缀含义前缀含义AIC矩阵计算核AIV0/AIV1向量核 0 / 向量核 1RVECEXvector 寄存器 EXECUTE执行指令RVECLDvector 寄存器 LOAD加载指令RVECSTvector 寄存器 SET/STORE 指令WARP00/WARP01…SIMT 模式下按 warp 划分的向量轨道完整轨道名对照表见 使用指南 · 表 2 轨道名说明。关键字段全解从指令块到 Arguments单击指令块后底部Details面板会给出结构化字段。以图中RV_VADD为例关键字段解读如下字段示例值含义NameRV_VADD指令名称如 RV_VLD、RV_PLT、RV_VADDCategoryinst事件类别指令为 instStart time00:00:00.045…指令起始时间Duration22ns指令执行耗时ThreadAIV0_A2_RVECEX[4]所属子核心 / 流水线 / 单元Argumentsunit / task_id / ps / inst_id / exec_ipc附加参数含 IPC 等性能分量其中Arguments里的exec_ipc非常关键它反映向量执行算力的利用率理论上限为 2双发射。IPC 分量越接近上限说明算力利用越充分这一点在 VF 报告里被系统化利用详见 VF 报告指南。图中还展示了底部Slices统计视图框选一段区间后Perfetto 会汇总该区间内各指令RV_VLD、RV_VST、RV_VADD等的Count与Wall Duration方便你一眼判断哪类指令占了最多时间从流水图到瓶颈定位的分析套路结合流水图与配套报告建议按下面这条链路排查看整体先在 性能分析汇总summary.json里确认top_level_diagnosis的主导流水线与利用率判断瓶颈方向。看并行在流水图上比对计算轨CUBE/RVECEX与搬运轨MTE1/MTE2是否重叠重叠率低说明存在空泡。看单核用report -n core聚焦可疑核放大到具体 kernel 区间。看指令单击耗时最长的指令块读Arguments的 IPC、task_id定位到代码调用栈。 若还想看各类型指令的耗时分布与统计Min/Max/Mean ticks可参考指令耗时分布报告直观呈现PUSHQ / SCALAR / RVECEX / RVECLD等的分布曲线常见问题速查加载失败文件过大触发浏览器内存上限用report -n减少核数重新生成或换更大的 trace 可视化后端。轨道太多看不懂先认准核心前缀AIC/AIV0/AIV1再按指令类型缩放到感兴趣子集。IPC 低怎么办优先看exec_ipc与主导流水线利用率必要时结合 VF 报告 定位最慢的 VF 函数。一句话总结指令流水图 打开trace_core*.json→ 用Perfetto导入 → 读泳道命名 → 点指令看Arguments/IPC → 结合summary.json定位瓶颈。掌握这套方法你就能在没有真实芯片的情况下获得与实芯几乎一致的性能反馈。 延伸阅读数据采集与报告生成全流程使用指南使用场景Kernel 直调 / PyTorch 调用使用场景VF 性能 JSON 字段详解VF 报告指南报告生成实现源码report 模块【免费下载链接】npu-simulatorNPUSim全称NPU Simulator是一款面向算子开发场景的SoC级芯片仿真工具用于分析运行在AI仿真器上的AI任务在各阶段的精度和性能数据如指令执行情况等。该工具有助于用户进行深度性能调优使研发人员在无法获取或芯片资源紧缺的情况下也能获得与真实芯片几乎一致的验证效果和性能反馈。项目地址: https://gitcode.com/cann/npu-simulator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考