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