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

CANN ge 图引擎的 IR 表示与硬件指令映射机制

cann组织链接:https://atomgit.com/cann
ge仓库链接:https://atomgit.com/cann/ge

前言

在 AI 模型部署栈中,图引擎(Graph Engine)承担着从高级框架(如 PyTorch、TensorFlow)到硬件执行的桥梁作用。CANN(Compute Architecture for Neural Networks)开源项目中的ge(Graph Engine)仓库(https://atomgit.com/cann/ge)提供了一套高性能、可扩展的图编译与执行框架,其核心在于一套分层的中间表示(IR)。该 IR 不仅支持主流模型格式的解析,还能通过多级优化与精准映射,生成高效的硬件指令序列。

截至 2026 年,ge 已完成对aclrtKernelLaunchV2等新一代运行时接口的适配,并强化了对 SuperKernel、自定义算子及动态 shape 的支持。本文将深入剖析其IR 表示体系硬件指令映射机制,涵盖计算图构建、优化 Pass、Kernel 调度及运行时集成等关键技术,并通过ge/ir/ge/compiler/ge/runtime/中的核心代码片段,揭示其工程实现细节。

1. GE 的整体架构与编译流程

GE 采用经典的“前端 → IR → 优化 → 后端”架构:

ONNX / PB / TorchScript

Parser

Graph IR

Optimization Passes

Kernel Mapping

Runtime Execution Plan

Hardware Instructions

其中,Graph IR是整个流程的核心枢纽,承载了模型结构、数据类型、内存布局等全部信息。

关键组件

  • Parser:支持 ONNX、TensorFlow PB 等格式;
  • Graph IR:基于节点(Node)与边(Edge)的有向图;
  • Pass Manager:管理图优化策略;
  • Kernel Mapper:将 IR 节点映射为具体 Kernel;
  • Runtime Executor:生成执行计划并下发指令。

2. Graph IR 的节点与属性设计

GE 的 IR 定义于ge/ir/graph.h,采用面向对象设计。

2.1 核心数据结构

// ge/ir/graph.hclassNode{public:std::string name_;std::string type_;// 算子类型,如 "MatMul", "Relu"std::vector<std::shared_ptr<Node>>inputs_;std::vector<std::shared_ptr<Node>>outputs_;AttrValueMap attrs_;// 属性字典};classGraph{public:std::vector<std::shared_ptr<Node>>nodes_;std::shared_ptr<Node>input_;std::shared_ptr<Node>output_;};

每个Nodeattrs_存储算子特定参数,例如:

// MatMul 节点属性示例node->attrs_["transpose_a"]=false;node->attrs_["transpose_b"]=true;

2.2 内存与数据类型描述

GE 引入TensorDesc精确描述张量:

// ge/ir/tensor_desc.hstructTensorDesc{DataType data_type;// 如 DT_FLOAT, DT_INT8Format format;// 如 NCHW, NHWC, FRAC_Zstd::vector<int64_t>shape;// 支持动态维度(-1)int64_tsize;// 字节大小};

该描述被用于后续内存规划与 Kernel 选择。


3. 图优化 Pass 体系

GE 的优化由PassManager驱动,支持多种优化策略。

3.1 典型优化 Pass

  • ConstantFolding:常量折叠;
  • DeadNodeElimination:死节点消除;
  • AutoFusion:调用 graph-autofusion 进行算子融合;
  • MemoryReuse:内存复用分析;
  • LayoutTransform:数据布局转换(如 NCHW → FRAC_Z)。

3.2 Pass 注册与执行

// ge/optimizer/pass_manager.cppclassPassManager{public:voidRegisterPass(std::unique_ptr<GraphPass>pass){passes_.push_back(std::move(pass));}voidRun(Graph&graph){for(auto&pass:passes_){pass->Run(graph);}}};// 注册示例PassManager pm;pm.RegisterPass(std::make_unique<ConstantFoldingPass>());pm.RegisterPass(std::make_unique<AutoFusionPass>());// ← 集成 graph-autofusionpm.Run(graph);

关键集成AutoFusionPass会调用外部graph-autofusion库,实现 SuperKernel 融合。


4. Kernel 映射与硬件指令生成

4.1 Kernel 选择机制

GE 通过OpKernelRegistry将 IR 节点映射为具体 Kernel:

// ge/kernel/op_kernel_registry.hclassOpKernelRegistry{public:staticOpKernel*GetKernel(conststd::string&op_type,constNode&node){// 1. 查询内置算子库(ops-nn, ops-transformer 等)autokernel=LookupInBuiltInLibs(op_type,node);if(kernel)returnkernel;// 2. 查询自定义算子kernel=LookupCustomOps(op_type);if(kernel)returnkernel;// 3. 回退到解释执行returnCreateInterpretedKernel(op_type);}};

4.2 硬件指令下发:aclrtKernelLaunchV2

截至 2026 年,GE 全面采用新一代运行时接口aclrtKernelLaunchV2(见 PR !387),统一了各类 Kernel 的下发流程:

// ge/runtime/kernel_launcher.cppStatusKernelLauncher::LaunchKernel(constOpKernel*kernel,conststd::vector<Tensor*>&inputs,conststd::vector<Tensor*>&outputs,aclrtStream stream){// 1. 获取 Kernel 二进制(静态或 JIT 生成)constvoid*kernel_func=kernel->GetFuncPtr();// 2. 准备参数列表std::vector<void*>args;for(auto*t:inputs)args.push_back(t->data());for(auto*t:outputs)args.push_back(t->data());// 3. 调用统一 launch 接口ACL_CHECK(aclrtKernelLaunchV2(kernel_func,args.size(),args.data(),nullptr,// configstream));returnSUCCESS;}

💡优势

  • 统一 AICore、AICPU、Custom Kernel 的调用路径;
  • 支持 SuperKernel 等融合算子无缝集成;
  • 简化驱动层维护复杂度。

5. 动态 Shape 与控制流支持

5.1 动态 Shape 处理

GE 通过Symbolic Shape Inference推导动态维度:

// ge/optimizer/symbolic_shape_infer.cppvoidSymbolicShapeInferPass::Run(Graph&graph){for(auto&node:graph.nodes_){if(IsDynamic(node)){// 基于输入 shape 推导输出autoout_shape=InferShapeFromInputs(node);node->output_desc.shape=out_shape;}}}

运行时,GE 会根据实际输入 shape 重新编译子图(JIT)。

5.2 控制流(If/While)支持

GE 将控制流节点(如If,While)视为子图容器

// ge/ir/control_flow_node.hclassControlFlowNode:publicNode{public:std::shared_ptr<Graph>then_branch_;std::shared_ptr<Graph>else_branch_;// for Ifstd::shared_ptr<Graph>body_;// for While};

执行时,GE 动态选择分支并递归执行子图。


6. 性能与调试支持

6.1 执行计划生成

GE 将优化后的图转换为ExecutionPlan

// ge/runtime/execution_plan.hstructExecutionPlan{std::vector<KernelTask>tasks;// 按拓扑序排列MemoryAllocationPlan mem_plan;};

该计划被序列化并缓存,避免重复编译。

6.2 调试与 Profiling

GE 提供丰富的调试工具:

  • Graph Dumpge.dump_graph=true输出 IR 到文件;
  • Kernel Trace:记录每个 Kernel 的启动时间与耗时;
  • Memory Checker:检测内存越界与泄漏。

结语

CANN ge 图引擎通过精心设计的分层 IR 与统一的硬件指令映射机制,成功实现了从高级模型到高效执行的端到端编译。其不仅支持主流框架的无缝接入,更通过与 ops-* 算子库、graph-autofusion、SuperKernel 等组件的深度协同,构建了一套开放、可扩展的图优化生态。随着对稀疏计算、量化感知训练等新场景的支持,ge 将持续演进,成为 CANN 软件栈中连接算法与硬件的核心枢纽。

cann组织链接:https://atomgit.com/cann
ge仓库链接:https://atomgit.com/cann/ge

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

相关文章:

  • 2026年浇铸尼龙棒厂家最新推荐:玻纤mc尼龙浇铸棒、空心尼龙棒、耐磨尼龙棒、非标定制尼龙棒、MC901尼龙棒选择指南 - 优质品牌商家
  • 应用安全 --- 安卓加固 之 函数名剥离
  • 2026年仿木纹冰火板厂家最新推荐:米白色冰火板/纯色冰火板/防火冰火板/阻燃冰火板/8mm冰火板/选择指南 - 优质品牌商家
  • 2026年SOP系统厂家权威推荐榜:SOP看板系统/SOP软件/无线静电监控/智能静电监控/电子化SOP系统/选择指南 - 优质品牌商家
  • 应用安全 --- 安卓加固 之 设备指纹
  • 应用安全 --- 安卓安全 之 DEX壳
  • 2026年评价高的ESOP系统公司推荐:静电监控装置、静电监控设备、高精度静电监控、ESD静电接地监控选择指南 - 优质品牌商家
  • 2026年评价高的SOP电子作业系统公司推荐:SOP电子显示系统、SOP看板系统、SOP软件、作业指导书看板选择指南 - 优质品牌商家
  • 九元伦理原子:自指认知框架下的伦理升维与AGI内生安全范式
  • 2026成都酒店设备旧货回收服务商推荐榜:茶楼旧货回收市场、酒店旧货回收市场、酒店设备旧货回收市场选择指南 - 优质品牌商家
  • 2026年播音主持艺考培训厂家最新推荐:中日双语播音培训、中朝双语播音培训、中英双语播音培训、中西双语播音培训选择指南 - 优质品牌商家
  • CANN hixl 的异步通信上下文管理与资源隔离机制
  • CANN hixl 对稀疏梯度传输的压缩与聚合支持原理
  • CANN hixl 高级索引通信原语的拓扑感知调度机制
  • CANN hixl 在单机多卡场景下的 PCIe 带宽优化策略
  • CANN hixl 与集合通信库的接口抽象与协同设计
  • 【 Java 性能调优 | 问题定位与测试验证 】
  • 2026年焊烟净化器设备厂家权威推荐榜:焊烟净化器除尘器/自循环焊烟净化器/集中式焊烟净化器/高负压焊烟净化器/选择指南 - 优质品牌商家
  • 2026年评价高的老人上楼简易电梯公司推荐:别墅家用座椅式电梯/北京座椅电梯/家用座椅式电梯/座椅升降电梯/选择指南 - 优质品牌商家
  • 2026年漯河旧房换新家:实力公司全景解析与避坑指南 - 2026年企业推荐榜
  • 2026可变情报板 车道指示器厂家怎么选?答案在这! - 栗子测评
  • Redis配置文件介绍
  • 2026年焊烟净化器除尘器厂家推荐:焊接烟尘除尘器/焊接除尘设备/焊烟除尘器/自循环焊烟净化器/选择指南 - 优质品牌商家
  • 2026年大型卫生纸加工设备厂家权威推荐榜:卫生纸抽纸加工设备/小型抽纸加工设备/1880卫生纸加工设备/选择指南 - 优质品牌商家
  • 2026年反应釜品牌选择指南与顶尖厂商评估 - 2026年企业推荐榜
  • 2026年评价高的全自动抽纸加工设备公司推荐:1880型卫生纸加工设备、1880抽纸加工设备选择指南 - 优质品牌商家
  • 2026年生命线厂家权威推荐榜:织带速差器/行车水平生命线装置/钢索型速差器/镀锌钢丝绳速差器/选择指南 - 优质品牌商家
  • 应用安全 --- 安卓加固 之 克隆函数
  • 2026年评价高的电动升降机公司推荐:液压升降平台/液压升降机/液压家用电梯/电动升降平台/科技电梯/选择指南 - 优质品牌商家
  • 2026年河北镀膜机机构实力盘点与选择指南 - 2026年企业推荐榜