mindspore 2.5.0__cp39-cp39-win_amd64.whl → 2.6.0rc1__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 (491) 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.cp39-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp39-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 +24 -193
  20. mindspore/_extends/parse/resources.py +1 -5
  21. mindspore/_extends/parse/standard_method.py +97 -74
  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 +1915 -3287
  46. mindspore/common/api.py +341 -354
  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/hook_handle.py +5 -3
  52. mindspore/common/initializer.py +10 -6
  53. mindspore/common/jit_begin_end.py +94 -0
  54. mindspore/common/jit_config.py +6 -1
  55. mindspore/common/jit_context.py +76 -0
  56. mindspore/common/jit_trace.py +378 -0
  57. mindspore/common/lazy_inline.py +2 -2
  58. mindspore/common/mutable.py +5 -4
  59. mindspore/common/parameter.py +106 -39
  60. mindspore/common/seed.py +2 -2
  61. mindspore/common/sparse_tensor.py +23 -17
  62. mindspore/common/tensor.py +297 -714
  63. mindspore/communication/__init__.py +7 -5
  64. mindspore/communication/_comm_helper.py +47 -2
  65. mindspore/communication/comm_func.py +70 -53
  66. mindspore/communication/management.py +83 -17
  67. mindspore/context.py +214 -560
  68. mindspore/dataset/__init__.py +44 -20
  69. mindspore/dataset/audio/__init__.py +2 -8
  70. mindspore/dataset/audio/transforms.py +3 -17
  71. mindspore/dataset/core/config.py +3 -3
  72. mindspore/dataset/engine/cache_client.py +1 -1
  73. mindspore/dataset/engine/datasets.py +102 -120
  74. mindspore/dataset/engine/datasets_audio.py +22 -22
  75. mindspore/dataset/engine/datasets_standard_format.py +43 -24
  76. mindspore/dataset/engine/datasets_text.py +78 -85
  77. mindspore/dataset/engine/datasets_user_defined.py +108 -76
  78. mindspore/dataset/engine/datasets_vision.py +111 -108
  79. mindspore/dataset/engine/iterators.py +5 -3
  80. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  81. mindspore/dataset/engine/samplers.py +279 -57
  82. mindspore/dataset/engine/serializer_deserializer.py +2 -1
  83. mindspore/dataset/engine/validators.py +10 -0
  84. mindspore/dataset/text/__init__.py +7 -6
  85. mindspore/dataset/text/transforms.py +6 -5
  86. mindspore/dataset/text/utils.py +3 -3
  87. mindspore/dataset/transforms/__init__.py +0 -9
  88. mindspore/dataset/transforms/transforms.py +3 -3
  89. mindspore/dataset/utils/browse_dataset.py +1 -1
  90. mindspore/dataset/vision/__init__.py +2 -9
  91. mindspore/dataset/vision/transforms.py +202 -158
  92. mindspore/dataset/vision/utils.py +7 -5
  93. mindspore/device_context/ascend/op_debug.py +60 -1
  94. mindspore/device_context/ascend/op_tuning.py +0 -4
  95. mindspore/device_manager.py +39 -3
  96. mindspore/dnnl.dll +0 -0
  97. mindspore/dpcmi.dll +0 -0
  98. mindspore/experimental/es/embedding_service.py +35 -27
  99. mindspore/experimental/map_parameter.py +4 -4
  100. mindspore/experimental/optim/adadelta.py +22 -26
  101. mindspore/experimental/optim/adagrad.py +4 -4
  102. mindspore/experimental/optim/adam.py +4 -0
  103. mindspore/experimental/optim/adamax.py +4 -4
  104. mindspore/experimental/optim/adamw.py +4 -0
  105. mindspore/experimental/optim/asgd.py +1 -1
  106. mindspore/experimental/optim/lr_scheduler.py +40 -22
  107. mindspore/experimental/optim/radam.py +5 -5
  108. mindspore/experimental/optim/rprop.py +1 -1
  109. mindspore/experimental/optim/sgd.py +1 -1
  110. mindspore/hal/contiguous_tensors_handle.py +6 -10
  111. mindspore/hal/device.py +55 -81
  112. mindspore/hal/event.py +38 -55
  113. mindspore/hal/memory.py +93 -144
  114. mindspore/hal/stream.py +81 -125
  115. mindspore/include/dataset/constants.h +7 -4
  116. mindspore/include/dataset/execute.h +2 -2
  117. mindspore/jpeg62.dll +0 -0
  118. mindspore/log.py +40 -2
  119. mindspore/mindrecord/__init__.py +20 -7
  120. mindspore/mindspore_backend_common.dll +0 -0
  121. mindspore/mindspore_backend_manager.dll +0 -0
  122. mindspore/mindspore_common.dll +0 -0
  123. mindspore/mindspore_core.dll +0 -0
  124. mindspore/mindspore_dump.dll +0 -0
  125. mindspore/mindspore_frontend.dll +0 -0
  126. mindspore/mindspore_glog.dll +0 -0
  127. mindspore/mindspore_memory_pool.dll +0 -0
  128. mindspore/mindspore_ms_backend.dll +0 -0
  129. mindspore/mindspore_ops.dll +0 -0
  130. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  131. mindspore/mindspore_ops_kernel_common.dll +0 -0
  132. mindspore/mindspore_profiler.dll +0 -0
  133. mindspore/mindspore_pyboost.dll +0 -0
  134. mindspore/mindspore_pynative.dll +0 -0
  135. mindspore/mindspore_res_manager.dll +0 -0
  136. mindspore/mindspore_runtime_pipeline.dll +0 -0
  137. mindspore/mint/__init__.py +131 -700
  138. mindspore/mint/distributed/__init__.py +5 -1
  139. mindspore/mint/distributed/distributed.py +194 -109
  140. mindspore/mint/linalg/__init__.py +2 -0
  141. mindspore/mint/nn/__init__.py +280 -18
  142. mindspore/mint/nn/functional.py +282 -64
  143. mindspore/mint/nn/layer/__init__.py +4 -0
  144. mindspore/mint/nn/layer/_functions.py +7 -3
  145. mindspore/mint/nn/layer/activation.py +120 -13
  146. mindspore/mint/nn/layer/conv.py +218 -24
  147. mindspore/mint/nn/layer/normalization.py +15 -16
  148. mindspore/mint/nn/layer/padding.py +1 -1
  149. mindspore/mint/nn/layer/pooling.py +66 -1
  150. mindspore/mint/optim/__init__.py +2 -1
  151. mindspore/mint/optim/sgd.py +171 -0
  152. mindspore/msobj140.dll +0 -0
  153. mindspore/mspdb140.dll +0 -0
  154. mindspore/mspdbcore.dll +0 -0
  155. mindspore/mspdbst.dll +0 -0
  156. mindspore/mspft140.dll +0 -0
  157. mindspore/msvcdis140.dll +0 -0
  158. mindspore/msvcp140_1.dll +0 -0
  159. mindspore/msvcp140_2.dll +0 -0
  160. mindspore/msvcp140_atomic_wait.dll +0 -0
  161. mindspore/msvcp140_codecvt_ids.dll +0 -0
  162. mindspore/nn/__init__.py +4 -1
  163. mindspore/nn/cell.py +1250 -176
  164. mindspore/nn/layer/activation.py +23 -21
  165. mindspore/nn/layer/basic.py +22 -16
  166. mindspore/nn/layer/container.py +1 -1
  167. mindspore/nn/layer/conv.py +22 -17
  168. mindspore/nn/layer/embedding.py +9 -8
  169. mindspore/nn/layer/normalization.py +48 -42
  170. mindspore/nn/layer/pooling.py +75 -31
  171. mindspore/nn/layer/transformer.py +11 -10
  172. mindspore/nn/learning_rate_schedule.py +4 -2
  173. mindspore/nn/loss/loss.py +27 -19
  174. mindspore/nn/optim/ada_grad.py +6 -5
  175. mindspore/nn/optim/adadelta.py +9 -7
  176. mindspore/nn/optim/adafactor.py +1 -1
  177. mindspore/nn/optim/adam.py +16 -12
  178. mindspore/nn/optim/adamax.py +8 -7
  179. mindspore/nn/optim/adasum.py +5 -5
  180. mindspore/nn/optim/asgd.py +1 -1
  181. mindspore/nn/optim/ftrl.py +11 -9
  182. mindspore/nn/optim/lamb.py +1 -1
  183. mindspore/nn/optim/lazyadam.py +12 -10
  184. mindspore/nn/optim/momentum.py +7 -6
  185. mindspore/nn/optim/optimizer.py +2 -2
  186. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  187. mindspore/nn/optim/rmsprop.py +13 -12
  188. mindspore/nn/optim/rprop.py +9 -7
  189. mindspore/nn/optim/sgd.py +9 -6
  190. mindspore/nn/optim/tft_wrapper.py +5 -2
  191. mindspore/nn/probability/bijector/bijector.py +17 -11
  192. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  193. mindspore/nn/probability/bijector/invert.py +2 -2
  194. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  195. mindspore/nn/probability/bijector/softplus.py +3 -2
  196. mindspore/nn/probability/distribution/beta.py +3 -3
  197. mindspore/nn/probability/distribution/categorical.py +1 -1
  198. mindspore/nn/probability/distribution/cauchy.py +4 -2
  199. mindspore/nn/probability/distribution/exponential.py +6 -7
  200. mindspore/nn/probability/distribution/gamma.py +2 -2
  201. mindspore/nn/probability/distribution/gumbel.py +2 -2
  202. mindspore/nn/probability/distribution/half_normal.py +5 -3
  203. mindspore/nn/probability/distribution/logistic.py +5 -3
  204. mindspore/nn/probability/distribution/poisson.py +1 -1
  205. mindspore/nn/probability/distribution/uniform.py +5 -3
  206. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  207. mindspore/nn/reinforcement/tensor_array.py +1 -1
  208. mindspore/nn/wrap/__init__.py +6 -6
  209. mindspore/nn/wrap/cell_wrapper.py +178 -117
  210. mindspore/nn/wrap/grad_reducer.py +45 -36
  211. mindspore/nn/wrap/loss_scale.py +3 -3
  212. mindspore/numpy/array_creations.py +3 -3
  213. mindspore/numpy/array_ops.py +1 -1
  214. mindspore/numpy/math_ops.py +4 -4
  215. mindspore/numpy/utils.py +1 -2
  216. mindspore/numpy/utils_const.py +1 -2
  217. mindspore/opencv_core452.dll +0 -0
  218. mindspore/opencv_imgcodecs452.dll +0 -0
  219. mindspore/opencv_imgproc452.dll +0 -0
  220. mindspore/ops/__init__.py +3 -2
  221. mindspore/ops/_grad_experimental/grad_comm_ops.py +18 -3
  222. mindspore/ops/_grad_experimental/grad_debug_ops.py +8 -1
  223. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  224. mindspore/ops/_register_for_op.py +0 -11
  225. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  226. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -4
  227. mindspore/ops/_vmap/vmap_array_ops.py +7 -6
  228. mindspore/ops/_vmap/vmap_grad_nn_ops.py +2 -1
  229. mindspore/ops/_vmap/vmap_math_ops.py +4 -7
  230. mindspore/ops/_vmap/vmap_nn_ops.py +9 -8
  231. mindspore/ops/auto_generate/__init__.py +4 -3
  232. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +102 -49
  233. mindspore/ops/auto_generate/gen_extend_func.py +281 -135
  234. mindspore/ops/auto_generate/gen_ops_def.py +2574 -2326
  235. mindspore/ops/auto_generate/gen_ops_prim.py +8566 -2755
  236. mindspore/ops/auto_generate/pyboost_inner_prim.py +106 -76
  237. mindspore/ops/composite/__init__.py +2 -1
  238. mindspore/ops/composite/base.py +19 -24
  239. mindspore/ops/composite/math_ops.py +6 -16
  240. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  241. mindspore/ops/composite/multitype_ops/_compile_utils.py +2 -3
  242. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  243. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  244. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  245. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  246. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  247. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  248. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  249. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  250. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  251. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  252. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  253. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  254. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  255. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  256. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  257. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  258. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  259. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  260. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  261. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  262. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  263. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  264. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  265. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  266. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  267. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -1
  268. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  269. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  270. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  271. mindspore/ops/function/__init__.py +28 -2
  272. mindspore/ops/function/_add_attr_func.py +58 -0
  273. mindspore/ops/function/array_func.py +1629 -2345
  274. mindspore/ops/function/clip_func.py +38 -45
  275. mindspore/ops/function/debug_func.py +36 -44
  276. mindspore/ops/function/grad/__init__.py +1 -0
  277. mindspore/ops/function/grad/grad_func.py +104 -71
  278. mindspore/ops/function/image_func.py +1 -1
  279. mindspore/ops/function/linalg_func.py +46 -78
  280. mindspore/ops/function/math_func.py +3035 -3705
  281. mindspore/ops/function/nn_func.py +676 -241
  282. mindspore/ops/function/other_func.py +159 -1
  283. mindspore/ops/function/parameter_func.py +17 -30
  284. mindspore/ops/function/random_func.py +204 -361
  285. mindspore/ops/function/reshard_func.py +4 -70
  286. mindspore/ops/function/sparse_func.py +3 -3
  287. mindspore/ops/function/sparse_unary_func.py +5 -5
  288. mindspore/ops/function/spectral_func.py +25 -58
  289. mindspore/ops/function/vmap_func.py +24 -17
  290. mindspore/ops/functional.py +6 -4
  291. mindspore/ops/functional_overload.py +547 -4
  292. mindspore/ops/op_info_register.py +32 -244
  293. mindspore/ops/operations/__init__.py +10 -5
  294. mindspore/ops/operations/_custom_ops_utils.py +247 -0
  295. mindspore/ops/operations/_grad_ops.py +1 -10
  296. mindspore/ops/operations/_inner_ops.py +5 -76
  297. mindspore/ops/operations/_ms_kernel.py +4 -10
  298. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  299. mindspore/ops/operations/_scalar_ops.py +3 -2
  300. mindspore/ops/operations/_sequence_ops.py +1 -1
  301. mindspore/ops/operations/_tensor_array.py +1 -1
  302. mindspore/ops/operations/array_ops.py +37 -22
  303. mindspore/ops/operations/comm_ops.py +150 -107
  304. mindspore/ops/operations/custom_ops.py +221 -23
  305. mindspore/ops/operations/debug_ops.py +115 -16
  306. mindspore/ops/operations/inner_ops.py +1 -1
  307. mindspore/ops/operations/linalg_ops.py +1 -58
  308. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  309. mindspore/ops/operations/manually_defined/ops_def.py +746 -79
  310. mindspore/ops/operations/math_ops.py +21 -18
  311. mindspore/ops/operations/nn_ops.py +65 -191
  312. mindspore/ops/operations/other_ops.py +62 -9
  313. mindspore/ops/operations/random_ops.py +13 -7
  314. mindspore/ops/operations/reshard_ops.py +1 -1
  315. mindspore/ops/operations/sparse_ops.py +2 -2
  316. mindspore/ops/primitive.py +43 -32
  317. mindspore/ops/tensor_method.py +232 -13
  318. mindspore/ops_generate/__init__.py +0 -5
  319. mindspore/ops_generate/aclnn/__init__.py +0 -0
  320. mindspore/ops_generate/{aclnn_kernel_register_auto_cc_generator.py → aclnn/aclnn_kernel_register_auto_cc_generator.py} +43 -18
  321. mindspore/ops_generate/{gen_aclnn_implement.py → aclnn/gen_aclnn_implement.py} +49 -51
  322. mindspore/ops_generate/api/__init__.py +0 -0
  323. mindspore/ops_generate/{add_tensor_docs_generator.py → api/add_tensor_docs_generator.py} +9 -7
  324. mindspore/ops_generate/{cpp_create_prim_instance_helper_generator.py → api/cpp_create_prim_instance_helper_generator.py} +6 -9
  325. mindspore/ops_generate/{functional_map_cpp_generator.py → api/functional_map_cpp_generator.py} +25 -12
  326. mindspore/ops_generate/{functional_overload_py_generator.py → api/functional_overload_py_generator.py} +8 -6
  327. mindspore/ops_generate/{functions_cc_generator.py → api/functions_cc_generator.py} +14 -10
  328. mindspore/ops_generate/api/gen_api.py +103 -0
  329. mindspore/ops_generate/{op_api_proto.py → api/op_api_proto.py} +98 -69
  330. mindspore/ops_generate/{tensor_func_reg_cpp_generator.py → api/tensor_func_reg_cpp_generator.py} +82 -43
  331. mindspore/ops_generate/common/__init__.py +0 -0
  332. mindspore/ops_generate/common/gen_constants.py +91 -0
  333. mindspore/ops_generate/{gen_utils.py → common/gen_utils.py} +72 -19
  334. mindspore/ops_generate/{op_proto.py → common/op_proto.py} +64 -1
  335. mindspore/ops_generate/{template.py → common/template.py} +96 -84
  336. mindspore/ops_generate/gen_ops.py +23 -325
  337. mindspore/ops_generate/op_def/__init__.py +0 -0
  338. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  339. mindspore/ops_generate/{lite_ops_cpp_generator.py → op_def/lite_ops_cpp_generator.py} +47 -11
  340. mindspore/ops_generate/{ops_def_cc_generator.py → op_def/ops_def_cc_generator.py} +18 -7
  341. mindspore/ops_generate/{ops_def_h_generator.py → op_def/ops_def_h_generator.py} +5 -5
  342. mindspore/ops_generate/{ops_name_h_generator.py → op_def/ops_name_h_generator.py} +30 -15
  343. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  344. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  345. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  346. mindspore/ops_generate/{op_def_py_generator.py → op_def_py/op_def_py_generator.py} +6 -5
  347. mindspore/ops_generate/{op_prim_py_generator.py → op_def_py/op_prim_py_generator.py} +24 -15
  348. mindspore/ops_generate/pyboost/__init__.py +0 -0
  349. mindspore/ops_generate/{auto_grad_impl_cc_generator.py → pyboost/auto_grad_impl_cc_generator.py} +11 -7
  350. mindspore/ops_generate/{auto_grad_reg_cc_generator.py → pyboost/auto_grad_reg_cc_generator.py} +7 -7
  351. mindspore/ops_generate/{gen_pyboost_func.py → pyboost/gen_pyboost_func.py} +40 -16
  352. mindspore/ops_generate/{op_template_parser.py → pyboost/op_template_parser.py} +105 -24
  353. mindspore/ops_generate/{pyboost_functions_cpp_generator.py → pyboost/pyboost_functions_cpp_generator.py} +55 -18
  354. mindspore/ops_generate/{pyboost_functions_h_generator.py → pyboost/pyboost_functions_h_generator.py} +42 -10
  355. mindspore/ops_generate/{pyboost_functions_py_generator.py → pyboost/pyboost_functions_py_generator.py} +6 -6
  356. mindspore/ops_generate/{pyboost_grad_function_cpp_generator.py → pyboost/pyboost_grad_function_cpp_generator.py} +11 -10
  357. mindspore/ops_generate/{pyboost_inner_prim_generator.py → pyboost/pyboost_inner_prim_generator.py} +8 -7
  358. mindspore/ops_generate/{pyboost_native_grad_functions_generator.py → pyboost/pyboost_native_grad_functions_generator.py} +14 -10
  359. mindspore/ops_generate/{pyboost_op_cpp_code_generator.py → pyboost/pyboost_op_cpp_code_generator.py} +140 -53
  360. mindspore/ops_generate/{pyboost_overload_functions_cpp_generator.py → pyboost/pyboost_overload_functions_cpp_generator.py} +28 -15
  361. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +88 -4
  362. mindspore/ops_generate/resources/__init__.py +0 -0
  363. mindspore/ops_generate/resources/resource_list.py +30 -0
  364. mindspore/ops_generate/resources/resource_loader.py +36 -0
  365. mindspore/ops_generate/resources/resource_manager.py +64 -0
  366. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  367. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  368. mindspore/parallel/__init__.py +6 -2
  369. mindspore/parallel/_auto_parallel_context.py +133 -6
  370. mindspore/parallel/_cell_wrapper.py +130 -15
  371. mindspore/parallel/_parallel_serialization.py +95 -4
  372. mindspore/parallel/_ps_context.py +1 -1
  373. mindspore/parallel/_recovery_context.py +7 -2
  374. mindspore/parallel/_tensor.py +142 -18
  375. mindspore/parallel/_utils.py +198 -25
  376. mindspore/parallel/algo_parameter_config.py +3 -3
  377. mindspore/parallel/auto_parallel.py +732 -0
  378. mindspore/parallel/checkpoint_convert.py +159 -0
  379. mindspore/parallel/checkpoint_transform.py +656 -37
  380. mindspore/parallel/cluster/process_entity/_api.py +151 -19
  381. mindspore/parallel/cluster/run.py +1 -1
  382. mindspore/parallel/function/__init__.py +24 -0
  383. mindspore/parallel/function/reshard_func.py +259 -0
  384. mindspore/parallel/nn/__init__.py +25 -0
  385. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  386. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  387. mindspore/parallel/parameter_broadcast.py +24 -13
  388. mindspore/parallel/shard.py +137 -61
  389. mindspore/parallel/transform_safetensors.py +287 -95
  390. mindspore/pgodb140.dll +0 -0
  391. mindspore/pgort140.dll +0 -0
  392. mindspore/profiler/__init__.py +9 -5
  393. mindspore/profiler/analysis/parser/ascend_cann_parser.py +6 -2
  394. mindspore/profiler/analysis/parser/ms_framework_parser.py +4 -4
  395. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -4
  396. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +22 -0
  397. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
  398. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +241 -86
  399. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +41 -2
  400. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +33 -35
  401. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +7 -0
  402. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +8 -3
  403. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +141 -30
  404. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +5 -6
  405. mindspore/profiler/common/ascend_msprof_exporter.py +5 -4
  406. mindspore/profiler/common/constant.py +12 -0
  407. mindspore/profiler/common/msprof_cmd_tool.py +42 -23
  408. mindspore/profiler/common/path_manager.py +24 -0
  409. mindspore/profiler/common/profiler_context.py +26 -2
  410. mindspore/profiler/common/profiler_meta_data.py +74 -0
  411. mindspore/profiler/common/profiler_parameters.py +59 -18
  412. mindspore/profiler/common/profiler_path_manager.py +66 -7
  413. mindspore/profiler/dynamic_profiler.py +112 -79
  414. mindspore/profiler/envprofiler.py +26 -1
  415. mindspore/profiler/experimental_config.py +197 -0
  416. mindspore/profiler/mstx.py +57 -14
  417. mindspore/profiler/platform/npu_profiler.py +33 -7
  418. mindspore/profiler/profiler.py +541 -45
  419. mindspore/profiler/profiler_action_controller.py +1 -1
  420. mindspore/profiler/profiler_interface.py +4 -0
  421. mindspore/profiler/schedule.py +57 -22
  422. mindspore/rewrite/api/node.py +15 -13
  423. mindspore/rewrite/api/symbol_tree.py +1 -1
  424. mindspore/run_check/_check_version.py +25 -14
  425. mindspore/run_check/run_check.py +1 -1
  426. mindspore/runtime/__init__.py +2 -2
  427. mindspore/runtime/executor.py +40 -11
  428. mindspore/runtime/memory.py +25 -8
  429. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  430. mindspore/swresample-4.dll +0 -0
  431. mindspore/swscale-6.dll +0 -0
  432. mindspore/tbbmalloc.dll +0 -0
  433. mindspore/tinyxml2.dll +0 -0
  434. mindspore/train/__init__.py +8 -8
  435. mindspore/train/_utils.py +35 -7
  436. mindspore/train/amp.py +1 -1
  437. mindspore/train/callback/__init__.py +2 -2
  438. mindspore/train/callback/_callback.py +2 -16
  439. mindspore/train/callback/_checkpoint.py +24 -40
  440. mindspore/train/callback/_cluster_monitor.py +14 -18
  441. mindspore/train/callback/_flops_collector.py +2 -3
  442. mindspore/train/callback/_history.py +7 -4
  443. mindspore/train/callback/_lambda_callback.py +2 -2
  444. mindspore/train/callback/_landscape.py +0 -3
  445. mindspore/train/callback/_loss_monitor.py +2 -1
  446. mindspore/train/callback/_on_request_exit.py +6 -5
  447. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  448. mindspore/train/callback/_summary_collector.py +8 -13
  449. mindspore/train/callback/_time_monitor.py +2 -1
  450. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +179 -103
  451. mindspore/train/data_sink.py +25 -2
  452. mindspore/train/dataset_helper.py +4 -5
  453. mindspore/train/loss_scale_manager.py +8 -7
  454. mindspore/train/metrics/accuracy.py +3 -3
  455. mindspore/train/metrics/confusion_matrix.py +9 -9
  456. mindspore/train/metrics/error.py +3 -3
  457. mindspore/train/metrics/hausdorff_distance.py +4 -4
  458. mindspore/train/metrics/mean_surface_distance.py +3 -3
  459. mindspore/train/metrics/metric.py +0 -12
  460. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  461. mindspore/train/metrics/precision.py +8 -6
  462. mindspore/train/metrics/recall.py +9 -9
  463. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  464. mindspore/train/mind_ir_pb2.py +19 -12
  465. mindspore/train/model.py +176 -103
  466. mindspore/train/serialization.py +246 -988
  467. mindspore/train/summary/_summary_adapter.py +2 -2
  468. mindspore/train/summary/summary_record.py +1 -1
  469. mindspore/turbojpeg.dll +0 -0
  470. mindspore/utils/__init__.py +3 -2
  471. mindspore/utils/dryrun.py +4 -2
  472. mindspore/utils/hooks.py +81 -0
  473. mindspore/utils/utils.py +138 -4
  474. mindspore/vcmeta.dll +0 -0
  475. mindspore/vcruntime140.dll +0 -0
  476. mindspore/vcruntime140_1.dll +0 -0
  477. mindspore/version.py +1 -1
  478. {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +2 -1
  479. {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +483 -438
  480. mindspore/_install_custom.py +0 -43
  481. mindspore/common/_register_for_adapter.py +0 -74
  482. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  483. mindspore/ops/auto_generate/gen_arg_handler.py +0 -136
  484. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  485. mindspore/ops_generate/gen_constants.py +0 -190
  486. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  487. mindspore/ops_generate/ops_primitive_h_generator.py +0 -81
  488. /mindspore/ops_generate/{base_generator.py → common/base_generator.py} +0 -0
  489. {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
  490. {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +0 -0
  491. {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
@@ -21,6 +21,7 @@ from typing import Dict, List, Optional
21
21
 
22
22
  from mindspore import log as logger
23
23
  from mindspore.profiler.common.command_executor import CommandExecutor
24
+ from mindspore.profiler.common.constant import ExportType
24
25
 
25
26
 
26
27
  class MsprofCmdTool:
@@ -37,22 +38,30 @@ class MsprofCmdTool:
37
38
  self._msprof_profile_path = msprof_profile_path
38
39
  self._check_environment()
39
40
 
40
- def run_ms_export_cmd(self) -> None:
41
- """Run msprof export command."""
42
- CommandExecutor.execute(
43
- [
44
- self._MSPROF_CMD,
45
- "--export=on",
46
- f"--output={self._msprof_profile_path}"
47
- ]
48
- )
49
-
50
- def run_ms_py_export_cmd(self, model_id: int, iter_list: List[int]) -> None:
41
+ def run_ms_export_cmd(self, analyse_export_type: List[str]) -> None:
42
+ """Run msprof export command.
43
+
44
+ Args:
45
+ analyse_export_type (List[str]): The type of data to export.
46
+ """
47
+ export_cmd = [
48
+ self._MSPROF_CMD,
49
+ "--export=on",
50
+ f"--output={self._msprof_profile_path}",
51
+ ]
52
+ if ExportType.Text.value in analyse_export_type:
53
+ CommandExecutor.execute(export_cmd)
54
+ if ExportType.Db.value in analyse_export_type:
55
+ export_cmd.append("--type=db")
56
+ CommandExecutor.execute(export_cmd)
57
+
58
+ def run_ms_py_export_cmd(self, model_id: int, iter_list: List[int], analyse_export_type: List[str]) -> None:
51
59
  """Export timeline and summary data for the specified model and iterations.
52
60
 
53
61
  Args:
54
62
  model_id (int): The ID of the model to export data for.
55
63
  iter_list (List[int]): A list of iteration IDs to export data for.
64
+ analyse_export_type (List[str]): The type of data to export.
56
65
 
57
66
  Raises:
58
67
  FileNotFoundError: If msprof.py path cannot be found.
@@ -66,24 +75,34 @@ class MsprofCmdTool:
66
75
  export_cmd = ["python3", script_path]
67
76
  iter_param = self._get_iteration_params(model_id, iter_list)
68
77
 
69
- for export_type in ("timeline", "summary"):
78
+ if ExportType.Text.value in analyse_export_type:
79
+ for export_type in ("timeline", "summary"):
80
+ cmd = (
81
+ export_cmd
82
+ + ["export", export_type, "-dir", self._msprof_profile_path]
83
+ + iter_param
84
+ )
85
+ CommandExecutor.execute(cmd)
86
+ if ExportType.Db.value in analyse_export_type:
70
87
  cmd = (
71
88
  export_cmd
72
- + ["export", export_type, "-dir", self._msprof_profile_path]
73
- + iter_param
89
+ + ["export", "db", "-dir", self._msprof_profile_path]
74
90
  )
75
91
  CommandExecutor.execute(cmd)
76
92
 
77
- def run_ms_analyze_cmd(self) -> None:
93
+ def run_ms_analyze_cmd(self, analyse_export_type: List[str]) -> None:
78
94
  """Run msprof analyze command."""
79
- CommandExecutor.execute(
80
- [
81
- self._MSPROF_CMD,
82
- "--analyze=on",
83
- "--rule=communication,communication_matrix",
84
- f"--output={self._msprof_profile_path}",
85
- ]
86
- )
95
+ analyze_cmd = [
96
+ self._MSPROF_CMD,
97
+ "--analyze=on",
98
+ "--rule=communication,communication_matrix",
99
+ f"--output={self._msprof_profile_path}",
100
+ ]
101
+ if ExportType.Text.value in analyse_export_type:
102
+ CommandExecutor.execute(analyze_cmd)
103
+ if ExportType.Db.value in analyse_export_type:
104
+ analyze_cmd.append("--type=db")
105
+ CommandExecutor.execute(analyze_cmd)
87
106
 
88
107
  @lru_cache(maxsize=1)
89
108
  def get_msprof_info(self):
@@ -17,6 +17,7 @@ import os
17
17
  import re
18
18
  import shutil
19
19
  import glob
20
+ import stat
20
21
 
21
22
  from mindspore import log as logger
22
23
  from mindspore.profiler.common.constant import FileConstant
@@ -369,3 +370,26 @@ class PathManager:
369
370
  msg = f"Invalid input path is a soft link: {path}"
370
371
  raise ProfilerPathErrorException(msg)
371
372
  return os.path.realpath(expanded_path)
373
+
374
+ @classmethod
375
+ def check_cann_lib_valid(cls, path: str) -> bool:
376
+ """
377
+ Function Description:
378
+ check if cann lib path is valid
379
+ Parameter:
380
+ path: the cann lib path to check
381
+ Return:
382
+ bool: True if the path is valid, False otherwise
383
+ """
384
+ lib_path = os.path.realpath(path)
385
+ if not os.path.exists(lib_path):
386
+ return False
387
+ if os.path.isdir(lib_path) or os.path.islink(lib_path):
388
+ return False
389
+ if bool(os.stat(lib_path).st_mode & stat.S_IWOTH):
390
+ return False
391
+ if os.name == 'nt':
392
+ return False
393
+ if os.stat(path).st_uid == 0 or os.stat(path).st_uid == os.getuid():
394
+ return True
395
+ return False
@@ -30,7 +30,8 @@ from mindspore.profiler.common.constant import (
30
30
  DeviceTarget,
31
31
  ProfilerLevel,
32
32
  ProfilerActivity,
33
- AicoreMetrics
33
+ AicoreMetrics,
34
+ ExportType
34
35
  )
35
36
  from mindspore.profiler.common.profiler_output_path import ProfilerOutputPath
36
37
  from mindspore.profiler.common.profiler_parameters import ProfilerParameters
@@ -59,6 +60,7 @@ class ProfilerContext:
59
60
  self._mode: str = AnalysisMode.SYNC_MODE.value
60
61
  self._pretty: bool = False
61
62
  self._profiler_path_mgr: ProfilerOutputPath = None
63
+ self._on_trace_ready_output_path = None
62
64
  self._jit_level: Optional[str] = ""
63
65
  self._context_mode: Optional[int] = -1
64
66
 
@@ -71,12 +73,32 @@ class ProfilerContext:
71
73
  """
72
74
  Set profiler parameters and paths
73
75
  """
76
+ # output_path and on_trace_ready cannot be set at the same time. If both are set,
77
+ # only paths in on_trace_ready take effect
78
+ if self._on_trace_ready_output_path:
79
+ final_path = self._on_trace_ready_output_path
80
+ if "output_path" in kwargs:
81
+ logger.warning(f"Both on_trace_ready path and output_path are provided. "
82
+ f"The on_trace_ready path takes effect. Final path is {final_path}")
83
+ kwargs["output_path"] = final_path
84
+
74
85
  self._profiler_params_mgr: ProfilerParameters = ProfilerParameters(**kwargs)
75
86
  self._profiler_path_mgr: ProfilerOutputPath = ProfilerOutputPath(
76
87
  device_id=int(self._device_id), rank_id=int(self._rank_id)
77
88
  )
89
+
78
90
  self._profiler_path_mgr.output_path = self._profiler_params_mgr.output_path
79
91
 
92
+ @property
93
+ def on_trace_ready_output_path(self) -> str:
94
+ """Get the on trace ready output path."""
95
+ return self._on_trace_ready_output_path
96
+
97
+ @on_trace_ready_output_path.setter
98
+ def on_trace_ready_output_path(self, value: str):
99
+ """Set the tensorboard profile path to on trace ready output path."""
100
+ self._on_trace_ready_output_path = value
101
+
80
102
  def to_dict(self) -> Dict[str, Any]:
81
103
  """
82
104
  Convert the profiler context to a dictionary for multiprocessing.
@@ -105,10 +127,12 @@ class ProfilerContext:
105
127
  if param in profiler_parameters:
106
128
  if param == "profiler_level":
107
129
  value = ProfilerLevel(profiler_parameters[param])
108
- elif param == "aicore_metrics":
130
+ elif param == "aic_metrics":
109
131
  value = AicoreMetrics(profiler_parameters[param])
110
132
  elif param == "activities":
111
133
  value = [ProfilerActivity(activity) for activity in profiler_parameters[param]]
134
+ elif param == "export_type":
135
+ value = [ExportType(export_type) for export_type in profiler_parameters[param]]
112
136
  elif param == "schedule":
113
137
  continue
114
138
  else:
@@ -0,0 +1,74 @@
1
+ # Copyright 2024-2025 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
+ """Profiler Meta Data"""
16
+ import os
17
+ from typing import Dict
18
+
19
+ import mindspore.communication as comm
20
+ from mindspore.profiler.common.constant import DeviceTarget
21
+ from mindspore.profiler.common.profiler_context import ProfilerContext
22
+ import mindspore.communication._comm_helper as comm_helper
23
+ from mindspore.profiler.common.file_manager import FileManager
24
+ from mindspore import log as logger
25
+
26
+
27
+ class ProfilerMetaData:
28
+ """
29
+ Profiler MetaData
30
+ This class is used to handle metadata.
31
+ """
32
+ metadata: Dict[str, str] = {}
33
+
34
+ @classmethod
35
+ def get_metadata(cls) -> Dict[str, str]:
36
+ """Get metadata"""
37
+ return cls.metadata
38
+
39
+ @classmethod
40
+ def set_metadata(cls, value: Dict[str, str]):
41
+ """Set metadata"""
42
+ cls.metadata = value
43
+
44
+ @classmethod
45
+ def dump_metadata(cls):
46
+ """Dump metadata to file."""
47
+ cls.add_group_info_to_metadata()
48
+ if not cls.metadata:
49
+ return
50
+ save_path = os.path.join(ProfilerContext().ascend_ms_dir, "profiler_metadata.json")
51
+ FileManager.create_json_file(save_path, cls.metadata)
52
+ cls.metadata.clear()
53
+
54
+ @classmethod
55
+ def add_group_info_to_metadata(cls):
56
+ """Add parallel group info to metadata"""
57
+ try:
58
+ if ProfilerContext().device_target == DeviceTarget.NPU.value and comm.GlobalComm.INITED \
59
+ and comm.GlobalComm.BACKEND == comm_helper.Backend.HCCL:
60
+ group_info = {}
61
+ # pylint: disable=protected-access
62
+ for group_name in comm_helper._get_group_map().keys():
63
+ comm_name = comm.get_comm_name(group_name)
64
+ if not comm_name:
65
+ continue
66
+ group_info[comm_name] = {
67
+ "group_name": group_name,
68
+ "group_rank": comm.get_local_rank(group_name),
69
+ "global_ranks": comm.get_process_group_ranks(group_name)
70
+ }
71
+ if group_info:
72
+ cls.metadata.update({"parallel_group_info": group_info})
73
+ except Exception as err: # pylint: disable=broad-except
74
+ logger.error(f"Failed to get parallel group info, Exception: {str(err)}")
@@ -21,6 +21,7 @@ from mindspore.profiler.common.constant import (
21
21
  ProfilerLevel,
22
22
  ProfilerActivity,
23
23
  AicoreMetrics,
24
+ ExportType
24
25
  )
25
26
  from mindspore.profiler.schedule import Schedule
26
27
 
@@ -35,7 +36,7 @@ class ProfilerParameters:
35
36
  "output_path": (str, "./data"),
36
37
  "profiler_level": (ProfilerLevel, ProfilerLevel.Level0),
37
38
  "activities": (list, [ProfilerActivity.CPU, ProfilerActivity.NPU]),
38
- "aicore_metrics": (AicoreMetrics, AicoreMetrics.AiCoreNone),
39
+ "aic_metrics": (AicoreMetrics, AicoreMetrics.AiCoreNone),
39
40
  "with_stack": (bool, False),
40
41
  "profile_memory": (bool, False),
41
42
  "data_process": (bool, False),
@@ -46,6 +47,7 @@ class ProfilerParameters:
46
47
  "pcie": (bool, False),
47
48
  "sync_enable": (bool, True),
48
49
  "data_simplification": (bool, True),
50
+ "export_type": (list, [ExportType.Text]),
49
51
  "mstx": (bool, False),
50
52
  "schedule": (Schedule, None),
51
53
  "on_trace_ready": (Optional[Callable[..., Any]], None)
@@ -58,10 +60,7 @@ class ProfilerParameters:
58
60
  self.is_set_schedule: bool = False
59
61
  self._set_schedule(**kwargs)
60
62
  self._check_deprecated_params(**kwargs)
61
- # Initialize parameters with kwargs
62
- for param, (_, default_value) in self.PARAMS.items():
63
- setattr(self, param, kwargs.get(param, default_value))
64
-
63
+ self._init_params(kwargs)
65
64
  self._check_params_type()
66
65
  self._handle_compatibility()
67
66
 
@@ -75,10 +74,12 @@ class ProfilerParameters:
75
74
  for param, (_, _) in self.PARAMS.items():
76
75
  if param == "profiler_level":
77
76
  params[param] = getattr(self, param).value
78
- elif param == "aicore_metrics":
77
+ elif param == "aic_metrics":
79
78
  params[param] = getattr(self, param).value
80
79
  elif param == "activities":
81
80
  params[param] = [item.value for item in getattr(self, param)]
81
+ elif param == "export_type":
82
+ params[param] = [item.value for item in getattr(self, param)]
82
83
  elif param == "schedule":
83
84
  params[param] = getattr(self, param).to_dict()
84
85
  elif param == "on_trace_ready":
@@ -97,19 +98,27 @@ class ProfilerParameters:
97
98
  """
98
99
  return {
99
100
  "profile_memory": self.profile_memory,
100
- "aic_metrics": self.aicore_metrics.value,
101
+ "aicore_metrics": self.aic_metrics.value,
101
102
  "l2_cache": self.l2_cache,
102
103
  "hbm_ddr": self.hbm_ddr,
103
104
  "pcie": self.pcie,
104
105
  "parallel_strategy": self.parallel_strategy,
105
106
  "profiler_level": self.profiler_level.value,
106
- "aicore_metrics": self.aicore_metrics.value,
107
107
  "with_stack": self.with_stack,
108
108
  "mstx": self.mstx,
109
109
  "cpu_trace": ProfilerActivity.CPU in self.activities,
110
110
  "npu_trace": ProfilerActivity.NPU in self.activities,
111
111
  }
112
112
 
113
+ def _init_params(self, kwargs):
114
+ """
115
+ Initialize parameters with kwargs
116
+ """
117
+ for param, (_, default_value) in self.PARAMS.items():
118
+ if param == "schedule" and kwargs.get(param) is None:
119
+ kwargs["schedule"] = Schedule(wait=0, active=1)
120
+ setattr(self, param, kwargs.get(param) if kwargs.get(param) is not None else default_value)
121
+
113
122
  def _check_params_type(self) -> None:
114
123
  """
115
124
  Check profiler input params type, if type is invalid reset to default value.
@@ -121,11 +130,19 @@ class ProfilerParameters:
121
130
 
122
131
  # Callable特殊处理
123
132
  if key == "on_trace_ready":
124
- if not callable(value):
133
+ if value is not None and not callable(value):
125
134
  setattr(self, key, default_value)
135
+ logger.warning(
136
+ f"For Profiler, on_trace_ready value is Invalid, reset to {default_value}."
137
+ )
126
138
  elif key == "schedule":
127
139
  if not isinstance(value, Schedule):
128
140
  setattr(self, key, Schedule(wait=0, active=1))
141
+ logger.warning(
142
+ f"For Profiler, schedule value is Invalid, reset to {Schedule(wait=0, active=1)}"
143
+ )
144
+ elif key == "export_type":
145
+ setattr(self, key, self._check_and_get_export_type(value))
129
146
  # 检查可迭代类型
130
147
  elif isinstance(expected_type, type) and issubclass(expected_type, (list, tuple, set)):
131
148
  if not (isinstance(value, expected_type) and
@@ -190,16 +207,40 @@ class ProfilerParameters:
190
207
  warnings.warn("when 'mstx' is disabled, 'profiler_level' cannot be set to 'ProfilerLevel.LevelNone', "
191
208
  "reset to 'ProfilerLevel.Level0'.")
192
209
 
193
- if self.__dict__.get('profiler_level') == ProfilerLevel.Level0 and \
194
- self.__dict__.get('aicore_metrics') != AicoreMetrics.AiCoreNone:
195
- self.aicore_metrics = AicoreMetrics.AiCoreNone
196
- warnings.warn("when 'profiler_level' is set to 'ProfilerLevel.Level0', "
197
- "'aicore_metrics' cannot be set to other value except 'AicoreMetrics.AiCoreNone', "
198
- "reset to 'AicoreMetrics.AiCoreNone'.")
210
+ if self.__dict__.get('profiler_level') in (ProfilerLevel.LevelNone, ProfilerLevel.Level0) and \
211
+ self.__dict__.get('aic_metrics') != AicoreMetrics.AiCoreNone:
212
+ self.aic_metrics = AicoreMetrics.AiCoreNone
213
+ warnings.warn(f"when 'profiler_level' is set to '{self.__dict__.get('profiler_level')}', "
214
+ f"'aic_metrics' cannot be set to other value except 'AicoreMetrics.AiCoreNone', "
215
+ f"reset to 'AicoreMetrics.AiCoreNone'.")
216
+
217
+ if self.__dict__.get('profiler_level') in (ProfilerLevel.Level1, ProfilerLevel.Level2) and \
218
+ self.__dict__.get('aic_metrics') == AicoreMetrics.AiCoreNone:
219
+ self.aic_metrics = AicoreMetrics.PipeUtilization
220
+ warnings.warn(f"when 'profiler_level' is set to '{self.__dict__.get('profiler_level')}', "
221
+ f"'aic_metrics' cannot be set to 'AicoreMetrics.AiCoreNone', "
222
+ f"reset to 'AicoreMetrics.PipeUtilization'.")
223
+
224
+ def _check_and_get_export_type(self, export_type) -> list:
225
+ """
226
+ Check export type.
227
+ """
228
+ if not export_type:
229
+ return [ExportType.Text]
230
+
231
+ if isinstance(export_type, str):
232
+ if export_type in [ExportType.Text.value, ExportType.Db.value]:
233
+ return [ExportType(export_type)]
234
+
235
+ if isinstance(export_type, list):
236
+ if all(isinstance(type, ExportType) for type in export_type):
237
+ return list(set(export_type))
238
+
239
+ if isinstance(export_type, ExportType):
240
+ return [export_type]
199
241
 
200
- if self.__dict__.get('profiler_level') != ProfilerLevel.Level0 and \
201
- self.__dict__.get('aicore_metrics') == AicoreMetrics.AiCoreNone:
202
- self.aicore_metrics = AicoreMetrics.PipeUtilization
242
+ logger.warning("Invalid parameter export_type, reset it to text.")
243
+ return [ExportType.Text]
203
244
 
204
245
  def __getattr__(self, name):
205
246
  """
@@ -15,6 +15,8 @@
15
15
  """Profiler Path Manager"""
16
16
  import os
17
17
  import socket
18
+ import glob
19
+ import shutil
18
20
  from datetime import datetime, timezone
19
21
 
20
22
  from mindspore import log as logger
@@ -29,10 +31,39 @@ class ProfilerPathManager:
29
31
  ProfilerPathManager is responsible for creating and managing all paths used by profiler.
30
32
  """
31
33
 
32
- _ASCEND_MS_DIR = "{}_{}_{}_ascend_ms"
34
+ _ASCEND_MS_DIR = "{}_{}_ascend_ms"
35
+ MAX_WORKER_NAME_LENGTH = 226
33
36
 
34
37
  def __init__(self):
35
38
  self._prof_ctx = ProfilerContext()
39
+ self._worker_name = None
40
+ self._dir_path = None
41
+
42
+ def init(self, worker_name: str = None, dir_name: str = None) -> None:
43
+ """
44
+ Init the profiler path.
45
+ """
46
+ valid_wk_name = worker_name and isinstance(worker_name, str)
47
+ valid_wk_len = isinstance(worker_name, str) and len(worker_name) < self.MAX_WORKER_NAME_LENGTH
48
+ if (valid_wk_name and valid_wk_len) or worker_name is None:
49
+ self._worker_name = worker_name
50
+ else:
51
+ logger.warning("Invalid parameter worker_name, reset it to default.")
52
+ self._worker_name = None
53
+
54
+ valid_dir_name = dir_name and isinstance(dir_name, str)
55
+ if valid_dir_name:
56
+ dir_path = PathManager.get_real_path(dir_name)
57
+ PathManager.check_input_directory_path(dir_path)
58
+ self._dir_path = dir_path
59
+ elif dir_name is None:
60
+ self._dir_path = dir_name
61
+ else:
62
+ logger.warning(f"Invalid parameter dir_name, reset it to default.")
63
+ self._dir_path = None
64
+
65
+ if self._dir_path:
66
+ self._prof_ctx.on_trace_ready_output_path = self._dir_path
36
67
 
37
68
  def clean_analysis_cache(self):
38
69
  """
@@ -86,6 +117,33 @@ class ProfilerPathManager:
86
117
  elif os.path.isdir(cache_path):
87
118
  PathManager.remove_path_safety(cache_path)
88
119
 
120
+ def move_db_file(self):
121
+ """
122
+ Copy the db file to the output path.
123
+ """
124
+ if not self._prof_ctx.msprof_profile_output_path:
125
+ return
126
+ db_files = glob.glob(os.path.join(
127
+ os.path.dirname(self._prof_ctx.msprof_profile_output_path),
128
+ 'msprof*.db'
129
+ )) + glob.glob(os.path.join(
130
+ os.path.dirname(self._prof_ctx.msprof_profile_output_path),
131
+ "analyze",
132
+ "communication_analyzer.db"
133
+ ))
134
+ for db_file in db_files:
135
+ if os.path.isfile(db_file):
136
+ db_file_name = os.path.basename(db_file)
137
+ if db_file_name == "communication_analyzer.db":
138
+ new_file_name = os.path.join(self._prof_ctx.ascend_profiler_output_path, db_file_name)
139
+ shutil.copy(db_file, new_file_name)
140
+ else:
141
+ new_file_name = f"ascend_mindspore_profiler_{self._prof_ctx.rank_id}.db" if self._prof_ctx.rank_id \
142
+ else f"ascend_mindspore_profiler.db"
143
+ new_file_path = os.path.join(self._prof_ctx.ascend_profiler_output_path, new_file_name)
144
+ shutil.move(db_file, new_file_path)
145
+
146
+
89
147
  def create_output_path(self):
90
148
  """
91
149
  Create ASCEND_PROFILER_OUTPUT dir, this method should call before analysis
@@ -112,9 +170,10 @@ class ProfilerPathManager:
112
170
  """
113
171
  Generate xxx_ascend_ms name
114
172
  """
115
- return self._ASCEND_MS_DIR.format(
116
- socket.gethostname(),
117
- os.getpid(),
118
- # save time with microseconds
119
- datetime.now(timezone.utc).strftime("%Y%m%d%H%M%S%f")[:-3],
120
- )
173
+ timestamp = datetime.now(timezone.utc).strftime("%Y%m%d%H%M%S%f")[:-3]
174
+ if not self._worker_name:
175
+ worker_name = f"{socket.gethostname()}_{os.getpid()}"
176
+ else:
177
+ worker_name = f"{self._worker_name}_{os.getpid()}"
178
+
179
+ return self._ASCEND_MS_DIR.format(worker_name, timestamp)