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 11 kB

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