news 2026/5/9 14:06:06

CANN/ge GE架构文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/ge GE架构文档

GE 架构文档

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

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

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

模块占比职责
compiler34%图编译(优化、分区、构建)
runtime20%图执行(加载、执行、Hybrid)
graph_metadef12%IR 定义、算子注册
dflow11%分布式流框架
base7%基础设施
inc6%公共头文件
api4%API 接口
parser3%模型解析

架构总览

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

模块架构文档

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

特性设计文档

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

文档说明
Dump 模块Dump 模块整体设计:架构分层、RT1.0/RT2.0 适配、HCCL 处理、动态开关
外置权重FileConstant 特性:权重从 OM 分离存储、编译期 Const→FileConstant 转换、RT V1/V2 加载流程、内存管理、全局权重管理器
常量折叠常量折叠优化:编译期常量表达式求值、维度计算、空张量替换、延迟生效机制、多编译阶段流水线
动态分档动态分档特性:动态 Batch / 动态分辨率 / ND 任意维度三种模式、档位枚举、静态子图生成与运行时分发
内存冲突处理内存冲突防护体系:语义读写冲突、内存布局冲突、子图地址隔离、Inplace 复用冲突、多流并发管理
模型缓存编译结果持久化机制:图编译缓存、JIT 编译缓存、算子模型缓存三级体系、缓存命中与失效策略
Profiling性能采集与可观测性:分层采集架构(API/Host/Device)、按需使能、msprof 统一上报
SO in OM算子自包含打包:将依赖的算子 .so 按需打包进 OM 文件、消除运行时对 OPP 算子包的依赖
TensorMove 消除TensorMove 冗余节点消除优化:识别并删除冗余内存拷贝节点、O3 优化级别
变量管理变量生命周期管理:注册、内存分配、格式转换、逻辑地址映射、序列化/反序列化全流程
零拷贝零拷贝特性:输入零拷贝(消除 H2D)、输出零拷贝(消除 D2H/D2D)、编译期规划与运行时执行
Concat No TaskConcat 连续内存优化:编译期识别输入连续的 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流分配特性:逻辑流分配、同步事件管理、物理流拆分、流激活机制
InferShapeShape 推导:OriginShape/StorageShape 双体系、编译期 InferShapePass、运行时推导节点、符号化推导
Format 推导格式推导:OriginFormat 锚点扩散推导、StorageFormat 自动选择、TransData 插入优化

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

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

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

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 14:05:55

CANN/catlass基础矩阵乘

Basic Matmul 【免费下载链接】catlass 本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。 项目地址: https://gitcode.com/cann/catlass 代码位置 功能说明 基础矩阵乘,cube算子,无AIV计算,非…

作者头像 李华
网站建设 2026/5/9 14:05:53

面向元宇宙边缘计算的任务中心化AI架构:设计、实现与挑战

1. 项目概述与核心价值最近几年,元宇宙和边缘计算这两个概念都火得不行,但真正能把它们揉在一起,并且解决实际用户痛点的方案,说实话,并不多见。我们团队折腾了大半年,搞出来一个叫“面向元宇宙边缘计算的统…

作者头像 李华
网站建设 2026/5/9 14:05:16

向量数据库基准测试实战:从原理到选型,科学评估性能

1. 向量数据库基准测试:为什么我们需要它,以及如何用好它如果你正在为你的AI应用(比如RAG、推荐系统或者图像搜索)挑选一个向量数据库,你大概率会面临一个幸福的烦恼:选择太多了。Qdrant、Weaviate、Milvus…

作者头像 李华
网站建设 2026/5/9 14:04:45

医疗AI可解释性:从技术原理到临床落地的实践指南

1. 项目概述:为什么医疗AI必须“看得懂”?在医疗这个关乎生命的领域,任何决策都容不得半点“黑箱”。想象一下,一位医生拿到一份AI系统出具的“高度疑似恶性肿瘤”的诊断报告,却无法获知AI是基于病灶的哪个特征、哪条影…

作者头像 李华
网站建设 2026/5/9 14:03:58

AEC行业AI与机器人应用的九大伦理挑战与应对策略

1. 项目概述:当AI与机器人走进建筑工地最近几年,我身边做建筑设计、施工和工程管理的朋友,聊天的画风变了。以前是“图纸改到第几版了”、“混凝土标号定了没”,现在张口闭口都是“我们项目准备上无人机做测绘了”、“那个AI审图平…

作者头像 李华
网站建设 2026/5/9 14:02:49

CANN/ops-cv最近邻上采样2D梯度算子

UpsampleNearest2dGrad 【免费下载链接】ops-cv 本项目是CANN提供的图像处理、目标检测相关的算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-cv 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atl…

作者头像 李华