简介
算子原型定义了算子的输入、输出和属性信息。原型信息会被注册到GE的算子原型库中,网络模型生成时,GE会调用算子原型提供的校验接口对图中的节点信息进行合法性校验,调用算子原型提供的Infer函数,做输出Shape与Dtype的推导,调用算子原型提供的InferFormat函数,做Format的推导。
- 算子原型.h:算子的输入输出以及属性信息。
- 算子原型.cpp:定义算子原型的Verify函数以及Infer函数,并且向GE注册该函数。
昇腾AI软件栈开放了算子原型实现的相关接口,开发者可使用这些接口进行自定义算子的算子原型定义的开发。
接口列表如下所示,接口定义可在ATC安装路径下“/atc/include/graph/”目录中的operator_reg.h、operator_factory.h以及inference_context.h文件中查看。
接口 |
简介 |
---|---|
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) |
原型定义接口,定义算子的输入、输出以及属性信息。 |
IMPLEMT_INFERFUNC |
定义算子的Infer函数,此函数的输入为Operator类派生出来的子类。 |
IMPLEMT_COMMON_INFERFUNC |
定义算子的Infer函数,此函数会自动生成一个类型为Operator类的对象op,可直接使用operator类的接口进行infer函数的实现。 |
INFER_FUNC_REG |
注册算子的Infer函数,与IMPLEMT_INFERFUNC配套使用。 |
COMMON_INFER_FUNC_REG |
注册算子的Infer函数,与IMPLEMT_COMMON_INFERFUNC配套使用。 |
IMPLEMT_VERIFIER |
定义算子的Verify函数。 |
VERIFY_FUNC_REG |
注册算子的Verify函数。 |
IMPLEMT_INFERFORMAT_FUNC |
定义算子的Format推导函数。 |
INFER_FORMAT_FUNC_REG |
注册算子的Format推导函数。 |