|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- /**
- * Copyright 2019-2020 Huawei Technologies Co., Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- #ifndef MINDSPORE_CCSRC_OPERATOR_OPS_H_
- #define MINDSPORE_CCSRC_OPERATOR_OPS_H_
-
- #include <iostream>
- #include <string>
- #include <memory>
- #include "ir/anf.h"
- #include "ir/primitive_base.h"
-
- namespace mindspore {
- // namespace to support primitive operators
- namespace prim {
- ValuePtr GetPythonOps(const std::string &op_name,
- const std::string &module_name = "mindspore._extends.parse.standard_method",
- bool use_signature = false);
-
- // Arithmetic
- extern const PrimitivePtr kPrimScalarAdd;
- extern const PrimitivePtr kPrimScalarSub;
- extern const PrimitivePtr kPrimScalarMul;
- extern const PrimitivePtr kPrimScalarDiv;
- extern const PrimitivePtr kPrimScalarFloordiv;
- extern const PrimitivePtr kPrimScalarMod;
- extern const PrimitivePtr kPrimScalarPow;
- extern const PrimitivePtr kPrimScalarTrunc;
- extern const PrimitivePtr kPrimScalarFloor;
- extern const PrimitivePtr kPrimScalarUadd;
- extern const PrimitivePtr kPrimScalarUsub;
- extern const PrimitivePtr kPrimScalarExp;
- extern const PrimitivePtr kPrimScalarLog;
- extern const PrimitivePtr kPrimScalarSin;
- extern const PrimitivePtr kPrimScalarCos;
- extern const PrimitivePtr kPrimScalarTan;
-
- // Comparisons
- extern const PrimitivePtr kPrimScalarEq;
- extern const PrimitivePtr kPrimScalarLt;
- extern const PrimitivePtr kPrimScalarGt;
- extern const PrimitivePtr kPrimScalarNe;
- extern const PrimitivePtr kPrimScalarLe;
- extern const PrimitivePtr kPrimScalarGe;
- extern const PrimitivePtr kPrimBoolNot;
- extern const PrimitivePtr kPrimBoolAnd;
- extern const PrimitivePtr kPrimBoolOr;
- extern const PrimitivePtr kPrimBoolEq;
- extern const PrimitivePtr kPrimGreater;
- extern const PrimitivePtr kPrimGreaterEqual;
- extern const PrimitivePtr kPrimLess;
- extern const PrimitivePtr kPrimLessEqual;
- extern const PrimitivePtr kPrimEqual;
- extern const PrimitivePtr kPrimNotEqual;
-
- // Type introspection
- extern const PrimitivePtr kPrimTypeOf;
- extern const PrimitivePtr kPrimHasType;
-
- // Statements
- extern const PrimitivePtr kPrimSwitch;
- extern const PrimitivePtr kPrimSwitchLayer;
- extern const PrimitivePtr kPrimReturn;
- extern const PrimitivePtr kPrimAssign;
- extern const PrimitivePtr kPrimAssignAdd;
- extern const PrimitivePtr kPrimAssignSub;
- extern const PrimitivePtr kPrimSelect;
- extern const PrimitivePtr kPrimCall;
-
- extern const PrimitivePtr kPrimDistribute;
- extern const PrimitivePtr kPrimDot;
- extern const PrimitivePtr kPrimIm2Col;
- extern const PrimitivePtr kPrimCol2Im;
- extern const PrimitivePtr kPrimIm2ColV1;
- extern const PrimitivePtr kPrimCol2ImV1;
-
- extern const PrimitivePtr kPrimResolve;
- extern const PrimitivePtr kPrimEmbed;
- extern const PrimitivePtr kPrimRefToEmbed;
- extern const PrimitivePtr kPrimCreateInstance;
-
- extern const PrimitivePtr kPrimLabelGoto;
- extern const PrimitivePtr kPrimLabelSwitch;
- extern const PrimitivePtr kPrimLabelSet;
-
- // Structure
- extern const PrimitivePtr kPrimStringEqual;
- extern const PrimitivePtr kPrimStringConcat;
- extern const PrimitivePtr kPrimMakeTuple;
- extern const PrimitivePtr kPrimMakeList;
- extern const PrimitivePtr kPrimMakeDict;
- extern const PrimitivePtr kPrimMakeKeywordArg;
- extern const PrimitivePtr kPrimExtractKeywordArg;
- extern const PrimitivePtr kPrimMakeSlice;
- extern const PrimitivePtr kPrimMakeRecord;
- extern const PrimitivePtr kPrimTupleGetItem;
- extern const PrimitivePtr kPrimListGetItem;
- extern const PrimitivePtr kPrimArrayGetItem;
- extern const PrimitivePtr kPrimTupleSetItem;
- extern const PrimitivePtr kPrimListSetItem;
- extern const PrimitivePtr kPrimArraySetItem;
- extern const PrimitivePtr kPrimDictGetItem;
- extern const PrimitivePtr kPrimDictSetItem;
- extern const PrimitivePtr kPrimListAppend;
- extern const PrimitivePtr kPrimGetAttr;
- extern const PrimitivePtr kPrimTupleLen;
- extern const PrimitivePtr kPrimDictLen;
- extern const PrimitivePtr kPrimListLen;
- extern const PrimitivePtr kPrimArrayLen;
- extern const PrimitivePtr kPrimListMap;
- extern const PrimitivePtr kPrimListReduce;
- extern const PrimitivePtr kPrimTupleReversed;
- extern const PrimitivePtr kPrimTileShape;
- extern const PrimitivePtr kPrimReducedShape;
- extern const PrimitivePtr kPrimTupleDiv;
- extern const PrimitivePtr kPrimTupleToArray;
- extern const PrimitivePtr kPrimShapeMul;
- extern const PrimitivePtr kPrimGenerateShapeIndex;
- extern const PrimitivePtr kPrimGenerateInverseIndex;
- extern const PrimitivePtr kPrimTupleEqual;
- extern const PrimitivePtr kPrimListEqual;
- extern const PrimitivePtr kPrimMakeRange;
- extern const PrimitivePtr kPrimStopGradient;
-
- // Arrays
- extern const PrimitivePtr kPrimScalarToArray;
- extern const PrimitivePtr kPrimArrayToScalar;
- extern const PrimitivePtr kPrimBroadcastShape;
- extern const PrimitivePtr kPrimArrayMap;
- extern const PrimitivePtr kPrimArrayReduce;
- extern const PrimitivePtr kPrimShape;
- extern const PrimitivePtr kPrimCast;
- extern const PrimitivePtr kPrimConcat;
- extern const PrimitivePtr kPrimSqueeze;
- extern const PrimitivePtr kPrimTranspose;
- extern const PrimitivePtr kPrimGatherV2;
- extern const PrimitivePtr kPrimEmbeddingLookup;
- extern const PrimitivePtr kPrimEmbeddingLookupCommGrad;
- extern const PrimitivePtr kPrimSize;
- extern const PrimitivePtr kPrimArgMax;
- extern const PrimitivePtr kPrimPack;
- extern const PrimitivePtr kPrimUnpack;
- extern const PrimitivePtr kPrimUnsortedSegmentMin;
- extern const PrimitivePtr kPrimUnsortedSegmentSum;
- extern const PrimitivePtr kPrimConcatOffset;
- extern const PrimitivePtr kPrimReshape;
- extern const PrimitivePtr kPrimTile;
- extern const PrimitivePtr kPrimAddN;
- extern const PrimitivePtr KPrimTransData;
- extern const PrimitivePtr kPrimNMSWithMask;
- extern const PrimitivePtr kPrimPad;
- extern const PrimitivePtr kPrimArgMaxWithValue;
- extern const PrimitivePtr kPrimRealDiv;
- extern const PrimitivePtr kPrimSqrt;
- extern const PrimitivePtr kPrimReciprocal;
- extern const PrimitivePtr kPrimExpandDims;
-
- // Maths
- extern const PrimitivePtr kPrimTensorAdd;
- extern const PrimitivePtr kPrimMatMul;
- extern const PrimitivePtr kPrimBatchMatMul;
- extern const PrimitivePtr kPrimMaximumGrad;
- extern const PrimitivePtr kPrimMinimumGrad;
- extern const PrimitivePtr kPrimReduceMean;
- extern const PrimitivePtr kPrimReduceSum;
- extern const PrimitivePtr kPrimReduceAll;
- extern const PrimitivePtr kPrimReduceMax;
- extern const PrimitivePtr kPrimReduceMin;
- extern const PrimitivePtr kPrimNeg;
- extern const PrimitivePtr kPrimSub;
- extern const PrimitivePtr kPrimMul;
- extern const PrimitivePtr kPrimMinimum;
- extern const PrimitivePtr kPrimMaximum;
- extern const PrimitivePtr kPrimSquare;
- extern const PrimitivePtr kPrimEqual;
- extern const PrimitivePtr kPrimLess;
- extern const PrimitivePtr kPrimLessEqual;
- extern const PrimitivePtr kPrimCumSum;
- extern const PrimitivePtr kPrimCumProd;
- extern const PrimitivePtr kPrimSubscalar;
- extern const PrimitivePtr kPrimInplaceAdd;
- extern const PrimitivePtr kPrimInplaceSub;
- extern const PrimitivePtr kPrimPow;
-
- // NN
- extern const PrimitivePtr kPrimFlatten;
- extern const PrimitivePtr kPrimSoftmax;
- extern const PrimitivePtr kPrimLogSoftmax;
- extern const PrimitivePtr kPrimLogSoftmaxGrad;
- extern const PrimitivePtr kPrimApplyCenteredRMSProp;
- extern const PrimitivePtr kPrimTanh;
- extern const PrimitivePtr kPrimTanhGrad;
- extern const PrimitivePtr kPrimPooling;
- extern const PrimitivePtr kPrimPoolingGrad;
- extern const PrimitivePtr kPrimFusedBatchNorm;
- extern const PrimitivePtr kPrimBatchNorm;
- extern const PrimitivePtr kPrimBatchNormGrad;
- extern const PrimitivePtr kPrimConv2D;
- extern const PrimitivePtr kPrimMaxPool;
- extern const PrimitivePtr kPrimMaxPoolGrad;
- extern const PrimitivePtr kPrimAvgPoolGrad;
- extern const PrimitivePtr kPrimFusedBatchNormGrad;
- extern const PrimitivePtr kPrimReluGrad;
- extern const PrimitivePtr kPrimConv2DBackpropInput;
- extern const PrimitivePtr kPrimConv2DBackpropFilter;
- extern const PrimitivePtr kPrimDepthwiseConv2dNative;
- extern const PrimitivePtr kPrimDepthwiseConv2dNativeBackpropFilter;
- extern const PrimitivePtr kPrimDepthwiseConv2dNativeBackpropInput;
-
- extern const PrimitivePtr kPrimBiasAddGrad;
- extern const PrimitivePtr kPrimSoftmaxCrossEntropyWithLogits;
- extern const PrimitivePtr kPrimSparseSoftmaxCrossEntropyWithLogits;
- extern const PrimitivePtr kPrimMomentum;
- extern const PrimitivePtr kPrimApplyMomentum;
- extern const PrimitivePtr kPrimLayerNorm;
- extern const PrimitivePtr kPrimLayerNormGrad;
- extern const PrimitivePtr kPrimLayerNormXBackprop;
- extern const PrimitivePtr kPrimLayerNormBetaGammaBackprop;
- extern const PrimitivePtr kPrimDropoutGenMask;
- extern const PrimitivePtr kPrimDropoutDoMask;
- extern const PrimitivePtr kPrimOneHot;
- extern const PrimitivePtr kPrimGelu;
- extern const PrimitivePtr kPrimGeluGrad;
- extern const PrimitivePtr kPrimRelu;
- extern const PrimitivePtr kPrimReluV2;
- extern const PrimitivePtr kPrimActivation;
- extern const PrimitivePtr kPrimZerosLike;
- extern const PrimitivePtr kPrimFakeBprop;
- extern const PrimitivePtr kPrimBpropCut;
- extern const PrimitivePtr kPrimFakeQuantPerLayer;
- extern const PrimitivePtr kPrimFakeQuantPerChannel;
-
- // Other Miscellaneous
- extern const PrimitivePtr kPrimIdentity;
- extern const PrimitivePtr kPrimPartial;
- extern const PrimitivePtr kPrimJ;
- extern const PrimitivePtr kPrimEnvSetItem;
- extern const PrimitivePtr kPrimEnvGetItem;
- extern const PrimitivePtr kPrimEnvAdd;
- extern const PrimitivePtr kPrimMakeRefKey;
- extern const PrimitivePtr kPrimMakeRef;
- extern const PrimitivePtr kPrimGetRefKey;
- extern const PrimitivePtr kPrimGetRefValue;
- extern const PrimitivePtr kPrimGetRefOrigin;
- extern const PrimitivePtr kPrimInsertGradientOf;
- extern const PrimitivePtr kPrimHookBackward;
- extern const PrimitivePtr kPrimPrintShapeType;
- extern const PrimitivePtr kPrimPrint;
- extern const PrimitivePtr kPrimSameTypeShape;
- extern const PrimitivePtr kPrimCheckBprop;
- extern const PrimitivePtr kPrimDepend;
- extern const PrimitivePtr kPrimStateSetItem;
- extern const PrimitivePtr kPrimScalarSummary;
- extern const PrimitivePtr kPrimImageSummary;
- extern const PrimitivePtr kPrimTensorSummary;
- extern const PrimitivePtr kPrimHistogramSummary;
- extern const PrimitivePtr kPrimBroadcastGradientArgs;
- extern const PrimitivePtr kPrimControlDepend;
- extern const PrimitivePtr kPrimIs_;
- extern const PrimitivePtr kPrimIsNot;
- extern const PrimitivePtr kPrimInDict;
- extern const PrimitivePtr kPrimNotInDict;
- extern const PrimitivePtr kPrimMixedPrecisionCast;
- extern const PrimitivePtr kPrimIsConsant;
- extern const PrimitivePtr kPrimEquivFormat;
- extern const PrimitivePtr kPrimDebug;
-
- // Comm ops
- extern const PrimitivePtr kPrimAllReduce;
- extern const PrimitivePtr kPrimMirror;
- extern const PrimitivePtr kPrimVirtualDiv;
- extern const PrimitivePtr kPrimVirtualDataset;
-
- class DoSignaturePrimitive : public Primitive {
- public:
- explicit DoSignaturePrimitive(const std::string &name, const ValuePtr &function)
- : Primitive("S-Prim-" + name), function_(function) {}
-
- ~DoSignaturePrimitive() override = default;
-
- MS_DECLARE_PARENT(DoSignaturePrimitive, Primitive)
-
- const ValuePtr function() const { return function_; }
-
- private:
- ValuePtr function_;
- };
- using DoSignaturePrimitivePtr = std::shared_ptr<DoSignaturePrimitive>;
-
- class UnpackGraphPrimitive : public Primitive {
- public:
- explicit UnpackGraphPrimitive(const std::string &name, const bool &with_sens, const bool &need_unpack_args)
- : Primitive("UnpackGraph"), with_sens_in_args_(with_sens), need_unpack_args_(need_unpack_args) {}
- ~UnpackGraphPrimitive() override = default;
- MS_DECLARE_PARENT(UnpackGraphPrimitive, Primitive)
- bool with_sens_in_args() const { return with_sens_in_args_; }
- bool need_unpack_args() const { return need_unpack_args_; }
-
- private:
- bool with_sens_in_args_;
- bool need_unpack_args_;
- };
- using UnpackGraphPrimitivePtr = std::shared_ptr<UnpackGraphPrimitive>;
- } // namespace prim
- } // namespace mindspore
-
- #endif // MINDSPORE_CCSRC_OPERATOR_OPS_H_
|