From bb85500df1fe4983ea0698ca97881def15eb84b1 Mon Sep 17 00:00:00 2001 From: liuyu Date: Thu, 29 Apr 2021 11:10:45 +0800 Subject: [PATCH] modify ops_def --- mindspore/lite/src/ops/ops_def.cc | 20 +- mindspore/lite/src/ops/ops_def.h | 91 ++-- mindspore/lite/src/ops/ops_func_declare.h | 418 +++++++++--------- mindspore/lite/src/ops/ops_utils.cc | 373 ++++++++-------- mindspore/lite/src/ops/ops_utils.h | 11 +- .../lite/tools/anf_exporter/anf_exporter.cc | 7 +- .../fusion/constant_folding_fusion.cc | 4 +- .../tools/optimizer/graph/infershape_pass.cc | 4 +- .../tools/optimizer/graph/node_infershape.cc | 6 +- 9 files changed, 464 insertions(+), 470 deletions(-) diff --git a/mindspore/lite/src/ops/ops_def.cc b/mindspore/lite/src/ops/ops_def.cc index ab1b89595c4..a2879f71072 100644 --- a/mindspore/lite/src/ops/ops_def.cc +++ b/mindspore/lite/src/ops/ops_def.cc @@ -455,16 +455,16 @@ OP_ATTR(weight_threshold, float) OP_SCHEMA_DEF_END(CustomPredict) OP_SCHEMA_DEF(DeConv2DGradFilter) -OP_ATTR(in_channel, long); -OP_ATTR(out_channel, long); -OP_ATTR(kernel_size, [long]); -OP_ATTR_ENUM(pad_mode, PadMode); -OP_ATTR(pad_list, [long]); -OP_ATTR(stride, [long]); -OP_ATTR(dilation, [long]); -OP_ATTR(group, long); -OP_ATTR_ENUM(format, Format); -OP_ATTR_ENUM(activation_type, ActivationType); +OP_ATTR(in_channel, long) +OP_ATTR(out_channel, long) +OP_ATTR(kernel_size, [long]) +OP_ATTR_ENUM(pad_mode, PadMode) +OP_ATTR(pad_list, [long]) +OP_ATTR(stride, [long]) +OP_ATTR(dilation, [long]) +OP_ATTR(group, long) +OP_ATTR_ENUM(format, Format) +OP_ATTR_ENUM(activation_type, ActivationType) OP_SCHEMA_DEF_END(DeConv2DGradFilter) OP_SCHEMA_DEF(Depend) diff --git a/mindspore/lite/src/ops/ops_def.h b/mindspore/lite/src/ops/ops_def.h index d631fdce56a..3a84fa90e16 100644 --- a/mindspore/lite/src/ops/ops_def.h +++ b/mindspore/lite/src/ops/ops_def.h @@ -58,10 +58,13 @@ op_def.append(" {\n"); #elif PRIMITIVE_WRITEABLE -#define OP_SCHEMA_DEF(OP) \ - namespace mindspore::lite::ops { \ - mindspore::schema::PrimitiveT *MSOp2SchemaOp(const mindspore::ops::OP *op) { \ - mindspore::schema::OP##T *schema_op = new (std::nothrow) mindspore::schema::OP##T(); +#define OP_SCHEMA_DEF(OP) \ + namespace mindspore::lite::ops { \ + std::unique_ptr MSOp2SchemaOp(const mindspore::ops::OP *op) { \ + auto schema_op = std::make_unique(); \ + if (schema_op == nullptr) { \ + return nullptr; \ + } #else #define OP_SCHEMA_DEF(OP) #endif @@ -71,34 +74,32 @@ #define OP_ATTR_ENUM(key, type) op_def.append(" ").append(#key).append(": ").append(#type).append(";\n"); #define OP_ATTR_VEC2D(key, type) op_def.append(" ").append(#key).append(": ").append(#type).append(";\n"); #elif PRIMITIVE_WRITEABLE -#define OP_ATTR(key, type) \ - if (schema_op != nullptr) { \ - if (op->GetAttr(#key) != nullptr) { \ - schema_op->key = op->get_##key(); \ - } \ - } else { \ - return nullptr; \ +#define OP_ATTR(key, type) \ + if (op->GetAttr(#key) != nullptr) { \ + schema_op->key = op->get_##key(); \ } -#define OP_ATTR_ENUM(key, type) \ - if (schema_op != nullptr) { \ - if (op->GetAttr(#key) != nullptr) { \ - schema_op->key = static_cast(op->get_##key()); \ - } \ +#define OP_ATTR_ENUM(key, type) \ + if (op->GetAttr(#key) != nullptr) { \ + schema_op->key = static_cast(op->get_##key()); \ } -#define OP_ATTR_VEC2D(key, type) \ - if (schema_op != nullptr) { \ - auto vec2d = std::make_unique(); \ - if (op->GetAttr(#key) != nullptr) { \ - auto data = op->get_##key(); \ - for (size_t i = 0; i < data.size(); ++i) { \ - auto vec = std::make_unique(); \ - vec->data.assign(data.at(i).begin(), data.at(i).end()); \ - vec2d->data.push_back(std::move(vec)); \ - } \ - schema_op->key = std::move(vec2d); \ - } \ +#define OP_ATTR_VEC2D(key, type) \ + if (op->GetAttr(#key) != nullptr) { \ + auto vec2d = std::make_unique(); \ + if (vec2d == nullptr) { \ + return nullptr; \ + } \ + auto data = op->get_##key(); \ + for (size_t i = 0; i < data.size(); ++i) { \ + auto vec = std::make_unique(); \ + if (vec == nullptr) { \ + return nullptr; \ + } \ + vec->data.assign(data.at(i).begin(), data.at(i).end()); \ + vec2d->data.push_back(std::move(vec)); \ + } \ + schema_op->key = std::move(vec2d); \ } #else @@ -114,19 +115,13 @@ op_def.append(" ").append(#key).append(": ").append(#type).append(" = ").append(#value).append(";\n"); #elif PRIMITIVE_WRITEABLE #define OP_ATTR_WITH_VALUE(key, type, value) \ - if (schema_op != nullptr) { \ - if (op->GetAttr(#key) != nullptr) { \ - schema_op->key = op->get_##key(); \ - } \ - } else { \ - return nullptr; \ + if (op->GetAttr(#key) != nullptr) { \ + schema_op->key = op->get_##key(); \ } -#define OP_ATTR_ENUM_WITH_VALUE(key, type, value) \ - if (schema_op != nullptr) { \ - if (op->GetAttr(#key) != nullptr) { \ - schema_op->key = static_cast(op->get_##key()); \ - } \ +#define OP_ATTR_ENUM_WITH_VALUE(key, type, value) \ + if (op->GetAttr(#key) != nullptr) { \ + schema_op->key = static_cast(op->get_##key()); \ } #else #define OP_ATTR_WITH_VALUE(key, type, value) @@ -141,15 +136,15 @@ SchemaOpRegister g_schema_op_##OP(Gen##OP##Def); \ } // namespace mindspore::lite::ops #elif PRIMITIVE_WRITEABLE -#define OP_SCHEMA_DEF_END(OP) \ - schema::PrimitiveT *prim = new (std::nothrow) schema::PrimitiveT(); \ - if (prim == nullptr) { \ - return nullptr; \ - } \ - prim->value.value = schema_op; \ - prim->value.type = schema::PrimitiveType_##OP; \ - return prim; \ - } \ +#define OP_SCHEMA_DEF_END(OP) \ + auto prim = std::make_unique(); \ + if (prim == nullptr) { \ + return nullptr; \ + } \ + prim->value.value = schema_op.release(); \ + prim->value.type = schema::PrimitiveType_##OP; \ + return prim; \ + } \ } // namespace mindspore::lite::ops #else #define OP_SCHEMA_DEF_END(OP) diff --git a/mindspore/lite/src/ops/ops_func_declare.h b/mindspore/lite/src/ops/ops_func_declare.h index d9dbee29e85..9bf9ca11f32 100644 --- a/mindspore/lite/src/ops/ops_func_declare.h +++ b/mindspore/lite/src/ops/ops_func_declare.h @@ -17,6 +17,7 @@ #define MINDSPORE_LITE_SRC_OPS_OPS_FUNC_DECLARE_H_ #ifdef PRIMITIVE_WRITEABLE +#include #include "schema/inner/model_generated.h" #include "ops/abs.h" #include "ops/adam.h" @@ -239,216 +240,215 @@ #include "ops/cumsum.h" #include "ops/split_with_overlap.h" -#define FUNC_MSOP2SCHEMAOP_DECLARE(OP) \ - namespace mindspore::lite::ops { \ - mindspore::schema::PrimitiveT *MSOp2SchemaOp(const mindspore::ops::OP *op); \ - } +namespace mindspore::lite::ops { +#define FUNC_MSOP2SCHEMAOP_DECLARE(OP) std::unique_ptr MSOp2SchemaOp(const mindspore::ops::OP *op); + +#ifdef PRIMITIVE_WRITEABLE +FUNC_MSOP2SCHEMAOP_DECLARE(Abs) +FUNC_MSOP2SCHEMAOP_DECLARE(Activation) +FUNC_MSOP2SCHEMAOP_DECLARE(ActivationGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(Adam) +FUNC_MSOP2SCHEMAOP_DECLARE(AddFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(AdderFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(AddGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(AddN) +FUNC_MSOP2SCHEMAOP_DECLARE(All) +FUNC_MSOP2SCHEMAOP_DECLARE(ApplyMomentum) +FUNC_MSOP2SCHEMAOP_DECLARE(ArgMax) +FUNC_MSOP2SCHEMAOP_DECLARE(ArgMaxFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(ArgMin) +FUNC_MSOP2SCHEMAOP_DECLARE(ArgMinFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(Asin) +FUNC_MSOP2SCHEMAOP_DECLARE(Assert) +FUNC_MSOP2SCHEMAOP_DECLARE(Assign) +FUNC_MSOP2SCHEMAOP_DECLARE(AssignAdd) +FUNC_MSOP2SCHEMAOP_DECLARE(Atan) +FUNC_MSOP2SCHEMAOP_DECLARE(AudioSpectrogram) +FUNC_MSOP2SCHEMAOP_DECLARE(AvgPoolFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(AvgPoolGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(BatchNorm) +FUNC_MSOP2SCHEMAOP_DECLARE(BatchNormGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(BatchToSpace) +FUNC_MSOP2SCHEMAOP_DECLARE(BatchToSpaceND) +FUNC_MSOP2SCHEMAOP_DECLARE(BiasAdd) +FUNC_MSOP2SCHEMAOP_DECLARE(BiasAddGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(BinaryCrossEntropy) +FUNC_MSOP2SCHEMAOP_DECLARE(BinaryCrossEntropyGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(BroadcastTo) +FUNC_MSOP2SCHEMAOP_DECLARE(Cast) +FUNC_MSOP2SCHEMAOP_DECLARE(Ceil) +FUNC_MSOP2SCHEMAOP_DECLARE(Clip) +FUNC_MSOP2SCHEMAOP_DECLARE(Concat) +FUNC_MSOP2SCHEMAOP_DECLARE(ControlDepend) +FUNC_MSOP2SCHEMAOP_DECLARE(ConstantOfShape) +FUNC_MSOP2SCHEMAOP_DECLARE(Conv2DBackpropFilterFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(Conv2DBackpropInputFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(Conv2DFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(Conv2dTransposeFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(Cos) +FUNC_MSOP2SCHEMAOP_DECLARE(Crop) +FUNC_MSOP2SCHEMAOP_DECLARE(CustomExtractFeatures) +FUNC_MSOP2SCHEMAOP_DECLARE(CustomNormalize) +FUNC_MSOP2SCHEMAOP_DECLARE(CustomPredict) +FUNC_MSOP2SCHEMAOP_DECLARE(DeConv2DGradFilter) +FUNC_MSOP2SCHEMAOP_DECLARE(Depend) +FUNC_MSOP2SCHEMAOP_DECLARE(DepthToSpace) +FUNC_MSOP2SCHEMAOP_DECLARE(DetectionPostProcess) +FUNC_MSOP2SCHEMAOP_DECLARE(DivFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(DivGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(Dropout) +FUNC_MSOP2SCHEMAOP_DECLARE(DropoutGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(Eltwise) +FUNC_MSOP2SCHEMAOP_DECLARE(Elu) +FUNC_MSOP2SCHEMAOP_DECLARE(EmbeddingLookupFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(Equal) +FUNC_MSOP2SCHEMAOP_DECLARE(ExpFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(ExpandDims) +FUNC_MSOP2SCHEMAOP_DECLARE(FakeQuantWithMinMaxVars) +FUNC_MSOP2SCHEMAOP_DECLARE(FakeQuantWithMinMaxVarsPerChannel) +FUNC_MSOP2SCHEMAOP_DECLARE(FftImag) +FUNC_MSOP2SCHEMAOP_DECLARE(FftReal) +FUNC_MSOP2SCHEMAOP_DECLARE(Fill) +FUNC_MSOP2SCHEMAOP_DECLARE(Flatten) +FUNC_MSOP2SCHEMAOP_DECLARE(FlattenGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(Floor) +FUNC_MSOP2SCHEMAOP_DECLARE(FloorDiv) +FUNC_MSOP2SCHEMAOP_DECLARE(FloorMod) +FUNC_MSOP2SCHEMAOP_DECLARE(FullConnection) +FUNC_MSOP2SCHEMAOP_DECLARE(FusedBatchNorm) +FUNC_MSOP2SCHEMAOP_DECLARE(Gather) +FUNC_MSOP2SCHEMAOP_DECLARE(GatherNd) +FUNC_MSOP2SCHEMAOP_DECLARE(Greater) +FUNC_MSOP2SCHEMAOP_DECLARE(GreaterEqual) +FUNC_MSOP2SCHEMAOP_DECLARE(GroupConv2DGradInput) +FUNC_MSOP2SCHEMAOP_DECLARE(HashtableLookup) +FUNC_MSOP2SCHEMAOP_DECLARE(InstanceNorm) +FUNC_MSOP2SCHEMAOP_DECLARE(LayerNormFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(LeakyRelu) +FUNC_MSOP2SCHEMAOP_DECLARE(Less) +FUNC_MSOP2SCHEMAOP_DECLARE(LessEqual) +FUNC_MSOP2SCHEMAOP_DECLARE(Log) +FUNC_MSOP2SCHEMAOP_DECLARE(LogGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(LogicalAnd) +FUNC_MSOP2SCHEMAOP_DECLARE(LogicalNot) +FUNC_MSOP2SCHEMAOP_DECLARE(LogicalOr) +FUNC_MSOP2SCHEMAOP_DECLARE(LogicalXor) +FUNC_MSOP2SCHEMAOP_DECLARE(LpNormalization) +FUNC_MSOP2SCHEMAOP_DECLARE(LRN) +FUNC_MSOP2SCHEMAOP_DECLARE(LshProjection) +FUNC_MSOP2SCHEMAOP_DECLARE(LSTM) +FUNC_MSOP2SCHEMAOP_DECLARE(L2NormalizeFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(MatMul) +FUNC_MSOP2SCHEMAOP_DECLARE(Maximum) +FUNC_MSOP2SCHEMAOP_DECLARE(MaximumGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(MaxPoolFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(MaxPoolGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(Merge) +FUNC_MSOP2SCHEMAOP_DECLARE(Mfcc) +FUNC_MSOP2SCHEMAOP_DECLARE(Minimum) +FUNC_MSOP2SCHEMAOP_DECLARE(MinimumGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(Mod) +FUNC_MSOP2SCHEMAOP_DECLARE(MulFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(MulGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(Neg) +FUNC_MSOP2SCHEMAOP_DECLARE(NegGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(NotEqual) +FUNC_MSOP2SCHEMAOP_DECLARE(NonMaxSuppression) +FUNC_MSOP2SCHEMAOP_DECLARE(OneHot) +FUNC_MSOP2SCHEMAOP_DECLARE(OnesLike) +FUNC_MSOP2SCHEMAOP_DECLARE(PadFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(PartialFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(PowFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(PowerGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(PReLUFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(PriorBox) +FUNC_MSOP2SCHEMAOP_DECLARE(Proposal) +FUNC_MSOP2SCHEMAOP_DECLARE(Rank) +FUNC_MSOP2SCHEMAOP_DECLARE(Range) +FUNC_MSOP2SCHEMAOP_DECLARE(Rank) +FUNC_MSOP2SCHEMAOP_DECLARE(RealDiv) +FUNC_MSOP2SCHEMAOP_DECLARE(Reciprocal) +FUNC_MSOP2SCHEMAOP_DECLARE(ReduceFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(Reshape) +FUNC_MSOP2SCHEMAOP_DECLARE(Resize) +FUNC_MSOP2SCHEMAOP_DECLARE(ReverseSequence) +FUNC_MSOP2SCHEMAOP_DECLARE(ReverseV2) +FUNC_MSOP2SCHEMAOP_DECLARE(Rfft) +FUNC_MSOP2SCHEMAOP_DECLARE(ROIPooling) +FUNC_MSOP2SCHEMAOP_DECLARE(Round) +FUNC_MSOP2SCHEMAOP_DECLARE(Rsqrt) +FUNC_MSOP2SCHEMAOP_DECLARE(QuantDTypeCast) +FUNC_MSOP2SCHEMAOP_DECLARE(Scale) +FUNC_MSOP2SCHEMAOP_DECLARE(ScaleFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(ScatterNd) +FUNC_MSOP2SCHEMAOP_DECLARE(Select) +FUNC_MSOP2SCHEMAOP_DECLARE(SGD) +FUNC_MSOP2SCHEMAOP_DECLARE(Shape) +FUNC_MSOP2SCHEMAOP_DECLARE(SigmoidCrossEntropyWithLogits) +FUNC_MSOP2SCHEMAOP_DECLARE(SigmoidCrossEntropyWithLogitsGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(Sin) +FUNC_MSOP2SCHEMAOP_DECLARE(SkipGram) +FUNC_MSOP2SCHEMAOP_DECLARE(SliceFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(SmoothL1Loss) +FUNC_MSOP2SCHEMAOP_DECLARE(SmoothL1LossGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(Softmax) +FUNC_MSOP2SCHEMAOP_DECLARE(SoftmaxCrossEntropyWithLogits) +FUNC_MSOP2SCHEMAOP_DECLARE(SpaceToBatch) +FUNC_MSOP2SCHEMAOP_DECLARE(SpaceToBatchND) +FUNC_MSOP2SCHEMAOP_DECLARE(SpaceToDepth) +FUNC_MSOP2SCHEMAOP_DECLARE(SparseSoftmaxCrossEntropyWithLogits) +FUNC_MSOP2SCHEMAOP_DECLARE(SparseToDense) +FUNC_MSOP2SCHEMAOP_DECLARE(Split) +FUNC_MSOP2SCHEMAOP_DECLARE(Sqrt) +FUNC_MSOP2SCHEMAOP_DECLARE(Square) +FUNC_MSOP2SCHEMAOP_DECLARE(SquaredDifference) +FUNC_MSOP2SCHEMAOP_DECLARE(Squeeze) +FUNC_MSOP2SCHEMAOP_DECLARE(Stack) +FUNC_MSOP2SCHEMAOP_DECLARE(StridedSlice) +FUNC_MSOP2SCHEMAOP_DECLARE(Sub) +FUNC_MSOP2SCHEMAOP_DECLARE(SubFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(SubGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(Switch) +FUNC_MSOP2SCHEMAOP_DECLARE(Tan) +FUNC_MSOP2SCHEMAOP_DECLARE(TensorListFromTensor) +FUNC_MSOP2SCHEMAOP_DECLARE(TensorListGetItem) +FUNC_MSOP2SCHEMAOP_DECLARE(TensorListReserve) +FUNC_MSOP2SCHEMAOP_DECLARE(TensorListSetItem) +FUNC_MSOP2SCHEMAOP_DECLARE(TensorListStack) +FUNC_MSOP2SCHEMAOP_DECLARE(TileFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(TopKFusion) +FUNC_MSOP2SCHEMAOP_DECLARE(Transpose) +FUNC_MSOP2SCHEMAOP_DECLARE(Unique) +FUNC_MSOP2SCHEMAOP_DECLARE(UnsortedSegmentSum) +FUNC_MSOP2SCHEMAOP_DECLARE(Unsqueeze) +FUNC_MSOP2SCHEMAOP_DECLARE(Unstack) +FUNC_MSOP2SCHEMAOP_DECLARE(Where) +FUNC_MSOP2SCHEMAOP_DECLARE(ZerosLike) +FUNC_MSOP2SCHEMAOP_DECLARE(Select) +FUNC_MSOP2SCHEMAOP_DECLARE(GRU) +FUNC_MSOP2SCHEMAOP_DECLARE(NonZero) +FUNC_MSOP2SCHEMAOP_DECLARE(InvertPermutation) +FUNC_MSOP2SCHEMAOP_DECLARE(Size) +FUNC_MSOP2SCHEMAOP_DECLARE(RandomStandardNormal) +FUNC_MSOP2SCHEMAOP_DECLARE(CropAndResize) +FUNC_MSOP2SCHEMAOP_DECLARE(Erf) +FUNC_MSOP2SCHEMAOP_DECLARE(StridedSliceGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(IsFinite) +FUNC_MSOP2SCHEMAOP_DECLARE(LinSpace) +FUNC_MSOP2SCHEMAOP_DECLARE(UniformReal) +FUNC_MSOP2SCHEMAOP_DECLARE(AbsGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(RsqrtGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(SqrtGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(LayerNormGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(ResizeGrad) +FUNC_MSOP2SCHEMAOP_DECLARE(Splice) +FUNC_MSOP2SCHEMAOP_DECLARE(LogSoftmax) +FUNC_MSOP2SCHEMAOP_DECLARE(Call) +FUNC_MSOP2SCHEMAOP_DECLARE(CumSum) +FUNC_MSOP2SCHEMAOP_DECLARE(SplitWithOverlap) +#endif +} // namespace mindspore::lite::ops #else #define FUNC_MSOP2SCHEMAOP_DECLARE(OP) #endif - -#ifdef PRIMITIVE_WRITEABLE -FUNC_MSOP2SCHEMAOP_DECLARE(Abs); -FUNC_MSOP2SCHEMAOP_DECLARE(Activation); -FUNC_MSOP2SCHEMAOP_DECLARE(ActivationGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(Adam); -FUNC_MSOP2SCHEMAOP_DECLARE(AddFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(AdderFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(AddGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(AddN); -FUNC_MSOP2SCHEMAOP_DECLARE(All); -FUNC_MSOP2SCHEMAOP_DECLARE(ApplyMomentum); -FUNC_MSOP2SCHEMAOP_DECLARE(ArgMax); -FUNC_MSOP2SCHEMAOP_DECLARE(ArgMaxFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(ArgMin); -FUNC_MSOP2SCHEMAOP_DECLARE(ArgMinFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(Asin); -FUNC_MSOP2SCHEMAOP_DECLARE(Assert); -FUNC_MSOP2SCHEMAOP_DECLARE(Assign); -FUNC_MSOP2SCHEMAOP_DECLARE(AssignAdd); -FUNC_MSOP2SCHEMAOP_DECLARE(Atan); -FUNC_MSOP2SCHEMAOP_DECLARE(AudioSpectrogram); -FUNC_MSOP2SCHEMAOP_DECLARE(AvgPoolFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(AvgPoolGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(BatchNorm); -FUNC_MSOP2SCHEMAOP_DECLARE(BatchNormGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(BatchToSpace); -FUNC_MSOP2SCHEMAOP_DECLARE(BatchToSpaceND); -FUNC_MSOP2SCHEMAOP_DECLARE(BiasAdd); -FUNC_MSOP2SCHEMAOP_DECLARE(BiasAddGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(BinaryCrossEntropy); -FUNC_MSOP2SCHEMAOP_DECLARE(BinaryCrossEntropyGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(BroadcastTo); -FUNC_MSOP2SCHEMAOP_DECLARE(Cast); -FUNC_MSOP2SCHEMAOP_DECLARE(Ceil); -FUNC_MSOP2SCHEMAOP_DECLARE(Clip); -FUNC_MSOP2SCHEMAOP_DECLARE(Concat); -FUNC_MSOP2SCHEMAOP_DECLARE(ControlDepend); -FUNC_MSOP2SCHEMAOP_DECLARE(ConstantOfShape); -FUNC_MSOP2SCHEMAOP_DECLARE(Conv2DBackpropFilterFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(Conv2DBackpropInputFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(Conv2DFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(Conv2dTransposeFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(Cos); -FUNC_MSOP2SCHEMAOP_DECLARE(Crop); -FUNC_MSOP2SCHEMAOP_DECLARE(CustomExtractFeatures); -FUNC_MSOP2SCHEMAOP_DECLARE(CustomNormalize); -FUNC_MSOP2SCHEMAOP_DECLARE(CustomPredict); -FUNC_MSOP2SCHEMAOP_DECLARE(DeConv2DGradFilter); -FUNC_MSOP2SCHEMAOP_DECLARE(Depend); -FUNC_MSOP2SCHEMAOP_DECLARE(DepthToSpace); -FUNC_MSOP2SCHEMAOP_DECLARE(DetectionPostProcess); -FUNC_MSOP2SCHEMAOP_DECLARE(DivFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(DivGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(Dropout); -FUNC_MSOP2SCHEMAOP_DECLARE(DropoutGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(Eltwise); -FUNC_MSOP2SCHEMAOP_DECLARE(Elu); -FUNC_MSOP2SCHEMAOP_DECLARE(EmbeddingLookupFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(Equal); -FUNC_MSOP2SCHEMAOP_DECLARE(ExpFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(ExpandDims); -FUNC_MSOP2SCHEMAOP_DECLARE(FakeQuantWithMinMaxVars); -FUNC_MSOP2SCHEMAOP_DECLARE(FakeQuantWithMinMaxVarsPerChannel); -FUNC_MSOP2SCHEMAOP_DECLARE(FftImag); -FUNC_MSOP2SCHEMAOP_DECLARE(FftReal); -FUNC_MSOP2SCHEMAOP_DECLARE(Fill); -FUNC_MSOP2SCHEMAOP_DECLARE(Flatten); -FUNC_MSOP2SCHEMAOP_DECLARE(FlattenGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(Floor); -FUNC_MSOP2SCHEMAOP_DECLARE(FloorDiv); -FUNC_MSOP2SCHEMAOP_DECLARE(FloorMod); -FUNC_MSOP2SCHEMAOP_DECLARE(FullConnection); -FUNC_MSOP2SCHEMAOP_DECLARE(FusedBatchNorm); -FUNC_MSOP2SCHEMAOP_DECLARE(Gather); -FUNC_MSOP2SCHEMAOP_DECLARE(GatherNd); -FUNC_MSOP2SCHEMAOP_DECLARE(Greater); -FUNC_MSOP2SCHEMAOP_DECLARE(GreaterEqual); -FUNC_MSOP2SCHEMAOP_DECLARE(GroupConv2DGradInput); -FUNC_MSOP2SCHEMAOP_DECLARE(HashtableLookup); -FUNC_MSOP2SCHEMAOP_DECLARE(InstanceNorm); -FUNC_MSOP2SCHEMAOP_DECLARE(LayerNormFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(LeakyRelu); -FUNC_MSOP2SCHEMAOP_DECLARE(Less); -FUNC_MSOP2SCHEMAOP_DECLARE(LessEqual); -FUNC_MSOP2SCHEMAOP_DECLARE(Log); -FUNC_MSOP2SCHEMAOP_DECLARE(LogGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(LogicalAnd); -FUNC_MSOP2SCHEMAOP_DECLARE(LogicalNot); -FUNC_MSOP2SCHEMAOP_DECLARE(LogicalOr); -FUNC_MSOP2SCHEMAOP_DECLARE(LogicalXor); -FUNC_MSOP2SCHEMAOP_DECLARE(LpNormalization); -FUNC_MSOP2SCHEMAOP_DECLARE(LRN); -FUNC_MSOP2SCHEMAOP_DECLARE(LshProjection); -FUNC_MSOP2SCHEMAOP_DECLARE(LSTM); -FUNC_MSOP2SCHEMAOP_DECLARE(L2NormalizeFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(MatMul); -FUNC_MSOP2SCHEMAOP_DECLARE(Maximum); -FUNC_MSOP2SCHEMAOP_DECLARE(MaximumGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(MaxPoolFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(MaxPoolGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(Merge); -FUNC_MSOP2SCHEMAOP_DECLARE(Mfcc); -FUNC_MSOP2SCHEMAOP_DECLARE(Minimum); -FUNC_MSOP2SCHEMAOP_DECLARE(MinimumGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(Mod); -FUNC_MSOP2SCHEMAOP_DECLARE(MulFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(MulGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(Neg); -FUNC_MSOP2SCHEMAOP_DECLARE(NegGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(NotEqual); -FUNC_MSOP2SCHEMAOP_DECLARE(NonMaxSuppression); -FUNC_MSOP2SCHEMAOP_DECLARE(OneHot); -FUNC_MSOP2SCHEMAOP_DECLARE(OnesLike); -FUNC_MSOP2SCHEMAOP_DECLARE(PadFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(PartialFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(PowFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(PowerGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(PReLUFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(PriorBox); -FUNC_MSOP2SCHEMAOP_DECLARE(Proposal); -FUNC_MSOP2SCHEMAOP_DECLARE(Rank); -FUNC_MSOP2SCHEMAOP_DECLARE(Range); -FUNC_MSOP2SCHEMAOP_DECLARE(Rank); -FUNC_MSOP2SCHEMAOP_DECLARE(RealDiv); -FUNC_MSOP2SCHEMAOP_DECLARE(Reciprocal); -FUNC_MSOP2SCHEMAOP_DECLARE(ReduceFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(Reshape); -FUNC_MSOP2SCHEMAOP_DECLARE(Resize); -FUNC_MSOP2SCHEMAOP_DECLARE(ReverseSequence); -FUNC_MSOP2SCHEMAOP_DECLARE(ReverseV2); -FUNC_MSOP2SCHEMAOP_DECLARE(Rfft); -FUNC_MSOP2SCHEMAOP_DECLARE(ROIPooling); -FUNC_MSOP2SCHEMAOP_DECLARE(Round); -FUNC_MSOP2SCHEMAOP_DECLARE(Rsqrt); -FUNC_MSOP2SCHEMAOP_DECLARE(QuantDTypeCast); -FUNC_MSOP2SCHEMAOP_DECLARE(Scale); -FUNC_MSOP2SCHEMAOP_DECLARE(ScaleFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(ScatterNd); -FUNC_MSOP2SCHEMAOP_DECLARE(Select); -FUNC_MSOP2SCHEMAOP_DECLARE(SGD); -FUNC_MSOP2SCHEMAOP_DECLARE(Shape); -FUNC_MSOP2SCHEMAOP_DECLARE(SigmoidCrossEntropyWithLogits); -FUNC_MSOP2SCHEMAOP_DECLARE(SigmoidCrossEntropyWithLogitsGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(Sin); -FUNC_MSOP2SCHEMAOP_DECLARE(SkipGram); -FUNC_MSOP2SCHEMAOP_DECLARE(SliceFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(SmoothL1Loss); -FUNC_MSOP2SCHEMAOP_DECLARE(SmoothL1LossGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(Softmax); -FUNC_MSOP2SCHEMAOP_DECLARE(SoftmaxCrossEntropyWithLogits); -FUNC_MSOP2SCHEMAOP_DECLARE(SpaceToBatch); -FUNC_MSOP2SCHEMAOP_DECLARE(SpaceToBatchND); -FUNC_MSOP2SCHEMAOP_DECLARE(SpaceToDepth); -FUNC_MSOP2SCHEMAOP_DECLARE(SparseSoftmaxCrossEntropyWithLogits); -FUNC_MSOP2SCHEMAOP_DECLARE(SparseToDense); -FUNC_MSOP2SCHEMAOP_DECLARE(Split); -FUNC_MSOP2SCHEMAOP_DECLARE(Sqrt); -FUNC_MSOP2SCHEMAOP_DECLARE(Square); -FUNC_MSOP2SCHEMAOP_DECLARE(SquaredDifference); -FUNC_MSOP2SCHEMAOP_DECLARE(Squeeze); -FUNC_MSOP2SCHEMAOP_DECLARE(Stack); -FUNC_MSOP2SCHEMAOP_DECLARE(StridedSlice); -FUNC_MSOP2SCHEMAOP_DECLARE(Sub); -FUNC_MSOP2SCHEMAOP_DECLARE(SubFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(SubGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(Switch); -FUNC_MSOP2SCHEMAOP_DECLARE(Tan); -FUNC_MSOP2SCHEMAOP_DECLARE(TensorListFromTensor); -FUNC_MSOP2SCHEMAOP_DECLARE(TensorListGetItem); -FUNC_MSOP2SCHEMAOP_DECLARE(TensorListReserve); -FUNC_MSOP2SCHEMAOP_DECLARE(TensorListSetItem); -FUNC_MSOP2SCHEMAOP_DECLARE(TensorListStack); -FUNC_MSOP2SCHEMAOP_DECLARE(TileFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(TopKFusion); -FUNC_MSOP2SCHEMAOP_DECLARE(Transpose); -FUNC_MSOP2SCHEMAOP_DECLARE(Unique); -FUNC_MSOP2SCHEMAOP_DECLARE(UnsortedSegmentSum); -FUNC_MSOP2SCHEMAOP_DECLARE(Unsqueeze); -FUNC_MSOP2SCHEMAOP_DECLARE(Unstack); -FUNC_MSOP2SCHEMAOP_DECLARE(Where); -FUNC_MSOP2SCHEMAOP_DECLARE(ZerosLike); -FUNC_MSOP2SCHEMAOP_DECLARE(Select); -FUNC_MSOP2SCHEMAOP_DECLARE(GRU); -FUNC_MSOP2SCHEMAOP_DECLARE(NonZero); -FUNC_MSOP2SCHEMAOP_DECLARE(InvertPermutation); -FUNC_MSOP2SCHEMAOP_DECLARE(Size); -FUNC_MSOP2SCHEMAOP_DECLARE(RandomStandardNormal); -FUNC_MSOP2SCHEMAOP_DECLARE(CropAndResize); -FUNC_MSOP2SCHEMAOP_DECLARE(Erf); -FUNC_MSOP2SCHEMAOP_DECLARE(StridedSliceGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(IsFinite); -FUNC_MSOP2SCHEMAOP_DECLARE(LinSpace); -FUNC_MSOP2SCHEMAOP_DECLARE(UniformReal); -FUNC_MSOP2SCHEMAOP_DECLARE(AbsGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(RsqrtGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(SqrtGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(LayerNormGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(ResizeGrad); -FUNC_MSOP2SCHEMAOP_DECLARE(Splice); -FUNC_MSOP2SCHEMAOP_DECLARE(LogSoftmax); -FUNC_MSOP2SCHEMAOP_DECLARE(Call); -FUNC_MSOP2SCHEMAOP_DECLARE(CumSum); -FUNC_MSOP2SCHEMAOP_DECLARE(SplitWithOverlap); -#endif #endif // MINDSPORE_LITE_SRC_OPS_OPS_FUNC_DECLARE_H_ diff --git a/mindspore/lite/src/ops/ops_utils.cc b/mindspore/lite/src/ops/ops_utils.cc index 2d6ef9d2019..e4e08a3b748 100644 --- a/mindspore/lite/src/ops/ops_utils.cc +++ b/mindspore/lite/src/ops/ops_utils.cc @@ -15,6 +15,7 @@ */ #include +#include #include "src/ops/ops_utils.h" #ifdef PRIMITIVE_WRITEABLE @@ -22,7 +23,7 @@ namespace mindspore { namespace lite { -schema::PrimitiveT *GetPrimitiveT(const AnfNodePtr &node) { +std::unique_ptr GetPrimitiveT(const AnfNodePtr &node) { auto prim = GetValueNode>(node); if (prim == nullptr) { MS_LOG(DEBUG) << "primitive is nullptr"; @@ -44,723 +45,723 @@ schema::PrimitiveT *GetPrimitiveT(const AnfNodePtr &node) { } } -schema::PrimitiveT *AbsPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AbsPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AbsGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AbsGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ActivationPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ActivationPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ActivationGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ActivationGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AdamPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AdamPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AdderFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AdderFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AddFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AddFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AddGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AddGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AddNPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AddNPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AllPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AllPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ApplyMomentumPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ApplyMomentumPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ArgMaxFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ArgMaxFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ArgMinFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ArgMinFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AssertPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AssertPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AssignPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AssignPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AssignAddPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AssignAddPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AudioSpectrogramPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AudioSpectrogramPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AvgPoolFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AvgPoolFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *AvgPoolGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr AvgPoolGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *BatchNormPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr BatchNormPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *BatchToSpacePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr BatchToSpacePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *BatchToSpaceNDPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr BatchToSpaceNDPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *BiasAddPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr BiasAddPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *BiasAddGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr BiasAddGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *BNGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr BNGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *BroadcastToPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr BroadcastToPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *CastPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr CastPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *CeilPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr CeilPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ClipPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ClipPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ConcatPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ConcatPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ConstantOfShapePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ConstantOfShapePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ControlDependPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ControlDependPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *Conv2DBackpropFilterFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr Conv2DBackpropFilterFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *Conv2DBackpropInputFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr Conv2DBackpropInputFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *Conv2DFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr Conv2DFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *Conv2dTransposeFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr Conv2dTransposeFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *CosPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr CosPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *CropPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr CropPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *CropAndResizePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr CropAndResizePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *CustomExtractFeaturesPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr CustomExtractFeaturesPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *CustomNormalizePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr CustomNormalizePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *CustomPredictPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr CustomPredictPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *DependPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr DependPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *DepthToSpacePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr DepthToSpacePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *DetectionPostProcessPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr DetectionPostProcessPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *DivFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr DivFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *DivGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr DivGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *DropoutPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr DropoutPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *DropoutGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr DropoutGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *GRUPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr GRUPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *EltwisePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr EltwisePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *EluPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr EluPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *EmbeddingLookupFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr EmbeddingLookupFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *EqualPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr EqualPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ExpandDimsPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ExpandDimsPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ExpFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ExpFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *FftImagPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr FftImagPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *FftRealPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr FftRealPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *FillPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr FillPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *FlattenPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr FlattenPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *FlattenGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr FlattenGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *FloorPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr FloorPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *FloorDivPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr FloorDivPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *FloorModPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr FloorModPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *FullConnectionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr FullConnectionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *FusedBatchNormPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr FusedBatchNormPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *GatherPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr GatherPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *GatherNdPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr GatherNdPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *GreaterPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr GreaterPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *GreaterEqualPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr GreaterEqualPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *HashtableLookupPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr HashtableLookupPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *InstanceNormPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr InstanceNormPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *InvertPermutationPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr InvertPermutationPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LayerNormFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LayerNormFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LayerNormGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LayerNormGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LeakyReluPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LeakyReluPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LessPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LessPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LessEqualPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LessEqualPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LogPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LogPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LogGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LogGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LogicalAndPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LogicalAndPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LogicalNotPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LogicalNotPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LogicalOrPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LogicalOrPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LrnPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LrnPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LpNormalizationPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LpNormalizationPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LshProjectionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LshProjectionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LSTMPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LSTMPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *L2NormalizeFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr L2NormalizeFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *MatMulPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr MatMulPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *MaximumPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr MaximumPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *MaximumGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr MaximumGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *MaxPoolFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr MaxPoolFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *MaxPoolGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr MaxPoolGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *MergePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr MergePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *MfccPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr MfccPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *MinimumPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr MinimumPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *MinimumGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr MinimumGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ModPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ModPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *MulFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr MulFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *MulGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr MulGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *NegPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr NegPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *NegGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr NegGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *NotEqualPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr NotEqualPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *NonMaxSuppressionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr NonMaxSuppressionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *OneHotPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr OneHotPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *OnesLikePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr OnesLikePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *PadFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr PadFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *PartialFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr PartialFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *PowerGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr PowerGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *PowFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr PowFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *PReLUFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr PReLUFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *QuantDTypeCastPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr QuantDTypeCastPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *RangePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr RangePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *RandomStandardNormalPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr RandomStandardNormalPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *RankPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr RankPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *RealDivPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr RealDivPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ReciprocalPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ReciprocalPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ReduceFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ReduceFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ReshapePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ReshapePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ResizePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ResizePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ResizeGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ResizeGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ReverseV2PrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ReverseV2PrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ReverseSequencePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ReverseSequencePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *RfftPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr RfftPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ROIPoolingPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ROIPoolingPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *RoundPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr RoundPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *RsqrtPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr RsqrtPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *RsqrtGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr RsqrtGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ScaleFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ScaleFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ScatterNdPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ScatterNdPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SelectPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SelectPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SGDPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SGDPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ShapePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ShapePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SigmoidCrossEntropyWithLogitsPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SigmoidCrossEntropyWithLogitsPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SigmoidCrossEntropyWithLogitsGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SigmoidCrossEntropyWithLogitsGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SinPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SinPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SizePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SizePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SkipGramPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SkipGramPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SliceFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SliceFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SmoothL1LossPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SmoothL1LossPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SmoothL1LossGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SmoothL1LossGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SoftmaxPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SoftmaxPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SoftmaxCrossEntropyWithLogitsPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SoftmaxCrossEntropyWithLogitsPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SpaceToBatchPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SpaceToBatchPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SpaceToBatchNDPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SpaceToBatchNDPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SpaceToDepthPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SpaceToDepthPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SparseSoftmaxCrossEntropyWithLogitsPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SparseSoftmaxCrossEntropyWithLogitsPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SparseToDensePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SparseToDensePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SplitPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SplitPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SqrtPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SqrtPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SqrtGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SqrtGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SquarePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SquarePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SquaredDifferencePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SquaredDifferencePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SqueezePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SqueezePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *StackPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr StackPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *StridedSlicePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr StridedSlicePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *StridedSliceGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr StridedSliceGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SubFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SubFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SubGradPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SubGradPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SwitchPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SwitchPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *TensorListFromTensorPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr TensorListFromTensorPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *TensorListGetItemPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr TensorListGetItemPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *TensorListReservePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr TensorListReservePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *TensorListSetItemPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr TensorListSetItemPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *TensorListStackPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr TensorListStackPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *TileFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr TileFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *TopKFusionPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr TopKFusionPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *TransposePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr TransposePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *UniquePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr UniquePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *UnstackPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr UnstackPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *UnsortedSegmentSumPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr UnsortedSegmentSumPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *UnsqueezePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr UnsqueezePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *WherePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr WherePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ZerosLikePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ZerosLikePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *ErfPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr ErfPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *SplicePrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr SplicePrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *LogSoftmaxPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr LogSoftmaxPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *CallPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr CallPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -schema::PrimitiveT *CumSumPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr CumSumPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } @@ -982,9 +983,9 @@ RegistryMSOps g_LogSoftmaxPrimitiveCreatorRegistry("LogSoftmax", LogSoftmaxPrimi RegistryMSOps g_CallPrimitiveCreatorRegistry("call", CallPrimitiveCreator); RegistryMSOps g_CumSumPrimitiveCreatorRegistry("CumSum", CumSumPrimitiveCreator); -schema::PrimitiveT *CustomPrimitiveCreator(const AnfNodePtr &node) { +std::unique_ptr CustomPrimitiveCreator(const AnfNodePtr &node) { auto ms_primc = GetValueNode>(node); - auto *schema_op = new (std::nothrow) schema::CustomT(); + auto schema_op = std::make_unique(); if (schema_op == nullptr) { return nullptr; } @@ -994,21 +995,21 @@ schema::PrimitiveT *CustomPrimitiveCreator(const AnfNodePtr &node) { if (ms_primc->GetAttr("attr") != nullptr) { auto attr_map = ms_primc->get_attr(); for (const auto &attr_item : attr_map) { - auto *attr = new (std::nothrow) schema::AttributeT(); + auto attr = std::make_unique(); if (attr == nullptr) { return nullptr; } attr->name = attr_item.first; attr->data = attr_item.second; - schema_op->attr.emplace_back(attr); + schema_op->attr.emplace_back(std::move(attr)); } } - auto *prim = new (std::nothrow) schema::PrimitiveT(); + auto prim = std::make_unique(); if (prim == nullptr) { return nullptr; } - prim->value.value = schema_op; + prim->value.value = schema_op.release(); prim->value.type = schema::PrimitiveType_Custom; return prim; } diff --git a/mindspore/lite/src/ops/ops_utils.h b/mindspore/lite/src/ops/ops_utils.h index c7b7fcb25e4..bd0934fddac 100644 --- a/mindspore/lite/src/ops/ops_utils.h +++ b/mindspore/lite/src/ops/ops_utils.h @@ -19,12 +19,13 @@ #include #include +#include #include "src/ops/ops_func_declare.h" #ifdef PRIMITIVE_WRITEABLE namespace mindspore { namespace lite { -typedef schema::PrimitiveT *(*PrimitiveTCreator)(const AnfNodePtr &node); +typedef std::unique_ptr (*PrimitiveTCreator)(const AnfNodePtr &node); class MSOpsRegistry { public: @@ -32,8 +33,8 @@ class MSOpsRegistry { static MSOpsRegistry registry; return ®istry; } - void InsertPrimitiveTMap(std::string name, PrimitiveTCreator creator) { primitive_creators[name] = creator; } - PrimitiveTCreator GetPrimitiveCreator(std::string name) { + void InsertPrimitiveTMap(const std::string &name, PrimitiveTCreator creator) { primitive_creators[name] = creator; } + PrimitiveTCreator GetPrimitiveCreator(const std::string &name) { if (primitive_creators.find(name) != primitive_creators.end()) { return primitive_creators[name]; } else { @@ -48,13 +49,13 @@ class MSOpsRegistry { class RegistryMSOps { public: - RegistryMSOps(std::string name, PrimitiveTCreator creator) { + RegistryMSOps(const std::string &name, PrimitiveTCreator creator) { MSOpsRegistry::GetInstance()->InsertPrimitiveTMap(name, creator); } ~RegistryMSOps() = default; }; -schema::PrimitiveT *GetPrimitiveT(const mindspore::AnfNodePtr &node); +std::unique_ptr GetPrimitiveT(const mindspore::AnfNodePtr &node); } // namespace lite } // namespace mindspore #endif diff --git a/mindspore/lite/tools/anf_exporter/anf_exporter.cc b/mindspore/lite/tools/anf_exporter/anf_exporter.cc index c8f8af40dea..5ffb0a37292 100644 --- a/mindspore/lite/tools/anf_exporter/anf_exporter.cc +++ b/mindspore/lite/tools/anf_exporter/anf_exporter.cc @@ -21,9 +21,7 @@ #include #include #include -#include #include "tools/converter/converter_flags.h" -#include "tools/common/tensor_util.h" #include "abstract/abstract_value.h" #include "mindspore/core/ir/primitive.h" #include "mindspore/core/ops/op_utils.h" @@ -35,7 +33,6 @@ #include "tools/optimizer/common/gllo_utils.h" #include "tools/converter/quantizer/bitpacking.h" #include "src/common/utils.h" -#include "ops/op_utils.h" #include "tools/common/graph_util.h" #include "src/ops/ops_utils.h" #include "tools/common/node_util.h" @@ -286,7 +283,7 @@ int AnfExporter::Anf2Fb(const FuncGraphPtr &func_graph, const std::unique_ptr>(cnode->input(0)); - schema::PrimitiveT *primT = nullptr; + std::unique_ptr primT; if (prim == nullptr) { auto fg = GetValueNode(cnode->input(0)); if (fg != nullptr) { @@ -344,7 +341,7 @@ int AnfExporter::Anf2Fb(const FuncGraphPtr &func_graph, const std::unique_ptrinput(0)); } node->name = cnode->fullname_with_scope(); - node->primitive = std::unique_ptr(primT); + node->primitive = std::move(primT); auto device_type_attr = cnode->GetAttr(mindspore::ops::kDeviceType); node->deviceType = (device_type_attr != nullptr) ? GetValue(device_type_attr) : -1; ret = SetOpInputNode(cnode, meta_graphT, node.get()); diff --git a/mindspore/lite/tools/optimizer/fusion/constant_folding_fusion.cc b/mindspore/lite/tools/optimizer/fusion/constant_folding_fusion.cc index 1cbe39d6457..ccce8215d53 100644 --- a/mindspore/lite/tools/optimizer/fusion/constant_folding_fusion.cc +++ b/mindspore/lite/tools/optimizer/fusion/constant_folding_fusion.cc @@ -146,8 +146,8 @@ kernel::LiteKernel *GetLiteKernel(std::vector inputs, std::vectorinput(0)); flatbuffers::FlatBufferBuilder fbb(INITIAL_SIZE); - auto prim = lite::ConvertToPrimitive(prim_t, &fbb); - delete prim_t; + auto prim = lite::ConvertToPrimitive(prim_t.release(), &fbb); + prim_t.reset(); if (prim == nullptr) { fbb.Clear(); MS_LOG(ERROR) << "get primitive failed."; diff --git a/mindspore/lite/tools/optimizer/graph/infershape_pass.cc b/mindspore/lite/tools/optimizer/graph/infershape_pass.cc index 1b4f1a52f8c..afa7b8de4ca 100644 --- a/mindspore/lite/tools/optimizer/graph/infershape_pass.cc +++ b/mindspore/lite/tools/optimizer/graph/infershape_pass.cc @@ -400,8 +400,8 @@ bool InferShapePass::Run(const FuncGraphPtr &func_graph) { } flatbuffers::FlatBufferBuilder fbb(INITIAL_SIZE); - auto prim = lite::ConvertToPrimitive(prim_t, &fbb); - delete prim_t; + auto prim = lite::ConvertToPrimitive(prim_t.release(), &fbb); + prim_t.reset(); if (prim == nullptr) { MS_LOG(ERROR) << "get primitive failed."; FreeTensors(&input_tensors); diff --git a/mindspore/lite/tools/optimizer/graph/node_infershape.cc b/mindspore/lite/tools/optimizer/graph/node_infershape.cc index 041ab24761e..ff23feb0c1e 100644 --- a/mindspore/lite/tools/optimizer/graph/node_infershape.cc +++ b/mindspore/lite/tools/optimizer/graph/node_infershape.cc @@ -117,7 +117,7 @@ bool NodeInferShape::JudgeOpSupportInfer(const CNodePtr &cnode) { } auto parameter_gen = lite::PopulateRegistry::GetInstance()->GetParameterCreator(prim_t->value.type, lite::SCHEMA_CUR); if (parameter_gen == nullptr) { - delete prim_t; + prim_t.reset(); return false; } return true; @@ -153,8 +153,8 @@ STATUS NodeInferShape::InferShape(const CNodePtr &cnode) { return lite::RET_ERROR; } flatbuffers::FlatBufferBuilder fbb(INITIAL_SIZE); - auto prim = lite::ConvertToPrimitive(prim_t, &fbb); - delete prim_t; + auto prim = lite::ConvertToPrimitive(prim_t.release(), &fbb); + prim_t.reset(); if (prim == nullptr) { MS_LOG(ERROR) << "get primitive failed."; FreeTensors(&inputs);