mindspore 2.4.10__cp39-cp39-win_amd64.whl → 2.6.0__cp39-cp39-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mindspore might be problematic. Click here for more details.

Files changed (579) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +13 -6
  3. mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
  4. mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
  5. mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
  6. mindspore/_check_jit_forbidden_api.py +3 -0
  7. mindspore/_checkparam.py +3 -38
  8. mindspore/_deprecated/__init__.py +17 -0
  9. mindspore/_deprecated/jit.py +198 -0
  10. mindspore/_extends/builtin_operations.py +1 -1
  11. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  12. mindspore/_extends/parse/__init__.py +6 -7
  13. mindspore/_extends/parse/compile_config.py +83 -0
  14. mindspore/_extends/parse/deprecated/__init__.py +0 -0
  15. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
  16. mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
  17. mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
  18. mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
  19. mindspore/_extends/parse/parser.py +47 -198
  20. mindspore/_extends/parse/resources.py +1 -5
  21. mindspore/_extends/parse/standard_method.py +229 -99
  22. mindspore/_extends/pijit/__init__.py +2 -2
  23. mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
  24. mindspore/_extends/pijit/tensor_func_list.py +27 -0
  25. mindspore/_extends/utils.py +1 -1
  26. mindspore/amp.py +11 -5
  27. mindspore/avcodec-59.dll +0 -0
  28. mindspore/avdevice-59.dll +0 -0
  29. mindspore/avfilter-8.dll +0 -0
  30. mindspore/avformat-59.dll +0 -0
  31. mindspore/avutil-57.dll +0 -0
  32. mindspore/boost/__init__.py +2 -2
  33. mindspore/boost/base.py +3 -7
  34. mindspore/boost/boost_cell_wrapper.py +138 -43
  35. mindspore/common/__init__.py +6 -3
  36. mindspore/common/_grad_function.py +56 -0
  37. mindspore/common/_pijit_context.py +14 -5
  38. mindspore/common/_register_for_tensor.py +1 -2
  39. mindspore/common/_stub_tensor.py +30 -14
  40. mindspore/common/_tensor_cpp_method.py +17 -0
  41. mindspore/common/_tensor_docs.py +4760 -0
  42. mindspore/common/api.py +480 -372
  43. mindspore/common/auto_dynamic_shape.py +41 -44
  44. mindspore/common/dtype.py +39 -36
  45. mindspore/common/dump.py +9 -6
  46. mindspore/common/file_system.py +9 -1
  47. mindspore/common/generator.py +5 -0
  48. mindspore/common/hook_handle.py +6 -2
  49. mindspore/common/initializer.py +13 -10
  50. mindspore/common/jit_begin_end.py +94 -0
  51. mindspore/common/jit_config.py +6 -1
  52. mindspore/common/jit_context.py +76 -0
  53. mindspore/common/jit_trace.py +378 -0
  54. mindspore/common/lazy_inline.py +9 -3
  55. mindspore/common/mindir_util.py +10 -2
  56. mindspore/common/mutable.py +5 -4
  57. mindspore/common/parameter.py +135 -52
  58. mindspore/common/seed.py +2 -2
  59. mindspore/common/sparse_tensor.py +23 -17
  60. mindspore/common/tensor.py +975 -1981
  61. mindspore/communication/__init__.py +7 -5
  62. mindspore/communication/_comm_helper.py +52 -2
  63. mindspore/communication/comm_func.py +240 -181
  64. mindspore/communication/management.py +95 -26
  65. mindspore/context.py +324 -573
  66. mindspore/dataset/__init__.py +65 -37
  67. mindspore/dataset/audio/__init__.py +2 -8
  68. mindspore/dataset/audio/transforms.py +3 -17
  69. mindspore/dataset/callback/ds_callback.py +2 -1
  70. mindspore/dataset/core/config.py +87 -6
  71. mindspore/dataset/engine/cache_admin.py +3 -3
  72. mindspore/dataset/engine/cache_client.py +6 -5
  73. mindspore/dataset/engine/datasets.py +292 -267
  74. mindspore/dataset/engine/datasets_audio.py +22 -8
  75. mindspore/dataset/engine/datasets_standard_format.py +46 -27
  76. mindspore/dataset/engine/datasets_text.py +78 -48
  77. mindspore/dataset/engine/datasets_user_defined.py +183 -117
  78. mindspore/dataset/engine/datasets_vision.py +120 -44
  79. mindspore/dataset/engine/iterators.py +283 -63
  80. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  81. mindspore/dataset/engine/obs/util.py +8 -0
  82. mindspore/dataset/engine/queue.py +40 -0
  83. mindspore/dataset/engine/samplers.py +289 -43
  84. mindspore/dataset/engine/serializer_deserializer.py +3 -2
  85. mindspore/dataset/engine/validators.py +53 -11
  86. mindspore/dataset/text/__init__.py +7 -6
  87. mindspore/dataset/text/transforms.py +6 -5
  88. mindspore/dataset/text/utils.py +3 -3
  89. mindspore/dataset/transforms/__init__.py +0 -9
  90. mindspore/dataset/transforms/py_transforms_util.py +17 -0
  91. mindspore/dataset/transforms/transforms.py +31 -14
  92. mindspore/dataset/utils/browse_dataset.py +1 -1
  93. mindspore/dataset/vision/__init__.py +2 -9
  94. mindspore/dataset/vision/transforms.py +202 -158
  95. mindspore/dataset/vision/utils.py +7 -5
  96. mindspore/dataset/vision/validators.py +1 -2
  97. mindspore/device_context/__init__.py +21 -0
  98. mindspore/device_context/ascend/__init__.py +25 -0
  99. mindspore/device_context/ascend/device.py +72 -0
  100. mindspore/device_context/ascend/op_debug.py +153 -0
  101. mindspore/device_context/ascend/op_precision.py +193 -0
  102. mindspore/device_context/ascend/op_tuning.py +123 -0
  103. mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
  104. mindspore/device_context/cpu/device.py +62 -0
  105. mindspore/device_context/cpu/op_tuning.py +43 -0
  106. mindspore/device_context/gpu/__init__.py +21 -0
  107. mindspore/device_context/gpu/device.py +70 -0
  108. mindspore/device_context/gpu/op_precision.py +67 -0
  109. mindspore/device_context/gpu/op_tuning.py +175 -0
  110. mindspore/device_manager.py +170 -0
  111. mindspore/dnnl.dll +0 -0
  112. mindspore/experimental/es/embedding_service.py +35 -27
  113. mindspore/experimental/llm_boost/__init__.py +1 -0
  114. mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
  115. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +209 -0
  116. mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
  117. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  118. mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
  119. mindspore/experimental/llm_boost/register.py +1 -0
  120. mindspore/experimental/map_parameter.py +4 -4
  121. mindspore/experimental/optim/adadelta.py +6 -6
  122. mindspore/experimental/optim/adagrad.py +4 -4
  123. mindspore/experimental/optim/adam.py +7 -0
  124. mindspore/experimental/optim/adamax.py +4 -4
  125. mindspore/experimental/optim/adamw.py +4 -0
  126. mindspore/experimental/optim/asgd.py +1 -1
  127. mindspore/experimental/optim/lr_scheduler.py +73 -46
  128. mindspore/experimental/optim/radam.py +34 -31
  129. mindspore/experimental/optim/rprop.py +1 -1
  130. mindspore/experimental/optim/sgd.py +1 -1
  131. mindspore/hal/contiguous_tensors_handle.py +6 -10
  132. mindspore/hal/device.py +55 -53
  133. mindspore/hal/event.py +52 -52
  134. mindspore/hal/memory.py +179 -120
  135. mindspore/hal/stream.py +150 -109
  136. mindspore/include/api/context.h +0 -1
  137. mindspore/include/dataset/constants.h +7 -4
  138. mindspore/include/dataset/execute.h +2 -2
  139. mindspore/jpeg62.dll +0 -0
  140. mindspore/log.py +50 -0
  141. mindspore/mindrecord/__init__.py +21 -8
  142. mindspore/mindrecord/config.py +17 -316
  143. mindspore/mindrecord/filereader.py +1 -9
  144. mindspore/mindrecord/filewriter.py +5 -15
  145. mindspore/mindrecord/mindpage.py +1 -9
  146. mindspore/mindspore_backend_common.dll +0 -0
  147. mindspore/mindspore_backend_manager.dll +0 -0
  148. mindspore/mindspore_common.dll +0 -0
  149. mindspore/mindspore_core.dll +0 -0
  150. mindspore/mindspore_dump.dll +0 -0
  151. mindspore/mindspore_frontend.dll +0 -0
  152. mindspore/mindspore_glog.dll +0 -0
  153. mindspore/mindspore_memory_pool.dll +0 -0
  154. mindspore/mindspore_ms_backend.dll +0 -0
  155. mindspore/mindspore_ops.dll +0 -0
  156. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  157. mindspore/mindspore_ops_kernel_common.dll +0 -0
  158. mindspore/mindspore_profiler.dll +0 -0
  159. mindspore/mindspore_pyboost.dll +0 -0
  160. mindspore/mindspore_pynative.dll +0 -0
  161. mindspore/mindspore_res_manager.dll +0 -0
  162. mindspore/mindspore_runtime_pipeline.dll +0 -0
  163. mindspore/mint/__init__.py +798 -761
  164. mindspore/mint/distributed/__init__.py +70 -4
  165. mindspore/mint/distributed/distributed.py +2679 -44
  166. mindspore/mint/linalg/__init__.py +8 -0
  167. mindspore/mint/nn/__init__.py +743 -22
  168. mindspore/mint/nn/functional.py +716 -23
  169. mindspore/mint/nn/layer/__init__.py +21 -4
  170. mindspore/mint/nn/layer/_functions.py +334 -0
  171. mindspore/mint/nn/layer/activation.py +276 -1
  172. mindspore/mint/nn/layer/basic.py +123 -0
  173. mindspore/mint/nn/layer/conv.py +933 -0
  174. mindspore/mint/nn/layer/normalization.py +223 -28
  175. mindspore/mint/nn/layer/padding.py +797 -0
  176. mindspore/mint/nn/layer/pooling.py +235 -0
  177. mindspore/mint/optim/__init__.py +3 -1
  178. mindspore/mint/optim/adam.py +223 -0
  179. mindspore/mint/optim/adamw.py +26 -19
  180. mindspore/mint/optim/sgd.py +171 -0
  181. mindspore/mint/special/__init__.py +2 -1
  182. mindspore/multiprocessing/__init__.py +5 -0
  183. mindspore/nn/__init__.py +4 -1
  184. mindspore/nn/cell.py +1373 -192
  185. mindspore/nn/dynamic_lr.py +2 -1
  186. mindspore/nn/layer/activation.py +29 -27
  187. mindspore/nn/layer/basic.py +51 -35
  188. mindspore/nn/layer/channel_shuffle.py +3 -3
  189. mindspore/nn/layer/container.py +1 -1
  190. mindspore/nn/layer/conv.py +53 -42
  191. mindspore/nn/layer/embedding.py +12 -11
  192. mindspore/nn/layer/normalization.py +56 -49
  193. mindspore/nn/layer/padding.py +4 -3
  194. mindspore/nn/layer/pooling.py +120 -42
  195. mindspore/nn/layer/rnn_cells.py +1 -1
  196. mindspore/nn/layer/rnns.py +2 -1
  197. mindspore/nn/layer/timedistributed.py +5 -5
  198. mindspore/nn/layer/transformer.py +59 -36
  199. mindspore/nn/learning_rate_schedule.py +8 -4
  200. mindspore/nn/loss/loss.py +58 -55
  201. mindspore/nn/optim/ada_grad.py +7 -5
  202. mindspore/nn/optim/adadelta.py +11 -9
  203. mindspore/nn/optim/adafactor.py +1 -1
  204. mindspore/nn/optim/adam.py +19 -15
  205. mindspore/nn/optim/adamax.py +8 -7
  206. mindspore/nn/optim/adasum.py +5 -5
  207. mindspore/nn/optim/asgd.py +3 -1
  208. mindspore/nn/optim/ftrl.py +11 -9
  209. mindspore/nn/optim/lamb.py +1 -1
  210. mindspore/nn/optim/lars.py +1 -4
  211. mindspore/nn/optim/lazyadam.py +12 -10
  212. mindspore/nn/optim/momentum.py +7 -6
  213. mindspore/nn/optim/optimizer.py +3 -3
  214. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  215. mindspore/nn/optim/rmsprop.py +13 -12
  216. mindspore/nn/optim/rprop.py +11 -9
  217. mindspore/nn/optim/sgd.py +9 -6
  218. mindspore/nn/optim/tft_wrapper.py +5 -2
  219. mindspore/nn/optim/thor.py +2 -1
  220. mindspore/nn/probability/bijector/bijector.py +17 -11
  221. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  222. mindspore/nn/probability/bijector/invert.py +2 -2
  223. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  224. mindspore/nn/probability/bijector/softplus.py +3 -2
  225. mindspore/nn/probability/distribution/beta.py +3 -3
  226. mindspore/nn/probability/distribution/categorical.py +1 -1
  227. mindspore/nn/probability/distribution/cauchy.py +4 -2
  228. mindspore/nn/probability/distribution/exponential.py +6 -7
  229. mindspore/nn/probability/distribution/gamma.py +2 -2
  230. mindspore/nn/probability/distribution/gumbel.py +2 -2
  231. mindspore/nn/probability/distribution/half_normal.py +5 -3
  232. mindspore/nn/probability/distribution/logistic.py +5 -3
  233. mindspore/nn/probability/distribution/poisson.py +1 -1
  234. mindspore/nn/probability/distribution/uniform.py +5 -3
  235. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  236. mindspore/nn/reinforcement/tensor_array.py +1 -1
  237. mindspore/nn/utils/init.py +13 -11
  238. mindspore/nn/wrap/__init__.py +6 -6
  239. mindspore/nn/wrap/cell_wrapper.py +181 -122
  240. mindspore/nn/wrap/grad_reducer.py +45 -36
  241. mindspore/nn/wrap/loss_scale.py +6 -7
  242. mindspore/numpy/array_creations.py +63 -65
  243. mindspore/numpy/array_ops.py +149 -144
  244. mindspore/numpy/logic_ops.py +41 -42
  245. mindspore/numpy/math_ops.py +361 -359
  246. mindspore/numpy/utils.py +17 -18
  247. mindspore/numpy/utils_const.py +5 -6
  248. mindspore/opencv_core452.dll +0 -0
  249. mindspore/opencv_imgcodecs452.dll +0 -0
  250. mindspore/opencv_imgproc452.dll +0 -0
  251. mindspore/ops/__init__.py +5 -3
  252. mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
  253. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
  254. mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
  255. mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
  256. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  257. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  258. mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
  259. mindspore/ops/_register_for_op.py +0 -11
  260. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  261. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
  262. mindspore/ops/_vmap/vmap_array_ops.py +52 -25
  263. mindspore/ops/_vmap/vmap_base.py +0 -2
  264. mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
  265. mindspore/ops/_vmap/vmap_math_ops.py +15 -16
  266. mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
  267. mindspore/ops/auto_generate/__init__.py +4 -3
  268. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +258 -46
  269. mindspore/ops/auto_generate/gen_extend_func.py +757 -185
  270. mindspore/ops/auto_generate/gen_ops_def.py +4197 -2243
  271. mindspore/ops/auto_generate/gen_ops_prim.py +16976 -6055
  272. mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
  273. mindspore/ops/composite/__init__.py +2 -1
  274. mindspore/ops/composite/base.py +20 -25
  275. mindspore/ops/composite/math_ops.py +6 -16
  276. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  277. mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
  278. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  279. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  280. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  281. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  282. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  283. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  284. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  285. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  286. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  287. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  288. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  289. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  290. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  291. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  292. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  293. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  294. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  295. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  296. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  297. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  298. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  299. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  300. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  301. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  302. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  303. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
  304. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  305. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  306. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  307. mindspore/ops/function/__init__.py +40 -2
  308. mindspore/ops/function/_add_attr_func.py +58 -0
  309. mindspore/ops/function/array_func.py +2089 -2403
  310. mindspore/ops/function/clip_func.py +80 -23
  311. mindspore/ops/function/debug_func.py +57 -57
  312. mindspore/ops/function/grad/__init__.py +1 -0
  313. mindspore/ops/function/grad/grad_func.py +104 -71
  314. mindspore/ops/function/image_func.py +2 -2
  315. mindspore/ops/function/linalg_func.py +47 -78
  316. mindspore/ops/function/math_func.py +4351 -3813
  317. mindspore/ops/function/nn_func.py +1712 -637
  318. mindspore/ops/function/other_func.py +159 -1
  319. mindspore/ops/function/parameter_func.py +18 -84
  320. mindspore/ops/function/random_func.py +452 -387
  321. mindspore/ops/function/reshard_func.py +4 -70
  322. mindspore/ops/function/sparse_func.py +3 -3
  323. mindspore/ops/function/sparse_unary_func.py +6 -6
  324. mindspore/ops/function/spectral_func.py +25 -58
  325. mindspore/ops/function/vmap_func.py +26 -18
  326. mindspore/ops/functional.py +23 -7
  327. mindspore/ops/functional_overload.py +1548 -0
  328. mindspore/ops/op_info_register.py +32 -244
  329. mindspore/ops/operations/__init__.py +23 -15
  330. mindspore/ops/operations/_custom_ops_utils.py +235 -0
  331. mindspore/ops/operations/_embedding_cache_ops.py +4 -4
  332. mindspore/ops/operations/_grad_ops.py +2 -43
  333. mindspore/ops/operations/_infer_ops.py +2 -1
  334. mindspore/ops/operations/_inner_ops.py +43 -84
  335. mindspore/ops/operations/_ms_kernel.py +4 -10
  336. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  337. mindspore/ops/operations/_scalar_ops.py +3 -2
  338. mindspore/ops/operations/_sequence_ops.py +1 -1
  339. mindspore/ops/operations/_tensor_array.py +1 -1
  340. mindspore/ops/operations/array_ops.py +81 -324
  341. mindspore/ops/operations/comm_ops.py +154 -108
  342. mindspore/ops/operations/custom_ops.py +298 -87
  343. mindspore/ops/operations/debug_ops.py +157 -59
  344. mindspore/ops/operations/inner_ops.py +7 -5
  345. mindspore/ops/operations/linalg_ops.py +1 -57
  346. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  347. mindspore/ops/operations/manually_defined/ops_def.py +928 -180
  348. mindspore/ops/operations/math_ops.py +32 -234
  349. mindspore/ops/operations/nn_ops.py +212 -531
  350. mindspore/ops/operations/other_ops.py +62 -9
  351. mindspore/ops/operations/random_ops.py +13 -7
  352. mindspore/ops/operations/reshard_ops.py +1 -1
  353. mindspore/ops/operations/sparse_ops.py +2 -2
  354. mindspore/ops/primitive.py +66 -53
  355. mindspore/ops/tensor_method.py +1895 -0
  356. mindspore/ops_generate/__init__.py +0 -5
  357. mindspore/ops_generate/aclnn/__init__.py +0 -0
  358. mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
  359. mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
  360. mindspore/ops_generate/api/__init__.py +0 -0
  361. mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
  362. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
  363. mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
  364. mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
  365. mindspore/ops_generate/api/functions_cc_generator.py +237 -0
  366. mindspore/ops_generate/api/gen_api.py +103 -0
  367. mindspore/ops_generate/api/op_api_proto.py +235 -0
  368. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
  369. mindspore/ops_generate/common/__init__.py +0 -0
  370. mindspore/ops_generate/common/base_generator.py +11 -0
  371. mindspore/ops_generate/common/gen_constants.py +91 -0
  372. mindspore/ops_generate/common/gen_utils.py +348 -0
  373. mindspore/ops_generate/common/op_proto.py +473 -0
  374. mindspore/ops_generate/common/template.py +523 -0
  375. mindspore/ops_generate/gen_ops.py +22 -1069
  376. mindspore/ops_generate/op_def/__init__.py +0 -0
  377. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  378. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
  379. mindspore/ops_generate/op_def/ops_def_cc_generator.py +296 -0
  380. mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
  381. mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
  382. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  383. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  384. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  385. mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
  386. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
  387. mindspore/ops_generate/pyboost/__init__.py +0 -0
  388. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
  389. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
  390. mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
  391. mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
  392. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
  393. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
  394. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
  395. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
  396. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
  397. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
  398. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
  399. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
  400. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
  401. mindspore/ops_generate/resources/__init__.py +0 -0
  402. mindspore/ops_generate/resources/resource_list.py +30 -0
  403. mindspore/ops_generate/resources/resource_loader.py +36 -0
  404. mindspore/ops_generate/resources/resource_manager.py +64 -0
  405. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  406. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  407. mindspore/parallel/__init__.py +7 -3
  408. mindspore/parallel/_auto_parallel_context.py +159 -40
  409. mindspore/parallel/_cell_wrapper.py +132 -15
  410. mindspore/parallel/_parallel_serialization.py +107 -5
  411. mindspore/parallel/_ps_context.py +1 -1
  412. mindspore/parallel/_recovery_context.py +7 -2
  413. mindspore/parallel/_tensor.py +142 -18
  414. mindspore/parallel/_utils.py +199 -23
  415. mindspore/parallel/algo_parameter_config.py +4 -4
  416. mindspore/parallel/auto_parallel.py +732 -0
  417. mindspore/parallel/checkpoint_convert.py +159 -0
  418. mindspore/parallel/checkpoint_transform.py +700 -35
  419. mindspore/parallel/cluster/process_entity/_api.py +276 -50
  420. mindspore/parallel/cluster/process_entity/_utils.py +41 -6
  421. mindspore/parallel/cluster/run.py +21 -4
  422. mindspore/parallel/function/__init__.py +24 -0
  423. mindspore/parallel/function/reshard_func.py +258 -0
  424. mindspore/parallel/nn/__init__.py +25 -0
  425. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  426. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  427. mindspore/parallel/parameter_broadcast.py +25 -14
  428. mindspore/parallel/shard.py +137 -59
  429. mindspore/parallel/transform_safetensors.py +364 -305
  430. mindspore/profiler/__init__.py +22 -5
  431. mindspore/profiler/analysis/__init__.py +0 -0
  432. mindspore/profiler/analysis/parser/__init__.py +0 -0
  433. mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
  434. mindspore/profiler/analysis/parser/base_parser.py +158 -0
  435. mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
  436. mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
  437. mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
  438. mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
  439. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
  440. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
  441. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +109 -0
  442. mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
  443. mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
  444. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
  445. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
  446. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
  447. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
  448. mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
  449. mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
  450. mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
  451. mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
  452. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
  453. mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
  454. mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
  455. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
  456. mindspore/profiler/analysis/task_manager.py +131 -0
  457. mindspore/profiler/analysis/time_converter.py +84 -0
  458. mindspore/profiler/analysis/viewer/__init__.py +0 -0
  459. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
  460. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
  461. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
  462. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
  463. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
  464. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
  465. mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
  466. mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
  467. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
  468. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
  469. mindspore/profiler/analysis/work_flow.py +73 -0
  470. mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
  471. mindspore/profiler/common/command_executor.py +90 -0
  472. mindspore/profiler/common/constant.py +186 -3
  473. mindspore/profiler/common/file_manager.py +208 -0
  474. mindspore/profiler/common/log.py +130 -0
  475. mindspore/profiler/common/msprof_cmd_tool.py +221 -0
  476. mindspore/profiler/common/path_manager.py +395 -0
  477. mindspore/profiler/common/process_bar.py +168 -0
  478. mindspore/profiler/common/process_pool.py +9 -3
  479. mindspore/profiler/common/profiler_context.py +500 -0
  480. mindspore/profiler/common/profiler_info.py +304 -0
  481. mindspore/profiler/common/profiler_meta_data.py +74 -0
  482. mindspore/profiler/common/profiler_output_path.py +284 -0
  483. mindspore/profiler/common/profiler_parameters.py +251 -0
  484. mindspore/profiler/common/profiler_path_manager.py +179 -0
  485. mindspore/profiler/common/record_function.py +76 -0
  486. mindspore/profiler/common/tlv_decoder.py +76 -0
  487. mindspore/profiler/common/util.py +75 -2
  488. mindspore/profiler/dynamic_profiler.py +341 -75
  489. mindspore/profiler/envprofiler.py +163 -0
  490. mindspore/profiler/experimental_config.py +197 -0
  491. mindspore/profiler/mstx.py +242 -0
  492. mindspore/profiler/platform/__init__.py +21 -0
  493. mindspore/profiler/platform/base_profiler.py +40 -0
  494. mindspore/profiler/platform/cpu_profiler.py +124 -0
  495. mindspore/profiler/platform/gpu_profiler.py +74 -0
  496. mindspore/profiler/platform/npu_profiler.py +335 -0
  497. mindspore/profiler/profiler.py +1073 -90
  498. mindspore/profiler/profiler_action_controller.py +187 -0
  499. mindspore/profiler/profiler_interface.py +118 -0
  500. mindspore/profiler/schedule.py +243 -0
  501. mindspore/rewrite/api/node.py +15 -13
  502. mindspore/rewrite/api/symbol_tree.py +2 -3
  503. mindspore/run_check/_check_version.py +27 -20
  504. mindspore/run_check/run_check.py +1 -1
  505. mindspore/runtime/__init__.py +37 -0
  506. mindspore/runtime/device.py +27 -0
  507. mindspore/runtime/event.py +209 -0
  508. mindspore/runtime/executor.py +177 -0
  509. mindspore/runtime/memory.py +416 -0
  510. mindspore/runtime/stream.py +460 -0
  511. mindspore/runtime/thread_bind_core.py +401 -0
  512. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  513. mindspore/swresample-4.dll +0 -0
  514. mindspore/swscale-6.dll +0 -0
  515. mindspore/tinyxml2.dll +0 -0
  516. mindspore/train/__init__.py +8 -8
  517. mindspore/train/_utils.py +96 -27
  518. mindspore/train/amp.py +9 -5
  519. mindspore/train/callback/__init__.py +2 -2
  520. mindspore/train/callback/_callback.py +2 -16
  521. mindspore/train/callback/_checkpoint.py +53 -55
  522. mindspore/train/callback/_cluster_monitor.py +14 -18
  523. mindspore/train/callback/_early_stop.py +1 -1
  524. mindspore/train/callback/_flops_collector.py +103 -68
  525. mindspore/train/callback/_history.py +8 -5
  526. mindspore/train/callback/_lambda_callback.py +2 -2
  527. mindspore/train/callback/_landscape.py +0 -3
  528. mindspore/train/callback/_loss_monitor.py +2 -1
  529. mindspore/train/callback/_on_request_exit.py +6 -5
  530. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  531. mindspore/train/callback/_summary_collector.py +52 -19
  532. mindspore/train/callback/_time_monitor.py +2 -1
  533. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +228 -108
  534. mindspore/train/data_sink.py +25 -2
  535. mindspore/train/dataset_helper.py +15 -16
  536. mindspore/train/loss_scale_manager.py +8 -7
  537. mindspore/train/metrics/accuracy.py +3 -3
  538. mindspore/train/metrics/confusion_matrix.py +9 -9
  539. mindspore/train/metrics/error.py +3 -3
  540. mindspore/train/metrics/hausdorff_distance.py +4 -4
  541. mindspore/train/metrics/mean_surface_distance.py +3 -3
  542. mindspore/train/metrics/metric.py +0 -12
  543. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  544. mindspore/train/metrics/precision.py +11 -10
  545. mindspore/train/metrics/recall.py +9 -9
  546. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  547. mindspore/train/mind_ir_pb2.py +174 -46
  548. mindspore/train/model.py +269 -136
  549. mindspore/train/serialization.py +622 -978
  550. mindspore/train/summary/_summary_adapter.py +2 -2
  551. mindspore/train/summary/summary_record.py +2 -3
  552. mindspore/train/train_thor/model_thor.py +1 -1
  553. mindspore/turbojpeg.dll +0 -0
  554. mindspore/utils/__init__.py +6 -3
  555. mindspore/utils/dryrun.py +140 -0
  556. mindspore/utils/hooks.py +81 -0
  557. mindspore/utils/runtime_execution_order_check.py +552 -0
  558. mindspore/utils/utils.py +138 -4
  559. mindspore/version.py +1 -1
  560. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/METADATA +3 -3
  561. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/RECORD +564 -395
  562. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/entry_points.txt +1 -1
  563. mindspore/_install_custom.py +0 -43
  564. mindspore/common/_register_for_adapter.py +0 -74
  565. mindspore/common/_tensor_overload.py +0 -139
  566. mindspore/mindspore_np_dtype.dll +0 -0
  567. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  568. mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
  569. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  570. mindspore/ops_generate/gen_aclnn_implement.py +0 -263
  571. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  572. mindspore/ops_generate/gen_pyboost_func.py +0 -1052
  573. mindspore/ops_generate/gen_utils.py +0 -209
  574. mindspore/ops_generate/op_proto.py +0 -145
  575. mindspore/ops_generate/template.py +0 -261
  576. mindspore/profiler/envprofiling.py +0 -254
  577. mindspore/profiler/profiling.py +0 -1926
  578. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/WHEEL +0 -0
  579. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,90 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Timeline creator for CPU operations."""
16
+ from typing import List
17
+
18
+ from mindspore import log as logger
19
+ from mindspore.profiler.common.constant import EventConstant
20
+ from mindspore.profiler.common.constant import TimelineLayerName
21
+ from mindspore.profiler.analysis.parser.timeline_creator.base_timeline_creator import BaseTimelineCreator
22
+ from mindspore.profiler.analysis.parser.timeline_event.timeline_event_pool import TimelineEventPool
23
+ from mindspore.profiler.analysis.parser.timeline_event.cpu_op_event import CpuOpCompleteEvent
24
+ from mindspore.profiler.analysis.parser.timeline_event.cpu_op_event import CpuOpMetaEvent
25
+
26
+
27
+ class CpuOpTimelineCreator(BaseTimelineCreator):
28
+ """Create timeline event pools for CPU operations."""
29
+
30
+ def __init__(self):
31
+ super().__init__()
32
+ self.scope_data: List[CpuOpCompleteEvent] = []
33
+
34
+ def create(self, cpu_info_lines: List[str]) -> None:
35
+ """Create timeline event pools from CPU info lines."""
36
+ if not cpu_info_lines:
37
+ return
38
+
39
+ pool = TimelineEventPool(EventConstant.CPU_OP_PID)
40
+ self.event_pools[EventConstant.CPU_OP_PID] = pool
41
+
42
+ self._create_base_events(pool, cpu_info_lines)
43
+ self._create_meta_event(pool)
44
+
45
+ def _create_base_events(self, pool: TimelineEventPool, cpu_info_lines: List[str]) -> None:
46
+ """Create base events from CPU info lines."""
47
+ for line in cpu_info_lines:
48
+ line = line.strip()
49
+ if not line:
50
+ continue
51
+
52
+ op_list = line.split(';')
53
+ if len(op_list) < 3:
54
+ logger.warning(f"Invalid CPU info format, expected at least 3 fields but got {len(op_list)}: {line}")
55
+ continue
56
+
57
+ op_full_name, op_type, time_info = op_list[0], op_list[1], op_list[-1]
58
+
59
+ for time in time_info.split():
60
+ time_parts = time.split(',')
61
+ if len(time_parts) != 3:
62
+ logger.warning(f"Invalid time info format, expected 3 fields but got {len(time_parts)}: {time}")
63
+ continue
64
+
65
+ start_time, dur, tid = time_parts
66
+ event = CpuOpCompleteEvent({
67
+ 'name': op_full_name,
68
+ 'tid': int(tid),
69
+ 'ts': str(start_time),
70
+ 'dur': str(dur),
71
+ 'args': {'type': op_type}
72
+ })
73
+ pool.add_event(event)
74
+
75
+ @staticmethod
76
+ def _create_meta_event(pool: TimelineEventPool) -> None:
77
+ """Create meta events for CPU operations."""
78
+ process_meta_name_and_args = [
79
+ (EventConstant.PROCESS_NAME, {"name": TimelineLayerName.CPU_OP.value}),
80
+ (EventConstant.PROCESS_SORT, {"sort_index": EventConstant.CPU_OP_SORT_IDX}),
81
+ (EventConstant.PROCESS_LABEL, {"labels": EventConstant.CPU_LABEL})
82
+ ]
83
+ for name, args in process_meta_name_and_args:
84
+ pool.add_event(CpuOpMetaEvent({"name": name, "tid": 0, "args": args}))
85
+
86
+ for tid in pool.get_all_tids():
87
+ pool.add_event(CpuOpMetaEvent({"name": EventConstant.THREAD_NAME, "tid": tid,
88
+ "args": {"name": f"Thread {tid}"}}))
89
+ pool.add_event(CpuOpMetaEvent({"name": EventConstant.THREAD_SORT, "tid": tid,
90
+ "args": {"sort_index": tid}}))
@@ -0,0 +1,76 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Timeline creator for framework operations."""
16
+ from typing import List, Dict
17
+
18
+ from mindspore.profiler.common.constant import EventConstant, FileConstant, TimelineLayerName
19
+ from mindspore.profiler.analysis.parser.timeline_event.timeline_event_pool import TimelineEventPool
20
+ from mindspore.profiler.analysis.parser.timeline_creator.base_timeline_creator import BaseTimelineCreator
21
+ from mindspore.profiler.analysis.parser.timeline_event.fwk_event import (
22
+ FwkCompleteEvent,
23
+ FwkInstantEvent,
24
+ OpRangeStructField,
25
+ FwkMetaEvent
26
+ )
27
+
28
+
29
+ class FwkTimelineCreator(BaseTimelineCreator):
30
+ """Create timeline event pools for framework operations."""
31
+
32
+ def create(self, fwk_tlv_data: List[Dict]) -> None:
33
+ """Create timeline event pools from framework TLV data."""
34
+ if not fwk_tlv_data:
35
+ return
36
+
37
+ pool = TimelineEventPool(EventConstant.MINDSPORE_PID)
38
+ self.event_pools[EventConstant.MINDSPORE_PID] = pool
39
+
40
+ self._create_base_events(pool, fwk_tlv_data)
41
+ self._create_meta_event(pool)
42
+
43
+ def _create_base_events(self, pool: TimelineEventPool, fwk_tlv_data: List[Dict]) -> None:
44
+ """Create base events from framework TLV data."""
45
+ for data in fwk_tlv_data:
46
+ if data[FileConstant.FIX_SIZE_DATA][OpRangeStructField.START_TIME_NS.value] == 0: # Filter abnormal data
47
+ continue
48
+ if (data[FileConstant.FIX_SIZE_DATA][OpRangeStructField.START_TIME_NS.value] ==
49
+ data[FileConstant.FIX_SIZE_DATA][OpRangeStructField.END_TIME_NS.value]): # dur == 0
50
+ event = FwkInstantEvent(data)
51
+ else:
52
+ event = FwkCompleteEvent(data)
53
+ if event.name == EventConstant.FLOW_OP:
54
+ pool.add_start_event(str(event.id), event)
55
+ continue
56
+ if event.id != EventConstant.INVALID_FLOW_ID:
57
+ pool.add_end_event(str(event.id), event)
58
+ pool.add_event(event)
59
+
60
+ @staticmethod
61
+ def _create_meta_event(pool: TimelineEventPool) -> None:
62
+ """Create meta events for framework operations."""
63
+ process_meta_events = [
64
+ (EventConstant.PROCESS_NAME, {"name": TimelineLayerName.MINDSPORE.value}),
65
+ (EventConstant.PROCESS_SORT, {"sort_index": EventConstant.MINDSPORE_SORT_IDX}),
66
+ (EventConstant.PROCESS_LABEL, {"labels": EventConstant.CPU_LABEL})
67
+ ]
68
+
69
+ for name, args in process_meta_events:
70
+ pool.add_event(FwkMetaEvent({"name": name, "tid": 0, "args": args}))
71
+
72
+ for tid in pool.get_all_tids():
73
+ pool.add_event(FwkMetaEvent({"name": EventConstant.THREAD_NAME, "tid": tid,
74
+ "args": {"name": f"Thread {tid}"}}))
75
+ pool.add_event(FwkMetaEvent({"name": EventConstant.THREAD_SORT, "tid": tid,
76
+ "args": {"sort_index": tid}}))
@@ -0,0 +1,103 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Timeline creator for MsProf operations."""
16
+ from typing import List, Dict, Tuple
17
+
18
+ from mindspore import log as logger
19
+ from mindspore.profiler.common.constant import EventConstant
20
+ from mindspore.profiler.analysis.parser.timeline_creator.base_timeline_creator import BaseTimelineCreator
21
+ from mindspore.profiler.analysis.parser.timeline_event.timeline_event_pool import TimelineEventPool
22
+ from mindspore.profiler.analysis.parser.timeline_event.flow_event import FlowStartEvent, FlowEndEvent
23
+ from mindspore.profiler.analysis.parser.timeline_event.msprof_event import (
24
+ MsprofMetaEvent,
25
+ MsprofCompleteEvent,
26
+ MsprofInstantEvent,
27
+ )
28
+
29
+
30
+ class MsprofTimelineCreator(BaseTimelineCreator):
31
+ """Create timeline event pools for MsProf operations."""
32
+
33
+ def __init__(self):
34
+ super().__init__()
35
+ self.msprof_timeline_raw_data = []
36
+ self.acl_to_npu_flow_dict: Dict[int, Dict[str, List[MsprofCompleteEvent]]] = {}
37
+
38
+ def create(self, msprof_timeline_data: List[Dict]) -> None:
39
+ """Create timeline event pools from MsProf timeline data."""
40
+ if not msprof_timeline_data:
41
+ return
42
+ self.msprof_timeline_raw_data = msprof_timeline_data
43
+ flow_dict, complete_event_map = self._create_base_events(msprof_timeline_data)
44
+ self._create_acl_to_npu_flow_dict(flow_dict, complete_event_map)
45
+
46
+ def _create_base_events(self, msprof_timeline_data: List[Dict]) -> Tuple[Dict, Dict]:
47
+ """Create base events from MsProf timeline data."""
48
+ flow_dict = {}
49
+ complete_event_map = {}
50
+
51
+ for data in msprof_timeline_data:
52
+ pid = data.get("pid", 0)
53
+ pool = self.event_pools.get(pid)
54
+ if pool is None:
55
+ pool = TimelineEventPool(pid)
56
+ self.event_pools[pid] = pool
57
+
58
+ if data.get("cat") == EventConstant.HOST_TO_DEVICE_FLOW_CAT:
59
+ if data.get("ph") == EventConstant.START_FLOW:
60
+ event = FlowStartEvent(data)
61
+ flow_dict.setdefault(event.flow_id, {}).setdefault("start", event)
62
+ elif data.get("ph") == EventConstant.END_FLOW:
63
+ event = FlowEndEvent(data)
64
+ flow_dict.setdefault(event.flow_id, {}).setdefault("end", event)
65
+ elif data.get("ph") == EventConstant.COMPLETE_EVENT:
66
+ event = MsprofCompleteEvent(data)
67
+ complete_event_map[event.unique_id] = event
68
+ pool.add_event(event)
69
+ elif data.get("ph") == EventConstant.INSTANT_EVENT:
70
+ event = MsprofInstantEvent(data)
71
+ pool.add_event(event)
72
+ elif data.get("ph") == EventConstant.META_EVENT:
73
+ event = MsprofMetaEvent(data)
74
+ pool.add_event(event)
75
+
76
+ return flow_dict, complete_event_map
77
+
78
+ def _create_acl_to_npu_flow_dict(self, flow_dict: Dict, complete_event_map: Dict) -> None:
79
+ """Create flow events from flow dictionary."""
80
+ for flow in flow_dict.values():
81
+ flow_start = flow.get("start")
82
+ flow_end = flow.get("end")
83
+ if flow_start and flow_end:
84
+ hardware_event = complete_event_map.get(flow_end.unique_id)
85
+ if not hardware_event:
86
+ logger.warning(
87
+ f"Failed to find hardware event for flow end event. "
88
+ f"Flow ID: {flow_end.flow_id}, Unique ID: {flow_end.unique_id}"
89
+ )
90
+ continue
91
+ (
92
+ self.acl_to_npu_flow_dict.setdefault(flow_start.tid, {})
93
+ .setdefault(str(flow_start.ts), [])
94
+ .append(hardware_event)
95
+ )
96
+
97
+ def get_acl_to_npu_flow_dict(self) -> Dict[int, Dict[str, List[MsprofCompleteEvent]]]:
98
+ """Return the CANN to NPU flow dictionary."""
99
+ return self.acl_to_npu_flow_dict
100
+
101
+ def get_chrome_trace_data(self) -> List[Dict]:
102
+ """Return the chrome trace events."""
103
+ return self.msprof_timeline_raw_data
@@ -0,0 +1,134 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Timeline creator for scope layer operations."""
16
+ from decimal import Decimal
17
+ from typing import List, Tuple, Optional
18
+
19
+ from mindspore.profiler.common.constant import EventConstant, TimelineLayerName
20
+ from mindspore.profiler.analysis.parser.timeline_event.fwk_event import FwkCompleteEvent
21
+ from mindspore.profiler.analysis.parser.timeline_event.cpu_op_event import CpuOpCompleteEvent
22
+ from mindspore.profiler.analysis.parser.timeline_event.base_event import BaseEvent, CompleteEvent
23
+ from mindspore.profiler.analysis.parser.timeline_event.timeline_event_pool import TimelineEventPool
24
+ from mindspore.profiler.analysis.parser.timeline_creator.base_timeline_creator import BaseTimelineCreator
25
+ from mindspore.profiler.analysis.parser.timeline_event.msprof_event import MsprofCompleteEvent
26
+ from mindspore.profiler.analysis.parser.timeline_event.scope_layer_event import (
27
+ ScopeLayerCompleteEvent,
28
+ ScopeLayerMetaEvent
29
+ )
30
+
31
+
32
+ class ScopeLayerTimelineCreator(BaseTimelineCreator):
33
+ """Create timeline event pools for scope layer operations."""
34
+
35
+ def create(self, event_list: List[BaseEvent]) -> None:
36
+ """Create timeline event pools from scope layer events."""
37
+ if not event_list:
38
+ return
39
+
40
+ pool = TimelineEventPool(EventConstant.SCOPE_LAYER_PID)
41
+ self.event_pools[EventConstant.SCOPE_LAYER_PID] = pool
42
+
43
+ self._create_base_events(pool, event_list)
44
+ self._create_meta_event(pool)
45
+
46
+ def _create_base_events(self, pool: TimelineEventPool, event_list: List[BaseEvent]) -> None:
47
+ """Create base events from scope layer events."""
48
+ event_list.sort(key=lambda x: x.ts)
49
+ layers = []
50
+
51
+ for event in event_list:
52
+ scope_data = self._parse_scope_data(event)
53
+ if not scope_data:
54
+ continue
55
+ scope_names, start_time, dur_time = scope_data
56
+ end_time = start_time + dur_time
57
+ if layers and start_time < layers[0].ts + layers[0].dur:
58
+ continue # Skip parallel operators, keep only the first one
59
+
60
+ merge = True # Flag to control merging of upper layers
61
+ for layer_depth, layer_name in enumerate(scope_names):
62
+ if layer_depth >= len(layers):
63
+ layers.append(ScopeLayerCompleteEvent(
64
+ {"name": layer_name, "tid": layer_depth, "ts": start_time, "dur": dur_time}))
65
+ continue
66
+ if merge and layers[layer_depth].name == layer_name:
67
+ layers[layer_depth].dur = end_time - layers[layer_depth].ts
68
+ else:
69
+ pool.add_event(layers[layer_depth])
70
+ layers[layer_depth] = ScopeLayerCompleteEvent(
71
+ {"name": layer_name, "tid": layer_depth, "ts": start_time, "dur": dur_time})
72
+ merge = False
73
+
74
+ # Add remaining layers to pool
75
+ for layer in layers:
76
+ pool.add_event(layer)
77
+
78
+ @staticmethod
79
+ def _parse_scope_data(event: CompleteEvent) -> Optional[Tuple[List[str], Decimal, Decimal]]:
80
+ """Parse scope names and timing from event.
81
+
82
+ Args:
83
+ event (CompleteEvent): Event to parse.
84
+
85
+ Returns:
86
+ Optional[Tuple[List[str], Decimal, Decimal]]: Scope names, start time and duration.
87
+ """
88
+ if hasattr(event, 'parent') and event.parent:
89
+ event_scope_name = event.name.split("/")[:-1]
90
+ parent_scope_name = event.parent.name.split("::")[-1].split("/")[:-1]
91
+ if event_scope_name and parent_scope_name:
92
+ scope_name = (
93
+ parent_scope_name
94
+ if len(parent_scope_name) > len(event_scope_name)
95
+ else event_scope_name
96
+ )
97
+ else:
98
+ scope_name = event_scope_name or parent_scope_name
99
+ else:
100
+ scope_name = event.name.split("/")[:-1]
101
+
102
+ if scope_name:
103
+ return scope_name, event.ts, event.dur
104
+ return None
105
+
106
+ @staticmethod
107
+ def _create_meta_event(pool: TimelineEventPool) -> None:
108
+ """Create meta events for scope layer."""
109
+ process_meta_events = [
110
+ (EventConstant.PROCESS_NAME, {"name": TimelineLayerName.SCOPER_LAYER.value}),
111
+ (EventConstant.PROCESS_SORT, {"sort_index": EventConstant.SCOPE_LAYER_SORT_IDX})
112
+ ]
113
+
114
+ for name, args in process_meta_events:
115
+ pool.add_event(ScopeLayerMetaEvent({"name": name, "tid": 0, "args": args}))
116
+
117
+ for tid in pool.get_all_tids():
118
+ pool.add_event(ScopeLayerMetaEvent({"name": EventConstant.THREAD_NAME, "tid": tid,
119
+ "args": {"name": f"Thread {tid}"}}))
120
+ pool.add_event(ScopeLayerMetaEvent({"name": EventConstant.THREAD_SORT, "tid": tid,
121
+ "args": {"sort_index": tid}}))
122
+
123
+
124
+ def is_scope_data(event: BaseEvent) -> bool:
125
+ """Check if event is scope data."""
126
+ if isinstance(event, (CpuOpCompleteEvent, MsprofCompleteEvent)):
127
+ scope_full_name = event.name
128
+ return scope_full_name and scope_full_name.startswith(EventConstant.TOP_SCOPE_NAMES)
129
+
130
+ if isinstance(event, FwkCompleteEvent):
131
+ scope_full_name = event.name.split("::")[-1]
132
+ return scope_full_name and scope_full_name.startswith(EventConstant.TOP_SCOPE_NAMES)
133
+
134
+ return False
@@ -0,0 +1,233 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Base class for all event types."""
16
+ from decimal import Decimal
17
+ from typing import Dict
18
+ from abc import ABC, abstractmethod
19
+
20
+ from mindspore.profiler.common.constant import EventConstant
21
+
22
+
23
+ class BaseEvent(ABC):
24
+ """Base class for all event types."""
25
+
26
+ def __init__(self, data: Dict):
27
+ """Initialize base event with data dictionary."""
28
+ if not isinstance(data, dict):
29
+ raise TypeError("Input data must be dict.")
30
+ self._origin_data = data
31
+
32
+ @property
33
+ def ph(self) -> str:
34
+ """Get event phase."""
35
+ raise NotImplementedError
36
+
37
+ @property
38
+ def origin_data(self) -> Dict:
39
+ """Get original event data."""
40
+ return self._origin_data
41
+
42
+ @property
43
+ def pid(self) -> int:
44
+ """Get process ID."""
45
+ return int(self._origin_data.get("pid", 0))
46
+
47
+ @property
48
+ def tid(self) -> int:
49
+ """Get thread ID."""
50
+ return int(self._origin_data.get("tid", 0))
51
+
52
+ @property
53
+ def name(self) -> str:
54
+ """Get event name."""
55
+ return self._origin_data.get("name", "")
56
+
57
+ @abstractmethod
58
+ def to_trace_format(self) -> dict:
59
+ """Convert event to Chrome trace format."""
60
+ raise NotImplementedError
61
+
62
+
63
+ class MetaEvent(BaseEvent):
64
+ """Metadata event class."""
65
+
66
+ @property
67
+ def ph(self) -> str:
68
+ """Get event phase (M for metadata)."""
69
+ return EventConstant.META_EVENT
70
+
71
+ @property
72
+ def args(self) -> dict:
73
+ """Get event arguments."""
74
+ return self._origin_data.get("args", {})
75
+
76
+ def to_trace_format(self) -> dict:
77
+ """Convert metadata event to Chrome trace format."""
78
+ return {
79
+ "ph": self.ph,
80
+ "name": self.name,
81
+ "pid": self.pid,
82
+ "tid": self.tid,
83
+ "args": self.args
84
+ }
85
+
86
+
87
+ class CompleteEvent(BaseEvent):
88
+ """Complete event class."""
89
+
90
+ @property
91
+ def ph(self) -> str:
92
+ """Get event phase (X for complete)."""
93
+ return EventConstant.COMPLETE_EVENT
94
+
95
+ @property
96
+ def ts(self) -> Decimal:
97
+ """Get event start timestamp."""
98
+ return Decimal(self._origin_data.get("ts", 0))
99
+
100
+ @property
101
+ def dur(self) -> Decimal:
102
+ """Get event duration."""
103
+ return Decimal(self._origin_data.get("dur", 0))
104
+
105
+ @property
106
+ def cat(self) -> str:
107
+ """Get event category."""
108
+ return str(self._origin_data.get("cat", ""))
109
+
110
+ @property
111
+ def args(self) -> dict:
112
+ """Get event arguments."""
113
+ return self._origin_data.get("args", {})
114
+
115
+ @property
116
+ def unique_id(self) -> str:
117
+ """Get unique id"""
118
+ return f"{self.pid}-{self.tid}-{self.ts}"
119
+
120
+ def to_trace_format(self) -> dict:
121
+ """Convert complete event to Chrome trace format."""
122
+ return {
123
+ "ph": self.ph,
124
+ "name": self.name,
125
+ "pid": self.pid,
126
+ "tid": self.tid,
127
+ "ts": str(self.ts),
128
+ "dur": str(self.dur),
129
+ "cat": self.cat,
130
+ "args": self.args
131
+ }
132
+
133
+
134
+ class InstantEvent(BaseEvent):
135
+ """Instant event class."""
136
+
137
+ @property
138
+ def ph(self) -> str:
139
+ """Get event phase (i for instant)."""
140
+ return EventConstant.INSTANT_EVENT
141
+
142
+ @property
143
+ def ts(self) -> Decimal:
144
+ """Get event timestamp."""
145
+ return Decimal(self._origin_data.get("ts", 0))
146
+
147
+ @property
148
+ def args(self) -> dict:
149
+ """Get event arguments."""
150
+ return self._origin_data.get("args", {})
151
+
152
+ def to_trace_format(self) -> dict:
153
+ """Convert instant event to Chrome trace format."""
154
+ return {
155
+ "name": self.name,
156
+ "ph": self.ph,
157
+ "ts": str(self.ts),
158
+ "pid": self.pid,
159
+ "tid": self.tid,
160
+ "args": self.args
161
+ }
162
+
163
+
164
+ class CounterEvent(BaseEvent):
165
+ """Counter event class."""
166
+
167
+ @property
168
+ def ph(self) -> str:
169
+ """Get event phase (C for counter)."""
170
+ return EventConstant.COUNTER_EVENT
171
+
172
+ @property
173
+ def ts(self) -> Decimal:
174
+ """Get event timestamp."""
175
+ return Decimal(self._origin_data.get("ts", 0))
176
+
177
+ @property
178
+ def args(self) -> dict:
179
+ """Get event arguments."""
180
+ return self._origin_data.get("args", {})
181
+
182
+ def to_trace_format(self) -> dict:
183
+ """Convert counter event to Chrome trace format."""
184
+ return {
185
+ "name": self.name,
186
+ "ph": self.ph,
187
+ "ts": str(self.ts),
188
+ "pid": self.pid,
189
+ "tid": self.tid,
190
+ "args": self.args
191
+ }
192
+
193
+
194
+ class FlowEvent(BaseEvent):
195
+ """Flow event class."""
196
+
197
+ @property
198
+ def ph(self) -> str:
199
+ """Get event phase (s/t/f for flow start/step/end)."""
200
+ raise NotImplementedError
201
+
202
+ @property
203
+ def flow_id(self) -> str:
204
+ """Get flow identifier."""
205
+ return self._origin_data.get("id", "")
206
+
207
+ @property
208
+ def ts(self) -> Decimal:
209
+ """Get event timestamp."""
210
+ return Decimal(self._origin_data.get("ts", 0))
211
+
212
+ @property
213
+ def cat(self) -> str:
214
+ """Get event category."""
215
+ return str(self._origin_data.get("cat", ""))
216
+
217
+ @property
218
+ def unique_id(self) -> str:
219
+ """Get unique id"""
220
+ return f"{self.pid}-{self.tid}-{self.ts}"
221
+
222
+ def to_trace_format(self) -> dict:
223
+ """Convert flow event to Chrome trace format."""
224
+ return {
225
+ "name": self.name,
226
+ "bp": "e",
227
+ "ph": self.ph,
228
+ "ts": str(self.ts),
229
+ "pid": self.pid,
230
+ "tid": self.tid,
231
+ "id": self.flow_id,
232
+ "cat": self.cat
233
+ }
@@ -0,0 +1,47 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================"""
15
+ """CPU event class."""
16
+ from decimal import Decimal
17
+
18
+ from mindspore.profiler.common.constant import TimeConstant, EventConstant
19
+ from mindspore.profiler.analysis.parser.timeline_event.base_event import CompleteEvent, MetaEvent
20
+
21
+
22
+ class CpuOpCompleteEvent(CompleteEvent):
23
+ """CPU Complete(X) event class for representing CPU operations."""
24
+
25
+ @property
26
+ def ts(self) -> Decimal:
27
+ """Get timestamp in microseconds, converting from nanoseconds."""
28
+ return (Decimal(self._origin_data.get("ts", 0)) * Decimal(TimeConstant.NS_TO_US)).quantize(Decimal('0.000'))
29
+
30
+ @property
31
+ def dur(self) -> Decimal:
32
+ """Get duration in microseconds, converting from milliseconds."""
33
+ return (Decimal(self._origin_data.get("dur", 0)) * Decimal(TimeConstant.MS_TO_US)).quantize(Decimal('0.000'))
34
+
35
+ @property
36
+ def pid(self) -> int:
37
+ """Get CPU operation process ID."""
38
+ return int(EventConstant.CPU_OP_PID)
39
+
40
+
41
+ class CpuOpMetaEvent(MetaEvent):
42
+ """CPU Meta(M) event class for CPU operation metadata."""
43
+
44
+ @property
45
+ def pid(self) -> int:
46
+ """Get CPU operation process ID."""
47
+ return int(EventConstant.CPU_OP_PID)