MLIR-AIR Passes 分析与总结
对 MLIR-AIR 的 Passes 进行分析与总结。
1. AIRTransformPasses
这类变换 Passes 主要作用于 AIR 层级,包括循环优化、依赖分析、内存管理、数据移动优化、模式转换、异构硬件优化、代码生成、规范化和清理等,属于前端的优化 Passes。
1.1 循环优化类
1 -affine-loop-opt
Affine循环变换(包括分块等)
2 -air-automatic-tiling
多维循环分块(手动/自动)
3 -air-loop-merging
合并完美嵌套的循环
4 -air-loop-permutation
循环重排序
5 -air-isolate-async-dma-loop-nests
隔离DMA循环为完美嵌套结构
6 -air-regularize-loop
正则化非完美循环结构
7 -air-unroll-outer-affine-loops
外层循环展开
8 -air-unroll-loop-for-pipelining-pattern
流水线模式下的循环展开
9 -air-label-scf-for-in-segment
标注循环以支持后续展开
1.2 依赖分析类
1 -air-annotate-front-and-back-ops-in-for-pattern
标注循环体依赖图首尾操作
2 -air-dependency
异步事件依赖分析
3 -air-dependency-canonicalize
依赖图规范化(消除非支配边)
4 -air-dependency-schedule-opt
基于依赖的调度优化
1.3 内存管理类
1 -air-dealias-memref
内存引用去除别名
2 -air-fuse-alloc-dealloc
融合内存分配/释放操作
3 -air-hoist-alloc-in-for-pattern
静态内存分配提升
4 -air-enforce-loop-carried-memref-dealloc
强制循环迭代内存释放
5 -air-shrink-memref-sizes-by-access
按访问模式缩减内存大小
6 -air-split-l2-memref
L2内存分片
1.4 数据移动优化类
1 -air-broadcast-detection
DMA广播模式检测
2 -air-dma-to-channel
DMA转通道通信
3 -air-opt-memtile-dma-bds
MemTile DMA块描述符优化
4 -air-opt-shim-dma-bds
Shim DMA块描述符优化
5 -air-fuse-channels
通道融合
6 -air-specialize-channel-wrap-and-stride
通道wrap/stride特化
7 -air-specialize-dma-broadcast
DMA广播特化
1.5 模式转换类
1 -air-construct-ping-pong-dependency-pattern
构建Ping-Pong依赖模式
2 -air-ping-pong-transform
实现Ping-Pong流水线
3 -air-label-scf-for-to-ping-pong
标注Ping-Pong候选循环
4 -air-hoist-ops-not-using-ping-pong
隔离无关操作
1.6 异构硬件优化类
1 -air-collapse-herd
Herd维度折叠
2 -air-place-herds
Herd物理布局规划
3 -air-lower-herd-parallel
转换并行结构
4 -air-label-broadcast-channel-with-tile
标注tile坐标的广播通道
1.7 代码生成类
1 -air-linalg-codegen
Linalg算子代码生成策略
2 -air-lower-linalg-tensors
Linalg张量到循环的转换
3 -air-return-elimination
返回值参数化
1.8 规范化和清理类
1 -air-rm-linalg-name
移除Linalg标记属性
2 -air-dependency-canonicalize
依赖图规范化
3 -air-linalg-name
添加Linalg标记属性
2. AIRConversionPasses
这类优化位于编译流程的后期阶段,直接面向 AIE 目标硬件架构进行代码生成和优化。
2.1 结构转换类
1 -air-insert-launch-and-segment-around-herd
构建AIR层次结构(插入launch/segment包装herd)
2 -air-wrap-func-with-parallel
函数体并行化包装
3 -air-par-to-herd
并行循环转herd结构
4 -air-par-to-launch
并行循环转launch结构
5 -air-par-to-segment
并行循环转segment结构
2.2 数据移动优化类
1 -air-copy-to-dma
Memcpy 转 DMA 操作
2.3 后端代码生成类
1 -air-linalg-to-func
Linalg 算子转函数调用
2 -air-to-aie
AIR 到 AIE 硬件描述转换
3 -air-to-async
AIR转异步操作表示
4 -air-to-std
AIR转标准操作
5 -airrt-to-llvm
AIRRt 转 LLVM IR
6 -airrt-to-npu
AIRRt转NPU指令
2.4 设备相关处理类
1 -air-split-devices
按AIE设备切分模块
支付宝
微信