1 /** 2 * Copyright 2021 Huawei Technologies Co., Ltd 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include <memory> 18 #include <utility> 19 #include "src/common/ops/ops_utils.h" 20 #include "mindapi/base/shared_ptr.h" 21 #ifdef PRIMITIVE_WRITEABLE 22 #include "ops/primitive_c.h" 23 24 namespace mindspore { 25 namespace lite { 26 namespace ops { MSOp2SchemaOp(const mindspore::ops::Custom * op)27std::unique_ptr<schema::PrimitiveT> MSOp2SchemaOp(const mindspore::ops::Custom *op) { 28 auto schema_op = std::make_unique<schema::CustomT>(); 29 if (schema_op == nullptr) { 30 return nullptr; 31 } 32 if (op->GetAttr("type") != nullptr) { 33 schema_op->type = op->get_type(); 34 } 35 if (op->GetAttr("attr") != nullptr) { 36 auto attr_map = op->get_attr(); 37 for (const auto &attr_item : attr_map) { 38 auto attr = std::make_unique<schema::AttributeT>(); 39 if (attr == nullptr) { 40 return nullptr; 41 } 42 attr->name = attr_item.first; 43 attr->data = attr_item.second; 44 schema_op->attr.emplace_back(std::move(attr)); 45 } 46 } 47 auto prim = std::make_unique<schema::PrimitiveT>(); 48 if (prim == nullptr) { 49 return nullptr; 50 } 51 prim->value.value = schema_op.release(); 52 prim->value.type = schema::PrimitiveType_Custom; 53 return prim; 54 } 55 } // namespace ops 56 57 template <typename T> PrimitiveCreator(const PrimitivePtr & primitive)58std::unique_ptr<schema::PrimitiveT> PrimitiveCreator(const PrimitivePtr &primitive) { 59 auto ms_primc = api::MakeShared<T>(primitive); 60 return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; 61 } 62 63 REG_MINDSPORE_OPERATOR(Abs) 64 REG_MINDSPORE_OPERATOR(Activation) 65 REG_MINDSPORE_OPERATOR(ActivationGrad) 66 REG_MINDSPORE_OPERATOR(Adam) 67 REG_MINDSPORE_OPERATOR(AddFusion) 68 REG_MINDSPORE_OPERATOR(AdderFusion) 69 REG_MINDSPORE_OPERATOR(AddGrad) 70 REG_MINDSPORE_OPERATOR(AddN) 71 REG_MINDSPORE_OPERATOR(All) 72 REG_MINDSPORE_OPERATOR(ApplyMomentum) 73 REG_MINDSPORE_OPERATOR(ArgMaxFusion) 74 REG_MINDSPORE_OPERATOR(ArgMinFusion) 75 REG_MINDSPORE_OPERATOR(Assert) 76 REG_MINDSPORE_OPERATOR(Assign) 77 REG_MINDSPORE_OPERATOR(AssignAdd) 78 REG_MINDSPORE_OPERATOR(AudioSpectrogram) 79 REG_MINDSPORE_OPERATOR(AvgPoolFusion) 80 REG_MINDSPORE_OPERATOR(AvgPoolGrad) 81 REG_MINDSPORE_OPERATOR(BatchNorm) 82 REG_MINDSPORE_OPERATOR(BatchNormGrad) 83 REG_MINDSPORE_OPERATOR(BatchToSpace) 84 REG_MINDSPORE_OPERATOR(BatchToSpaceND) 85 REG_MINDSPORE_OPERATOR(BiasAdd) 86 REG_MINDSPORE_OPERATOR(BinaryCrossEntropy) 87 REG_MINDSPORE_OPERATOR(BinaryCrossEntropyGrad) 88 REG_MINDSPORE_OPERATOR(BiasAddGrad) 89 REG_MINDSPORE_OPERATOR(BroadcastTo) 90 REG_MINDSPORE_OPERATOR(Cast) 91 REG_MINDSPORE_OPERATOR(Ceil) 92 REG_MINDSPORE_OPERATOR(Clip) 93 REG_MINDSPORE_OPERATOR(Concat) 94 REG_MINDSPORE_OPERATOR(Attention) 95 REG_MINDSPORE_OPERATOR(Conv2DBackpropFilterFusion) 96 REG_MINDSPORE_OPERATOR(Conv2DBackpropInputFusion) 97 REG_MINDSPORE_OPERATOR(Conv2DFusion) 98 REG_MINDSPORE_OPERATOR(Conv2dTransposeFusion) 99 REG_MINDSPORE_OPERATOR(Cos) 100 REG_MINDSPORE_OPERATOR(ConstantOfShape) 101 REG_MINDSPORE_OPERATOR(Crop) 102 REG_MINDSPORE_OPERATOR(CustomExtractFeatures) 103 REG_MINDSPORE_OPERATOR(CustomNormalize) 104 REG_MINDSPORE_OPERATOR(CustomPredict) 105 REG_MINDSPORE_OPERATOR(DeConv2DGradFilter) 106 REG_MINDSPORE_OPERATOR(Depend) 107 REG_MINDSPORE_OPERATOR(DepthToSpace) 108 REG_MINDSPORE_OPERATOR(DetectionPostProcess) 109 REG_MINDSPORE_OPERATOR(DivFusion) 110 REG_MINDSPORE_OPERATOR(DivGrad) 111 REG_MINDSPORE_OPERATOR(Dropout) 112 REG_MINDSPORE_OPERATOR(DropoutGrad) 113 REG_MINDSPORE_OPERATOR(Elu) 114 REG_MINDSPORE_OPERATOR(Eltwise) 115 REG_MINDSPORE_OPERATOR(Equal) 116 REG_MINDSPORE_OPERATOR(EmbeddingLookupFusion) 117 REG_MINDSPORE_OPERATOR(ExpFusion) 118 REG_MINDSPORE_OPERATOR(ExpandDims) 119 REG_MINDSPORE_OPERATOR(FakeQuantWithMinMaxVars) 120 REG_MINDSPORE_OPERATOR(FakeQuantWithMinMaxVarsPerChannel) 121 REG_MINDSPORE_OPERATOR(FftReal) 122 REG_MINDSPORE_OPERATOR(FftImag) 123 REG_MINDSPORE_OPERATOR(Flatten) 124 REG_MINDSPORE_OPERATOR(FlattenGrad) 125 REG_MINDSPORE_OPERATOR(Floor) 126 REG_MINDSPORE_OPERATOR(FloorDiv) 127 REG_MINDSPORE_OPERATOR(FloorMod) 128 REG_MINDSPORE_OPERATOR(Fill) 129 REG_MINDSPORE_OPERATOR(FillV2) 130 REG_MINDSPORE_OPERATOR(FullConnection) 131 REG_MINDSPORE_OPERATOR(FusedBatchNorm) 132 REG_MINDSPORE_OPERATOR(Gather) 133 REG_MINDSPORE_OPERATOR(GatherNd) 134 REG_MINDSPORE_OPERATOR(Greater) 135 REG_MINDSPORE_OPERATOR(GreaterEqual) 136 REG_MINDSPORE_OPERATOR(HashtableLookup) 137 REG_MINDSPORE_OPERATOR(InstanceNorm) 138 REG_MINDSPORE_OPERATOR(LayerNormFusion) 139 REG_MINDSPORE_OPERATOR(LeakyRelu) 140 REG_MINDSPORE_OPERATOR(Less) 141 REG_MINDSPORE_OPERATOR(LessEqual) 142 REG_MINDSPORE_OPERATOR(Log) 143 REG_MINDSPORE_OPERATOR(LogGrad) 144 REG_MINDSPORE_OPERATOR(LogicalAnd) 145 REG_MINDSPORE_OPERATOR(LogicalNot) 146 REG_MINDSPORE_OPERATOR(LogicalOr) 147 REG_MINDSPORE_OPERATOR(LpNormalization) 148 REG_MINDSPORE_OPERATOR(LRN) 149 REG_MINDSPORE_OPERATOR(LshProjection) 150 REG_MINDSPORE_OPERATOR(LSTM) 151 REG_MINDSPORE_OPERATOR(L2NormalizeFusion) 152 REG_MINDSPORE_OPERATOR(MatMulFusion) 153 REG_MINDSPORE_OPERATOR(Maximum) 154 REG_MINDSPORE_OPERATOR(MaximumGrad) 155 REG_MINDSPORE_OPERATOR(MaxPoolFusion) 156 REG_MINDSPORE_OPERATOR(MaxPoolGrad) 157 REG_MINDSPORE_OPERATOR(SwitchLayer) 158 REG_MINDSPORE_OPERATOR(Mfcc) 159 REG_MINDSPORE_OPERATOR(Minimum) 160 REG_MINDSPORE_OPERATOR(MinimumGrad) 161 REG_MINDSPORE_OPERATOR(Mod) 162 REG_MINDSPORE_OPERATOR(MulFusion) 163 REG_MINDSPORE_OPERATOR(MulGrad) 164 REG_MINDSPORE_OPERATOR(Neg) 165 REG_MINDSPORE_OPERATOR(NegGrad) 166 REG_MINDSPORE_OPERATOR(NotEqual) 167 REG_MINDSPORE_OPERATOR(NonMaxSuppression) 168 REG_MINDSPORE_OPERATOR(OneHot) 169 REG_MINDSPORE_OPERATOR(OnesLike) 170 REG_MINDSPORE_OPERATOR(PadFusion) 171 REG_MINDSPORE_OPERATOR(PartialFusion) 172 REG_MINDSPORE_OPERATOR(PowerGrad) 173 REG_MINDSPORE_OPERATOR(PowFusion) 174 REG_MINDSPORE_OPERATOR(PriorBox) 175 REG_MINDSPORE_OPERATOR(PReLUFusion) 176 REG_MINDSPORE_OPERATOR(QuantDTypeCast) 177 REG_MINDSPORE_OPERATOR(Rank) 178 REG_MINDSPORE_OPERATOR(Range) 179 REG_MINDSPORE_OPERATOR(Reciprocal) 180 REG_MINDSPORE_OPERATOR(RealDiv) 181 REG_MINDSPORE_OPERATOR(ReduceFusion) 182 REG_MINDSPORE_OPERATOR(Reshape) 183 REG_MINDSPORE_OPERATOR(Resize) 184 REG_MINDSPORE_OPERATOR(ReverseSequence) 185 REG_MINDSPORE_OPERATOR(ReverseV2) 186 REG_MINDSPORE_OPERATOR(Rfft) 187 REG_MINDSPORE_OPERATOR(ROIPooling) 188 REG_MINDSPORE_OPERATOR(Round) 189 REG_MINDSPORE_OPERATOR(Rsqrt) 190 REG_MINDSPORE_OPERATOR(ScaleFusion) 191 REG_MINDSPORE_OPERATOR(ScatterNd) 192 REG_MINDSPORE_OPERATOR(SGD) 193 REG_MINDSPORE_OPERATOR(Shape) 194 REG_MINDSPORE_OPERATOR(SigmoidCrossEntropyWithLogits) 195 REG_MINDSPORE_OPERATOR(SigmoidCrossEntropyWithLogitsGrad) 196 REG_MINDSPORE_OPERATOR(Sin) 197 REG_MINDSPORE_OPERATOR(SkipGram) 198 REG_MINDSPORE_OPERATOR(SliceFusion) 199 REG_MINDSPORE_OPERATOR(SmoothL1Loss) 200 REG_MINDSPORE_OPERATOR(SmoothL1LossGrad) 201 REG_MINDSPORE_OPERATOR(Softmax) 202 REG_MINDSPORE_OPERATOR(SoftmaxCrossEntropyWithLogits) 203 REG_MINDSPORE_OPERATOR(SpaceToBatch) 204 REG_MINDSPORE_OPERATOR(SpaceToBatchND) 205 REG_MINDSPORE_OPERATOR(SpaceToDepth) 206 REG_MINDSPORE_OPERATOR(SparseSoftmaxCrossEntropyWithLogits) 207 REG_MINDSPORE_OPERATOR(SparseToDense) 208 REG_MINDSPORE_OPERATOR(Split) 209 REG_MINDSPORE_OPERATOR(Sqrt) 210 REG_MINDSPORE_OPERATOR(Squeeze) 211 REG_MINDSPORE_OPERATOR(Square) 212 REG_MINDSPORE_OPERATOR(SquaredDifference) 213 REG_MINDSPORE_OPERATOR(Stack) 214 REG_MINDSPORE_OPERATOR(StridedSlice) 215 REG_MINDSPORE_OPERATOR(SubFusion) 216 REG_MINDSPORE_OPERATOR(SubGrad) 217 REG_MINDSPORE_OPERATOR(Switch) 218 REG_MINDSPORE_OPERATOR(TensorListFromTensor) 219 REG_MINDSPORE_OPERATOR(TensorListGetItem) 220 REG_MINDSPORE_OPERATOR(TensorListReserve) 221 REG_MINDSPORE_OPERATOR(TensorListSetItem) 222 REG_MINDSPORE_OPERATOR(TensorListStack) 223 REG_MINDSPORE_OPERATOR(TileFusion) 224 REG_MINDSPORE_OPERATOR(TopKFusion) 225 REG_MINDSPORE_OPERATOR(Transpose) 226 REG_MINDSPORE_OPERATOR(Unique) 227 REG_MINDSPORE_OPERATOR(UnsortedSegmentSum) 228 REG_MINDSPORE_OPERATOR(Unsqueeze) 229 REG_MINDSPORE_OPERATOR(Unstack) 230 REG_MINDSPORE_OPERATOR(LSTMGrad) 231 REG_MINDSPORE_OPERATOR(Where) 232 REG_MINDSPORE_OPERATOR(ZerosLike) 233 REG_MINDSPORE_OPERATOR(Select) 234 REG_MINDSPORE_OPERATOR(ScatterNdUpdate) 235 REG_MINDSPORE_OPERATOR(GRU) 236 REG_MINDSPORE_OPERATOR(NonZero) 237 REG_MINDSPORE_OPERATOR(InvertPermutation) 238 REG_MINDSPORE_OPERATOR(Size) 239 REG_MINDSPORE_OPERATOR(RandomStandardNormal) 240 REG_MINDSPORE_OPERATOR(CropAndResize) 241 REG_MINDSPORE_OPERATOR(Erf) 242 REG_MINDSPORE_OPERATOR(StridedSliceGrad) 243 REG_MINDSPORE_OPERATOR(IsFinite) 244 REG_MINDSPORE_OPERATOR(LinSpace) 245 REG_MINDSPORE_OPERATOR(UniformReal) 246 REG_MINDSPORE_OPERATOR(AbsGrad) 247 REG_MINDSPORE_OPERATOR(RsqrtGrad) 248 REG_MINDSPORE_OPERATOR(SqrtGrad) 249 REG_MINDSPORE_OPERATOR(LayerNormGrad) 250 REG_MINDSPORE_OPERATOR(ResizeGrad) 251 REG_MINDSPORE_OPERATOR(Splice) 252 REG_MINDSPORE_OPERATOR(LogSoftmax) 253 REG_MINDSPORE_OPERATOR(Call) 254 REG_MINDSPORE_OPERATOR(Custom) 255 REG_MINDSPORE_OPERATOR(CumSum) 256 REG_MINDSPORE_OPERATOR(SplitWithOverlap) 257 REG_MINDSPORE_OPERATOR(RaggedRange) 258 REG_MINDSPORE_OPERATOR(GLU) 259 REG_MINDSPORE_OPERATOR(TensorArray) 260 REG_MINDSPORE_OPERATOR(TensorArrayRead) 261 REG_MINDSPORE_OPERATOR(TensorArrayWrite) 262 REG_MINDSPORE_OPERATOR(Affine) 263 REG_MINDSPORE_OPERATOR(AllGather) 264 REG_MINDSPORE_OPERATOR(ReduceScatter) 265 REG_MINDSPORE_OPERATOR(DynamicQuant) 266 REG_MINDSPORE_OPERATOR(LSTMGradData) 267 REG_MINDSPORE_OPERATOR(LSTMGradWeight) 268 REG_MINDSPORE_OPERATOR(RandomNormal) 269 REG_MINDSPORE_OPERATOR(NLLLoss) 270 REG_MINDSPORE_OPERATOR(NLLLossGrad) 271 REG_MINDSPORE_OPERATOR(FormatTranspose) 272 REG_MINDSPORE_OPERATOR(GatherD) 273 REG_MINDSPORE_OPERATOR(GroupNormFusion) 274 REG_MINDSPORE_OPERATOR(Log1p) 275 REG_MINDSPORE_OPERATOR(TensorScatterAdd) 276 REG_MINDSPORE_OPERATOR(ScatterElements) 277 REG_MINDSPORE_OPERATOR(Triu) 278 REG_MINDSPORE_OPERATOR(Tril) 279 REG_MINDSPORE_OPERATOR(SparseFillEmptyRows) 280 REG_MINDSPORE_OPERATOR(SparseReshape) 281 REG_MINDSPORE_OPERATOR(SparseSegmentSum) 282 REG_MINDSPORE_OPERATOR(AdamWeightDecay) 283 } // namespace lite 284 } // namespace mindspore 285 286 #endif 287