文件最后提交记录最后更新时间
docs: 补充架构文档与约束文档 Co-authored-by: stevenaw0<huangguijun@huawei.com> # message auto-generated for no-merge-commit merge: !1896 merge add_architecture_doc into develop docs: 补充架构文档与约束文档 Created-by: stevenaw0 Commit-by: stevenaw0 Merged-by: cann-robot Description: # Pull Request ## 描述 补充 GE 架构文档体系,包括: - 新增 docs/architecture/ 目录结构 - 新增编译器、AscendIR、运行时架构文档 - 新增 Dump 模块特性设计文档 - 将原关键设计原则文档拆分为独立约束文档:内存约束、RT2 运行时、图拆分、流分配、静态 Shape 运行时、图基础结构 - 移除原约束文档中的行号引用,避免代码变动后失效 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如有关联的 Issue,请填写 --> ## 如何测试 文档变更,无需额外测试。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 See merge request: cann/ge!18961 个月前
docs: 优化融合 pattern pass 文档&&Python pass API/行为调整 Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !3248 merge doc/pass-reade-me into develop docs: 优化融合 pattern pass 文档&&Python pass API/行为调整 Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 优化融合 Pattern Pass 的机制说明、开发指南和 Python 写法体验,目标是让用户能按文档理解机制并完成自定义融合 pass 开发。 主要变更: - 新增融合 Pattern Pass 特性文档,按“匹配 → 条件过滤 → 替换 → 边界规则 → capture tensor → DecomposePass → 执行阶段”说明统一机制。 - 新增 Python / C++ 融合 Pass 开发指南,Python 侧突出运行时接入、@pattern 表达式写法和 replacement 表达式返回。 - 删除旧的混合指南,将内容拆分到特性文档和 C++/Python 指南中,并更新 examples、架构文档和 ASCEND_GE_PY_PASS_PATH 文档入口。 - 收口 Python capture tensor 写法:去掉公开的独立 capture_tensor() helper,统一使用 Pattern.capture_tensor(...)。 - 增强 Pattern.capture_tensor:支持直接传入 TensorHolderNodeNodeIo,示例写法从 pat.capture_tensor(capture_tensor(matmul)) 简化为 pat.capture_tensor(matmul)。 - 增强 @pattern 自动 capture 规则:从“只捕获已访问输入”提升为“先捕获已访问输入,再捕获 return 的 pattern 输出”,并在文档中明确 capture 顺序。 ## 变更类型 - [ ] Bug 修复 - [x] 新功能 - [ ] 代码风格更新(格式化,局部变量) - [ ] 重构(既不修复错误也不增加功能的代码变动) - [ ] 构建过程或辅助工具的变动 - [x] 文档内容更新 ## 关联的 Issue 无 ## 如何测试 已执行: - git diff --check - python3 -m py_compile 检查修改过的 Python pass 框架文件、示例和 Python 测试文件 - 检查本 PR 修改文档中的相对链接均存在 - 检索确认旧的 capture_tensor(capture_tensor(...)) 嵌套写法、独立 capture_tensor 导出和旧文档入口已清理 - python3 -m pytest tests/ge/ut/ge/graph/pyge_tests/python_pattern_pass_test.py::... - ut_fusion_pass_executor_utest ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 当前 PR 包含文档和 Python pass API/行为调整。@pattern 自动 capture 顺序为:先按输入序号捕获已访问的 inputs,再按 return 结构顺序捕获 pattern 输出。 See merge request: cann/ge!32483 天前
docs: 优化融合 pattern pass 文档&&Python pass API/行为调整 Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !3248 merge doc/pass-reade-me into develop docs: 优化融合 pattern pass 文档&&Python pass API/行为调整 Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 优化融合 Pattern Pass 的机制说明、开发指南和 Python 写法体验,目标是让用户能按文档理解机制并完成自定义融合 pass 开发。 主要变更: - 新增融合 Pattern Pass 特性文档,按“匹配 → 条件过滤 → 替换 → 边界规则 → capture tensor → DecomposePass → 执行阶段”说明统一机制。 - 新增 Python / C++ 融合 Pass 开发指南,Python 侧突出运行时接入、@pattern 表达式写法和 replacement 表达式返回。 - 删除旧的混合指南,将内容拆分到特性文档和 C++/Python 指南中,并更新 examples、架构文档和 ASCEND_GE_PY_PASS_PATH 文档入口。 - 收口 Python capture tensor 写法:去掉公开的独立 capture_tensor() helper,统一使用 Pattern.capture_tensor(...)。 - 增强 Pattern.capture_tensor:支持直接传入 TensorHolderNodeNodeIo,示例写法从 pat.capture_tensor(capture_tensor(matmul)) 简化为 pat.capture_tensor(matmul)。 - 增强 @pattern 自动 capture 规则:从“只捕获已访问输入”提升为“先捕获已访问输入,再捕获 return 的 pattern 输出”,并在文档中明确 capture 顺序。 ## 变更类型 - [ ] Bug 修复 - [x] 新功能 - [ ] 代码风格更新(格式化,局部变量) - [ ] 重构(既不修复错误也不增加功能的代码变动) - [ ] 构建过程或辅助工具的变动 - [x] 文档内容更新 ## 关联的 Issue 无 ## 如何测试 已执行: - git diff --check - python3 -m py_compile 检查修改过的 Python pass 框架文件、示例和 Python 测试文件 - 检查本 PR 修改文档中的相对链接均存在 - 检索确认旧的 capture_tensor(capture_tensor(...)) 嵌套写法、独立 capture_tensor 导出和旧文档入口已清理 - python3 -m pytest tests/ge/ut/ge/graph/pyge_tests/python_pattern_pass_test.py::... - ut_fusion_pass_executor_utest ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 当前 PR 包含文档和 Python pass API/行为调整。@pattern 自动 capture 顺序为:先按输入序号捕获已访问的 inputs,再按 return 结构顺序捕获 pattern 输出。 See merge request: cann/ge!32483 天前
fix: es创建netoutput节点不再创建输出tensordesc Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !3294 merge docs/fusion-pattern-pass-index into develop fix: es创建netoutput节点不再创建输出tensordesc Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 - 在 AGENTS.mddocs/architecture/README.md 补充 fusion_pattern_pass.md 文档入口。 - 调整 ES C GraphBuilder 创建 NetOutput 的行为:只保留动态输入 TensorDesc,不再创建输出 TensorDesc。 - 同步清理非 autofuse runtime stub 中依赖 NetOutput 输出 TensorDesc 的设置。 - 调整 Python node_test,普通输出属性和输出数量测试改用 Add 节点,避免继续假设 NetOutput 存在输出 TensorDesc。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [x] Bug 修复 - [ ] 新功能 - [ ] 代码风格更新(格式化,局部变量) - [ ] 重构(既不修复错误也不增加功能的代码变动) - [ ] 构建过程或辅助工具的变动 - [x] 文档内容更新 ## 关联的Issue 无 ## 如何测试 - git diff --check upstream/develop...HEAD - python3 -m py_compile tests/ge/ut/ge/graph/pyge_tests/node_test.py - python3 -m pytest tests/ge/ut/ge/graph/pyge_tests/node_test.py -q - 静态搜索确认本次 PR 不再修改 autofuse ESB helper,ES C GraphBuilder 不再注册 NetOutput 动态输出。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 目标分支:develop。 本次先收敛非 autofuse 场景,暂不调整 tests/autofuse/framework/eager_style_graph_builder/esb_graph.cpp。 See merge request: cann/ge!32941 天前
docs: 优化融合 pattern pass 文档&&Python pass API/行为调整 Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !3248 merge doc/pass-reade-me into develop docs: 优化融合 pattern pass 文档&&Python pass API/行为调整 Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 优化融合 Pattern Pass 的机制说明、开发指南和 Python 写法体验,目标是让用户能按文档理解机制并完成自定义融合 pass 开发。 主要变更: - 新增融合 Pattern Pass 特性文档,按“匹配 → 条件过滤 → 替换 → 边界规则 → capture tensor → DecomposePass → 执行阶段”说明统一机制。 - 新增 Python / C++ 融合 Pass 开发指南,Python 侧突出运行时接入、@pattern 表达式写法和 replacement 表达式返回。 - 删除旧的混合指南,将内容拆分到特性文档和 C++/Python 指南中,并更新 examples、架构文档和 ASCEND_GE_PY_PASS_PATH 文档入口。 - 收口 Python capture tensor 写法:去掉公开的独立 capture_tensor() helper,统一使用 Pattern.capture_tensor(...)。 - 增强 Pattern.capture_tensor:支持直接传入 TensorHolderNodeNodeIo,示例写法从 pat.capture_tensor(capture_tensor(matmul)) 简化为 pat.capture_tensor(matmul)。 - 增强 @pattern 自动 capture 规则:从“只捕获已访问输入”提升为“先捕获已访问输入,再捕获 return 的 pattern 输出”,并在文档中明确 capture 顺序。 ## 变更类型 - [ ] Bug 修复 - [x] 新功能 - [ ] 代码风格更新(格式化,局部变量) - [ ] 重构(既不修复错误也不增加功能的代码变动) - [ ] 构建过程或辅助工具的变动 - [x] 文档内容更新 ## 关联的 Issue 无 ## 如何测试 已执行: - git diff --check - python3 -m py_compile 检查修改过的 Python pass 框架文件、示例和 Python 测试文件 - 检查本 PR 修改文档中的相对链接均存在 - 检索确认旧的 capture_tensor(capture_tensor(...)) 嵌套写法、独立 capture_tensor 导出和旧文档入口已清理 - python3 -m pytest tests/ge/ut/ge/graph/pyge_tests/python_pattern_pass_test.py::... - ut_fusion_pass_executor_utest ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 当前 PR 包含文档和 Python pass API/行为调整。@pattern 自动 capture 顺序为:先按输入序号捕获已访问的 inputs,再按 return 结构顺序捕获 pattern 输出。 See merge request: cann/ge!32483 天前
README.md

GE 架构文档

本文档集从不同维度介绍 GE (Graph Engine) 的架构设计,面向希望为 GE 贡献代码的开发者,帮助快速理解项目整体结构、核心设计决策和各模块的实现细节。

排除测试后约 79 万行有效代码,8千余个源文件:

模块 占比 职责
compiler 34% 图编译(优化、分区、构建)
runtime 20% 图执行(加载、执行、Hybrid)
graph_metadef 12% IR 定义、算子注册
dflow 11% 分布式流框架
base 7% 基础设施
inc 6% 公共头文件
api 4% API 接口
parser 3% 模型解析

架构总览

文档 说明
GE 架构介绍 系统架构总览、AscendIR 介绍、编译优化、插件扩展机制

模块架构文档

文档 说明
AscendIR AscendIR 图中间表示的详细设计
编译器 GE Compiler 的编译流程、优化 Pass、引擎分区、构建阶段
运行时 GE Executor 的模型加载、Sink 模式、Hybrid 执行、v2 架构

特性设计文档

以下文档描述跨模块的特性设计:

文档 说明
Dump 模块 Dump 模块整体设计:架构分层、RT1.0/RT2.0 适配、HCCL 处理、动态开关
外置权重 FileConstant 特性:权重从 OM 分离存储、编译期 Const→FileConstant 转换、RT V1/V2 加载流程、内存管理、全局权重管理器
常量折叠 常量折叠优化:编译期常量表达式求值、维度计算、空张量替换、延迟生效机制、多编译阶段流水线
融合 Pattern Pass 融合 Pattern Pass 机制:PatternFusionPass / DecomposePass 的匹配、过滤、替换、执行阶段和 Python/C++ 接入关系
动态分档 动态分档特性:动态 Batch / 动态分辨率 / ND 任意维度三种模式、档位枚举、静态子图生成与运行时分发
内存冲突处理 内存冲突防护体系:语义读写冲突、内存布局冲突、子图地址隔离、Inplace 复用冲突、多流并发管理
模型缓存 编译结果持久化机制:图编译缓存、JIT 编译缓存、算子模型缓存三级体系、缓存命中与失效策略
Profiling 性能采集与可观测性:分层采集架构(API/Host/Device)、按需使能、msprof 统一上报
SO in OM 算子自包含打包:将依赖的算子 .so 按需打包进 OM 文件、消除运行时对 OPP 算子包的依赖
TensorMove 消除 TensorMove 冗余节点消除优化:识别并删除冗余内存拷贝节点、O3 优化级别
变量管理 变量生命周期管理:注册、内存分配、格式转换、逻辑地址映射、序列化/反序列化全流程
零拷贝 零拷贝特性:输入零拷贝(消除 H2D)、输出零拷贝(消除 D2H/D2D)、编译期规划与运行时执行
Concat No Task Concat 连续内存优化:编译期识别输入连续的 Concat 算子,标记为虚拟算子跳过 Task 生成和内存搬运
GE Local 算子 GE Local 引擎:承载非计算型节点(Data、Constant、控制流、形状变换等)的专用引擎,运行期零计算开销
引擎 Engine 引擎体系:插件化引擎架构、优先级驱动自动选择、编译期引擎注册与分区、运行时分发
Tiling 下沉 Tiling 下沉特性:将 Tiling 计算从 Host 搬到 Device AICPU 执行,消除 Host-Device 同步开销
图拆分 图拆分特性:动静 Shape 拆分、引擎级拆分、流水线阶段拆分、JIT 增量拆分
静态执行器 静态子图执行器:Task Sink 预分发、DavinciModel 加载/执行、混合执行模式地址刷新
动态执行器 RT2.0 动态 Shape 执行器:Lowering 机制、ExecuteGraph、ModelV2Executor、三子图生命周期、Kernel 注册系统
Stream Allocator 流分配特性:逻辑流分配、同步事件管理、物理流拆分、流激活机制
InferShape Shape 推导:OriginShape/StorageShape 双体系、编译期 InferShapePass、运行时推导节点、符号化推导
Format 推导 格式推导:OriginFormat 锚点扩散推导、StorageFormat 自动选择、TransData 插入优化

模块关键设计原则与软件约束

以下文档记录特性的关键设计约束和开发规范:

文档 说明
内存模块软件约束 静态/动态内存复用、Allocator 线程模型、内存释放时序、进程退出清理
RT2 运行时设计原则 RT2 动态 Shape 模块设计原则:加载/执行规则、性能、兼容性、并发、可调试性
图拆分模块设计原则 图拆分模块设计原则:职责边界、拆分依据、多线程并发、维测日志、兼容性、评审检查清单
流分配模块设计原则 静态/动态 Shape 流分配设计:Pass 架构、流复用、Event 同步、流激活机制
静态 Shape 运行时设计原则 静态 Shape 模块设计原则:性能优化、ArgsFormat、地址刷新策略、内存管理
图基础结构设计原则 图编译公共基础结构设计原则:独立性、兼容性、可观测性、并发模型、跨平台一致性