CANN/pyto Pass模块功能总结

发布时间:2026/6/26 14:35:08

CANN/pyto Pass模块功能总结 PyPTO Pass 模块功能总结【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto1. Pass 总体介绍PyPTO的 Pass 是通过多层中间表示的渐降式编译转化并允许开发者显式注入优化策略从而实现人机协同以生成极致性能AI加速器代码的编译工序。这些 Pass 模块按照执行顺序分为三个主要阶段。1.1 Pass 阶段说明阶段主要目标Tensor Graph Pass对前端构建的张量计算图施以常量折叠、算子融合等硬件解耦优化剔除冗余计算逻辑、规整图结构简化高层计算语义同时完成图结构的语法校验与规范统一确保化简后的图结构符合后续降级要求平稳下译为 Tile 图为后续分层优化奠定基础Tile Graph Pass将张量操作精准分片为严丝合缝匹配本地缓冲区容量与对齐约束的 Tile规避内存访问冲突借助双缓冲技术、流水线编排策略及局部内存生命周期精细化管理充分释放硬件并行计算潜力平衡计算与内存访问效率同时完成 Tile 级别的合法性校验最终将优化后的图结构转换为 Block 图实现计算粒度向硬件适配的进一步下沉Block Graph Pass将 Tile 计算拆解为贴合多核执行模型的基本块执行寄存器分配、指令调度与显式数据预取等近硬件优化优化指令执行顺序、提升资源利用率减少数据访问延迟同时完成硬件资源约束校验确保优化后的基本块适配 AI 加速器多核架构最终由 CodeGen 模块遣译为可执行指令序列实现高层计算语义向底层硬件执行指令的精准落地保障代码执行的极致性能与稳定性2. Pass 三个阶段介绍2.1 Tensor Graph Pass 阶段Tensor Graph Pass 阶段处理 Tensor Graph 层面的优化主要关注冗余操作消除: 删除不必要的 Reshape、View 等操作类型转换优化: 自动插入和优化 Cast 操作内存冲突处理: 推断和解决内存访问冲突图结构转换: 将 Tensor Graph 展开为 Tile Graph2.2 Tile Graph Pass 阶段Tile Graph Pass 阶段处理 Tile Graph 层面的优化主要关注操作合并: 合并 View、Assemble、Reduce Copy 等操作内存优化: 分配内存类型、复用内存、拆分 tensor图划分: 将计算图划分为多个子图子图优化: 子图合并、子图复用、子图转换数据路径优化: 生成搬运操作、处理边界 tensor形状优化: 推断动态 shape、对齐 tensor shape2.3 Block Graph Pass 阶段Block Graph Pass 阶段处理 Block Graph 层面的优化主要关注参数管理: 推断参数索引、处理动态形状内存复用: 合并源目标 buffer、复用内存调度优化: 乱序调度、优化操作执行顺序同步管理: 插入同步操作、优化同步开销代码生成准备: 内存分配、copy out resolve、代码生成预处理3. Pass 详细介绍3.1 Tensor Graph Pass 阶段Pass 名称简要描述主要功能RemoveRedundantReshape删除冗余 Reshape 操作识别并删除输入输出形状相同或连续 Reshape 的冗余操作AutoCast自动插入类型转换操作根据 FP16/BF16/INT32 等类型支持插入必要 Cast 操作并缩短冗余 Cast 链InferMemoryConflict推断内存冲突通过前向和后向传播分析 tensor 内存使用检测冲突并插入 Copy 操作RemoveUndrivenView删除未被驱动的 View为 AssembleSSA 删除未驱动的 View 并降级为 AssembleExpandFunction展开 Tensor Graph将高层操作展开为 Tile 操作是 Tensor Graph 到 Tile Graph 的关键转换3.2 Tile Graph Pass 阶段Pass 名称简要描述主要功能MergeViewAssemble合并 View 和 Assemble将连续的 View/Assemble 合并为一个减少操作数量SplitReshape拆分 Reshape当输入输出存在重叠时拆分为多个 View 和 AssembleSplitRawTensor拆分 RawTensor当 LogicalTensor shape 小于 RawTensor shape 时创建新 RawTensorSplitLargeFanoutTensor拆分大扇出 tensor将多消费者消费的大 tensor 拆分为小 tensor提高并行度DuplicateOp复制 View 和 GatherIn为多消费者创建新操作避免操作共享AssignMemoryType分配内存类型根据操作需求和硬件限制分配合适内存类型UB/L1/L0 等InferDiscontinuousInput推断非连续输入从 InCast 前向传播检测冲突并插入 CopyInsertOpForViewAssemble插入 Copy 操作在 View 和 Assemble 间处理内存类型差异RemoveRedundantOp消除冗余操作识别并删除冗余的 View/Assemble/Register CopySplitK消除 ReduceAcc优化 K 轴归约将多个 A_MUL_B 的 CopyOut 直连到 GMGraphPartition图划分通过同构子图分组和合并算法进行图划分ReduceCopyMerge合并 Reduce Copy将连续的 Reduce Acc 合并为一个NBufferMergeNBuffer 合并通过着色算法将同构子图分组合并减少切换开销L1CopyInReuseMergeL1 Copy In 复用合并重复的 L1 Copy In 操作IntraSubgraphAdapter适配边界 tensor处理跨子图 tensor 传递插入 ASSEMBLE 和 VIEWGenerateMoveOp生成搬运操作将 VIEW/ASSEMBLE/CONVERT 转换为 CopyIn/CopyOut 等搬运操作CommonOperationEliminate消除重复计算通过哈希特征识别相同计算用一操作替换多个AxisCombine对齐广播输入插入 BRCB 或 EXPAND 确保输入最后一维对齐PadLocalBuffer对齐 tensor shape通过 padding 确保 tensor 满足 32B 等硬件对齐要求RemoveUnalignedReshape删除未对齐 Reshape移除尾轴非对齐的 reshape插入 CopyOut/CopyInReplaceTensor内存复用针对 inplace 操作等进行 tensor 内存复用PreGraphProcess预处理图结构设置子图颜色、边界、Cube 操作属性InferDynShape推断动态 shape通过拓扑排序遍历操作并调用 infer shapeSubgraphToFunction转换子图为函数构建子图调用关系处理 Incast/Outcast 和符号化3.3 Block Graph Pass 阶段Pass 名称简要描述主要功能InferParamIndex推断参数索引为子函数推断参数索引处理动态形状SrcDstBufferMerge合并源目标 buffer通过 inplace 语义和 L0 内存复用减少分配AddAlloc添加 Alloc 操作为需要分配内存的 tensor 插入 AllocOoOSchedule乱序调度分析依赖关系优化执行顺序提升并行度TuneTileOpSeqForVF优化 TileOp 序列调整 Pipe V 操作执行顺序优化同步开销RemoveAlloc移除 Alloc清理不需要的内存分配操作CopyOutResolve解析 CopyOut为 Outcast 插入操作触发 copy out resolveInsertSync插入同步操作插入 SetFlag 和 WaitFlag 确保数据依赖正确TuneSyncForVF优化同步操作调整 SetFlag 和 WaitFlag 位置优化同步开销MixSubgraphSplit拆分 Mix 子图将 Mix 子图拆分为独立的 Cube 和 Vector 子图GlobalMemoryReuse全局内存复用通过 TensorBucket 实现跨操作内存复用LoopAxesProc处理循环轴为 Vector Fusion 操作标记 loopGroup 和 loopAxesCodegenPreproc代码生成预处理保存 GM tensor 参数索引、强制 axis 合并【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻