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

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