当前位置: 首页 > news >正文

CANN/pyto Pass模块功能总结

PyPTO Pass 模块功能总结

【免费下载链接】pyptoPyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto

1. 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 Graph

2.2 Tile Graph Pass 阶段

Tile Graph Pass 阶段处理 Tile Graph 层面的优化,主要关注:

  • 操作合并: 合并 View、Assemble、Reduce Copy 等操作
  • 内存优化: 分配内存类型、复用内存、拆分 tensor
  • 图划分: 将计算图划分为多个子图
  • 子图优化: 子图合并、子图复用、子图转换
  • 数据路径优化: 生成搬运操作、处理边界 tensor
  • 形状优化: 推断动态 shape、对齐 tensor shape

2.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 并降级为 Assemble
ExpandFunction展开 Tensor Graph将高层操作展开为 Tile 操作,是 Tensor Graph 到 Tile Graph 的关键转换

3.2 Tile Graph Pass 阶段

Pass 名称简要描述主要功能
MergeViewAssemble合并 View 和 Assemble将连续的 View/Assemble 合并为一个,减少操作数量
SplitReshape拆分 Reshape当输入输出存在重叠时,拆分为多个 View 和 Assemble
SplitRawTensor拆分 RawTensor当 LogicalTensor shape 小于 RawTensor shape 时创建新 RawTensor
SplitLargeFanoutTensor拆分大扇出 tensor将多消费者消费的大 tensor 拆分为小 tensor,提高并行度
DuplicateOp复制 View 和 GatherIn为多消费者创建新操作,避免操作共享
AssignMemoryType分配内存类型根据操作需求和硬件限制分配合适内存类型(UB/L1/L0 等)
InferDiscontinuousInput推断非连续输入从 InCast 前向传播,检测冲突并插入 Copy
InsertOpForViewAssemble插入 Copy 操作在 View 和 Assemble 间处理内存类型差异
RemoveRedundantOp消除冗余操作识别并删除冗余的 View/Assemble/Register Copy
SplitK消除 ReduceAcc优化 K 轴归约,将多个 A_MUL_B 的 CopyOut 直连到 GM
GraphPartition图划分通过同构子图分组和合并算法进行图划分
ReduceCopyMerge合并 Reduce Copy将连续的 Reduce Acc 合并为一个
NBufferMergeNBuffer 合并通过着色算法将同构子图分组合并,减少切换开销
L1CopyInReuseMergeL1 Copy In 复用合并重复的 L1 Copy In 操作
IntraSubgraphAdapter适配边界 tensor处理跨子图 tensor 传递,插入 ASSEMBLE 和 VIEW
GenerateMoveOp生成搬运操作将 VIEW/ASSEMBLE/CONVERT 转换为 CopyIn/CopyOut 等搬运操作
CommonOperationEliminate消除重复计算通过哈希特征识别相同计算,用一操作替换多个
AxisCombine对齐广播输入插入 BRCB 或 EXPAND 确保输入最后一维对齐
PadLocalBuffer对齐 tensor shape通过 padding 确保 tensor 满足 32B 等硬件对齐要求
RemoveUnalignedReshape删除未对齐 Reshape移除尾轴非对齐的 reshape,插入 CopyOut/CopyIn
ReplaceTensor内存复用针对 inplace 操作等进行 tensor 内存复用
PreGraphProcess预处理图结构设置子图颜色、边界、Cube 操作属性
InferDynShape推断动态 shape通过拓扑排序遍历操作并调用 infer shape
SubgraphToFunction转换子图为函数构建子图调用关系,处理 Incast/Outcast 和符号化

3.3 Block Graph Pass 阶段

Pass 名称简要描述主要功能
InferParamIndex推断参数索引为子函数推断参数索引,处理动态形状
SrcDstBufferMerge合并源目标 buffer通过 inplace 语义和 L0 内存复用减少分配
AddAlloc添加 Alloc 操作为需要分配内存的 tensor 插入 Alloc
OoOSchedule乱序调度分析依赖关系,优化执行顺序,提升并行度
TuneTileOpSeqForVF优化 TileOp 序列调整 Pipe V 操作执行顺序,优化同步开销
RemoveAlloc移除 Alloc清理不需要的内存分配操作
CopyOutResolve解析 CopyOut为 Outcast 插入操作触发 copy out resolve
InsertSync插入同步操作插入 SetFlag 和 WaitFlag 确保数据依赖正确
TuneSyncForVF优化同步操作调整 SetFlag 和 WaitFlag 位置,优化同步开销
MixSubgraphSplit拆分 Mix 子图将 Mix 子图拆分为独立的 Cube 和 Vector 子图
GlobalMemoryReuse全局内存复用通过 TensorBucket 实现跨操作内存复用
LoopAxesProc处理循环轴为 Vector Fusion 操作标记 loopGroup 和 loopAxes
CodegenPreproc代码生成预处理保存 GM tensor 参数索引、强制 axis 合并

【免费下载链接】pyptoPyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/785748/

相关文章:

  • Python 爬虫高级实战:学术文献高效采集与整理
  • 利用Taotoken为内容生成平台动态选择高性价比模型
  • AI赋能优化算法:从LSTM、RL到GNN的智能选择与参数调优实践
  • CANN/ge: GE 图拆分特性分析
  • Docker化下载中心部署指南:集成Aria2、qBittorrent与Rclone的自动化方案
  • 使用curl命令快速测试Taotoken大模型API连通性与基础功能
  • CANN / pto-isa文档更新模式
  • 【新手放心进】Numpy 零基础超全入门教程,从安装到矩阵运算一站式学会
  • GE自定义算子IR实现开发指南
  • 数据就绪度:AI项目成功的隐形地基与可视化诊断实践
  • CEM算法出处 —— 交叉熵强化学习算法 —— 强化学习算法中经典的CEM算法
  • Python 爬虫高级实战:百亿级数据爬虫架构优化
  • 数字孪生与物联网安全:AI驱动的威胁检测与防御技术解析
  • 使用python在ubuntu上编写第一个调用taotoken多模型广场的脚本
  • CANN oam-tools运维工具集
  • 生成式AI如何重塑社会工程攻击与防御策略
  • 机考question2、question3
  • 从草图到3D:基于NeRF与生成式AI的智能设计工作流解析
  • 呼和浩特搬家机构最新推荐:专业搬家服务企业实力对比与选择指南 - 品牌策略师
  • 《深入浅出通信原理》连载081-085
  • CANN/ops-cv双线性插值调整算子
  • 不知道如何降AI率?2026年保姆级降AI提示词总结,教你分分钟去除aigc痕迹!
  • 为AI编程助手构建持久记忆层:amem架构解析与实战指南
  • 如何快速获取百度网盘提取码:终极智能解析工具完整指南
  • 如何3秒获取百度网盘提取码:开源智能工具实战指南
  • 2026全年度最新口碑见证!新疆旅行社哪家好靠谱?推荐新疆正规/纯玩无购物/小包团/跟团定制旅游地接社中旅!附新疆本地旅行社top2标杆排名对比!建议收藏! - 奋斗者888
  • CANN/ops-rand项目目录结构
  • 深度解析碧蓝航线智能自动化方案:解放双手的终极指南
  • CANN/metadef字符串转换函数
  • CANN/driver:昇腾芯片物理ID转换