mindspore 2.5.0__cp310-cp310-win_amd64.whl → 2.6.0__cp310-cp310-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 (493) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
  3. mindspore/Newtonsoft.Json.dll +0 -0
  4. mindspore/__init__.py +6 -4
  5. mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
  8. mindspore/_check_jit_forbidden_api.py +3 -0
  9. mindspore/_checkparam.py +3 -33
  10. mindspore/_deprecated/__init__.py +17 -0
  11. mindspore/_deprecated/jit.py +198 -0
  12. mindspore/_extends/builtin_operations.py +1 -1
  13. mindspore/_extends/parse/__init__.py +6 -7
  14. mindspore/_extends/parse/compile_config.py +19 -0
  15. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +22 -3
  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 +25 -194
  20. mindspore/_extends/parse/resources.py +1 -5
  21. mindspore/_extends/parse/standard_method.py +109 -75
  22. mindspore/_extends/pijit/__init__.py +2 -2
  23. mindspore/_extends/pijit/pijit_func_white_list.py +16 -11
  24. mindspore/_extends/pijit/tensor_func_list.py +27 -0
  25. mindspore/_extends/utils.py +1 -1
  26. mindspore/amp.py +4 -4
  27. mindspore/atlprov.dll +0 -0
  28. mindspore/avcodec-59.dll +0 -0
  29. mindspore/avdevice-59.dll +0 -0
  30. mindspore/avfilter-8.dll +0 -0
  31. mindspore/avformat-59.dll +0 -0
  32. mindspore/avutil-57.dll +0 -0
  33. mindspore/boost/__init__.py +2 -2
  34. mindspore/boost/base.py +3 -7
  35. mindspore/boost/boost_cell_wrapper.py +2 -2
  36. mindspore/c1.dll +0 -0
  37. mindspore/c1xx.dll +0 -0
  38. mindspore/c2.dll +0 -0
  39. mindspore/common/__init__.py +4 -3
  40. mindspore/common/_grad_function.py +56 -0
  41. mindspore/common/_pijit_context.py +14 -5
  42. mindspore/common/_register_for_tensor.py +1 -1
  43. mindspore/common/_stub_tensor.py +5 -10
  44. mindspore/common/_tensor_cpp_method.py +1 -1
  45. mindspore/common/_tensor_docs.py +2014 -3386
  46. mindspore/common/api.py +386 -355
  47. mindspore/common/auto_dynamic_shape.py +41 -44
  48. mindspore/common/dtype.py +5 -2
  49. mindspore/common/dump.py +7 -5
  50. mindspore/common/file_system.py +3 -0
  51. mindspore/common/generator.py +3 -0
  52. mindspore/common/hook_handle.py +5 -3
  53. mindspore/common/initializer.py +10 -6
  54. mindspore/common/jit_begin_end.py +94 -0
  55. mindspore/common/jit_config.py +6 -1
  56. mindspore/common/jit_context.py +76 -0
  57. mindspore/common/jit_trace.py +378 -0
  58. mindspore/common/lazy_inline.py +2 -2
  59. mindspore/common/mutable.py +5 -4
  60. mindspore/common/parameter.py +106 -39
  61. mindspore/common/seed.py +2 -2
  62. mindspore/common/sparse_tensor.py +23 -17
  63. mindspore/common/tensor.py +332 -714
  64. mindspore/communication/__init__.py +7 -5
  65. mindspore/communication/_comm_helper.py +47 -2
  66. mindspore/communication/comm_func.py +70 -53
  67. mindspore/communication/management.py +83 -17
  68. mindspore/context.py +228 -571
  69. mindspore/dataset/__init__.py +44 -20
  70. mindspore/dataset/audio/__init__.py +2 -8
  71. mindspore/dataset/audio/transforms.py +3 -17
  72. mindspore/dataset/core/config.py +3 -3
  73. mindspore/dataset/engine/cache_client.py +1 -1
  74. mindspore/dataset/engine/datasets.py +102 -120
  75. mindspore/dataset/engine/datasets_audio.py +22 -22
  76. mindspore/dataset/engine/datasets_standard_format.py +43 -24
  77. mindspore/dataset/engine/datasets_text.py +78 -85
  78. mindspore/dataset/engine/datasets_user_defined.py +109 -77
  79. mindspore/dataset/engine/datasets_vision.py +111 -108
  80. mindspore/dataset/engine/iterators.py +5 -3
  81. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  82. mindspore/dataset/engine/samplers.py +279 -57
  83. mindspore/dataset/engine/serializer_deserializer.py +2 -1
  84. mindspore/dataset/engine/validators.py +10 -0
  85. mindspore/dataset/text/__init__.py +7 -6
  86. mindspore/dataset/text/transforms.py +6 -5
  87. mindspore/dataset/text/utils.py +3 -3
  88. mindspore/dataset/transforms/__init__.py +0 -9
  89. mindspore/dataset/transforms/transforms.py +3 -3
  90. mindspore/dataset/utils/browse_dataset.py +1 -1
  91. mindspore/dataset/vision/__init__.py +2 -9
  92. mindspore/dataset/vision/transforms.py +202 -158
  93. mindspore/dataset/vision/utils.py +7 -5
  94. mindspore/device_context/ascend/op_debug.py +60 -1
  95. mindspore/device_context/ascend/op_tuning.py +0 -4
  96. mindspore/device_manager.py +39 -3
  97. mindspore/dnnl.dll +0 -0
  98. mindspore/dpcmi.dll +0 -0
  99. mindspore/experimental/es/embedding_service.py +35 -27
  100. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +0 -2
  101. mindspore/experimental/map_parameter.py +4 -4
  102. mindspore/experimental/optim/adadelta.py +22 -26
  103. mindspore/experimental/optim/adagrad.py +4 -4
  104. mindspore/experimental/optim/adam.py +4 -0
  105. mindspore/experimental/optim/adamax.py +4 -4
  106. mindspore/experimental/optim/adamw.py +4 -0
  107. mindspore/experimental/optim/asgd.py +1 -1
  108. mindspore/experimental/optim/lr_scheduler.py +40 -22
  109. mindspore/experimental/optim/radam.py +5 -5
  110. mindspore/experimental/optim/rprop.py +1 -1
  111. mindspore/experimental/optim/sgd.py +1 -1
  112. mindspore/hal/contiguous_tensors_handle.py +6 -10
  113. mindspore/hal/device.py +55 -81
  114. mindspore/hal/event.py +38 -55
  115. mindspore/hal/memory.py +115 -147
  116. mindspore/hal/stream.py +81 -125
  117. mindspore/include/dataset/constants.h +7 -4
  118. mindspore/include/dataset/execute.h +2 -2
  119. mindspore/jpeg62.dll +0 -0
  120. mindspore/log.py +40 -2
  121. mindspore/mindrecord/__init__.py +20 -7
  122. mindspore/mindspore_backend_common.dll +0 -0
  123. mindspore/mindspore_backend_manager.dll +0 -0
  124. mindspore/mindspore_common.dll +0 -0
  125. mindspore/mindspore_core.dll +0 -0
  126. mindspore/mindspore_dump.dll +0 -0
  127. mindspore/mindspore_frontend.dll +0 -0
  128. mindspore/mindspore_glog.dll +0 -0
  129. mindspore/mindspore_memory_pool.dll +0 -0
  130. mindspore/mindspore_ms_backend.dll +0 -0
  131. mindspore/mindspore_ops.dll +0 -0
  132. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  133. mindspore/mindspore_ops_kernel_common.dll +0 -0
  134. mindspore/mindspore_profiler.dll +0 -0
  135. mindspore/mindspore_pyboost.dll +0 -0
  136. mindspore/mindspore_pynative.dll +0 -0
  137. mindspore/mindspore_res_manager.dll +0 -0
  138. mindspore/mindspore_runtime_pipeline.dll +0 -0
  139. mindspore/mint/__init__.py +133 -702
  140. mindspore/mint/distributed/__init__.py +5 -1
  141. mindspore/mint/distributed/distributed.py +198 -113
  142. mindspore/mint/linalg/__init__.py +2 -0
  143. mindspore/mint/nn/__init__.py +280 -18
  144. mindspore/mint/nn/functional.py +282 -64
  145. mindspore/mint/nn/layer/__init__.py +4 -0
  146. mindspore/mint/nn/layer/_functions.py +7 -3
  147. mindspore/mint/nn/layer/activation.py +120 -13
  148. mindspore/mint/nn/layer/conv.py +234 -28
  149. mindspore/mint/nn/layer/normalization.py +15 -16
  150. mindspore/mint/nn/layer/padding.py +1 -1
  151. mindspore/mint/nn/layer/pooling.py +66 -1
  152. mindspore/mint/optim/__init__.py +2 -1
  153. mindspore/mint/optim/sgd.py +171 -0
  154. mindspore/msobj140.dll +0 -0
  155. mindspore/mspdb140.dll +0 -0
  156. mindspore/mspdbcore.dll +0 -0
  157. mindspore/mspdbst.dll +0 -0
  158. mindspore/mspft140.dll +0 -0
  159. mindspore/msvcdis140.dll +0 -0
  160. mindspore/msvcp140_1.dll +0 -0
  161. mindspore/msvcp140_2.dll +0 -0
  162. mindspore/msvcp140_atomic_wait.dll +0 -0
  163. mindspore/msvcp140_codecvt_ids.dll +0 -0
  164. mindspore/nn/__init__.py +4 -1
  165. mindspore/nn/cell.py +1253 -179
  166. mindspore/nn/layer/activation.py +23 -21
  167. mindspore/nn/layer/basic.py +22 -16
  168. mindspore/nn/layer/container.py +1 -1
  169. mindspore/nn/layer/conv.py +53 -42
  170. mindspore/nn/layer/embedding.py +9 -8
  171. mindspore/nn/layer/normalization.py +48 -42
  172. mindspore/nn/layer/pooling.py +75 -31
  173. mindspore/nn/layer/transformer.py +11 -10
  174. mindspore/nn/learning_rate_schedule.py +4 -2
  175. mindspore/nn/loss/loss.py +27 -19
  176. mindspore/nn/optim/ada_grad.py +6 -5
  177. mindspore/nn/optim/adadelta.py +9 -7
  178. mindspore/nn/optim/adafactor.py +1 -1
  179. mindspore/nn/optim/adam.py +18 -14
  180. mindspore/nn/optim/adamax.py +8 -7
  181. mindspore/nn/optim/adasum.py +5 -5
  182. mindspore/nn/optim/asgd.py +3 -1
  183. mindspore/nn/optim/ftrl.py +11 -9
  184. mindspore/nn/optim/lamb.py +1 -1
  185. mindspore/nn/optim/lazyadam.py +12 -10
  186. mindspore/nn/optim/momentum.py +7 -6
  187. mindspore/nn/optim/optimizer.py +2 -2
  188. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  189. mindspore/nn/optim/rmsprop.py +13 -12
  190. mindspore/nn/optim/rprop.py +9 -7
  191. mindspore/nn/optim/sgd.py +9 -6
  192. mindspore/nn/optim/tft_wrapper.py +5 -2
  193. mindspore/nn/probability/bijector/bijector.py +17 -11
  194. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  195. mindspore/nn/probability/bijector/invert.py +2 -2
  196. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  197. mindspore/nn/probability/bijector/softplus.py +3 -2
  198. mindspore/nn/probability/distribution/beta.py +3 -3
  199. mindspore/nn/probability/distribution/categorical.py +1 -1
  200. mindspore/nn/probability/distribution/cauchy.py +4 -2
  201. mindspore/nn/probability/distribution/exponential.py +6 -7
  202. mindspore/nn/probability/distribution/gamma.py +2 -2
  203. mindspore/nn/probability/distribution/gumbel.py +2 -2
  204. mindspore/nn/probability/distribution/half_normal.py +5 -3
  205. mindspore/nn/probability/distribution/logistic.py +5 -3
  206. mindspore/nn/probability/distribution/poisson.py +1 -1
  207. mindspore/nn/probability/distribution/uniform.py +5 -3
  208. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  209. mindspore/nn/reinforcement/tensor_array.py +1 -1
  210. mindspore/nn/wrap/__init__.py +6 -6
  211. mindspore/nn/wrap/cell_wrapper.py +178 -117
  212. mindspore/nn/wrap/grad_reducer.py +45 -36
  213. mindspore/nn/wrap/loss_scale.py +3 -3
  214. mindspore/numpy/array_creations.py +3 -3
  215. mindspore/numpy/array_ops.py +1 -1
  216. mindspore/numpy/utils.py +1 -2
  217. mindspore/numpy/utils_const.py +1 -2
  218. mindspore/opencv_core452.dll +0 -0
  219. mindspore/opencv_imgcodecs452.dll +0 -0
  220. mindspore/opencv_imgproc452.dll +0 -0
  221. mindspore/ops/__init__.py +3 -2
  222. mindspore/ops/_grad_experimental/grad_comm_ops.py +18 -3
  223. mindspore/ops/_grad_experimental/grad_debug_ops.py +8 -1
  224. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  225. mindspore/ops/_register_for_op.py +0 -11
  226. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  227. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -4
  228. mindspore/ops/_vmap/vmap_array_ops.py +32 -6
  229. mindspore/ops/_vmap/vmap_grad_nn_ops.py +2 -1
  230. mindspore/ops/_vmap/vmap_math_ops.py +4 -7
  231. mindspore/ops/_vmap/vmap_nn_ops.py +9 -8
  232. mindspore/ops/auto_generate/__init__.py +4 -3
  233. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +127 -52
  234. mindspore/ops/auto_generate/gen_extend_func.py +286 -208
  235. mindspore/ops/auto_generate/gen_ops_def.py +2783 -2335
  236. mindspore/ops/auto_generate/gen_ops_prim.py +8992 -2686
  237. mindspore/ops/auto_generate/pyboost_inner_prim.py +106 -76
  238. mindspore/ops/composite/__init__.py +2 -1
  239. mindspore/ops/composite/base.py +19 -24
  240. mindspore/ops/composite/math_ops.py +6 -16
  241. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  242. mindspore/ops/composite/multitype_ops/_compile_utils.py +4 -5
  243. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  244. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  245. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  246. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  247. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  248. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  249. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  250. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  251. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  252. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  253. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  254. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  255. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  256. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  257. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  258. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  259. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  260. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  261. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  262. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  263. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  264. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  265. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  266. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  267. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  268. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -1
  269. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  270. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  271. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  272. mindspore/ops/function/__init__.py +28 -2
  273. mindspore/ops/function/_add_attr_func.py +58 -0
  274. mindspore/ops/function/array_func.py +1631 -2347
  275. mindspore/ops/function/clip_func.py +38 -45
  276. mindspore/ops/function/debug_func.py +36 -44
  277. mindspore/ops/function/grad/__init__.py +1 -0
  278. mindspore/ops/function/grad/grad_func.py +104 -71
  279. mindspore/ops/function/image_func.py +1 -1
  280. mindspore/ops/function/linalg_func.py +46 -78
  281. mindspore/ops/function/math_func.py +3024 -3855
  282. mindspore/ops/function/nn_func.py +678 -274
  283. mindspore/ops/function/other_func.py +159 -1
  284. mindspore/ops/function/parameter_func.py +17 -30
  285. mindspore/ops/function/random_func.py +216 -361
  286. mindspore/ops/function/reshard_func.py +4 -70
  287. mindspore/ops/function/sparse_func.py +3 -3
  288. mindspore/ops/function/sparse_unary_func.py +5 -5
  289. mindspore/ops/function/spectral_func.py +25 -58
  290. mindspore/ops/function/vmap_func.py +26 -18
  291. mindspore/ops/functional.py +8 -5
  292. mindspore/ops/functional_overload.py +655 -4
  293. mindspore/ops/op_info_register.py +32 -244
  294. mindspore/ops/operations/__init__.py +21 -14
  295. mindspore/ops/operations/_custom_ops_utils.py +235 -0
  296. mindspore/ops/operations/_grad_ops.py +1 -10
  297. mindspore/ops/operations/_inner_ops.py +5 -76
  298. mindspore/ops/operations/_ms_kernel.py +4 -10
  299. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  300. mindspore/ops/operations/_scalar_ops.py +3 -2
  301. mindspore/ops/operations/_sequence_ops.py +1 -1
  302. mindspore/ops/operations/_tensor_array.py +1 -1
  303. mindspore/ops/operations/array_ops.py +39 -24
  304. mindspore/ops/operations/comm_ops.py +150 -107
  305. mindspore/ops/operations/custom_ops.py +287 -32
  306. mindspore/ops/operations/debug_ops.py +119 -16
  307. mindspore/ops/operations/inner_ops.py +1 -1
  308. mindspore/ops/operations/linalg_ops.py +1 -58
  309. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  310. mindspore/ops/operations/manually_defined/ops_def.py +746 -79
  311. mindspore/ops/operations/math_ops.py +21 -18
  312. mindspore/ops/operations/nn_ops.py +67 -224
  313. mindspore/ops/operations/other_ops.py +62 -9
  314. mindspore/ops/operations/random_ops.py +13 -7
  315. mindspore/ops/operations/reshard_ops.py +1 -1
  316. mindspore/ops/operations/sparse_ops.py +2 -2
  317. mindspore/ops/primitive.py +43 -32
  318. mindspore/ops/tensor_method.py +243 -17
  319. mindspore/ops_generate/__init__.py +0 -5
  320. mindspore/ops_generate/aclnn/__init__.py +0 -0
  321. mindspore/ops_generate/{aclnn_kernel_register_auto_cc_generator.py → aclnn/aclnn_kernel_register_auto_cc_generator.py} +43 -18
  322. mindspore/ops_generate/{gen_aclnn_implement.py → aclnn/gen_aclnn_implement.py} +49 -51
  323. mindspore/ops_generate/api/__init__.py +0 -0
  324. mindspore/ops_generate/{add_tensor_docs_generator.py → api/add_tensor_docs_generator.py} +9 -7
  325. mindspore/ops_generate/{cpp_create_prim_instance_helper_generator.py → api/cpp_create_prim_instance_helper_generator.py} +6 -9
  326. mindspore/ops_generate/{functional_map_cpp_generator.py → api/functional_map_cpp_generator.py} +25 -12
  327. mindspore/ops_generate/{functional_overload_py_generator.py → api/functional_overload_py_generator.py} +8 -6
  328. mindspore/ops_generate/{functions_cc_generator.py → api/functions_cc_generator.py} +14 -10
  329. mindspore/ops_generate/api/gen_api.py +103 -0
  330. mindspore/ops_generate/{op_api_proto.py → api/op_api_proto.py} +98 -69
  331. mindspore/ops_generate/{tensor_func_reg_cpp_generator.py → api/tensor_func_reg_cpp_generator.py} +82 -43
  332. mindspore/ops_generate/common/__init__.py +0 -0
  333. mindspore/ops_generate/common/gen_constants.py +91 -0
  334. mindspore/ops_generate/{gen_utils.py → common/gen_utils.py} +72 -19
  335. mindspore/ops_generate/{op_proto.py → common/op_proto.py} +64 -1
  336. mindspore/ops_generate/{template.py → common/template.py} +96 -84
  337. mindspore/ops_generate/gen_ops.py +23 -325
  338. mindspore/ops_generate/op_def/__init__.py +0 -0
  339. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  340. mindspore/ops_generate/{lite_ops_cpp_generator.py → op_def/lite_ops_cpp_generator.py} +47 -11
  341. mindspore/ops_generate/{ops_def_cc_generator.py → op_def/ops_def_cc_generator.py} +18 -10
  342. mindspore/ops_generate/{ops_def_h_generator.py → op_def/ops_def_h_generator.py} +5 -5
  343. mindspore/ops_generate/{ops_name_h_generator.py → op_def/ops_name_h_generator.py} +30 -15
  344. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  345. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  346. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  347. mindspore/ops_generate/{op_def_py_generator.py → op_def_py/op_def_py_generator.py} +6 -5
  348. mindspore/ops_generate/{op_prim_py_generator.py → op_def_py/op_prim_py_generator.py} +24 -15
  349. mindspore/ops_generate/pyboost/__init__.py +0 -0
  350. mindspore/ops_generate/{auto_grad_impl_cc_generator.py → pyboost/auto_grad_impl_cc_generator.py} +11 -7
  351. mindspore/ops_generate/{auto_grad_reg_cc_generator.py → pyboost/auto_grad_reg_cc_generator.py} +7 -7
  352. mindspore/ops_generate/{gen_pyboost_func.py → pyboost/gen_pyboost_func.py} +40 -16
  353. mindspore/ops_generate/{op_template_parser.py → pyboost/op_template_parser.py} +105 -24
  354. mindspore/ops_generate/{pyboost_functions_cpp_generator.py → pyboost/pyboost_functions_cpp_generator.py} +55 -18
  355. mindspore/ops_generate/{pyboost_functions_h_generator.py → pyboost/pyboost_functions_h_generator.py} +42 -10
  356. mindspore/ops_generate/{pyboost_functions_py_generator.py → pyboost/pyboost_functions_py_generator.py} +6 -6
  357. mindspore/ops_generate/{pyboost_grad_function_cpp_generator.py → pyboost/pyboost_grad_function_cpp_generator.py} +11 -10
  358. mindspore/ops_generate/{pyboost_inner_prim_generator.py → pyboost/pyboost_inner_prim_generator.py} +8 -7
  359. mindspore/ops_generate/{pyboost_native_grad_functions_generator.py → pyboost/pyboost_native_grad_functions_generator.py} +14 -10
  360. mindspore/ops_generate/{pyboost_op_cpp_code_generator.py → pyboost/pyboost_op_cpp_code_generator.py} +140 -53
  361. mindspore/ops_generate/{pyboost_overload_functions_cpp_generator.py → pyboost/pyboost_overload_functions_cpp_generator.py} +28 -15
  362. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +88 -4
  363. mindspore/ops_generate/resources/__init__.py +0 -0
  364. mindspore/ops_generate/resources/resource_list.py +30 -0
  365. mindspore/ops_generate/resources/resource_loader.py +36 -0
  366. mindspore/ops_generate/resources/resource_manager.py +64 -0
  367. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  368. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  369. mindspore/parallel/__init__.py +6 -2
  370. mindspore/parallel/_auto_parallel_context.py +140 -12
  371. mindspore/parallel/_cell_wrapper.py +132 -15
  372. mindspore/parallel/_parallel_serialization.py +95 -4
  373. mindspore/parallel/_ps_context.py +1 -1
  374. mindspore/parallel/_recovery_context.py +7 -2
  375. mindspore/parallel/_tensor.py +142 -18
  376. mindspore/parallel/_utils.py +198 -25
  377. mindspore/parallel/algo_parameter_config.py +3 -3
  378. mindspore/parallel/auto_parallel.py +732 -0
  379. mindspore/parallel/checkpoint_convert.py +159 -0
  380. mindspore/parallel/checkpoint_transform.py +658 -37
  381. mindspore/parallel/cluster/process_entity/_api.py +151 -19
  382. mindspore/parallel/cluster/run.py +1 -1
  383. mindspore/parallel/function/__init__.py +24 -0
  384. mindspore/parallel/function/reshard_func.py +258 -0
  385. mindspore/parallel/nn/__init__.py +25 -0
  386. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  387. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  388. mindspore/parallel/parameter_broadcast.py +24 -13
  389. mindspore/parallel/shard.py +137 -62
  390. mindspore/parallel/transform_safetensors.py +288 -95
  391. mindspore/pgodb140.dll +0 -0
  392. mindspore/pgort140.dll +0 -0
  393. mindspore/profiler/__init__.py +9 -5
  394. mindspore/profiler/analysis/parser/ascend_cann_parser.py +6 -2
  395. mindspore/profiler/analysis/parser/ms_framework_parser.py +4 -4
  396. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -4
  397. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +25 -0
  398. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
  399. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +241 -86
  400. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +41 -2
  401. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +33 -35
  402. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +7 -0
  403. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +8 -3
  404. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +141 -30
  405. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +5 -6
  406. mindspore/profiler/common/ascend_msprof_exporter.py +5 -4
  407. mindspore/profiler/common/constant.py +12 -0
  408. mindspore/profiler/common/msprof_cmd_tool.py +42 -23
  409. mindspore/profiler/common/path_manager.py +24 -0
  410. mindspore/profiler/common/profiler_context.py +26 -2
  411. mindspore/profiler/common/profiler_meta_data.py +74 -0
  412. mindspore/profiler/common/profiler_parameters.py +59 -18
  413. mindspore/profiler/common/profiler_path_manager.py +66 -7
  414. mindspore/profiler/dynamic_profiler.py +112 -79
  415. mindspore/profiler/envprofiler.py +26 -1
  416. mindspore/profiler/experimental_config.py +197 -0
  417. mindspore/profiler/mstx.py +57 -14
  418. mindspore/profiler/platform/npu_profiler.py +33 -7
  419. mindspore/profiler/profiler.py +541 -45
  420. mindspore/profiler/profiler_action_controller.py +1 -1
  421. mindspore/profiler/profiler_interface.py +4 -0
  422. mindspore/profiler/schedule.py +57 -22
  423. mindspore/rewrite/api/node.py +15 -13
  424. mindspore/rewrite/api/symbol_tree.py +1 -1
  425. mindspore/run_check/_check_version.py +25 -14
  426. mindspore/run_check/run_check.py +1 -1
  427. mindspore/runtime/__init__.py +2 -2
  428. mindspore/runtime/executor.py +40 -11
  429. mindspore/runtime/memory.py +37 -13
  430. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  431. mindspore/swresample-4.dll +0 -0
  432. mindspore/swscale-6.dll +0 -0
  433. mindspore/tbbmalloc.dll +0 -0
  434. mindspore/tinyxml2.dll +0 -0
  435. mindspore/train/__init__.py +8 -8
  436. mindspore/train/_utils.py +43 -9
  437. mindspore/train/amp.py +1 -1
  438. mindspore/train/callback/__init__.py +2 -2
  439. mindspore/train/callback/_callback.py +2 -16
  440. mindspore/train/callback/_checkpoint.py +24 -40
  441. mindspore/train/callback/_cluster_monitor.py +14 -18
  442. mindspore/train/callback/_flops_collector.py +2 -3
  443. mindspore/train/callback/_history.py +7 -4
  444. mindspore/train/callback/_lambda_callback.py +2 -2
  445. mindspore/train/callback/_landscape.py +0 -3
  446. mindspore/train/callback/_loss_monitor.py +2 -1
  447. mindspore/train/callback/_on_request_exit.py +6 -5
  448. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  449. mindspore/train/callback/_summary_collector.py +8 -13
  450. mindspore/train/callback/_time_monitor.py +2 -1
  451. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -105
  452. mindspore/train/data_sink.py +25 -2
  453. mindspore/train/dataset_helper.py +4 -5
  454. mindspore/train/loss_scale_manager.py +8 -7
  455. mindspore/train/metrics/accuracy.py +3 -3
  456. mindspore/train/metrics/confusion_matrix.py +9 -9
  457. mindspore/train/metrics/error.py +3 -3
  458. mindspore/train/metrics/hausdorff_distance.py +4 -4
  459. mindspore/train/metrics/mean_surface_distance.py +3 -3
  460. mindspore/train/metrics/metric.py +0 -12
  461. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  462. mindspore/train/metrics/precision.py +8 -6
  463. mindspore/train/metrics/recall.py +9 -9
  464. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  465. mindspore/train/mind_ir_pb2.py +19 -12
  466. mindspore/train/model.py +262 -127
  467. mindspore/train/serialization.py +246 -988
  468. mindspore/train/summary/_summary_adapter.py +2 -2
  469. mindspore/train/summary/summary_record.py +1 -1
  470. mindspore/turbojpeg.dll +0 -0
  471. mindspore/utils/__init__.py +3 -2
  472. mindspore/utils/dryrun.py +4 -2
  473. mindspore/utils/hooks.py +81 -0
  474. mindspore/utils/runtime_execution_order_check.py +2 -0
  475. mindspore/utils/utils.py +138 -4
  476. mindspore/vcmeta.dll +0 -0
  477. mindspore/vcruntime140.dll +0 -0
  478. mindspore/vcruntime140_1.dll +0 -0
  479. mindspore/version.py +1 -1
  480. {mindspore-2.5.0.dist-info → mindspore-2.6.0.dist-info}/METADATA +2 -1
  481. {mindspore-2.5.0.dist-info → mindspore-2.6.0.dist-info}/RECORD +485 -440
  482. mindspore/_install_custom.py +0 -43
  483. mindspore/common/_register_for_adapter.py +0 -74
  484. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  485. mindspore/ops/auto_generate/gen_arg_handler.py +0 -136
  486. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  487. mindspore/ops_generate/gen_constants.py +0 -190
  488. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  489. mindspore/ops_generate/ops_primitive_h_generator.py +0 -81
  490. /mindspore/ops_generate/{base_generator.py → common/base_generator.py} +0 -0
  491. {mindspore-2.5.0.dist-info → mindspore-2.6.0.dist-info}/WHEEL +0 -0
  492. {mindspore-2.5.0.dist-info → mindspore-2.6.0.dist-info}/entry_points.txt +0 -0
  493. {mindspore-2.5.0.dist-info → mindspore-2.6.0.dist-info}/top_level.txt +0 -0
@@ -17,11 +17,14 @@ import os
17
17
  import re
18
18
  from collections import defaultdict
19
19
 
20
- from mindspore import log as logger
20
+ from typing import Dict
21
21
  from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
22
22
  from mindspore.profiler.common.file_manager import FileManager
23
23
  from mindspore.profiler.common.log import ProfilerLogger
24
24
 
25
+ from mindspore import log as logger
26
+ from mindspore.profiler.common.constant import JitLevel
27
+
25
28
 
26
29
  class AscendCommunicationViewer(BaseViewer):
27
30
  """Ascend communication viewer"""
@@ -51,12 +54,14 @@ class AscendCommunicationViewer(BaseViewer):
51
54
 
52
55
  def __init__(self, **kwargs):
53
56
  super().__init__()
54
- self.step_list = [{"step_id": None, "start_ts": 0, "end_ts": float('inf'), "comm_ops": {}}]
57
+ self.step_list = []
55
58
  self.output_communication = {}
56
59
  self.output_matrix_data = {}
57
60
  self._output_path = kwargs.get("ascend_profiler_output_path")
58
61
  self._msprof_analyze_output_path = kwargs.get("msprof_analyze_output_path")
59
62
  self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
63
+ self._is_set_schedule = kwargs.get("is_set_schedule")
64
+ self._jit_level = kwargs.get("jit_level")
60
65
  ProfilerLogger.init(self._ascend_ms_dir)
61
66
  self._logger = ProfilerLogger.get_instance()
62
67
  self._communication_input_path = os.path.join(
@@ -82,6 +87,7 @@ class AscendCommunicationViewer(BaseViewer):
82
87
  """
83
88
  self._logger.info("AscendCommunicationViewer start")
84
89
  try:
90
+ self._init_step_list(data)
85
91
  self._generate_communication()
86
92
  self._generate_matrix()
87
93
  self._save_analyze_data()
@@ -89,6 +95,39 @@ class AscendCommunicationViewer(BaseViewer):
89
95
  self._logger.error("Failed to save ascend communication data, error: %s", e, exc_info=True)
90
96
  self._logger.info("AscendCommunicationViewer end")
91
97
 
98
+ def _init_step_list(self, data):
99
+ """
100
+ Init step list.
101
+ """
102
+ trace_container = data.get("trace_view_container", None)
103
+ if trace_container is None:
104
+ raise ValueError("trace view container is None")
105
+ step_id_to_time_dict = trace_container.get_step_id_time_dict()
106
+
107
+ if not self._is_set_schedule or self._jit_level == JitLevel.GRAPH_LEVEL or not step_id_to_time_dict:
108
+ self._update_default_step_list()
109
+ else:
110
+ self._update_step_list(step_id_to_time_dict)
111
+
112
+ def _update_default_step_list(self):
113
+ """
114
+ When the step dict is empty, it is set to the default value.
115
+ """
116
+ self.step_list = [{"step_id": "0", "start_ts": 0, "end_ts": float('inf'), "comm_ops": {}}]
117
+
118
+ def _update_step_list(self, step_id_to_time_dict: Dict):
119
+ """
120
+ When the step dict is not empty, set a value that contains the step id.
121
+ """
122
+ for step_id, (start_time, end_time) in step_id_to_time_dict.items():
123
+ step_dict = {
124
+ "step_id": step_id,
125
+ "start_ts": start_time,
126
+ "end_ts": end_time,
127
+ "comm_ops": {}
128
+ }
129
+ self.step_list.append(step_dict)
130
+
92
131
  def _save_analyze_data(self):
93
132
  """
94
133
  Save analyse data
@@ -13,18 +13,21 @@
13
13
  # limitations under the License.
14
14
  # ============================================================================
15
15
  """Ascend kernel details viewer"""
16
- import os
17
16
  import csv
17
+ import os
18
18
  from decimal import Decimal
19
19
 
20
- from mindspore import log as logger
21
20
  from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
22
- from mindspore.profiler.analysis.parser.timeline_assembly_factory.trace_view_container import TraceViewContainer
23
- from mindspore.profiler.common.constant import OpSummaryHeaders
24
- from mindspore.profiler.common.path_manager import PathManager
25
- from mindspore.profiler.common.constant import TimelineLayerName
26
- from mindspore.profiler.common.constant import ProfilerStepNameConstant, JitLevel, ProfilerLevel
21
+ from mindspore.profiler.common.constant import (
22
+ JitLevel,
23
+ ProfilerLevel,
24
+ OpSummaryHeaders,
25
+ ProfilerActivity
26
+ )
27
27
  from mindspore.profiler.common.log import ProfilerLogger
28
+ from mindspore.profiler.common.path_manager import PathManager
29
+
30
+ from mindspore import log as logger
28
31
 
29
32
 
30
33
  class AscendKernelDetailsViewer(BaseViewer):
@@ -63,6 +66,7 @@ class AscendKernelDetailsViewer(BaseViewer):
63
66
  self._is_set_schedule = kwargs.get("is_set_schedule")
64
67
  self._jit_level = kwargs.get("jit_level")
65
68
  self._profiler_level = kwargs.get("profiler_level")
69
+ self._activities = kwargs.get("activities")
66
70
  self.op_summary_headers = None
67
71
  self.op_summary = None
68
72
  self.trace_container = None
@@ -79,7 +83,7 @@ class AscendKernelDetailsViewer(BaseViewer):
79
83
  if self._profiler_level == ProfilerLevel.LevelNone.value:
80
84
  return
81
85
  self._check_input_data(data)
82
- self._update_kernel_name()
86
+ self._update_kernel_name_and_step_id()
83
87
  self._update_headers()
84
88
  self._write_data()
85
89
  self._logger.info("Kernel details saved done")
@@ -132,27 +136,38 @@ class AscendKernelDetailsViewer(BaseViewer):
132
136
  if header not in self.LEVEL0_EXCLUDE_HEADERS
133
137
  ]
134
138
 
135
- if not self._is_set_schedule or self._jit_level == JitLevel.GRAPH_LEVEL:
139
+ if (not self._is_set_schedule or self._jit_level == JitLevel.GRAPH_LEVEL or
140
+ not self.trace_container.get_step_id_time_dict()):
136
141
  self.op_summary_headers.remove(OpSummaryHeaders.STEP_ID.value)
142
+
137
143
  # rename headers
138
144
  self.kernel_details_headers = [
139
145
  self.RENAME_HEADERS.get(header, header)
140
146
  for header in self.op_summary_headers
141
147
  ]
142
148
 
143
- def _update_kernel_name(self):
149
+ def _update_kernel_name_and_step_id(self):
144
150
  """
145
- Update op summary op name to framework launch op name.
151
+ Update kernel op name to framework launch op name and step id.
146
152
  """
147
153
  self._logger.info("Update kernel name start")
148
- step_id_to_time_dict = _generate_step_id_dict_by_trace_container(self.trace_container)
154
+
149
155
  dev_kernels = self.trace_container.hardware_op_event
156
+ step_id_to_time_dict = self.trace_container.get_step_id_time_dict()
157
+
158
+ # activities parameter NPU+CPU、CPU
159
+ if ProfilerActivity.CPU.value in self._activities:
160
+ self._update_kernel_detail_op_name_and_step_id(dev_kernels, step_id_to_time_dict)
161
+
162
+ def _update_kernel_detail_op_name_and_step_id(self, dev_kernels, step_id_to_time_dict):
163
+ """
164
+ Update op summary op name and step id in NPU+CPU、CPU scenes.
165
+ """
150
166
  _generate_hardware_op_event_step_id(dev_kernels, step_id_to_time_dict)
151
167
 
152
- if not dev_kernels:
168
+ if not dev_kernels and self._jit_level != JitLevel.GRAPH_LEVEL:
153
169
  logger.warning(
154
170
  "Cannot find the device kernels with MindSpore framework launch op, "
155
- "Please verify if it's in graph mode."
156
171
  )
157
172
  return
158
173
 
@@ -190,7 +205,7 @@ class AscendKernelDetailsViewer(BaseViewer):
190
205
  else:
191
206
  launch_ops[index] = f"{fwk_langch_op_name}/{dev_kernel_name}"
192
207
 
193
- if step_id is None and self._is_set_schedule:
208
+ if step_id is None and self._is_set_schedule and self._jit_level != JitLevel.GRAPH_LEVEL:
194
209
  self._logger.warning(
195
210
  "Can not find step id for dev kernel %s, ts %s",
196
211
  dev_kernel_name,
@@ -203,27 +218,10 @@ class AscendKernelDetailsViewer(BaseViewer):
203
218
  self.op_summary[OpSummaryHeaders.OP_NAME.value] = launch_ops
204
219
 
205
220
  # update op summary step id
206
- if self._is_set_schedule:
207
- if not self._jit_level == JitLevel.GRAPH_LEVEL:
208
- self.op_summary[OpSummaryHeaders.STEP_ID.value] = step_ids
209
- self._logger.info("Update kernel name done")
210
-
221
+ if self._is_set_schedule and self._jit_level != JitLevel.GRAPH_LEVEL:
222
+ self.op_summary[OpSummaryHeaders.STEP_ID.value] = step_ids
211
223
 
212
- def _generate_step_id_dict_by_trace_container(trace_container: TraceViewContainer):
213
- """
214
- Generate the step id to time dict.
215
- """
216
- # Retrieve all events from the trace container for the Mindspore timeline layer
217
- events = trace_container.get_pool_by_name(TimelineLayerName.MINDSPORE.value).get_all_events()
218
-
219
- # Filter events that contain "ProfilerStep" and create a dictionary mapping (start_ts, end_ts) to step ID
220
- step_id_to_time_dict = {}
221
- for event in events:
222
- event_name = event.name
223
- if ProfilerStepNameConstant.PROFILER_STEP in event_name:
224
- step_id_to_time_dict[event.name.split("#")[-1]] = (event.ts, event.dur + event.ts)
225
-
226
- return step_id_to_time_dict
224
+ self._logger.info("Update kernel name done")
227
225
 
228
226
 
229
227
  def _generate_hardware_op_event_step_id(hardware_op_events_dict: dict, step_id_to_time_dict: dict):
@@ -19,6 +19,7 @@ from decimal import Decimal
19
19
  from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
20
20
  from mindspore.profiler.common.file_manager import FileManager
21
21
  from mindspore.profiler.common.log import ProfilerLogger
22
+ from mindspore.profiler.common.constant import ProfilerActivity
22
23
 
23
24
 
24
25
  class MemoryRecordBean:
@@ -167,6 +168,7 @@ class AscendMemoryViewer(BaseViewer):
167
168
  self._framework_path = kwargs.get("framework_path")
168
169
  self._msprof_profiler_output_path = kwargs.get("msprof_profile_output_path")
169
170
  self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
171
+ self._activities = kwargs.get("activities")
170
172
  ProfilerLogger.init(self._ascend_ms_dir)
171
173
  self._logger = ProfilerLogger.get_instance()
172
174
  self._ge_memory_record = []
@@ -222,6 +224,11 @@ class AscendMemoryViewer(BaseViewer):
222
224
 
223
225
  def _parse_ms_memory_record(self):
224
226
  """Parse mindspore memory record data"""
227
+
228
+ # No frame work data is collected when no CPU is passed in activities
229
+ if ProfilerActivity.CPU.value not in self._activities:
230
+ return
231
+
225
232
  memory_record_file = os.path.join(
226
233
  self._framework_path,
227
234
  f"cpu_ms_memory_record_{self._rank_id}.txt",
@@ -23,6 +23,7 @@ from abc import ABC
23
23
  from mindspore.profiler.parser.ascend_analysis.tlv_decoder import TLVDecoder
24
24
  from mindspore.profiler.common.file_manager import FileManager
25
25
  from mindspore.profiler.common.log import ProfilerLogger
26
+ from mindspore.profiler.common.constant import ProfilerActivity
26
27
 
27
28
 
28
29
  class OpMemoryIndexEnum(Enum):
@@ -63,7 +64,7 @@ class OpMemoryEvent(BaseEvent):
63
64
  FIX_DATA_FORMAT = "<i11QI4B"
64
65
  FIX_DATA_SIZE = struct.calcsize(FIX_DATA_FORMAT)
65
66
  FREE_VALUE = 18446744073709551615 # 2^64 - 1
66
- NAME_KEY = 3
67
+ NAME_KEY = 13
67
68
 
68
69
  def __init__(self, data: Dict):
69
70
  super().__init__(data)
@@ -192,7 +193,7 @@ class AscendOpMemoryViewer:
192
193
  "Device Type",
193
194
  ]
194
195
  DEVICE_TYPE_FMT = "NPU:{}"
195
- NS_TO_US = 1024
196
+ NS_TO_US = 1000
196
197
  BYTES_TO_KB = 1024
197
198
  BYTES_TO_MB = 1024 * 1024
198
199
  EMPTY_VALUE = "N/A"
@@ -203,6 +204,7 @@ class AscendOpMemoryViewer:
203
204
  self._framework_path = kwargs.get("framework_path")
204
205
  self._ascend_profiler_output_path = kwargs.get("ascend_profiler_output_path")
205
206
  self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
207
+ self._activities = kwargs.get("activities")
206
208
  ProfilerLogger.init(self._ascend_ms_dir)
207
209
  self._logger = ProfilerLogger.get_instance()
208
210
  self._op_memory_events = None
@@ -214,7 +216,10 @@ class AscendOpMemoryViewer:
214
216
  Save step trace time data to csv file
215
217
  """
216
218
  self._logger.info("AscendOpMemoryViewer start")
217
- if not self._enable_profile_memory:
219
+
220
+ # No frame work data is collected when no CPU is passed in activities
221
+ if ProfilerActivity.CPU.value not in self._activities or \
222
+ not self._enable_profile_memory:
218
223
  return
219
224
 
220
225
  try:
@@ -17,14 +17,19 @@ import os
17
17
  import re
18
18
  from decimal import Decimal
19
19
  from enum import Enum
20
- from typing import List, Any, Tuple
20
+ from typing import List, Any, Tuple, Optional
21
21
 
22
22
  import numpy as np
23
23
 
24
24
  from mindspore import log as logger
25
25
  from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
26
26
  from mindspore.profiler.common.file_manager import FileManager
27
- from mindspore.profiler.common.constant import TimelineLayerName, OverlapAnalysisTidName, ProfilerLevel
27
+ from mindspore.profiler.common.constant import (
28
+ TimelineLayerName,
29
+ OverlapAnalysisTidName,
30
+ ProfilerLevel,
31
+ ProfilerActivity
32
+ )
28
33
  from mindspore.profiler.analysis.parser.timeline_event.msprof_event import (
29
34
  MsprofCompleteEvent,
30
35
  )
@@ -60,7 +65,7 @@ class AscendStepTraceTimeViewer(BaseViewer):
60
65
  # HCCL Send, Recv op pattern
61
66
  PP_OP_PATTERN = (
62
67
  # eg: hcom_BatchSendRecv__101_0_1
63
- re.compile(r"hcom_\w+SendRecv__\d+"),
68
+ re.compile(r"^hcom_\w+SendRecv__\d+"),
64
69
  # eg: hcom_send__101_0_1
65
70
  re.compile(r"hcom_send__\d+"),
66
71
  # eg: hcom_receive__101_0_1
@@ -80,9 +85,10 @@ class AscendStepTraceTimeViewer(BaseViewer):
80
85
  )
81
86
  self._profiler_level = kwargs.get("profiler_level")
82
87
  self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
88
+ self._activities = kwargs.get("activities")
83
89
  ProfilerLogger.init(self._ascend_ms_dir)
84
90
  self._logger = ProfilerLogger.get_instance()
85
- self.step_trace_time_data = {}
91
+ self.step_trace_time_data_list = []
86
92
  self.trace_container: TraceViewContainer = None
87
93
  self.hccl_pool: TimelineEventPool = None
88
94
  self.overlap_pool: TimelineEventPool = None
@@ -122,7 +128,8 @@ class AscendStepTraceTimeViewer(BaseViewer):
122
128
  Write step trace time data to csv file
123
129
  """
124
130
  self._logger.info("Write step trace time data start")
125
- data = [[str(self.step_trace_time_data.get(header, "")) for header in self.STEP_TRACE_TIME_HEADERS]]
131
+ data = [[str(item.get(header, "")) for header in self.STEP_TRACE_TIME_HEADERS]
132
+ for item in self.step_trace_time_data_list]
126
133
  FileManager.create_csv_file(
127
134
  self._save_path,
128
135
  data,
@@ -214,29 +221,126 @@ class AscendStepTraceTimeViewer(BaseViewer):
214
221
  """
215
222
  Calculate step trace time data
216
223
  """
217
- self.step_trace_time_data[StepTraceTimeHeaders.STEP.value] = "0"
218
- self.step_trace_time_data[StepTraceTimeHeaders.COMPUTING.value] = np.sum(self.computing_np["dur"])
219
- self.step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION.value] = np.sum(self.communication_np["dur"])
220
- self.step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED.value] = np.sum(
221
- self.communication_not_overlapped_np["dur"]
222
- )
223
- self.step_trace_time_data[StepTraceTimeHeaders.OVERLAPPED.value] = (
224
- self.step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION.value]
225
- - self.step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED.value]
226
- )
227
- self.step_trace_time_data[StepTraceTimeHeaders.FREE.value] = np.sum(self.free_np["dur"])
228
- (
229
- self.step_trace_time_data[StepTraceTimeHeaders.STAGE.value],
230
- self.step_trace_time_data[StepTraceTimeHeaders.BUBBLE.value],
231
- ) = self._calculate_stage_bubble()
232
-
233
- self.step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED_EXCLUDE_RECEIVE.value] = (
234
- self.step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED.value]
235
- - self.step_trace_time_data[StepTraceTimeHeaders.BUBBLE.value]
236
- )
237
- self.step_trace_time_data[StepTraceTimeHeaders.PREPARING.value] = "0"
224
+ step_id_to_time_dict = self._init_step_dict()
225
+ self.generate_step_trace_time_data(step_id_to_time_dict)
226
+
227
+ def _init_step_dict(self):
228
+ """
229
+ Init step list.
230
+ """
231
+ return self.trace_container.get_step_id_time_dict() or {0: (Decimal('0'), Decimal('Infinity'))}
232
+
233
+ def generate_step_trace_time_data(self, step_id_to_time_dict):
234
+ """
235
+ Generate step trace time data
236
+ """
237
+ for step_id, (start_time, end_time) in step_id_to_time_dict.items():
238
+ # step id、computing time、communication time、communication not overlapped time、free time
239
+ computing_time = self._calculate_event_total_time_by_step(self.computing_np, start_time, end_time)
240
+ communication_time = self._calculate_event_total_time_by_step(self.communication_np, start_time, end_time)
241
+ communication_not_over_lapped_time = self._calculate_event_total_time_by_step(
242
+ self.communication_not_overlapped_np, start_time, end_time)
243
+ free_time = self._calculate_free_event_total_time_by_step(self.free_np, start_time, end_time)
244
+ step_trace_time_data = {StepTraceTimeHeaders.STEP.value: step_id,
245
+ StepTraceTimeHeaders.COMPUTING.value: computing_time,
246
+ StepTraceTimeHeaders.COMMUNICATION.value: communication_time,
247
+ StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED.value:
248
+ communication_not_over_lapped_time,
249
+ StepTraceTimeHeaders.FREE.value: free_time}
250
+ # overlapped time
251
+ step_trace_time_data[StepTraceTimeHeaders.OVERLAPPED.value] = (
252
+ step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION.value]
253
+ - step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED.value]
254
+ )
255
+ # stage time && bubble time
256
+ (
257
+ step_trace_time_data[StepTraceTimeHeaders.STAGE.value],
258
+ step_trace_time_data[StepTraceTimeHeaders.BUBBLE.value],
259
+ ) = self._calculate_stage_bubble(start_time, end_time)
260
+ # communication not overlapped time exclude receive
261
+ step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED_EXCLUDE_RECEIVE.value] = (
262
+ step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED.value]
263
+ - step_trace_time_data[StepTraceTimeHeaders.BUBBLE.value]
264
+ )
265
+ step_trace_time_data[StepTraceTimeHeaders.PREPARING.value] = self._calculate_prepare_time_by_step(
266
+ self.computing_np, self.communication_np, start_time, step_id
267
+ )
268
+ self.step_trace_time_data_list.append(step_trace_time_data)
269
+
270
+ def _calculate_event_total_time_by_step(self, times: np.ndarray, ts: Decimal, es: Decimal) -> Decimal:
271
+ """
272
+ Calculate event total time by step.
273
+ """
274
+
275
+ ts_values = times['ts']
276
+
277
+ mask = (ts_values >= ts) & (ts_values <= es)
278
+ filtered_times = times[mask]
279
+
280
+ return Decimal(str(filtered_times['dur'].sum())).quantize(Decimal('0.000'))
281
+
282
+ def _calculate_free_event_total_time_by_step(self, times: np.ndarray, ts: Decimal, es: Decimal) -> Decimal:
283
+ """
284
+ Calculate free event total time by step, with clipping of events that exceed the time range.
285
+ """
286
+ start_times = times['ts']
287
+ durations = times['dur']
288
+ end_times = start_times + durations
289
+
290
+ # Clip start times to ts and end times to es
291
+ clipped_start_times = np.maximum(start_times, ts)
292
+ clipped_end_times = np.minimum(end_times, es)
293
+
294
+ # Calculate the clipped durations
295
+ clipped_durations = np.maximum(clipped_end_times - clipped_start_times, Decimal('0.000'))
238
296
 
239
- def _calculate_stage_bubble(self) -> Tuple[Decimal, Decimal]:
297
+ return Decimal(sum(clipped_durations)).quantize(Decimal('0.000'))
298
+
299
+ def _calculate_event_first_time_by_step(self, times: np.ndarray, ts: Decimal) -> Optional[Decimal]:
300
+ """
301
+ Calculate event first time by step.
302
+ """
303
+
304
+ idx = np.searchsorted(times['ts'], ts)
305
+
306
+ if idx >= len(times):
307
+ return None
308
+
309
+ return Decimal(str(times['ts'][idx])).quantize(Decimal('0.000'))
310
+
311
+ def _calculate_prepare_time_by_step(self, computing_np: np.ndarray, communication_np: np.ndarray,
312
+ ts: Decimal, step_id: int) -> Decimal:
313
+ """
314
+ calculate prepare time
315
+ """
316
+
317
+ # No frame work data is collected when no CPU is passed in activities
318
+ if ProfilerActivity.CPU.value not in self._activities:
319
+ return Decimal('0.000')
320
+
321
+ step_computing_first_time = self._calculate_event_first_time_by_step(computing_np, ts)
322
+ step_communication_first_time = self._calculate_event_first_time_by_step(communication_np, ts)
323
+
324
+ if step_computing_first_time and step_communication_first_time:
325
+ step_first_device_task_time = min(step_computing_first_time, step_communication_first_time)
326
+ else:
327
+ step_first_device_task_time = step_computing_first_time or step_communication_first_time
328
+
329
+ if step_first_device_task_time:
330
+ if ts == Decimal("0"): # When Profiler.step() is not used
331
+ fmk_api_events = self.trace_container.get_pool_by_name(
332
+ TimelineLayerName.MINDSPORE.value
333
+ ).get_complete_events()
334
+ step_host_start_time = min(event.ts for event in fmk_api_events)
335
+ else:
336
+ step_host_start_time = ts
337
+ step_prepare_time = step_first_device_task_time - step_host_start_time
338
+ return step_prepare_time.quantize(Decimal('0.000'))
339
+
340
+ logger.warning(f"Failed to find device task in step {step_id}, set prepare time to 0")
341
+ return Decimal('0.000')
342
+
343
+ def _calculate_stage_bubble(self, ts: Decimal, es: Decimal) -> Tuple[Decimal, Decimal]:
240
344
  """
241
345
  Calculate stage and bubble time
242
346
  """
@@ -244,13 +348,20 @@ class AscendStepTraceTimeViewer(BaseViewer):
244
348
  logger.info("HCCL events is empty, skip calculate stage and bubble")
245
349
  return Decimal(0), Decimal(0)
246
350
 
247
- total_hccl_time = self.hccl_events_np["ts"][-1] - self.hccl_events_np["ts"][0]
351
+ mask = (self.hccl_events_np["ts"] >= ts) & (self.hccl_events_np["ts"] <= es)
352
+ filtered_hccl_events_np = self.hccl_events_np[mask]
353
+
354
+ if filtered_hccl_events_np.size == 0:
355
+ logger.info("No HCCL events in the given time range, skip calculate stage and bubble")
356
+ return Decimal(0), Decimal(0)
357
+
358
+ total_hccl_time = filtered_hccl_events_np["ts"][-1] - filtered_hccl_events_np["ts"][0]
248
359
  bubble_time = np.sum(
249
- self.hccl_events_np["dur"][
360
+ filtered_hccl_events_np["dur"][
250
361
  np.array(
251
362
  [
252
363
  self._is_send_recv_op(name)
253
- for name in self.hccl_events_np["name"]
364
+ for name in filtered_hccl_events_np["name"]
254
365
  ]
255
366
  )
256
367
  ]
@@ -18,13 +18,12 @@ from collections import defaultdict
18
18
  from typing import List, Dict, Any
19
19
 
20
20
  from mindspore import log as logger
21
- from mindspore.profiler.common.constant import FileConstant, EventConstant
21
+ from mindspore.profiler.common.constant import FileConstant
22
22
  from mindspore.profiler.common.file_manager import FileManager
23
23
  from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
24
24
  from mindspore.profiler.analysis.parser.timeline_event.fwk_event import (
25
25
  FwkCompleteEvent,
26
26
  OpRangeStructField,
27
- FwkArgsDecoder
28
27
  )
29
28
  from mindspore.profiler.common.log import ProfilerLogger
30
29
 
@@ -69,10 +68,10 @@ class MsDatasetViewer(BaseViewer):
69
68
  """Calculate statistics for dataset operations."""
70
69
  dataset_op_data = []
71
70
  for data in fwk_tlv_data:
72
- if (data[FileConstant.FIX_SIZE_DATA][OpRangeStructField.START_NS.value] <
73
- data[FileConstant.FIX_SIZE_DATA][OpRangeStructField.END_NS.value]): # dur > 0
74
- name = data.get(FwkArgsDecoder.TLV_TYPES.get(EventConstant.OP_NAME), "")
75
- if name.split('::')[0] == self._DATASET_OP_PREFIX:
71
+ if (data[FileConstant.FIX_SIZE_DATA][OpRangeStructField.START_TIME_NS.value] <
72
+ data[FileConstant.FIX_SIZE_DATA][OpRangeStructField.END_TIME_NS.value]): # dur > 0
73
+ name = data.get(OpRangeStructField.MODULE_GRAPH.value, "")
74
+ if name == self._DATASET_OP_PREFIX:
76
75
  dataset_op_data.append(FwkCompleteEvent(data))
77
76
 
78
77
  dataset_op_stats = defaultdict(list)
@@ -38,6 +38,7 @@ class AscendMsprofExporter:
38
38
  self._msprof_profile_output_path = kwargs.get("msprof_profile_output_path")
39
39
  self._msprof_profile_path = kwargs.get("msprof_profile_path")
40
40
  self._step_list = kwargs.get("step_list")
41
+ self._export_type = kwargs.get("export_type")
41
42
  self._msprof_tool = MsprofCmdTool(self._msprof_profile_path)
42
43
 
43
44
  def export(self) -> None:
@@ -47,7 +48,7 @@ class AscendMsprofExporter:
47
48
  self._single_export(self._step_list)
48
49
  else:
49
50
  self._all_export()
50
- self._msprof_tool.run_ms_analyze_cmd()
51
+ self._msprof_tool.run_ms_analyze_cmd(self._export_type)
51
52
 
52
53
  def _single_export(self, step_list: Optional[List[int]]) -> None:
53
54
  """Perform single export for each model and iteration.
@@ -63,11 +64,11 @@ class AscendMsprofExporter:
63
64
  model_iteration_dict = {self._DEFAULT_MODEL_ID: step_list}
64
65
 
65
66
  for model_id, iter_list in model_iteration_dict.items():
66
- self._msprof_tool.run_ms_py_export_cmd(model_id, iter_list)
67
+ self._msprof_tool.run_ms_py_export_cmd(model_id, iter_list, self._export_type)
67
68
 
68
69
  def _all_export(self) -> None:
69
70
  """Perform all-export for all data."""
70
- self._msprof_tool.run_ms_export_cmd()
71
+ self._msprof_tool.run_ms_export_cmd(self._export_type)
71
72
 
72
73
  def _check_drv_version(self) -> bool:
73
74
  """Check if the driver version supports all-export.
@@ -99,7 +100,7 @@ class AscendMsprofExporter:
99
100
  """
100
101
  try:
101
102
  # step1: run msprof command
102
- self._msprof_tool.run_ms_export_cmd()
103
+ self._msprof_tool.run_ms_export_cmd(self._export_type)
103
104
  step_trace_file = glob.glob(
104
105
  os.path.join(
105
106
  self._msprof_profile_output_path, self._STEP_TRACE_FILE_PATTERN
@@ -51,6 +51,7 @@ class AicoreMetrics(Enum):
51
51
  MemoryUB = "MemoryUB"
52
52
  ResourceConflictRatio = "ResourceConflictRatio"
53
53
  L2Cache = "L2Cache"
54
+ MemoryAccess = "MemoryAccess"
54
55
  AiCoreNone = "None"
55
56
 
56
57
 
@@ -137,6 +138,7 @@ class EventConstant:
137
138
  TOP_SCOPE_NAMES = ('Default', 'Gradients', 'recompute_Default')
138
139
  KERNEL_LAUNCH_KEYWORDS = ("KernelLaunch", "LaunchTask")
139
140
  MSTX_KEYWORD = "Mstx"
141
+ STACK_EVENT_CAT = "python_function"
140
142
 
141
143
  FLOW_OP = "flow"
142
144
  INVALID_FLOW_ID = 18446744073709551615
@@ -198,3 +200,13 @@ class JitLevel:
198
200
  KBK_LEVEL = "O0"
199
201
  KBK_DVM_LEVEL = "O1"
200
202
  GRAPH_LEVEL = "O2"
203
+
204
+
205
+ class ExportType(Enum):
206
+ Db = "db"
207
+ Text = "text"
208
+
209
+
210
+ class CannLibName:
211
+ """CANN lib name"""
212
+ CANN_MSPTI = "libmspti.so"