拓冰建站拓冰建站
首页 / 资讯中心 / 正文

昇腾CANN GE算子原型定义指南

什么是算子原型【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge用户通过图引擎接口逐个将算子添加到计算图中构建成Ascend IR表示的计算图在此之前需要先了解算子原型的相关内容。算子原型定义算子原型主要描述了算子的输入输出、属性等信息以及算子在AI处理器上相关实现信息。在算子开发阶段通过使用REG_OP宏以“.”链接INPUT、OUTPUT、ATTR等接口注册算子的输入、输出和属性信息最终以OP_END_FACTORY_REG接口结束完成算子的注册。注册代码实现如下所示namespace ge{ REG_OP(OpType) // 算子类型名称 .INPUT(x1, TensorType({DT_FLOAT, DT_INT32})) .INPUT(x2, TensorType({DT_FLOAT, DT_INT32})) .DYNAMIC_INPUT(a, TensorType({DT_FLOAT, DT_INT32})) .OPTIONAL_INPUT(b, TensorType({DT_FLOAT})) .OUTPUT(y, TensorType({DT_FLOAT, DT_INT32})) .DYNAMIC_OUTPUT(c, TensorType({DT_FLOAT, DT_INT32})) .ATTR(x, Type, DefaultValue) .REQUIRED_ATTR(d, Type) .OP_END_FACTORY_REG(OpType) }REG_OP(OpType)OpType注册到AI处理器的自定义算子库的算子类型。INPUT(x1,TensorType({DT_FLOAT,DT_UINT8,...}))注册算子的输入信息。x1宏参数算子的输入名称。TensorType({DT_FLOAT,DT_UINT8,...})“{ }”中为此输入支持的数据类型的列表。若算子有多个输入每个输入需要使用一条INPUT(x,TensorType({DT_FLOAT,DT_UINT8,...}))语句进行描述。DYNAMIC_INPUT(a, TensorType({DT_FLOAT, DT_INT32,... }))算子为动态多输入场景下的输入信息注册。a宏参数算子的输入名称图运行时会根据输入的个数自动生成a0、a1、a2……序号依次递增。TensorType({DT_FLOAT, DT_INT32,... })“{ }”中为此输入支持的数据类型的列表。OPTIONAL_INPUT(b, TensorType({DT_FLOAT,...}))若算子输入为可选输入可使用此接口进行算子输入的注册。b宏参数算子输入的名称。TensorType({DT_FLOAT,...})“{ }”中为此输入支持的数据类型的列表。OUTPUT(y, TensorType({DT_FLOAT,DT_UINT8,...}))注册算子的输出信息。y宏参数算子的输出名称。TensorType({DT_FLOAT,DT_UINT8,...})“{ }”中为此输出支持的数据类型的列表。若算子有多个输出每个输出需要使用一条OUTPUT(y,TensorType({DT_FLOAT,DT_UINT8,...}))语句进行注册。DYNAMIC_OUTPUT(c, TensorType({DT_FLOAT, DT_INT32,...}))算子为动态多输出场景下的输出信息注册。c宏参数算子的输出名称图运行时会根据输出的个数自动生成c0、c1、c2……序号依次递增。TensorType({DT_FLOAT,DT_UINT32,...})“{ }”中为此输出支持的数据类型的列表。ATTR(x, TypeDefaultValue)注册算子的属性包括算子的属性名称属性类型以及属性值的默认值当开发者不设置算子对象的属性值时系统会使用默认值。例如ATTR(mode, Int, 1)注册属性mode属性类型为int64_t默认值为1。若算子有多个属性每个属性需要使用一条ATTR(x, TypeDefaultValue)语句进行注册。REQUIRED_ATTR(d, Type)注册算子的属性包括算子的属性名称与属性类型无默认值开发者必须设置算子对象的属性值。若算子有多个属性每个属性需要使用一条REQUIRED_ATTR(d, Type)语句进行注册。OP_END_FACTORY_REG(OpType)结束算子注册。_OpType_与REG_OP(OpType)中的_OpType_保持一致。[!NOTE]说明DT_FLOATDT_UINT8_等数据类型对应关系请参见《基础数据结构和接口》ge命名空间DataType。如何获取算子原型在模型构建时用户需要了解算子原型包括输入、输出和属性信息从而创建算子实例构建自己的Graph。对于用户自定义算子请自行获取自定义算子的算子原型定义头文件了解算子的原型定义。从${INSTALL_DIR}/opp/vendors/vendor_name/op_proto/inc算子原型定义的头文件中获取例如REG_OP(SubMConv3dCube) .INPUT(x, TensorType({DT_FLOAT16})) .INPUT(filter, TensorType({DT_FLOAT16})) .OUTPUT(y, TensorType({DT_FLOAT16})) .ATTR(is_first, Bool, false) .OP_END_FACTORY_REG(SubMConv3dCube)对于内置算子用户可以通过如下两种方式获取算子原型从《算子库》中的“Ascend IR算子规格说明”获取如下图所示。图 1查看算子原型信息 ![算子原型信](https://raw.gitcode.com/cann/ge/raw/243ea8d2d8f7623dd210c0867dde5782ec5594a9/docs/zh/user_guides/graph_dev/figures/view_op_prototype_info.png 查看算子原型信息?utm_sourcegitcode_repo_files)从${INSTALL_DIR}/opp/built-in/op_graph/inc算子原型定义的头文件中获取例如REG_OP(SoftmaxV2) .INPUT(x, TensorType({DT_DOUBLE, DT_FLOAT16, DT_BF16, DT_FLOAT})) .OUTPUT(y, TensorType({DT_DOUBLE, DT_FLOAT16, DT_BF16, DT_FLOAT})) .ATTR(axes, ListInt, {-1}) .ATTR(half_to_float, Bool, false) .OP_END_FACTORY_REG(SoftmaxV2)其中${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例安装后文件默认存储路径为/usr/local/Ascend/cann。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门