• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)27 std::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)58 std::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