CANNBot Skills HFusion变换Pass总览

📅 2026/7/11 17:40:23
CANNBot Skills HFusion变换Pass总览
HFusion 变换 Pass 总览【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills1. 概述HFusion 方言提供了 40 个变换 Pass覆盖操作融合、自动调度、自动向量化、类型合法化、Tiling 数据打包等多个编译阶段。本文档列出所有 Pass 的名称和功能简述。源码参考Passes.td、Passes.h2. 融合与调度 PassPass 名称作用域功能简述hfusion-fuse-opsModuleOp张量上的操作融合将可融合操作 outline 为独立函数hfusion-auto-scheduleModuleOp自动调度融合 Kernel生成 Tiling 参数hfusion-infer-func-fusion-kindFuncOp推断函数的融合类型hfusion-infer-out-shapesModuleOp生成输出张量形状推断函数hfusion-compose-multi-reduceFuncOp组合多个归约为单个操作hfusion-decompose-multiFuncOp将多操作分解为单操作hfusion-pre-vectorization-fusionFuncOp向量化前的逐元操作融合hfusion-eliminate-duplicate-funcsModuleOp消除融合后的重复函数3. 向量化 PassPass 名称作用域功能简述hfusion-auto-vectorizeModuleOp自动向量化 Linalg 命名操作hfusion-auto-vectorize-v2ModuleOp第二版自动向量化Tile Fuse Vectorizehfusion-generic-unrollerFuncOp非可向量化 Linalg 操作的展开hfusion-pull-slice-into-vector-functionModuleOp将 extract_slice/insert_slice 拉入 VF 函数outline-vector-functionModuleOpOutline 向量函数hfusion-vectorize-opsModuleOp向量化 HFusion 操作remove-mask-from-unaligned-reduction-loopFuncOp移除未对齐归约循环的掩码4. 类型合法化 PassPass 名称作用域功能简述hfusion-legalize-scalarFuncOp将标量操作合法化为张量操作hfusion-legalize-bf16FuncOp将 BF16 类型合法化为 FP32hfusion-legalize-fp8FuncOp将 FP8 类型合法化为 FP32hfusion-legalize-boolModuleOp将 int8/int1 布尔类型合法化hfusion-downgrade-fp64FuncOp将 FP64 常量降级为 FP32hfusion-normalize-opsFuncOp规范化 HFusion 操作hfusion-normalize-slice-opsFuncOp规范化 Slice 操作5. Tiling 与数据打包 PassPass 名称作用域功能简述hfusion-pack-tiling-dataModuleOp将动态 Tiling 信息打包为结构体hfusion-constantize-tiling-dataModuleOp在 Tiling 和 Device 函数间传播常量hfusion-add-ffts-addrModuleOp添加 FFTS 基地址到函数参数6. 形状与参数变换 PassPass 名称作用域功能简述hfusion-tensor-results-to-out-paramsModuleOp将张量结果移至函数输出参数hfusion-hoist-tensor-emptyModuleOp将 tensor.empty 提升到函数参数并合并hfusion-simplify-vf-argModuleOp简化 VF 函数参数hfusion-merge-vfModuleOp合并 VF 函数hfusion-fold-unit-dimsFuncOp折叠 Linalg 操作中的单位维度7. 操作变换 PassPass 名称作用域功能简述hfusion-convert-generic-to-namedFuncOp将 Linalg generic 转换为命名操作hfusion-flatten-opsFuncOp展平 Linalg 和 HFusion 操作hfusion-inline-brcFuncOp内联广播类操作hfusion-outline-single-opFuncOpOutline 单个 Linalg 操作为 Kernelhfusion-simplify-opsFuncOp简化操作hfusion-reorder-opsFuncOp按 BFS 重排操作hfusion-generalizeFuncOp将 HFusion 操作转换为 linalg.generichfusion-decomposeFuncOp分解实现 AggregatedOpInterface 的操作8. 缓存与符号 PassPass 名称作用域功能简述hfusion-cache-ioFuncOp缓存输入输出参数hfusion-cache-io-for-return-argFuncOp缓存直接返回的参数hfusion-recache-ioFuncOp重新缓存 IOhfusion-remove-cache-ioFuncOp移除缓存 IOhfusion-fold-symbolic-dimFuncOp用 hfusion::SymbolicDimOp 替换 tensor.dimhfusion-unfold-symbolic-dimFuncOp将 SymbolicDimOp 替换为符号参数hfusion-drop-symbolsFuncOp丢弃操作中的 ranked tensor 符号9. Host 函数与 Triton 适配 PassPass 名称作用域功能简述hfusion-wrap-host-funcModuleOp为 Host 辅助函数创建包装函数adapt-triton-kernelModuleOp适配 Triton 入口 Kernel10. 关键 Pass 选项10.1 hfusion-fuse-ops选项类型默认值说明output-modeOutputModeMultipleOutline 函数输出模式fusion-modeFusionKindUnknown融合类型always-inlineboolfalse始终内联 outline 函数move-out-to-parambooltrue将张量输出移至参数max-horizontal-fusion-sizeint-1最大水平融合大小multi-kernelboolfalse启用多 Kernel outlineenable-symbol-analysisboolfalse启用符号分析10.2 hfusion-auto-vectorize选项类型默认值说明vector-lengthunsigned256向量长度字节peel-loopsboolfalse尝试剥离循环max-vectorize-axesint64_t-1最大向量化轴数tree-reduceboolfalse使用树形归约10.3 hfusion-flatten-ops选项类型默认值说明flatten-modeFlattenModeGreedy展平模式skip-hostboolfalse跳过 Host 函数multi-dynamic-shapebooltrue折叠多个动态形状register-basedboolfalse使用基于寄存器的展平模式skip-scopebooltrue存在 scope 时跳过10.4 hfusion-auto-vectorize-v2选项类型默认值说明vector-lengthunsigned256向量长度字节max-fused-opsunsigned15单个融合节点最大操作数enable-multiple-consumer-fusionboolfalse启用多消费者融合【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考