You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

ops.h 12 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. /**
  2. * Copyright 2019-2020 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. #ifndef MINDSPORE_CCSRC_OPERATOR_OPS_H_
  17. #define MINDSPORE_CCSRC_OPERATOR_OPS_H_
  18. #include <iostream>
  19. #include <string>
  20. #include <memory>
  21. #include "ir/anf.h"
  22. #include "ir/primitive_base.h"
  23. namespace mindspore {
  24. // namespace to support primitive operators
  25. namespace prim {
  26. ValuePtr GetPythonOps(const std::string &op_name,
  27. const std::string &module_name = "mindspore._extends.parse.standard_method",
  28. bool use_signature = false);
  29. // Arithmetic
  30. extern const PrimitivePtr kPrimScalarAdd;
  31. extern const PrimitivePtr kPrimScalarSub;
  32. extern const PrimitivePtr kPrimScalarMul;
  33. extern const PrimitivePtr kPrimScalarDiv;
  34. extern const PrimitivePtr kPrimScalarFloordiv;
  35. extern const PrimitivePtr kPrimScalarMod;
  36. extern const PrimitivePtr kPrimScalarPow;
  37. extern const PrimitivePtr kPrimScalarTrunc;
  38. extern const PrimitivePtr kPrimScalarFloor;
  39. extern const PrimitivePtr kPrimScalarUadd;
  40. extern const PrimitivePtr kPrimScalarUsub;
  41. extern const PrimitivePtr kPrimScalarExp;
  42. extern const PrimitivePtr kPrimScalarLog;
  43. extern const PrimitivePtr kPrimScalarSin;
  44. extern const PrimitivePtr kPrimScalarCos;
  45. extern const PrimitivePtr kPrimScalarTan;
  46. // Comparisons
  47. extern const PrimitivePtr kPrimScalarEq;
  48. extern const PrimitivePtr kPrimScalarLt;
  49. extern const PrimitivePtr kPrimScalarGt;
  50. extern const PrimitivePtr kPrimScalarNe;
  51. extern const PrimitivePtr kPrimScalarLe;
  52. extern const PrimitivePtr kPrimScalarGe;
  53. extern const PrimitivePtr kPrimBoolNot;
  54. extern const PrimitivePtr kPrimBoolAnd;
  55. extern const PrimitivePtr kPrimBoolOr;
  56. extern const PrimitivePtr kPrimBoolEq;
  57. extern const PrimitivePtr kPrimGreater;
  58. extern const PrimitivePtr kPrimGreaterEqual;
  59. extern const PrimitivePtr kPrimLess;
  60. extern const PrimitivePtr kPrimLessEqual;
  61. extern const PrimitivePtr kPrimEqual;
  62. extern const PrimitivePtr kPrimNotEqual;
  63. // Type introspection
  64. extern const PrimitivePtr kPrimTypeOf;
  65. extern const PrimitivePtr kPrimHasType;
  66. // Statements
  67. extern const PrimitivePtr kPrimSwitch;
  68. extern const PrimitivePtr kPrimSwitchLayer;
  69. extern const PrimitivePtr kPrimReturn;
  70. extern const PrimitivePtr kPrimAssign;
  71. extern const PrimitivePtr kPrimAssignAdd;
  72. extern const PrimitivePtr kPrimAssignSub;
  73. extern const PrimitivePtr kPrimSelect;
  74. extern const PrimitivePtr kPrimCall;
  75. extern const PrimitivePtr kPrimDistribute;
  76. extern const PrimitivePtr kPrimDot;
  77. extern const PrimitivePtr kPrimIm2Col;
  78. extern const PrimitivePtr kPrimCol2Im;
  79. extern const PrimitivePtr kPrimIm2ColV1;
  80. extern const PrimitivePtr kPrimCol2ImV1;
  81. extern const PrimitivePtr kPrimResolve;
  82. extern const PrimitivePtr kPrimEmbed;
  83. extern const PrimitivePtr kPrimRefToEmbed;
  84. extern const PrimitivePtr kPrimCreateInstance;
  85. extern const PrimitivePtr kPrimLabelGoto;
  86. extern const PrimitivePtr kPrimLabelSwitch;
  87. extern const PrimitivePtr kPrimLabelSet;
  88. // Structure
  89. extern const PrimitivePtr kPrimStringEqual;
  90. extern const PrimitivePtr kPrimStringConcat;
  91. extern const PrimitivePtr kPrimMakeTuple;
  92. extern const PrimitivePtr kPrimMakeList;
  93. extern const PrimitivePtr kPrimMakeDict;
  94. extern const PrimitivePtr kPrimMakeKeywordArg;
  95. extern const PrimitivePtr kPrimExtractKeywordArg;
  96. extern const PrimitivePtr kPrimMakeSlice;
  97. extern const PrimitivePtr kPrimMakeRecord;
  98. extern const PrimitivePtr kPrimTupleGetItem;
  99. extern const PrimitivePtr kPrimListGetItem;
  100. extern const PrimitivePtr kPrimArrayGetItem;
  101. extern const PrimitivePtr kPrimTupleSetItem;
  102. extern const PrimitivePtr kPrimListSetItem;
  103. extern const PrimitivePtr kPrimArraySetItem;
  104. extern const PrimitivePtr kPrimDictGetItem;
  105. extern const PrimitivePtr kPrimDictSetItem;
  106. extern const PrimitivePtr kPrimListAppend;
  107. extern const PrimitivePtr kPrimGetAttr;
  108. extern const PrimitivePtr kPrimTupleLen;
  109. extern const PrimitivePtr kPrimDictLen;
  110. extern const PrimitivePtr kPrimListLen;
  111. extern const PrimitivePtr kPrimArrayLen;
  112. extern const PrimitivePtr kPrimListMap;
  113. extern const PrimitivePtr kPrimListReduce;
  114. extern const PrimitivePtr kPrimTupleReversed;
  115. extern const PrimitivePtr kPrimTileShape;
  116. extern const PrimitivePtr kPrimReducedShape;
  117. extern const PrimitivePtr kPrimTupleDiv;
  118. extern const PrimitivePtr kPrimTupleToArray;
  119. extern const PrimitivePtr kPrimShapeMul;
  120. extern const PrimitivePtr kPrimGenerateShapeIndex;
  121. extern const PrimitivePtr kPrimGenerateInverseIndex;
  122. extern const PrimitivePtr kPrimTupleEqual;
  123. extern const PrimitivePtr kPrimListEqual;
  124. extern const PrimitivePtr kPrimMakeRange;
  125. extern const PrimitivePtr kPrimStopGradient;
  126. // Arrays
  127. extern const PrimitivePtr kPrimScalarToArray;
  128. extern const PrimitivePtr kPrimArrayToScalar;
  129. extern const PrimitivePtr kPrimBroadcastShape;
  130. extern const PrimitivePtr kPrimArrayMap;
  131. extern const PrimitivePtr kPrimArrayReduce;
  132. extern const PrimitivePtr kPrimShape;
  133. extern const PrimitivePtr kPrimCast;
  134. extern const PrimitivePtr kPrimConcat;
  135. extern const PrimitivePtr kPrimSqueeze;
  136. extern const PrimitivePtr kPrimTranspose;
  137. extern const PrimitivePtr kPrimGatherV2;
  138. extern const PrimitivePtr kPrimEmbeddingLookup;
  139. extern const PrimitivePtr kPrimEmbeddingLookupCommGrad;
  140. extern const PrimitivePtr kPrimSize;
  141. extern const PrimitivePtr kPrimArgMax;
  142. extern const PrimitivePtr kPrimPack;
  143. extern const PrimitivePtr kPrimUnpack;
  144. extern const PrimitivePtr kPrimUnsortedSegmentMin;
  145. extern const PrimitivePtr kPrimUnsortedSegmentSum;
  146. extern const PrimitivePtr kPrimConcatOffset;
  147. extern const PrimitivePtr kPrimReshape;
  148. extern const PrimitivePtr kPrimTile;
  149. extern const PrimitivePtr kPrimAddN;
  150. extern const PrimitivePtr KPrimTransData;
  151. extern const PrimitivePtr kPrimNMSWithMask;
  152. extern const PrimitivePtr kPrimPad;
  153. extern const PrimitivePtr kPrimArgMaxWithValue;
  154. extern const PrimitivePtr kPrimRealDiv;
  155. extern const PrimitivePtr kPrimSqrt;
  156. extern const PrimitivePtr kPrimReciprocal;
  157. extern const PrimitivePtr kPrimExpandDims;
  158. // Maths
  159. extern const PrimitivePtr kPrimTensorAdd;
  160. extern const PrimitivePtr kPrimMatMul;
  161. extern const PrimitivePtr kPrimBatchMatMul;
  162. extern const PrimitivePtr kPrimMaximumGrad;
  163. extern const PrimitivePtr kPrimMinimumGrad;
  164. extern const PrimitivePtr kPrimReduceMean;
  165. extern const PrimitivePtr kPrimReduceSum;
  166. extern const PrimitivePtr kPrimReduceAll;
  167. extern const PrimitivePtr kPrimReduceMax;
  168. extern const PrimitivePtr kPrimReduceMin;
  169. extern const PrimitivePtr kPrimNeg;
  170. extern const PrimitivePtr kPrimSub;
  171. extern const PrimitivePtr kPrimMul;
  172. extern const PrimitivePtr kPrimMinimum;
  173. extern const PrimitivePtr kPrimMaximum;
  174. extern const PrimitivePtr kPrimSquare;
  175. extern const PrimitivePtr kPrimEqual;
  176. extern const PrimitivePtr kPrimLess;
  177. extern const PrimitivePtr kPrimLessEqual;
  178. extern const PrimitivePtr kPrimCumSum;
  179. extern const PrimitivePtr kPrimCumProd;
  180. extern const PrimitivePtr kPrimSubscalar;
  181. extern const PrimitivePtr kPrimInplaceAdd;
  182. extern const PrimitivePtr kPrimInplaceSub;
  183. extern const PrimitivePtr kPrimPow;
  184. // NN
  185. extern const PrimitivePtr kPrimFlatten;
  186. extern const PrimitivePtr kPrimSoftmax;
  187. extern const PrimitivePtr kPrimLogSoftmax;
  188. extern const PrimitivePtr kPrimLogSoftmaxGrad;
  189. extern const PrimitivePtr kPrimApplyCenteredRMSProp;
  190. extern const PrimitivePtr kPrimTanh;
  191. extern const PrimitivePtr kPrimTanhGrad;
  192. extern const PrimitivePtr kPrimPooling;
  193. extern const PrimitivePtr kPrimPoolingGrad;
  194. extern const PrimitivePtr kPrimFusedBatchNorm;
  195. extern const PrimitivePtr kPrimBatchNorm;
  196. extern const PrimitivePtr kPrimBatchNormGrad;
  197. extern const PrimitivePtr kPrimConv2D;
  198. extern const PrimitivePtr kPrimMaxPool;
  199. extern const PrimitivePtr kPrimMaxPoolGrad;
  200. extern const PrimitivePtr kPrimAvgPoolGrad;
  201. extern const PrimitivePtr kPrimFusedBatchNormGrad;
  202. extern const PrimitivePtr kPrimReluGrad;
  203. extern const PrimitivePtr kPrimConv2DBackpropInput;
  204. extern const PrimitivePtr kPrimConv2DBackpropFilter;
  205. extern const PrimitivePtr kPrimDepthwiseConv2dNative;
  206. extern const PrimitivePtr kPrimDepthwiseConv2dNativeBackpropFilter;
  207. extern const PrimitivePtr kPrimDepthwiseConv2dNativeBackpropInput;
  208. extern const PrimitivePtr kPrimBiasAddGrad;
  209. extern const PrimitivePtr kPrimSoftmaxCrossEntropyWithLogits;
  210. extern const PrimitivePtr kPrimSparseSoftmaxCrossEntropyWithLogits;
  211. extern const PrimitivePtr kPrimMomentum;
  212. extern const PrimitivePtr kPrimApplyMomentum;
  213. extern const PrimitivePtr kPrimLayerNorm;
  214. extern const PrimitivePtr kPrimLayerNormGrad;
  215. extern const PrimitivePtr kPrimLayerNormXBackprop;
  216. extern const PrimitivePtr kPrimLayerNormBetaGammaBackprop;
  217. extern const PrimitivePtr kPrimDropoutGenMask;
  218. extern const PrimitivePtr kPrimDropoutDoMask;
  219. extern const PrimitivePtr kPrimOneHot;
  220. extern const PrimitivePtr kPrimGelu;
  221. extern const PrimitivePtr kPrimGeluGrad;
  222. extern const PrimitivePtr kPrimRelu;
  223. extern const PrimitivePtr kPrimReluV2;
  224. extern const PrimitivePtr kPrimActivation;
  225. extern const PrimitivePtr kPrimZerosLike;
  226. extern const PrimitivePtr kPrimFakeBprop;
  227. extern const PrimitivePtr kPrimBpropCut;
  228. extern const PrimitivePtr kPrimFakeQuantPerLayer;
  229. extern const PrimitivePtr kPrimFakeQuantPerChannel;
  230. // Other Miscellaneous
  231. extern const PrimitivePtr kPrimIdentity;
  232. extern const PrimitivePtr kPrimPartial;
  233. extern const PrimitivePtr kPrimJ;
  234. extern const PrimitivePtr kPrimEnvSetItem;
  235. extern const PrimitivePtr kPrimEnvGetItem;
  236. extern const PrimitivePtr kPrimEnvAdd;
  237. extern const PrimitivePtr kPrimMakeRefKey;
  238. extern const PrimitivePtr kPrimMakeRef;
  239. extern const PrimitivePtr kPrimGetRefKey;
  240. extern const PrimitivePtr kPrimGetRefValue;
  241. extern const PrimitivePtr kPrimGetRefOrigin;
  242. extern const PrimitivePtr kPrimInsertGradientOf;
  243. extern const PrimitivePtr kPrimHookBackward;
  244. extern const PrimitivePtr kPrimPrintShapeType;
  245. extern const PrimitivePtr kPrimPrint;
  246. extern const PrimitivePtr kPrimSameTypeShape;
  247. extern const PrimitivePtr kPrimCheckBprop;
  248. extern const PrimitivePtr kPrimDepend;
  249. extern const PrimitivePtr kPrimStateSetItem;
  250. extern const PrimitivePtr kPrimScalarSummary;
  251. extern const PrimitivePtr kPrimImageSummary;
  252. extern const PrimitivePtr kPrimTensorSummary;
  253. extern const PrimitivePtr kPrimHistogramSummary;
  254. extern const PrimitivePtr kPrimBroadcastGradientArgs;
  255. extern const PrimitivePtr kPrimControlDepend;
  256. extern const PrimitivePtr kPrimIs_;
  257. extern const PrimitivePtr kPrimIsNot;
  258. extern const PrimitivePtr kPrimInDict;
  259. extern const PrimitivePtr kPrimNotInDict;
  260. extern const PrimitivePtr kPrimMixedPrecisionCast;
  261. extern const PrimitivePtr kPrimIsConsant;
  262. extern const PrimitivePtr kPrimEquivFormat;
  263. extern const PrimitivePtr kPrimDebug;
  264. // Comm ops
  265. extern const PrimitivePtr kPrimAllReduce;
  266. extern const PrimitivePtr kPrimMirror;
  267. extern const PrimitivePtr kPrimVirtualDiv;
  268. extern const PrimitivePtr kPrimVirtualDataset;
  269. class DoSignaturePrimitive : public Primitive {
  270. public:
  271. explicit DoSignaturePrimitive(const std::string &name, const ValuePtr &function)
  272. : Primitive("S-Prim-" + name), function_(function) {}
  273. ~DoSignaturePrimitive() override = default;
  274. MS_DECLARE_PARENT(DoSignaturePrimitive, Primitive)
  275. const ValuePtr function() const { return function_; }
  276. private:
  277. ValuePtr function_;
  278. };
  279. using DoSignaturePrimitivePtr = std::shared_ptr<DoSignaturePrimitive>;
  280. class UnpackGraphPrimitive : public Primitive {
  281. public:
  282. explicit UnpackGraphPrimitive(const std::string &name, const bool &with_sens, const bool &need_unpack_args)
  283. : Primitive("UnpackGraph"), with_sens_in_args_(with_sens), need_unpack_args_(need_unpack_args) {}
  284. ~UnpackGraphPrimitive() override = default;
  285. MS_DECLARE_PARENT(UnpackGraphPrimitive, Primitive)
  286. bool with_sens_in_args() const { return with_sens_in_args_; }
  287. bool need_unpack_args() const { return need_unpack_args_; }
  288. private:
  289. bool with_sens_in_args_;
  290. bool need_unpack_args_;
  291. };
  292. using UnpackGraphPrimitivePtr = std::shared_ptr<UnpackGraphPrimitive>;
  293. } // namespace prim
  294. } // namespace mindspore
  295. #endif // MINDSPORE_CCSRC_OPERATOR_OPS_H_