CANNBot IR分析优化器 📅 2026/7/11 15:08:38 IR 分析优化器【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills概述IR中间表示分析优化器通过提取编译器的最终阶段 IRlast_pass.mlir对 triton 脚本进行分析优化。当 IR 分析给出优化建议时智能体Agent必须首先检查对应的优化点是否已在之前的迭代中执行过已执行→ 重新根据IR分析结果执行优化。并诊断为何之前的优化未能产生预期的效果。之前未命中→ 根据IR分析结果执行优化并分析之前未命中原因。无对应的优化点→ 直接应用 IR 分析优化器的优化建议。IR 多轮迭代模式在 Phase 4 调用方triton-op-generator AGENTS.md开启 IR 多轮迭代后IR优化点 25允许多轮重复命中其他优化点单轮即过。每轮必须遵守每轮重新提取 IR必须重新执行run_and_extract.sh提取基于上一轮优化后代码的最新last_pass.mlir禁止复用历史 IR 快照。聚焦增量分析本轮 IR 分析应聚焦两件事 —— (a) 上一轮 IR 优化是否带来预期效果profiling 或 speedup 对比(b) 是否还有新的优化建议。返回字段latency-optimizer 在返回信息中给出ir_has_more_suggestions: bool。仅当本轮还能给出新建议时为true若 IR 分析已无新建议即上一轮已是相同结论、无新增优化空间返回falsePhase 4 调用方据此退出 IR 多轮迭代。退出条件达到ir_max_iterations默认 20或ir_has_more_suggestions false任一成立即结束 IR 多轮迭代。IR 提取使用skill_dir/scripts/run_and_extract.sh script_name.py来提取 IR 文件,并将提取到的IR文件保存到workspace/ir_output/kernel_name环境变量变量值用途TRITON_DEBUG1启用 IR 转储目录TRITON_ALWAYS_COMPILE1强制重新编译即使存在缓存TRITON_DISABLE_LINE_INFO0保留源代码行信息TRITON_DISABLE_FFTS1禁用 FFTS910_95 不支持此功能ASCEND_RT_VISIBLE_DEVICES${NPU_DEVICE:-2}选择 NPU 设备提取流程使用上述环境变量运行 Python 脚本以触发编译并转储 IR。解析 stdout 中的Dumping intermediate results to dir行。对于每个唯一的内核通过kernel.ttadapter.mlir中的内核名称去重运行bishengir-compile。脚本会自动探测当前编译器支持的 IR dump 参数优先级--mlir-print-ir-after-all--bishengir-print-ir-after--print-after-all也可通过环境变量BISHENGIR_PRINT_IR_FLAG强制指定。若使用--mlir-print-ir-after-all/--print-after-all输出中会有多个IR Dump After段落脚本提取最后一个。若使用--bishengir-print-ir-afterpass输出直接就是该 pass 后的 IR。从编译器输出中提取最后一个阶段的 IR。保存至IR_OUTPUT_DIR/kernel_name_last_pass.mlir。重要提示bishengir-compile会调用hivmc-a5作为子进程。bishengir 的 bin 目录必须位于$PATH中。如果缺失流程将在InjectIR处停止而不会继续到 LLVM IR。输出文件文件描述kernel_name_ttir.mlirTriton 前端 IR可选kernel_name_ttadapter.mlir适配器 IR可选kernel_name_last_pass.mlirBishengIR 最终阶段 IR必需中间文件的保存由IR_SAVE_TTIR、IR_SAVE_TTADAPTER和IR_SAVE_ALL控制。处理自动调优 (Autotune)当使用triton.autotune时会生成多个转储目录每个配置变体一个。脚本通过内核名称进行去重仅保留每个唯一内核的第一个配置变体。无论有多少个 autotune 配置每个内核最终只生成一个 IR 文件。Triton 缓存损坏编译阶段bishengir-compile的段错误通常是由 Triton 缓存中不兼容的预编译头引起的。在进一步调查之前请清除缓存rm -rf ~/.triton/cache/*IR 分析决策流程在做任何分析策略之前先仔细阅读以下文件获取 IR 分析优化相关指南主要参考流程→./docs_triton_IR/AGENTS.md支撑文件目录./docs_triton_IR/AscendNPU-IR/README.md./docs_triton_IR/docs_ascendnpu_ir/README.md./docs_triton_IR/docs_for_triton_agent/README.md./docs_triton_IR/docs_triton_ascend/README.md./docs_triton_IR/triton-ascend/README.md重要约束主要参考流程./docs_triton_IR/AGENTS.md中 性能分析指南的 步骤1IR分析主要和 知识库层级文档指引中的IR分析部分对生成的IR文件进行分析优化。 严禁在优化完成前使用msprof分析工具【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考