资讯详情

CANN/ge 原型定义衍生接口

📅 2026/9/10 1:55:31 | 华诺云谱 👁 阅读
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),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。