| 01 |
InlineFunctions |
把 FunctionType.Inline 函数体展开到每个调用点 |
| 02 |
UnrollLoops |
在编译期展开 ForKind::Unroll 循环 |
| 03 |
CtrlFlowTransform |
把 break / continue 改写为结构化控制流 |
| 04 |
ConvertToSSA |
转换为 SSA 形式,含变量重命名、phi 节点与 iter_args |
| 05 |
Simplify |
折叠算术表达式、shape 表达式与标量常量绑定 |
| 06 |
FlattenCallExpr |
把嵌套调用表达式拍平为三地址形式 |
| 07 |
OutlineHierarchyScopes |
把 Hierarchy 作用域外提为带 level / role 元数据的函数 |
| 08 |
OutlineIncoreScopes |
把 InCore 作用域外提为独立函数 |
| 09 |
OutlineClusterScopes |
把 Cluster 作用域外提为 Group 函数,独立 Spmd 作用域外提为 Spmd 函数 |
| 10 |
ConvertTensorToTileOps |
在 InCore 函数中把 tensor 算子转为 tile 算子,并更新编排层调用点 |
| 11 |
OptimizeOrchTensors |
消除编排层冗余分配并改善数据流 |
| 12 |
LowerCompositeOps |
把复合 tile / 分布式算子分解为基础原语 |
| 13 |
FlattenTileNdTo2D |
合并除最后一维外的所有维度,把 3D+ tile 操作拍平为 2D |
| 14 |
LegalizeTileCast |
把 ISA 无法单条指令完成的 tile.cast 展开为最短的原生 cast 链 |
| 15 |
AutoTileMatmulL0 |
依据后端 L0 容量选择 L0 tile 形状 (m, n, k) 并据此分块 matmul |
| 16 |
CanonicalizeTileSlice |
把 tile.slice 下降为规范的 tile.extract 形式 |
| 17 |
InferTileMemorySpace |
推断每个 tile 的片上 MemorySpace,并插入 tile.move 消解残留不匹配 |
| 18 |
ResolveBackendOpLayouts |
修正逐元素算子所需的后端 tile layout |
| 19 |
LowerAutoVectorSplit |
把 AUTO pl.split 的混合 InCore 函数转换为显式 split_aiv 形式 |
| 20 |
ExpandMixedKernel |
把混合 InCore 函数拆分为独立的 AIC(Cube)与 AIV(Vector)kernel |
| 21 |
InjectGMPipeBuffer |
为经 GM 路由的跨核 pipe 注入 __gm_pipe_buffer workspace(Ascend910B) |
| 22 |
SplitVectorKernel |
标记 split 属性并处理不拆分的双 AIV 路径 |
| 23 |
StampTfreeSplit |
把每个跨核 tpop 的 split 与 pipe id 复制到与之配对的 tfree 上 |
| 24 |
NormalizeReturnOrder |
把每个 InCore 函数的返回元组重排为规范顺序 |
| 25 |
SkewCrossCorePipeline |
对混合 cube/vector 循环做软流水,使两个核重叠执行 |
| 26 |
LowerPipelineLoops |
把 pl.pipeline(N, stage=F) 的循环体复制 F 份以启用乒乓缓冲 |
| 27 |
CanonicalizeIOOrder |
按 scalar → load → compute → store 阶梯重排流水循环体内的语句 |
| 28 |
MaterializeTensorStrides |
为每个尚无 stride 的 tensor view 填入紧致规范 stride |
| 29 |
InitMemRef |
初始化 MemRef 并创建地址未分配的 alloc 操作 |
| 30 |
MaterializeSemanticAliases |
强制语义要求同一分配的缓冲区真正共用一块(循环携带、原地更新) |
| 31 |
MemoryReuse |
基于生命周期分析复用缓冲区并删除冗余 alloc |
| 32 |
AllocateMemoryAddr |
为已有 alloc 操作分配真实地址 |
| 33 |
FoldNoOpReshape |
折叠既不改变物理形状也不改变分配的 tile.reshape |
| 34 |
FuseCreateAssembleToSlice |
把 tensor.create + tensor.assemble 融合为单个 tensor.slice 视图 |
| 35 |
DeriveCallDirections |
先物化包装函数的 ParamDirection,再为每个调用逐实参推导 ArgDirection |
| 36 |
AutoDeriveTaskDependencies |
推导保守的任务间依赖边 |
| 37 |
ExpandManualPhaseFence |
压缩 manual scope 中收益明确的全数组 TaskId 依赖 |
| 38 |
SynthesizeAllReduceSignals |
把 host allreduce 的可选 signal 转为显式的内部 signal IR |
| 39 |
MaterializeCommDomainScopes |
在每个 host 编排函数体内装配 WindowBuffer 与 CommDomainScopeStmt 包装 |
| 40 |
LowerHostTensorCollectives |
把 host 级 tensor 集合通信改写为内部 builtin chip 派发 |
| 41 |
MaterializeDistTensorCtx |
为每个 DistributedTensor 物化显式的 CommCtx 参数与实参 |
| 42 |
MaterializeRuntimeScopes |
插入 AUTO RuntimeScopeStmt 使编排 codegen 能 1:1 发射 PTO2_SCOPE |
| 43 |
ClassifyIterArgCarry |
把编排层 ForStmt 的每个 iter_arg 分类为平凡别名或需物化的重绑定携带 |