尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CANN/ge原型定义接口

CANN/ge原型定义接口
📅 发布时间:2026/6/20 23:37:52

原型定义接口(REG_OP)

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

产品支持情况

产品

是否支持

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

√

Atlas A2 训练系列产品 / Atlas A2 推理系列产品

√

头文件

#include <graph/operator_reg.h>

功能说明

定义算子的原型,包括算子的输入、输出、属性以及对应的数据类型。

进行如上算子原型定义后,即相当于向GE注册了该算子的原型,告知GE对应类型的算子应该具备哪些输入、输出与属性;同时相当于定义了一个op::xxx的Class,开发者可以include该原型头文件,然后实例化该Class进行IR模型构建,如下所示:

conv = op::Conv2D() conv.set_input_x(feature_map_data) conv.set_input_filter(weight_data)

具体的模型构建可以参考《图模式开发指南》。

函数原型

函数原型定义示例如下:

REG_OP(xxx) .INPUT(x1, type) .OPTIONAL_INPUT(x2, type) .DYNAMIC_INPUT(x3, type) .OUTPUT(y1, type) .DYNAMIC_OUTPUT(y3, type) .REQUIRED_ATTR(a, type) .ATTR(b, type, default_value) .GRAPH(z1) .DYNAMIC_GRAPH(z2) .OP_END_FACTORY_REG(xxx)

接口说明

接口名称

接口说明

衍生接口(可用于IR模型构建)

REG_OP(xxx)

定义一个算子原型,算子类型为xxx。

REG_OP

.INPUT(x, type)

定义输入名称(x)和类型(type)。

类型为TensorType类型,例如:
  • TensorType{DT_FLOAT}
  • TensorType({DT_FLOAT, DT_INT8})
  • TensorType::ALL()

INPUT

.OPTIONAL_INPUT(x, type)

定义可选输入的名称(x)和类型(type)。

类型为TensorType类型,例如:
  • TensorType{DT_FLOAT}
  • TensorType({DT_FLOAT, DT_INT8})
  • TensorType::ALL()

OPTIONAL_INPUT

.DYNAMIC_INPUT(x, type)

定义动态输入的名称(x)和类型(type)。

类型为TensorType类型,例如:
  • TensorType{DT_FLOAT}
  • TensorType({DT_FLOAT, DT_INT8})
  • TensorType::ALL()

DYNAMIC_INPUT

.OUTPUT(x, type)

定义输出的名称(x)和类型(type)。

类型为TensorType类型,例如:
  • TensorType{DT_FLOAT}
  • TensorType({DT_FLOAT, DT_INT8})
  • TensorType::ALL()

OUTPUT

.DYNAMIC_OUTPUT(x, type)

定义动态输出的名称(x)和类型(type)。

类型为TensorType类型,例如:
  • TensorType{DT_FLOAT}
  • TensorType({DT_FLOAT, DT_INT8})
  • TensorType::ALL()

DYNAMIC_OUTPUT

.REQUIRED_ATTR(x, type)

定义必备属性的名称(x)和类型(type)。

type的可选值包括:
  • Int,属性类型为int64_t
  • Float,属性类型为float
  • String,属性类型为string
  • Bool,属性类型为bool
  • Tensor,属性类型为Tensor
  • Type,属性为Type枚举定义
  • NamedAttrs,属性类型为NamedAttrs
  • AscendString,属性类型为AscendString
  • ListInt,属性类型为vector<int64_t>,int64_t列表
  • ListFloat,属性类型为vector<float>,float列表
  • ListString,属性类型为vector<string>,string列表
  • ListBool,属性类型为vector<bool>,bool列表
  • ListTensor,属性类型为vector<Tensor>,Tensor列表
  • Bytes,属性类型为Buffer
  • ListType,属性类型为vector<Type>,Type列表
  • ListListInt,属性类型为vector<vector<int64_t>>,2维列表
  • ListAscendString,属性类型为vector<AscendString>,AscendString列表
  • ListNamedAttrs,属性类型为vector<NamedAttrs>,NamedAttrs列表

REQUIRED_ATTR

.ATTR(x, type, default_value)

定义可选属性的名称、类型以及默认值。

当用户不设置算子对象的属性时,会使用此处设置的默认值。

type的可选值包括:
  • Int,属性类型为int64_t
  • Float,属性类型为float
  • String,属性类型为string
  • Bool,属性类型为bool
  • Tensor,属性类型为Tensor
  • Type,属性为Type枚举定义
  • NamedAttrs,属性类型为NamedAttrs
  • AscendString,属性类型为AscendString
  • ListInt,属性类型为vector<int64_t>,int64_t列表
  • ListFloat,属性类型为vector<float>,float列表
  • ListString,属性类型为vector<string>,string列表
  • ListBool,属性类型为vector<bool>,bool列表
  • ListTensor,属性类型为vector<Tensor>,Tensor列表
  • Bytes,属性类型为Buffer
  • ListType,属性类型为vector<Type>,Type列表
  • ListListInt,属性类型为vector<vector<int64_t>>,2维列表
  • ListAscendString,属性类型为vector<AscendString>,AscendString列表
  • ListNamedAttrs,属性类型为vector<NamedAttrs>,NamedAttrs列表

定义示例:

  • .ATTR(mode, Int, 1)
  • .ATTR(pad, ListInt, {0, 0, 0, 0})

ATTR

.GRAPH(z1)

注册算子中包含的子图信息,输入z1为子图名称。

例如If算子注册的子图为:

.GRAPH(then_branch) .GRAPH(else_branch)

对于同一个算子,注册的算子子图名称需要保持唯一。

GRAPH

.DYNAMIC_GRAPH(z2)

注册动态算子子图信息,输入z2为子图名称。

例如Case算子注册的子图为:

.DYNAMIC_GRAPH(branches)

对于同一个算子,注册的算子子图名称需要保持唯一。

DYNAMIC_GRAPH

.INFER_SHAPE_AND_TYPE()

该接口为历史遗留兼容性接口,当前版本用户无需使用。

-

.OP_END_FACTORY_REG(x)

与REG_OP配对,结束算子原型定义。

算子类型(x)与REG_OP(x)中的类型相同。

-

[!NOTE]说明 OpReg类中的OpReg &N()接口的功能是为了用户进行算子注册的时候,使用.**的方式调用OpReg类的接口,例如.INPUT(x, type)、.OUTPUT(x, type),无其他含义。

返回值说明

无

约束说明

  • REG_OP的算子类型必须全局唯一。
  • 同一个算子的输入名称之间不能重复。
  • 同一个算子的输出名称之间不能重复。
  • 同一个算子的属性名称之间不能重复。

调用示例和相关API

动态输入的算子原型定义示例:

REG_OP(AddN) .DYNAMIC_INPUT(x, TensorType({NumberType(), DT_VARIANT})) .OUTPUT(y, TensorType({NumberType(), DT_VARIANT})) .REQUIRED_ATTR(N, Int) .OP_END_FACTORY_REG(AddN)

多输入的算子原型定义示例:

REG_OP(GreaterEqual) .INPUT(x1, TensorType::RealNumberType()) .INPUT(x2, TensorType::RealNumberType()) .OUTPUT(y, TensorType({DT_BOOL})) .OP_END_FACTORY_REG(GreaterEqual)

注册子图的算子原型定义示例:

REG_OP(If) .INPUT(cond, TensorType::ALL()) .DYNAMIC_INPUT(input, TensorType::ALL()) .DYNAMIC_OUTPUT(output, TensorType::ALL()) .GRAPH(then_branch) .GRAPH(else_branch) .OP_END_FACTORY_REG(If)

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

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

相关新闻

  • Kuramoto模型:从数学原理到Python实现,探索同步振荡的奥秘
  • Windows和Office激活难题的终极解决方案:5个关键步骤实现永久授权
  • Grok 4.3 辅助接口需求拆解:从 PRD 到测试用例的一套实践流程

最新新闻

  • 如何快速实现PC游戏分屏多人联机:Nucleus Co-Op完全指南
  • 魔兽争霸3终极兼容指南:WarcraftHelper让经典游戏重获新生
  • 2026十堰防水补漏避坑指南:卫生间/厨房/阳台/屋顶/地下室漏水检测维修全攻略,正规施工+透明报价+口碑榜靠谱服务商推荐 - 安佳防水
  • 2026动物实验选哪家?临床前研究机构选择指南 - 品牌排行榜
  • 2026南平防水补漏避坑指南:卫生间/厨房/阳台/屋顶/地下室漏水检测维修全攻略,正规施工+透明报价+口碑榜靠谱服务商推荐 - 安佳防水
  • 终极窗口置顶工具:让你的重要窗口始终保持在最上层

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号