CANN/ge 原型定义衍生接口

发布时间:2026/9/10 1:55:37
CANN/ge 原型定义衍生接口 原型定义衍生接口【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge算子原型定义的相关接口会自动生成对应的衍生接口可用于IR模型构建以下接口的详细使用方法可参见《图开发》。产品支持情况全量芯片支持。头文件#include graph/operator_reg.hREG_OP注册算子类型后会自动生成算子类型的两个构造函数。例如注册算子的类型名称Conv2D可调用REG_OP(Conv2D)接口调用该接口后定义了算子的类型名称Conv2D同时产生Conv2D的两个构造函数其中**Conv2D(const AscendString name)**需指定算子名称Conv2D()使用默认算子名称。class Conv2D : public Operator { typedef Conv2D _THIS_TYPE; public: explicit Conv2D(const char *name); explicit Conv2D(); }INPUT注册算子输入信息成功后自动生成算子输入的相关接口用于获取算子输入的名称、设置算子输入的对应描述等。例如注册算子输入x算子输入支持的数据类型为TensorType{DT_FLOAT}可调用**INPUT(x, TensorType{DT_FLOAT})**接口注册算子输入成功后自动生成以下相关接口static const string name_in_x(); // 返回输入的名称即“x” _THIS_TYPE set_input_x(Operator v, const string srcName); // 指定输入x与算子对象v的输出srcName存在连接关系返回算子对象本身 _THIS_TYPE set_input_x_by_name(Operator v, const char *srcName); // 指定输入x与算子对象v的输出srcName存在连接关系返回算子对象本身 _THIS_TYPE set_input_x(Operator v, uint32_t index); // 指定输入x与算子对象v的索引为index的输出存在连接关系返回算子对象本身 _THIS_TYPE set_input_x(Operator v); // 指定输入x与算子对象v的索引0的输出存在连接关系返回算子对象本身 TensorDesc get_input_desc_x(); // 返回输入x对应的描述 graphStatus update_input_desc_x(const TensorDesc tensorDesc);// 设置输入x对应的描述包括Shape、DataType、Format等信息graphStatus即uint32_t类型返回非0表示出错OPTIONAL_INPUT注册可选算子输入信息成功后自动生成算子输入的相关接口用于获取算子输入的名称、设置算子输入的对应描述等。例如注册算子输入b算子输入支持的数据类型为TensorType{DT_FLOAT}可调用**OPTIONAL_INPUT(b, TensorType{DT_FLOAT})**接口注册算子输入成功后自动生成以下相关接口static const string name_in_b(); // 返回输入的名称即“b” _THIS_TYPE set_input_b(Operator v, const string srcName);// 指定输入b与算子对象v的输出srcName存在连接关系返回算子对象本身 _THIS_TYPE set_input_b_by_name(Operator v, const char *srcName);// 指定输入b与算子对象v的输出srcName存在连接关系返回算子对象本身 _THIS_TYPE set_input_b(Operator v); // 指定输入b与算子对象v的索引0的输出存在连接关系返回算子对象本身 TensorDesc get_input_desc_b(); // 返回输入b对应的描述 graphStatus update_input_desc_b(const TensorDesc tensorDesc);// 设置输入b对应的描述包括Shape、DataType、Format等信息DYNAMIC_INPUT注册动态算子输入信息成功后自动生成算子输入的相关接口用于创建动态输入、设置算子输入的对应描述等。例如注册算子的动态输入d算子输入支持的数据类型为TensorType{DT_FLOAT}可调用**DYNAMIC_INPUT(d, TensorType{DT_FLOAT})**接口注册算子的动态输入成功后自动生成以下相关接口_THIS_TYPE create_dynamic_input_d(unsigned int num); // 创建动态输入d包括num个输入并且把这个输入作为算子最后的输入 _THIS_TYPE create_dynamic_input_byindex_d(unsigned int num, size_t index) //创建动态输入d包括num个输入插入到索引为index的位置和create_dynamic_input_d不能同时使用 TensorDesc get_dynamic_input_desc_d(unsigned int index);// 返回动态输入d第index个描述包括Shape、DataType、Format等信息 graphStatus update_dynamic_input_desc_d(unsigned int index, const TensorDesc tensorDesc);// 更新动态输入d的第index个描述 _THIS_TYPE set_dynamic_input_d(unsigned int dstIndex, Operator v); // 设置输入d的第dstIndex个输入与算子对象v的索引0的输出存在连接关系返回算子对象本身 _THIS_TYPE set_dynamic_input_d(unsigned int dstIndex, Operator v, const string srcName); //指定动态输入d的第dstIndex个输入与算子对象v的输出srcName存在连接关系返回算子对象本身 _THIS_TYPE set_dynamic_input_d(unsigned int dstIndex, Operator v, const char *srcName); //指定动态输入d的第dstIndex个输入与算子对象v的输出srcName存在连接关系返回算子对象本身OUTPUT注册算子输出信息成功后自动生成算子输出的相关接口用户获取算子输出的名称、获取算子输出的描述、设置算子输出的描述。例如注册算子输出y算子输出支持的数据类型为TensorType{DT_FLOAT}可调用**OUTPUT(y, TensorType{DT_FLOAT})**接口注册算子输出成功后自动生成以下相关接口static const string name_out_y();// 返回输出的名称即“y” TensorDesc get_output_desc_y();// 返回输出y对应的描述 graphStatus update_output_desc_y(const TensorDesc tensorDesc); // 设置输出y对应的描述包括Shape、DataType、Format等信息DYNAMIC_OUTPUT注册动态算子输出信息成功后自动生成动态算子输出的相关接口包括用于创建动态输出、设置算子输出的对应描述等。例如注册动态算子输出d算子输出支持的数据类型为TensorType{DT_FLOAT}可调用**DYNAMIC_OUTPUT(d, TensorType{DT_FLOAT})**接口注册动态算子输出成功后自动生成以下相关接口_THIS_TYPE create_dynamic_output_d(unsigned int num); // 创建动态输出d包括num个输出 TensorDesc get_dynamic_output_desc_d(unsigned int index);// 返回动态输出d第index个描述包括Shape、DataType、Format等信息 graphStatus update_dynamic_output_desc_d(unsigned int index, const TensorDesc tensorDesc);// 更新动态输出d的第index个描述REQUIRED_ATTR注册算子属性成功后自动生成算子属性的3个对外接口用于获取属性的名称、获取属性的值、设置属性的值。例如注册类型为int64_t的属性mode可调用**REQUIRED_ATTR(mode, Int)**接口注册算子属性成功后会自动生成如下接口static const string name_attr_mode(); // 返回属性的名称即“mode” static const void name_attr_mode(AscendString attr_name);// 出参获取属性的名称即“mode” OpInt get_attr_mode() const; // 返回mode属性的值OpInt即int64_t _THIS_TYPE set_attr_mode(const OpInt v); // 设置mode属性的值返回算子对象本身ATTR注册算子属性成功后自动生成算子属性的3个对外接口用于获取属性的名称、获取属性的值、设置属性的值。下面以注册类型为int64_t的属性、类型为int64_t列表两种场景为例说明所生成的算子属性接口调用ATTR(mode, Int, 1)接口注册属性mode属性类型为int64_t默认值为1。注册属性成功后自动生成以下接口static const string name_attr_mode(); // 返回属性的名称即“mode” static const void name_attr_mode(AscendString attr_name);// 出参获取属性的名称即“mode” OpInt get_attr_mode() const; // 返回mode属性的值OpInt即int64_t _THIS_TYPE set_attr_mode(const OpInt v); // 设置mode属性的值返回算子对象本身调用ATTR(pad, ListInt, {0, 0, 0, 0})接口注册属性pad属性类型为int64_t列表默认值为{0,0,0,0}。注册属性成功后自动生成以下接口static const string name_attr_pad(); // 返回属性的名称即“pad” static const void name_attr_pad(AscendString attr_name);// 出参获取属性的名称即“pad” OpListInt get_attr_pad() const; ; // 返回属性pad的值OpListInt即vectorint64_t _THIS_TYPE set_attr_pad(const OpListInt v); // 设置属性pad的值返回算子对象本身下面以注册类型为string属性场景为例说明所生成的算子属性接口调用ATTR(data_format, String, NHWC)接口注册属性data_format属性类型为string。static const string name_attr_data_format(); // 返回属性的名称即“data_format” static const void name_attr_data_format(AscendString attr_name);// 出参获取属性的名称即“data_format” OpString get_attr_data_format() const; // 返回data_format属性的值OpString即string graphStatus get_attr_data_format(AscendString val);//出参返回data_format属性的值 _THIS_TYPE set_attr_data_format(const string v); // 设置data_format属性的值返回算子对象本身 _THIS_TYPE set_attr_data_format(const char* v); // 设置data_format属性的值返回算子对象本身GRAPH注册算子子图信息成功后自动生成算子子图的相关接口用户获取算子子图的名称、获取算子子图的描述、设置算子子图的描述。例如注册算子子图y可调用**GRAPH(y)**接口注册算子子图成功后自动生成以下相关接口static const string name_graph_y();// 返回算子子图的名称即“y” SubgraphBuilder get_subgraph_builder_y() const;// 返回子图y对应的构建函数对象 _THIS_TYPE set_subgraph_builder_y(const SubgraphBuilder v);// 设置子图y对应的构建函数对象 Graph get_subgraph_y() const;// 获取子图y对应的graph对象DYNAMIC_GRAPH注册动态算子子图信息成功后自动生成动态算子子图的相关接口包括用于创建动态子图、设置算子子图的对应描述等。例如注册动态算子子图branches可调用**DYNAMIC_GRAPH(branches)**接口注册动态算子子图成功后自动生成以下相关接口_THIS_TYPE create_dynamic_subgraph_branches(unsigned int num); // 创建动态子图branches包括num个子图 SubgraphBuilder get_dynamic_subgraph_builder_branches(unsigned int index) ;// 返回动态子图第index个子图构建函数对象 Graph get_dynamic_subgraph_branches(unsigned int index) ;// 返回动态子图第index个子图对象 _THIS_TYPE set_dynamic_subgraph_builder_branches(unsigned int index,const SubgraphBuilder v);// 设置动态子图branches的第index个子图构建函数对象【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询