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.

utils.h 39 kB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
4 years ago
4 years ago
adapte to remove inline merge me commit for remove inline deal witch multiple cases of switch in ConstructKernelGraph deal with switch and call cases in ConstructKernelGraph fix bug and rebase master ConstructKernelGraph adapte to remove inline fix InsertMultipleAssignToGraph bug add graph input to new graph which is created for switch input replace CreateNewParameterFromCNode to NewParameter in order to set new parameter's abstract and kernel_info avoids create a new switch repeatedly when the cnode is a call switch without real input null pointer check update frontend code Revert "update frontend code" This reverts commit ce1f600d1e9b4b47d9b81122f981bbbe505dd250. update frontend code PR_2948 fix bug of CheckLabalIndex handle switch_layer in ConstructKernelGraph add attr for assign node to avoid erasing by cse pass cherry-pick ms commit[59b35f690ddcc94ff35a4f4eaf3816121b32235b]:temporary avoid list getitem problem rebase master Revert "cherry-pick ms commit[59b35f690ddcc94ff35a4f4eaf3816121b32235b]:temporary avoid list getitem problem" This reverts commit 74c258f94260ca0769a1ef69c6ef8e831c301dbf. Revert "handle switch_layer in ConstructKernelGraph" This reverts commit cb5367f02d69facbca8d39e9234c501608aee27f. Revert "update frontend code PR_2948" This reverts commit 234ac583400a96a8ddd641f7a722e1ccd5e056c6. Revert "merge me commit for remove inline" This reverts commit 55c0ebd42b6699c7686f5ce585e745f87dd42280. fix diff after rebase master doing remove inline in me overwrite FindNodePrimitive Revert "doing remove inline in me" This reverts commit b42e893125bc624d323e855ac6ae615333c06e65.
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792
  1. /**
  2. * Copyright 2019-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. #ifndef MINDSPORE_CCSRC_UTILS_UTILS_H_
  17. #define MINDSPORE_CCSRC_UTILS_UTILS_H_
  18. #include <unistd.h>
  19. #include <fcntl.h>
  20. #include <sys/stat.h>
  21. #include <sys/time.h>
  22. #include <string>
  23. #include <vector>
  24. #include <set>
  25. #include <map>
  26. #include "utils/log_adapter.h"
  27. #include "ir/dtype/type.h"
  28. namespace mindspore {
  29. // op name. Op which not exists in operator/ops.h, so define it's name here
  30. constexpr auto kConcatOpName = "Concat";
  31. constexpr auto kUniqueOpName = "Unique";
  32. constexpr auto kMaskedSelectOpName = "MaskedSelect";
  33. constexpr auto kComputeAccidentalHitsOpName = "ComputeAccidentalHits";
  34. constexpr auto kCTCGreedyDecoderOpName = "CTCGreedyDecoder";
  35. constexpr auto kDynamicStitchOpName = "DynamicStitch";
  36. constexpr auto kFour2FiveOpName = "Four2Five";
  37. constexpr auto kFive2FourOpName = "Five2Four";
  38. constexpr auto kConv3DOpName = "Conv3D";
  39. constexpr auto kConv3DBackpropFilterOpName = "Conv3DBackpropFilter";
  40. constexpr auto kConv3DBackpropInputOpName = "Conv3DBackpropInput";
  41. constexpr auto kConv2DOpName = "Conv2D";
  42. constexpr auto kConvBN1OpName = "ConvBN1";
  43. constexpr auto kBN2AddReluOpName = "BN2AddRelu";
  44. constexpr auto kBN2ReLUOpName = "BN2Relu";
  45. constexpr auto kBN2OpName = "BN2";
  46. constexpr auto kFusedBN1OpName = "FusedBN1";
  47. constexpr auto kFusedBN2OpName = "FusedBN2";
  48. constexpr auto kFusedBN3OpName = "FusedBN3";
  49. constexpr auto kBNGrad1OpName = "BNGrad1";
  50. constexpr auto kBNGrad2OpName = "BNGrad2";
  51. constexpr auto kBNGrad3OpName = "BNGrad3";
  52. constexpr auto kBatchNorm = "BatchNorm";
  53. constexpr auto kInstanceNorm = "InstanceNorm";
  54. constexpr auto kBatchNormWithActivation = "BatchNormWithActivation";
  55. constexpr auto kBatchNormWithAddAndActivation = "BatchNormWithAddAndActivation";
  56. constexpr auto kBatchNormGradWithActivation = "BatchNormGradWithActivation";
  57. constexpr auto kBatchNormGradWithAddAndActivation = "BatchNormGradWithAddAndActivation";
  58. constexpr auto kClearZeroOpName = "ClearZero";
  59. constexpr auto kAtomicAddrCleanOpName = "AtomicAddrClean";
  60. constexpr auto kGetNextOpName = "GetNext";
  61. constexpr auto kInitDatasetQueueOpName = "InitDataSetQueue";
  62. constexpr auto kEndOfSequence = "EndOfSequence";
  63. constexpr auto kAllToAllVOpName = "AllToAllv";
  64. constexpr auto kAllReduceOpName = "AllReduce";
  65. constexpr auto kAllGatherOpName = "AllGather";
  66. constexpr auto kHostAllGatherOpName = "HostAllGather";
  67. constexpr auto kBroadcastOpName = "Broadcast";
  68. constexpr auto kReceiveOpName = "Receive";
  69. constexpr auto kHcomSendOpName = "Send";
  70. constexpr auto kReduceScatterOpName = "ReduceScatter";
  71. constexpr auto kHostReduceScatterOpName = "HostReduceScatter";
  72. constexpr auto kMemCpyAsyncOpName = "memcpy_async";
  73. constexpr auto kTopKOpName = "TopK";
  74. constexpr auto kLinSpaceOpName = "LinSpace";
  75. constexpr auto kExtractImagePatchesOpName = "ExtractImagePatches";
  76. constexpr auto kBNTrainingReduceOpName = "BNTrainingReduce";
  77. constexpr auto kBNTrainingUpdateOpName = "BNTrainingUpdate";
  78. constexpr auto kBNTrainingUpdateV2OpName = "BNTrainingUpdateV2";
  79. constexpr auto kBNTrainingUpdateV3OpName = "BNTrainingUpdateV3";
  80. constexpr auto kSimpleMeanGradOpName = "SimpleMeanGrad";
  81. constexpr auto kMeanGradOpName = "MeanGrad";
  82. constexpr auto kSliceOpName = "Slice";
  83. constexpr auto kSliceGradOpName = "SliceGrad";
  84. constexpr auto kTileOpName = "Tile";
  85. constexpr auto kScatterNdOpName = "ScatterNd";
  86. constexpr auto kStridedSliceAssignOpName = "StridedSliceAssign";
  87. constexpr auto kStridedSliceOpName = "StridedSlice";
  88. constexpr auto kStridedSliceGradOpName = "StridedSliceGrad";
  89. constexpr auto kSparseGatherV2OpName = "SparseGatherV2";
  90. constexpr auto kUnsortedSegmentProdOpName = "UnsortedSegmentProd";
  91. constexpr auto kUnsortedSegmentMinOpName = "UnsortedSegmentMin";
  92. constexpr auto kFlattenGradOpName = "FlattenGrad";
  93. constexpr auto kExpandDimsOpName = "ExpandDims";
  94. constexpr auto kDynamicReshapeOpName = "DynamicReshape";
  95. constexpr auto kReshapeOpName = "Reshape";
  96. constexpr auto kTransposeOpName = "Transpose";
  97. constexpr auto kTransposeNODOpName = "TransposeNOD";
  98. constexpr auto kSplitOpName = "Split";
  99. constexpr auto kSplitVOpName = "SplitV";
  100. constexpr auto kSparseApplyAdagradOpName = "SparseApplyAdagrad";
  101. constexpr auto kMomentumOpName = "Momentum";
  102. constexpr auto kApplyMomentumOpName = "ApplyMomentum";
  103. constexpr auto kCombineMomentumOpName = "CombineMomentum";
  104. constexpr auto kCombineMomentumWeightOpName = "CombineMomentumWeight";
  105. constexpr auto kApplyAdadeltaOpName = "ApplyAdadelta";
  106. constexpr auto kApplyAdagradOpName = "ApplyAdagrad";
  107. constexpr auto kApplyAdagradDAName = "ApplyAdagradDA";
  108. constexpr auto kApplyAdamOpName = "Adam";
  109. constexpr auto kApplyAdaMaxOpName = "ApplyAdaMax";
  110. constexpr auto kApplyAddSignOpName = "ApplyAddSign";
  111. constexpr auto kApplyCenteredRMSPOpName = "ApplyCenteredRMSP";
  112. constexpr auto kApplyCenteredRMSPropOpName = "ApplyCenteredRMSProp";
  113. constexpr auto kApplyFtrlOpName = "ApplyFtrl";
  114. constexpr auto kApplyFtrlV2OpName = "ApplyFtrlV2";
  115. constexpr auto kApplyGradientDescentOpName = "ApplyGradientDescent";
  116. constexpr auto kApplyPowerSignOpName = "ApplyPowerSign";
  117. constexpr auto kApplyProximalAdagradOpName = "ApplyProximalAdagrad ";
  118. constexpr auto kApplyProximalGradientDescentOpName = "ApplyProximalGradientDescent";
  119. constexpr auto kApplyRMSPropOpName = "ApplyRMSProp";
  120. constexpr auto kTransDataOpName = "TransData";
  121. constexpr auto kTransDataRNNOpName = "TransDataRNN";
  122. constexpr auto kStackInitOpName = "StackInit";
  123. constexpr auto kStackPushOpName = "StackPush";
  124. constexpr auto kStackPopOpName = "StackPop";
  125. constexpr auto kStackOpName = "Stack";
  126. constexpr auto kStackDestroyOpName = "StackDestroy";
  127. constexpr auto kBNTrainingUpdateGradOpName = "BNTrainingUpdateGrad";
  128. constexpr auto kBNTrainingReduceGradOpName = "BNTrainingReduceGrad";
  129. constexpr auto kSquareSumV1OpName = "SquareSumV1";
  130. constexpr auto kSquareSumV2OpName = "SquareSumV2";
  131. constexpr auto kClipByNormNoDivSumOpName = "ClipByNormNoDivSum";
  132. constexpr auto kPReluOpName = "PReLU";
  133. constexpr auto kGreaterOpName = "Greater";
  134. constexpr auto kSqrtOpName = "Sqrt";
  135. constexpr auto kRsqrtOpName = "Rsqrt";
  136. constexpr auto kErfOpName = "Erf";
  137. constexpr auto kRealDivOpName = "RealDiv";
  138. constexpr auto kLambUpdateWithLROpName = "LambUpdateWithLR";
  139. constexpr auto kLambNextMVWithDecayOpName = "LambNextMVWithDecay";
  140. constexpr auto kLambNextMVWithDecayV1OpName = "LambNextMVWithDecayV1";
  141. constexpr auto kClipByValueOpName = "ClipByValue";
  142. constexpr auto kLambNextRightOpName = "LambNextRight";
  143. constexpr auto kConfusionSoftmaxGradOpName = "ConfusionSoftmaxGrad";
  144. constexpr auto kLambUpdateWithLrV2OpName = "LambUpdateWithLrV2";
  145. constexpr auto kLayerNormXBackpropOpName = "LayerNormXBackprop";
  146. constexpr auto kLayerNormXBackpropV2OpName = "LayerNormXBackpropV2";
  147. constexpr auto kLayerNormBetaGammaBackpropOpName = "LayerNormBetaGammaBackprop";
  148. constexpr auto kLayerNormBetaGammaBackpropV2OpName = "LayerNormBetaGammaBackpropV2";
  149. constexpr auto kLambNextMVOpName = "LambNextMV";
  150. constexpr auto kConfusionTransposeDOpName = "ConfusionTransposeD";
  151. constexpr auto kAdamApplyOneWithDecayOpName = "AdamApplyOneWithDecay";
  152. constexpr auto kAdamApplyOneWithDecayAssignOpName = "AdamApplyOneWithDecayAssign";
  153. constexpr auto kBatchNormGradOpName = "BatchNormGrad";
  154. constexpr auto kBNInferOpName = "BNInfer";
  155. constexpr auto kAdamApplyOneOpName = "AdamApplyOne";
  156. constexpr auto kAdamApplyOneAssignOpName = "AdamApplyOneAssign";
  157. constexpr auto kResizeNearestNeighborGradOpName = "ResizeNearestNeighborGrad";
  158. constexpr auto kFusedMulAddOpName = "FusedMulAdd";
  159. constexpr auto kFusedMulAddNOpName = "FusedMulAddN";
  160. constexpr auto kFusedMulApplyMomentumOpName = "FusedMulApplyMomentum";
  161. constexpr auto kBiasAddOpName = "BiasAdd";
  162. constexpr auto kConfusionMulGradOpName = "ConfusionMulGrad";
  163. constexpr auto kStreamSwitchOpName = "StreamSwitch";
  164. constexpr auto kStreamActiveOpName = "StreamActive";
  165. constexpr auto kAssignAddOpName = "AssignAdd";
  166. constexpr auto kSendOpName = "StreamSend";
  167. constexpr auto kRecvOpName = "StreamRecv";
  168. constexpr auto kReluV2OpName = "ReLUV2";
  169. constexpr auto kReluGradV2OpName = "ReluGradV2";
  170. constexpr auto kAddNOpName = "AddN";
  171. constexpr auto kResizeNearestNeighborV2OpName = "ResizeNearestNeighborV2";
  172. constexpr auto kResizeNearestNeighborV2GradOpName = "ResizeNearestNeighborV2Grad";
  173. constexpr auto kApplyRMSPropOpname = "ApplyRMSProp";
  174. constexpr auto kCumsumOpName = "Cumsum";
  175. constexpr auto kInplaceAddOpName = "InplaceAdd";
  176. constexpr auto kInplaceSubOpName = "InplaceSub";
  177. constexpr auto kResizeBilinearV2OpName = "kResizeBilinearV2";
  178. constexpr auto kReduceProdOpName = "ReduceProd";
  179. constexpr auto kCumprodOpName = "Cumprod";
  180. constexpr auto kSpaceToBatchOpName = "SpaceToBatch";
  181. constexpr auto kBatchToSpaceOpName = "BatchToSpace";
  182. constexpr auto kSpaceToDepthOpName = "SpaceToDepth";
  183. constexpr auto kPadOpName = "Pad";
  184. constexpr auto kConv2DTransposeOpName = "Conv2DTranspose";
  185. constexpr auto kConv2DBackpropInputOpName = "Conv2DBackpropInput";
  186. constexpr auto kConv2DBackpropFilterOpName = "Conv2DBackpropFilter";
  187. constexpr auto kDepthwiseConv2dNativeOpName = "DepthwiseConv2dNative";
  188. constexpr auto kDepthwiseConv2dNativeBackpropInputOpName = "DepthwiseConv2dNativeBackpropInput";
  189. constexpr auto kDepthwiseConv2dNativeBackpropFilterOpName = "DepthwiseConv2dNativeBackpropFilter";
  190. constexpr auto kFusionOpConv2DBackpropInputReluGradV2Name = "FusionOp_Conv2DBackpropInput_ReluGradV2";
  191. constexpr auto kFusionOpConv2DBackpropInputAddNReluGradV2Name = "FusionOp_Conv2DBackpropInput_AddN_ReluGradV2";
  192. constexpr auto kLabelSetOpName = "LabelSet";
  193. constexpr auto kLabelSwitchOpName = "LabelSwitch";
  194. constexpr auto kLabelGotoOpName = "LabelGoto";
  195. constexpr auto kBNInferGradOpName = "BNInferGrad";
  196. constexpr auto kCallOpName = "call";
  197. constexpr auto kPartialOpName = "partial";
  198. constexpr auto kSwitchOpName = "Switch";
  199. constexpr auto kReturnOpName = "Return";
  200. constexpr auto kBpropCutOpName = "bprop_cut";
  201. constexpr auto kLarsV2OpName = "LarsV2";
  202. constexpr auto kLarsV2UpdateOpName = "LarsV2Update";
  203. constexpr auto kSquareSumAllOpName = "SquareSumAll";
  204. constexpr auto kNMSWithMaskOpName = "NMSWithMask";
  205. constexpr auto kSoftmaxGradExtOpName = "SoftmaxGradExt";
  206. constexpr auto kStridedReadOpName = "StridedRead";
  207. constexpr auto kStridedWriteOpName = "StridedWrite";
  208. constexpr auto kFusedAdamWeightDecayName = "FusedAdamWeightDecay";
  209. constexpr auto kAdamWeightDecayName = "AdamWeightDecay";
  210. constexpr auto kFusedCastAdamWeightDecayName = "FusedCastAdamWeightDecay";
  211. constexpr auto kFusedAdamName = "FusedAdam";
  212. constexpr auto kFusedSparseAdamName = "FusedSparseAdam";
  213. constexpr auto kFusedMatMulBiasAddName = "FusedMatMulBiasAdd";
  214. constexpr auto kDeadNodeName = "DeadNode";
  215. constexpr auto kPolyNodeName = "PolyNode";
  216. constexpr auto kApplyAdagradV2OpName = "ApplyAdagradV2";
  217. constexpr auto kSparseApplyAdagradV2OpName = "SparseApplyAdagradV2";
  218. constexpr auto kSparseApplyFtrlOpName = "SparseApplyFtrl";
  219. constexpr auto kSparseApplyFtrlV2OpName = "SparseApplyFtrlV2";
  220. constexpr auto kApplyKerasMomentumOpName = "ApplyKerasMomentum";
  221. constexpr auto kSparseApplyProximalAdagradOpName = "SparseApplyProximalAdagrad";
  222. constexpr auto kSparseApplyRMSPropOpName = "SparseApplyRMSProp";
  223. constexpr auto kSparseApplyAdadeltaOpName = "SparseApplyAdadelta";
  224. constexpr auto kApplyAdamWithAmsgradOpName = "ApplyAdamWithAmsgrad";
  225. constexpr auto kTensorMoveOpName = "TensorMove";
  226. constexpr auto kTensorCopySlicesOpName = "TensorCopySlices";
  227. constexpr auto kTensorScatterUpdateOpName = "TensorScatterUpdate";
  228. constexpr auto kScatterNdUpdateOpName = "ScatterNdUpdate";
  229. constexpr auto kPushOpName = "Push";
  230. constexpr auto kPullOpName = "Pull";
  231. constexpr auto kPushWeightOpName = "PushWeight";
  232. constexpr auto kPullWeightOpName = "PullWeight";
  233. constexpr auto kFusedPushWeightOpName = "FusedPushWeight";
  234. constexpr auto kFusedPullWeightOpName = "FusedPullWeight";
  235. constexpr auto kUpdateCacheOpName = "UpdateCache";
  236. constexpr auto kCacheSwapTableOpName = "CacheSwapTable";
  237. constexpr auto kEmbeddingLookupOpName = "EmbeddingLookup";
  238. constexpr auto kEmbeddingLookupProxyOpName = "EmbeddingLookupProxy";
  239. constexpr auto kGatherV2OpName = "Gather";
  240. constexpr auto kPaddingOpName = "Padding";
  241. constexpr auto kAvgPoolOpName = "AvgPool";
  242. constexpr auto kAvgPoolGradOpName = "AvgPoolGrad";
  243. constexpr auto kAvgPoolGradVmOpName = "AvgPoolGradVm";
  244. constexpr auto kMaxPoolOpName = "MaxPool";
  245. constexpr auto kmaxPoolGradOpName = "MaxPoolGrad";
  246. constexpr auto kMaxPoolWithArgmaxOpName = "MaxPoolWithArgmax";
  247. constexpr auto kMaxPoolGradWithArgmaxOpName = "MaxPoolGradWithArgmax";
  248. constexpr auto kTensorAddOpName = "Add";
  249. constexpr auto kMaxPool3DGradGradOpName = "MaxPool3DGradGrad";
  250. constexpr auto kCastOpName = "Cast";
  251. constexpr auto kGreaterEqualOpName = "GreaterEqual";
  252. constexpr auto kAbsOpName = "Abs";
  253. constexpr auto kExpOpName = "Exp";
  254. constexpr auto kNegOpName = "Neg";
  255. constexpr auto kMinimumOpName = "Minimum";
  256. constexpr auto kMaximumOpName = "Maximum";
  257. constexpr auto kMulOpName = "Mul";
  258. constexpr auto kSubOpName = "Sub";
  259. constexpr auto kLogOpName = "Log";
  260. constexpr auto kPowOpName = "Pow";
  261. constexpr auto kReciprocalOpName = "Reciprocal";
  262. constexpr auto kEqualOpName = "Equal";
  263. constexpr auto kLessOpName = "Less";
  264. constexpr auto kLessEqualOpName = "LessEqual";
  265. constexpr auto kSquareOpName = "Square";
  266. constexpr auto kSelectOpName = "Select";
  267. constexpr auto kReduceSumOpName = "ReduceSum";
  268. constexpr auto kReduceMinOpName = "ReduceMin";
  269. constexpr auto kReduceMaxOpName = "ReduceMax";
  270. constexpr auto kReduceMeanOpName = "ReduceMean";
  271. constexpr auto kReduceAnyOpName = "ReduceAny";
  272. constexpr auto kReduceAllOpName = "ReduceAll";
  273. constexpr auto kFusedWeightScaleApplyMomentum = "FusedWeightScaleApplyMomentum";
  274. constexpr auto kFusedWeightApplyMomentum = "FusedWeightApplyMomentum";
  275. constexpr auto kFusedScaleApplyMomentum = "FusedScaleApplyMomentum";
  276. constexpr auto kBasicLSTMCellWeightGradOpName = "BasicLSTMCellWeightGrad";
  277. constexpr auto kBasicLSTMCellInputGradOpName = "BasicLSTMCellInputGrad";
  278. constexpr auto kBasicLSTMCellOpName = "BasicLSTMCell";
  279. constexpr auto kDynamicRNNOpName = "DynamicRNN";
  280. constexpr auto kLSTMOpName = "LSTM";
  281. constexpr auto kLSTMGradOpName = "LSTMGrad";
  282. constexpr auto kLSTMInputGradOpName = "LSTMInputGrad";
  283. constexpr auto kDynamicGRUV2OpName = "DynamicGRUV2";
  284. constexpr auto kGRUV2HiddenGradOpName = "GRUV2HiddenGrad";
  285. constexpr auto kGRUV2HiddenGradCellOpName = "GRUV2HiddenGradCell";
  286. constexpr auto kFusedSparseFtrlName = "FusedSparseFtrl";
  287. constexpr auto kFusedSparseProximalAdagradName = "FusedSparseProximalAdagrad";
  288. constexpr auto kFusedSparseLazyAdamName = "FusedSparseLazyAdam";
  289. constexpr auto kSparseApplyFtrlName = "SparseApplyFtrl";
  290. constexpr auto kSparseApplyFtrlV2Name = "SparseApplyFtrlV2";
  291. constexpr auto kSGDName = "SGD";
  292. constexpr auto kLARSUpdateName = "LARSUpdate";
  293. constexpr auto kBasicLSTMCellCStateGradOpName = "BasicLSTMCellCStateGrad";
  294. constexpr auto kBasicLSTMCellCStateGradV2OpName = "BasicLSTMCellCStateGradV2";
  295. constexpr auto kMatMulOpName = "MatMul";
  296. constexpr auto kMatMulV2OpName = "MatMulV2";
  297. constexpr auto kBatchMatMulOpName = "BatchMatMul";
  298. constexpr auto kBatchMatMulV2OpName = "BatchMatMulV2";
  299. constexpr auto kBroadcastToOpName = "BroadcastTo";
  300. constexpr auto kFusedAddReluV2Name = "FusedAddReluV2";
  301. constexpr auto kFusedAddReluGradV2Name = "FusedAddReluGradV2";
  302. constexpr auto kDropoutOpName = "Dropout";
  303. constexpr auto kDropoutGradOpName = "DropoutGrad";
  304. constexpr auto kDropoutGenMaskOpName = "DropoutGenMask";
  305. constexpr auto kDropoutDoMaskOpName = "DropoutDoMask";
  306. constexpr auto kGammaOpName = "Gamma";
  307. constexpr auto kPoissonOpName = "Poisson";
  308. constexpr auto kStandardLaplaceOpName = "StandardLaplace";
  309. constexpr auto kStandardNormalOpName = "StandardNormal";
  310. constexpr auto kUniformIntOpName = "UniformInt";
  311. constexpr auto kUniformRealOpName = "UniformReal";
  312. constexpr auto kSubAndFilterOpName = "SubAndFilter";
  313. constexpr auto kPadAndShiftOpName = "PadAndShift";
  314. constexpr auto kSparseSoftmaxCrossEntropyWithLogitsOpName = "SparseSoftmaxCrossEntropyWithLogits";
  315. constexpr auto kOneHotOpName = "OneHot";
  316. constexpr auto kSoftmaxCrossEntropyWithLogitsOpName = "SoftmaxCrossEntropyWithLogits";
  317. constexpr auto kUniformCandidateSamplerOpName = "UniformCandidateSampler";
  318. constexpr auto kLogSoftmaxGradOpName = "LogSoftmaxGrad";
  319. constexpr auto kLayerNormGradOpName = "LayerNormGrad";
  320. constexpr auto kMinimumGradOpName = "MinimumGrad";
  321. constexpr auto kMaximumGradOpName = "MaximumGrad";
  322. constexpr auto kFusedDbnDwOpName = "FusedDbnDw";
  323. constexpr auto kNPUAllocFloatStatusOpName = "NPUAllocFloatStatus";
  324. constexpr auto kNPUGetFloatStatusOpName = "NPUGetFloatStatus";
  325. constexpr auto kNPUClearFloatStatusOpName = "NPUClearFloatStatus";
  326. constexpr auto kAssignOpName = "Assign";
  327. // Communication world group
  328. constexpr auto kNcclWorldGroup = "nccl_world_group";
  329. constexpr auto kHcclWorldGroup = "hccl_world_group";
  330. constexpr auto kSyncBnGroup = "sync_bn_group";
  331. // Hcom Op Type
  332. constexpr auto kHcomOpTypeAllReduce = "HcomAllReduce";
  333. constexpr auto kHcomOpTypeAllGather = "HcomAllGather";
  334. constexpr auto kHcomOpTypeBroadcast = "HcomBroadcast";
  335. constexpr auto kHcomOpTypeSend = "HcomSend";
  336. constexpr auto kHcomOpTypeReceive = "HcomReceive";
  337. constexpr auto kHcomOpTypeReduceScatter = "HcomReduceScatter";
  338. // attr key name
  339. constexpr auto kAttrInputNames = "input_names";
  340. constexpr auto kAttrAttrNames = "attr_names";
  341. constexpr auto kAttrIsAICPUKernel = "is_AICPU_kernel";
  342. constexpr auto kIsBackendCast = "is_backed_cast";
  343. constexpr auto kAttrOutputNames = "output_names";
  344. constexpr auto kAttrAsync = "async";
  345. constexpr auto kAttrOffload = "offload";
  346. constexpr auto kAttrVisited = "visited";
  347. constexpr auto kAttrShape = "shape";
  348. constexpr auto kAttrMomentum = "momentum";
  349. constexpr auto kAttrEps = "eps";
  350. constexpr auto kAttrEpsilon = "epsilon";
  351. constexpr auto kAttrFactor = "factor";
  352. constexpr auto kAttrIsRef = "isRef";
  353. constexpr auto kAttrDataShape = "data_shape";
  354. constexpr auto kAttrFormat = "format";
  355. constexpr auto kAttrReshapeType = "reshape_type";
  356. constexpr auto kAttrAxis = "axis";
  357. constexpr auto kAttrAxes = "axes";
  358. constexpr auto kAttrKeepDims = "keep_dims";
  359. constexpr auto kAttrShapeGamma = "shape_gamma";
  360. constexpr auto kAttrPerm = "perm";
  361. constexpr auto kAttrTransposeFirst = "transpose_first";
  362. constexpr auto kAttrAtomicAddMemSize = "automic_add_mem_size";
  363. constexpr auto kAttrAtomicOutputIndexs = "atomic_output_clean_indexs";
  364. constexpr auto kAttrNeedAtomic = "need_atomic";
  365. constexpr auto kAttrAtomicWorkspaceIndexs = "atomic_workspace_clean_indexs";
  366. constexpr auto kAttrSwitchCondition = "switch_condition";
  367. constexpr auto kAttrDataType = "data_type";
  368. constexpr auto kAttrDType = "dtype";
  369. constexpr auto kAttrActiveTarget = "active_target";
  370. constexpr auto kAttrActiveStreamId = "active_stream_id";
  371. constexpr auto kAttrActiveStreamList = "active_stream_list";
  372. constexpr auto kAttrTrueBranchStream = "true_branch_stream";
  373. constexpr auto kAttrStreamSwitchKind = "stream_switch_kind";
  374. constexpr auto kAttrEventId = "event_id";
  375. constexpr auto kAttrLabelId = "label_id";
  376. constexpr auto kAttrLogicId = "logic_id";
  377. constexpr auto kAttrNodeInfo = "node_info";
  378. constexpr auto kAttrNodeName = "node_name";
  379. constexpr auto kAttrDynInput = "dynamic";
  380. constexpr auto kAttrDynInputSizes = "dyn_input_sizes";
  381. constexpr auto kAttrSrcFormat = "src_format";
  382. constexpr auto kAttrDstFormat = "dst_format";
  383. constexpr auto kAttrMultiples = "multiples";
  384. constexpr auto kAttrFixPrecision = "fix_precision";
  385. constexpr auto kAttrOutputPrecision = "output_precision";
  386. constexpr auto kAttrOutputUsedNum = "output_used_num";
  387. constexpr auto kAttrHasBias = "has_bias";
  388. constexpr auto kAttrN = "n";
  389. constexpr auto kAttrLabelForInsertStreamActive = "label_for_insert_stream_active";
  390. constexpr auto kAttrFpBpEnd = "fpbp_end";
  391. constexpr auto kAttrFusion = "fusion";
  392. constexpr auto kAttrNotDelayFusion = "not_delay_fusion";
  393. constexpr auto kAttrGroup = "group";
  394. constexpr auto kAttrGroups = "groups";
  395. constexpr auto kAttrGroupBack = "group_back";
  396. constexpr auto kAttrFracZGroup = "fracz_group";
  397. constexpr auto kAttrFracZGroupIdx = "fracz_group_idx";
  398. constexpr auto kAttrOp = "op";
  399. constexpr auto kAttrDestRank = "dest_rank";
  400. constexpr auto kAttrSrcRank = "src_rank";
  401. constexpr auto kAttrSrTag = "sr_tag";
  402. constexpr auto kAttrRootRank = "root_rank";
  403. constexpr auto kAttrIsTraining = "is_training";
  404. constexpr auto kAttrFusionId = "fusion_id";
  405. constexpr auto kAttrDuplicated = "duplicated";
  406. constexpr auto kAttrBucketId = "bucket_id";
  407. constexpr auto kAttrGradOutputIndex = "grad_output_index";
  408. constexpr auto kAttrLabelIndex = "label_index";
  409. constexpr auto kAttrLabelSwitchList = "label_switch_list";
  410. constexpr auto kAttrNewAxisMask = "new_axis_mask";
  411. constexpr auto kAttrShrinkAxisMask = "shrink_axis_mask";
  412. constexpr auto kAttrDatadumpOriginalNames = "_datadump_original_names";
  413. constexpr auto kAttrDatadumpIsMultiop = "_datadump_is_multiop";
  414. constexpr auto kAttrNeedRecordEvent = "need_record_event";
  415. constexpr auto kAttrStreamId = "stream_id";
  416. constexpr auto kAttrRecordEvent = "record_event";
  417. constexpr auto kAttrWaitEvent = "wait_event";
  418. constexpr auto kAttrRecordEventStream = "record_event_stream";
  419. constexpr auto kAttrWaitEventStream = "wait_event_stream";
  420. constexpr auto kAttrIndex = "index";
  421. constexpr auto kAttrSplitDim = "split_dim";
  422. constexpr auto kAttrNumSplit = "num_split";
  423. constexpr auto kAttrReduction = "reduction";
  424. constexpr auto kAttrOutputNum = "output_num";
  425. constexpr auto kAttrSizeSplits = "size_splits";
  426. constexpr auto kAttrOutputDefault = "output_default";
  427. constexpr auto kAttrPrimitiveTarget = "primitive_target";
  428. constexpr auto kAttrUseLocking = "use_locking";
  429. constexpr auto kAttrReduceScatterFlag = "reduce_scatter_flag";
  430. constexpr auto kAttrOffset = "offset";
  431. constexpr auto kAttrCacheEnable = "cache_enable";
  432. constexpr auto kAttrPsKey = "ps_key";
  433. constexpr auto kAttrOptimizerType = "optim_type";
  434. constexpr auto kAttrChildGraph = "child_graph";
  435. constexpr auto kAttrInputNums = "inputNums";
  436. constexpr auto kAttrT = "T";
  437. constexpr auto kAttrNum = "num";
  438. constexpr auto kAttrRecvType = "recv_type";
  439. constexpr auto kAttrConcatDim = "concat_dim";
  440. constexpr auto kAttrSplitCount = "split_count";
  441. constexpr auto kAttrSendRankIds = "send_rank_ids";
  442. constexpr auto kAttrRecvRankIds = "recv_rank_ids";
  443. constexpr auto kAttrSendLens = "send_lens";
  444. constexpr auto kAttrRecvLens = "recv_lens";
  445. constexpr auto kAttrRankSize = "rank_size";
  446. constexpr auto kAttrPadDimSize = "pad_dim_size";
  447. constexpr auto kAttrPaddings = "paddings";
  448. constexpr auto kAttrNumSegments = "num_segments";
  449. constexpr auto kAttrStackOpName = "stack_op_name";
  450. constexpr auto kAttrBegin = "begin";
  451. constexpr auto kAttrEnd = "end";
  452. constexpr auto kAttrSize = "size";
  453. constexpr auto kAttrIsDynamicShape = "is_dynamic_shape";
  454. constexpr auto kAttrInputIsDynamicShape = "input_is_dynamic_shape";
  455. constexpr auto kAttrOutputIsDynamicShape = "output_is_dynamic_shape";
  456. constexpr auto kAttrPynativeNextOpName = "next_op";
  457. constexpr auto kAttrPynativeNextIndex = "next_index";
  458. constexpr auto kAttrCompileInfo = "compile_info";
  459. constexpr auto kAttrFusionType = "fusion_type";
  460. constexpr auto kAttrStride = "stride";
  461. constexpr auto kAttrStrides = "strides";
  462. constexpr auto kAttrKernelSize = "kernel_size";
  463. constexpr auto kAttrDilation = "dilation";
  464. constexpr auto kAttrPadMode = "pad_mode";
  465. constexpr auto kAttrPad = "pad";
  466. constexpr auto kAttrPadding = "padding";
  467. constexpr auto kAttrNonTask = "non_task";
  468. constexpr auto kAttrIsGrad = "is_grad";
  469. constexpr auto kAttrRecompute = "recompute";
  470. constexpr auto kAttrSliceActivation = "slice_activation";
  471. constexpr auto kAttrNeedCseAfterRecompute = "need_cse_after_recompute";
  472. constexpr auto kAttrParallelDimInfo = "parallel_dim_info";
  473. constexpr auto kAttrParallelFusionType = "parallel_fusion_type";
  474. constexpr auto kAttrParallelTypeInfo = "parallel_type_info";
  475. constexpr auto kAttrCompositeType = "composite_type";
  476. constexpr auto kAttrStitch = "stitch";
  477. constexpr auto kAttrTopoSortRhsFirst = "topo_sort_rhs_first";
  478. constexpr auto kAttrIgnoreSideEffect = "ignore_side_effect";
  479. constexpr auto kAttrSwitchLayer = "switch_layer";
  480. constexpr auto kAttrReturn = "return";
  481. constexpr auto kAttrRecursiveStart = "recursive_start";
  482. constexpr auto kAttrRecursiveEnd = "recursive_end";
  483. constexpr auto kAttrRecursive = "recursive";
  484. constexpr auto kAttrMultiCallEnd = "multicall_end";
  485. constexpr auto kAttrProfilingIterEnd = "PROFILING_ITER_END";
  486. constexpr auto kAttrHiddenSize = "hidden_size";
  487. constexpr auto kAttrInputSize = "input_size";
  488. constexpr auto kAttrDstType = "dst_type";
  489. constexpr auto kAttrDump = "dump";
  490. constexpr auto kAttrSkipNopOpAddr = "skip_nop_op_addr";
  491. constexpr auto kAttrFixedInputFormat = "fixed_input_format";
  492. constexpr auto kAttrFixedOutputFormat = "fixed_output_format";
  493. constexpr auto kAttrFixedInputDeviceShape = "fixed_input_device_shape";
  494. constexpr auto kAttrFixedOutputDeviceShape = "fixed_output_device_shape";
  495. constexpr auto kAttrInputToAttrIdx = "input_to_attr_idx";
  496. constexpr auto kAttrInputToAttrName = "input_to_attr_name";
  497. constexpr auto kAttrFuncType = "func_type";
  498. constexpr auto kAttrCustAicpu = "cust_aicpu";
  499. constexpr auto kAttrIsInternalOutput = "is_internal_output";
  500. // custom operator func type
  501. constexpr auto kCustomTypeAOT = "aot";
  502. constexpr auto kCustomTypePyfunc = "pyfunc";
  503. constexpr auto kCustomTypeTbe = "tbe";
  504. constexpr auto kCustomTypeAICPU = "aicpu";
  505. const std::set<std::string> kCustomTypeAkg = {"ir_builder", "tvm_compute", "hybrid"};
  506. // primal attr key name
  507. constexpr auto kPrimalAttrForwardNodeName = "forward_node_name";
  508. // attr value
  509. constexpr auto kValueTargetSwitch = "target_switch";
  510. constexpr auto kValueTargetOther = "target_other";
  511. constexpr auto kValueTrue = "true";
  512. // env key
  513. constexpr auto kGraphOpRun = "GRAPH_OP_RUN";
  514. // some size
  515. const size_t kShape4dDims = 4;
  516. const size_t kShape3dDims = 3;
  517. const size_t kShape2dDims = 2;
  518. const size_t kShape5dDims = 5;
  519. const size_t kShape1dDims = 1;
  520. const size_t kCubeSize = 16;
  521. const size_t kCubeSize_C04 = 4;
  522. const size_t kNiSize = 16;
  523. const size_t kMemAlignSize = 512;
  524. const size_t kBNChannelMultipleFactor = 4;
  525. const int kParameterDataTensorMask = 0;
  526. const int kParameterWeightTensorMask = 1;
  527. const int kValueNodeTensorMask = 2;
  528. constexpr auto kNCHWShapeSize = 4;
  529. // define special index in special node
  530. constexpr auto kDefaultStreamIndex = 0;
  531. constexpr auto kIndependentStreamIndex = 1;
  532. constexpr auto kWorldGroupStreamIndex = 2;
  533. constexpr auto kAnfPrimitiveIndex = 0;
  534. constexpr auto kFirstDataInputIndex = 1;
  535. constexpr auto kRealInputNodeIndexInTupleGetItem = 1;
  536. constexpr auto kInputNodeOutputIndexInTupleGetItem = 2;
  537. constexpr auto kTupleGetItemInputSize = 3;
  538. constexpr auto kSwitchInputSize = 4;
  539. constexpr auto kFirstBranchInSwitch = 2;
  540. constexpr auto kCallKernelGraphIndex = 1;
  541. constexpr auto kSwitchTrueKernelGraphIndex = 2;
  542. constexpr auto kSwitchFalseKernelGraphIndex = 3;
  543. constexpr auto kMakeTupleInSwitchLayerIndex = 2;
  544. constexpr auto kSwitchLayerInputSize = 3;
  545. // index define of control depend
  546. constexpr auto kControlDependPriorIndex = 1;
  547. constexpr auto kControlDependBehindIndex = 2;
  548. constexpr auto kControlDependInputSize = 3;
  549. constexpr auto kControlDependMode = "depend_mode";
  550. // index define of depend
  551. constexpr auto kRealInputIndexInDepend = 1;
  552. constexpr auto kDependAttachNodeIndex = 2;
  553. constexpr auto kDependInputSize = 3;
  554. // index define of UpdateState
  555. constexpr auto kUpdateStateStateInput = 1;
  556. constexpr auto kUpdateStateRealInput = 2;
  557. // index define of Load
  558. constexpr auto kLoadRealInput = 1;
  559. constexpr auto kLoadStateInput = 2;
  560. // time transfer unit
  561. constexpr int kBasicTimeTransferUnit = 1000;
  562. constexpr int kMaxVectorSize = 10000;
  563. // index of input or output
  564. enum Index : size_t {
  565. kIndex0 = 0,
  566. kIndex1,
  567. kIndex2,
  568. kIndex3,
  569. kIndex4,
  570. kIndex5,
  571. kIndex6,
  572. kIndex7,
  573. kIndex8,
  574. kIndex9,
  575. kIndex10,
  576. kIndex11,
  577. kIndex12,
  578. kIndex13,
  579. kIndex14,
  580. kIndex15,
  581. kIndex16,
  582. };
  583. // dim of shape
  584. enum Dim : size_t {
  585. kDim0 = 0,
  586. kDim1,
  587. kDim2,
  588. kDim3,
  589. kDim4,
  590. kDim5,
  591. };
  592. // format
  593. constexpr auto kOpFormat_DEFAULT = "DefaultFormat";
  594. constexpr auto kOpFormat_ChannelFirst = "ChannelFirst";
  595. constexpr auto kOpFormat_ChannelLast = "ChannelLast";
  596. constexpr auto kOpFormat_NC1KHKWHWC0 = "NC1KHKWHWC0";
  597. constexpr auto kOpFormat_ND = "ND";
  598. constexpr auto kOpFormat_NCHW = "NCHW";
  599. constexpr auto kOpFormat_NHWC = "NHWC";
  600. constexpr auto kOpFormat_HWCN = "HWCN";
  601. constexpr auto kOpFormat_NC1HWC0 = "NC1HWC0";
  602. constexpr auto kOpFormat_FRAC_Z = "FracZ";
  603. constexpr auto kOpFormat_FRACTAL_Z = "FRACTAL_Z";
  604. constexpr auto kOpFormat_FRAC_NZ = "FRACTAL_NZ";
  605. constexpr auto kOpFormat_C1HWNCoC0 = "C1HWNCoC0";
  606. constexpr auto kOpFormat_NC1HWC0_C04 = "NC1HWC0_C04";
  607. constexpr auto kOpFormat_FRACTAL_Z_C04 = "FRACTAL_Z_C04";
  608. constexpr auto kOpFormat_NDHWC = "NDHWC";
  609. constexpr auto kOpFormat_NCDHW = "NCDHW";
  610. constexpr auto kOpFormat_DHWNC = "DHWNC";
  611. constexpr auto kOpFormat_DHWCN = "DHWCN";
  612. constexpr auto kOpFormat_NDC1HWC0 = "NDC1HWC0";
  613. constexpr auto kOpFormat_FRACTAL_Z_3D = "FRACTAL_Z_3D";
  614. constexpr auto kOpFormat_FRACTAL_ZN_LSTM = "FRACTAL_ZN_LSTM";
  615. constexpr auto kOpFormat_FRACTAL_ZN_RNN = "FRACTAL_ZN_RNN";
  616. constexpr auto kOpFormat_ND_RNN_BIAS = "ND_RNN_BIAS";
  617. const std::set<std::string> kOpFormatList = {kOpFormat_DEFAULT,
  618. kOpFormat_NC1KHKWHWC0,
  619. kOpFormat_ND,
  620. kOpFormat_NCHW,
  621. kOpFormat_NHWC,
  622. kOpFormat_HWCN,
  623. kOpFormat_NC1HWC0,
  624. kOpFormat_FRAC_Z,
  625. kOpFormat_C1HWNCoC0,
  626. kOpFormat_FRAC_NZ,
  627. kOpFormat_NC1HWC0_C04,
  628. kOpFormat_FRACTAL_Z_C04,
  629. kOpFormat_NDHWC,
  630. kOpFormat_FRACTAL_ZN_LSTM,
  631. kOpFormat_FRACTAL_ZN_RNN,
  632. kOpFormat_ND_RNN_BIAS,
  633. kOpFormat_NDC1HWC0,
  634. kOpFormat_NCDHW,
  635. kOpFormat_FRACTAL_Z_3D,
  636. kOpFormat_DHWNC,
  637. kOpFormat_DHWCN};
  638. constexpr auto kSliceStart = "start";
  639. constexpr auto kSliceStop = "stop";
  640. constexpr auto kSliceStep = "step";
  641. const std::map<std::string, size_t> kSliceAttrToIndex = {{kSliceStart, 1}, {kSliceStop, 2}, {kSliceStep, 3}};
  642. const std::set<std::string> kDefaultCompatibleFormat = {kOpFormat_ND, kOpFormat_NCHW, kOpFormat_NHWC, kOpFormat_HWCN,
  643. kOpFormat_NCDHW};
  644. const std::set<std::string> kOptOperatorSet = {kMomentumOpName,
  645. kApplyMomentumOpName,
  646. kApplyAdadeltaOpName,
  647. kApplyAdagradOpName,
  648. kApplyAdagradDAName,
  649. kApplyAdamOpName,
  650. kApplyAdaMaxOpName,
  651. kApplyAddSignOpName,
  652. kApplyCenteredRMSPOpName,
  653. kApplyFtrlOpName,
  654. kApplyFtrlV2OpName,
  655. kApplyGradientDescentOpName,
  656. kApplyPowerSignOpName,
  657. kApplyProximalAdagradOpName,
  658. kApplyProximalGradientDescentOpName,
  659. kApplyRMSPropOpName,
  660. kAdamApplyOneWithDecayOpName,
  661. kAdamApplyOneWithDecayAssignOpName,
  662. kFusedAdamWeightDecayName,
  663. kAdamWeightDecayName,
  664. kFusedCastAdamWeightDecayName,
  665. kFusedAdamName,
  666. kFusedSparseAdamName,
  667. kFusedMulApplyMomentumOpName,
  668. kFusedWeightScaleApplyMomentum,
  669. kFusedScaleApplyMomentum,
  670. kApplyCenteredRMSPropOpName,
  671. kFusedSparseFtrlName,
  672. kFusedSparseProximalAdagradName,
  673. kFusedSparseLazyAdamName,
  674. kSparseApplyFtrlName,
  675. kSparseApplyFtrlV2Name,
  676. kSGDName,
  677. kLARSUpdateName,
  678. kCombineMomentumWeightOpName,
  679. kCombineMomentumOpName,
  680. kSparseApplyProximalAdagradOpName};
  681. const std::set<std::string> kNodeWithSeedOperators = {kGammaOpName, kPoissonOpName, kStandardLaplaceOpName,
  682. kStandardNormalOpName, kUniformIntOpName, kUniformRealOpName};
  683. const std::set<std::string> kPosteriorOperatorSet = {kPullOpName};
  684. const std::set<std::string> kOpCacheBlackList = {kUniformCandidateSamplerOpName, kInitDatasetQueueOpName,
  685. kGetNextOpName};
  686. const std::set<std::string> kOpNeedSetFlushZeroModeList = {kLSTMOpName, kLSTMGradOpName};
  687. const std::set<std::string> kOpNotSupportMultiThreadExecList = {kAvgPoolOpName, kAvgPoolGradOpName, kMaxPoolOpName,
  688. kBatchNorm, kBatchNormGradOpName};
  689. const std::set<std::string> kHWSpecialFormatSet = {
  690. kOpFormat_FRACTAL_Z_3D, kOpFormat_NC1KHKWHWC0, kOpFormat_NC1HWC0, kOpFormat_FRAC_NZ,
  691. kOpFormat_C1HWNCoC0, kOpFormat_NC1HWC0_C04, kOpFormat_FRACTAL_Z_C04, kOpFormat_FRACTAL_ZN_LSTM,
  692. kOpFormat_FRACTAL_ZN_RNN, kOpFormat_NDC1HWC0, kOpFormat_FRAC_Z};
  693. const std::set<TypeId> kFloatDataTypeSet = {kNumberTypeFloat16, kNumberTypeFloat32};
  694. const std::set<std::string> kComputeDepend = {kUniqueOpName, kComputeAccidentalHitsOpName, kSubAndFilterOpName,
  695. kPadAndShiftOpName, kCTCGreedyDecoderOpName, kDropoutGenMaskOpName,
  696. kMaskedSelectOpName, kDynamicStitchOpName, kGetNextOpName};
  697. const std::set<std::string> k3DFormatSet = {kOpFormat_NCDHW, kOpFormat_NDC1HWC0, kOpFormat_FRACTAL_Z_3D,
  698. kOpFormat_NDHWC, kOpFormat_DHWCN, kOpFormat_DHWNC};
  699. const std::set<std::string> kNoPaddingFormatSet = {kOpFormat_ChannelLast, kOpFormat_FRAC_NZ, kOpFormat_FRACTAL_ZN_RNN,
  700. kOpFormat_ND_RNN_BIAS};
  701. const std::set<std::string> DynamicShapeConstInputToAttr = {
  702. kCastOpName, kExpandDimsOpName, kReshapeOpName, kEmbeddingLookupOpName, kReduceMinOpName,
  703. kReduceMeanOpName, kReduceMaxOpName, kReduceAllOpName, kReduceAnyOpName, kConcatOpName};
  704. const std::set<std::string> DynamicShapeConstInputToAttrCPU = {
  705. kCastOpName, kExpandDimsOpName, kEmbeddingLookupOpName, kReduceMinOpName, kReduceMeanOpName,
  706. kReduceMaxOpName, kReduceAllOpName, kReduceAnyOpName, kConcatOpName, kReduceSumOpName};
  707. const std::set<std::string> DynamicShapeConstInputToAttrGPU = {
  708. kCastOpName, kExpandDimsOpName, kReshapeOpName, kEmbeddingLookupOpName, kTransposeOpName, kReduceSumOpName,
  709. kReduceMinOpName, kReduceMeanOpName, kReduceMaxOpName, kReduceAllOpName, kReduceAnyOpName, kConcatOpName};
  710. static inline void ChangeFileMode(const std::string &file_name, mode_t mode) {
  711. if (access(file_name.c_str(), F_OK) == -1) {
  712. return;
  713. }
  714. try {
  715. if (chmod(common::SafeCStr(file_name), mode) != 0) {
  716. MS_LOG(WARNING) << "Change file `" << file_name << "` to mode " << std::oct << mode << " fail.";
  717. }
  718. } catch (std::exception &e) {
  719. MS_LOG(WARNING) << "File `" << file_name << "` change mode failed! May be not exist.";
  720. }
  721. }
  722. static inline uint64_t GetCurrentUSec() {
  723. struct timeval tv;
  724. int ret = gettimeofday(&tv, nullptr);
  725. if (ret != 0) {
  726. MS_LOG(EXCEPTION) << "Fail gettimeofday, ret = " << ret;
  727. }
  728. return static_cast<uint64_t>(tv.tv_usec + tv.tv_sec * 1000000);
  729. }
  730. #define PROF_START(stage) uint64_t start_usec_##stage = mindspore::GetCurrentUSec()
  731. #define PROF_END(stage) \
  732. do { \
  733. uint64_t end_usec_##stage = mindspore::GetCurrentUSec(); \
  734. MS_LOG(INFO) << #stage << " costs " << (end_usec_##stage - start_usec_##stage) << " usec."; \
  735. } while (0)
  736. #define PROF_MULTI_DEFINE(stage) \
  737. static uint64_t total_##stage = 0; \
  738. static uint64_t count_##stage = 0;
  739. #define PROF_LOCAL_DEFINE(stage) \
  740. uint64_t total_##stage = 0; \
  741. uint64_t count_##stage = 0;
  742. #define PROF_MULTI_START(stage) uint64_t start_usec_##stage = mindspore::GetCurrentUSec()
  743. #define PROF_MULTI_END(stage) \
  744. do { \
  745. ++count_##stage; \
  746. uint64_t end_usec_##stage = mindspore::GetCurrentUSec(); \
  747. total_##stage += (end_usec_##stage - start_usec_##stage); \
  748. } while (0)
  749. #define PROF_MULTI_PRINT(stage) \
  750. do { \
  751. MS_LOG(INFO) << #stage << " called " << count_##stage << " times, costs " << total_##stage << " usec."; \
  752. } while (0)
  753. } // namespace mindspore
  754. #endif // MINDSPORE_CCSRC_UTILS_UTILS_H_