mindspore 2.4.1__cp311-cp311-win_amd64.whl → 2.5.0__cp311-cp311-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 (395) 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 +8 -3
  5. mindspore/_c_dataengine.cp311-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp311-win_amd64.pyd +0 -0
  8. mindspore/_checkparam.py +0 -5
  9. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  10. mindspore/_extends/parse/compile_config.py +64 -0
  11. mindspore/_extends/parse/deprecated/__init__.py +0 -0
  12. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +375 -0
  13. mindspore/_extends/parse/parser.py +23 -5
  14. mindspore/_extends/parse/standard_method.py +123 -27
  15. mindspore/_extends/pijit/pijit_func_white_list.py +1 -1
  16. mindspore/amp.py +7 -1
  17. mindspore/atlprov.dll +0 -0
  18. mindspore/avcodec-59.dll +0 -0
  19. mindspore/avdevice-59.dll +0 -0
  20. mindspore/avfilter-8.dll +0 -0
  21. mindspore/avformat-59.dll +0 -0
  22. mindspore/avutil-57.dll +0 -0
  23. mindspore/boost/boost_cell_wrapper.py +136 -41
  24. mindspore/c1.dll +0 -0
  25. mindspore/c1xx.dll +0 -0
  26. mindspore/c2.dll +0 -0
  27. mindspore/common/__init__.py +3 -1
  28. mindspore/common/_register_for_tensor.py +0 -1
  29. mindspore/common/_stub_tensor.py +25 -4
  30. mindspore/common/_tensor_cpp_method.py +17 -0
  31. mindspore/common/_tensor_docs.py +6132 -0
  32. mindspore/common/api.py +99 -25
  33. mindspore/common/dtype.py +34 -34
  34. mindspore/common/dump.py +2 -1
  35. mindspore/common/file_system.py +8 -1
  36. mindspore/common/generator.py +2 -0
  37. mindspore/common/hook_handle.py +3 -1
  38. mindspore/common/initializer.py +3 -4
  39. mindspore/common/lazy_inline.py +8 -2
  40. mindspore/common/mindir_util.py +10 -2
  41. mindspore/common/parameter.py +30 -27
  42. mindspore/common/tensor.py +713 -1337
  43. mindspore/communication/__init__.py +1 -1
  44. mindspore/communication/_comm_helper.py +10 -0
  45. mindspore/communication/comm_func.py +215 -173
  46. mindspore/communication/management.py +23 -20
  47. mindspore/context.py +292 -193
  48. mindspore/dataset/__init__.py +23 -19
  49. mindspore/dataset/callback/ds_callback.py +2 -1
  50. mindspore/dataset/core/config.py +84 -3
  51. mindspore/dataset/engine/cache_admin.py +3 -3
  52. mindspore/dataset/engine/cache_client.py +5 -4
  53. mindspore/dataset/engine/datasets.py +192 -149
  54. mindspore/dataset/engine/datasets_audio.py +14 -0
  55. mindspore/dataset/engine/datasets_standard_format.py +28 -11
  56. mindspore/dataset/engine/datasets_text.py +38 -1
  57. mindspore/dataset/engine/datasets_user_defined.py +125 -65
  58. mindspore/dataset/engine/datasets_vision.py +81 -8
  59. mindspore/dataset/engine/iterators.py +281 -63
  60. mindspore/dataset/engine/obs/util.py +8 -0
  61. mindspore/dataset/engine/queue.py +40 -0
  62. mindspore/dataset/engine/samplers.py +26 -2
  63. mindspore/dataset/engine/serializer_deserializer.py +1 -1
  64. mindspore/dataset/engine/validators.py +43 -11
  65. mindspore/dataset/transforms/py_transforms_util.py +17 -0
  66. mindspore/dataset/transforms/transforms.py +29 -12
  67. mindspore/dataset/vision/validators.py +1 -2
  68. mindspore/device_context/__init__.py +21 -0
  69. mindspore/device_context/ascend/__init__.py +25 -0
  70. mindspore/device_context/ascend/device.py +72 -0
  71. mindspore/device_context/ascend/op_debug.py +94 -0
  72. mindspore/device_context/ascend/op_precision.py +193 -0
  73. mindspore/device_context/ascend/op_tuning.py +127 -0
  74. mindspore/device_context/cpu/__init__.py +25 -0
  75. mindspore/device_context/cpu/device.py +62 -0
  76. mindspore/device_context/cpu/op_tuning.py +43 -0
  77. mindspore/device_context/gpu/__init__.py +21 -0
  78. mindspore/device_context/gpu/device.py +70 -0
  79. mindspore/device_context/gpu/op_precision.py +67 -0
  80. mindspore/device_context/gpu/op_tuning.py +175 -0
  81. mindspore/device_manager.py +134 -0
  82. mindspore/dnnl.dll +0 -0
  83. mindspore/dpcmi.dll +0 -0
  84. mindspore/experimental/llm_boost/__init__.py +3 -2
  85. mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
  86. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
  87. mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
  88. mindspore/experimental/llm_boost/atb/boost_base.py +239 -64
  89. mindspore/experimental/llm_boost/atb/llama_boost.py +52 -30
  90. mindspore/experimental/llm_boost/atb/qwen_boost.py +47 -24
  91. mindspore/experimental/llm_boost/register.py +1 -0
  92. mindspore/experimental/optim/adadelta.py +26 -22
  93. mindspore/experimental/optim/adam.py +3 -0
  94. mindspore/experimental/optim/lr_scheduler.py +33 -24
  95. mindspore/experimental/optim/radam.py +33 -30
  96. mindspore/hal/device.py +28 -0
  97. mindspore/hal/event.py +17 -0
  98. mindspore/hal/memory.py +94 -3
  99. mindspore/hal/stream.py +91 -6
  100. mindspore/include/api/context.h +1 -2
  101. mindspore/include/dataset/constants.h +2 -2
  102. mindspore/jpeg62.dll +0 -0
  103. mindspore/log.py +12 -0
  104. mindspore/mindrecord/__init__.py +1 -1
  105. mindspore/mindrecord/config.py +17 -316
  106. mindspore/mindrecord/filereader.py +1 -9
  107. mindspore/mindrecord/filewriter.py +5 -15
  108. mindspore/mindrecord/mindpage.py +1 -9
  109. mindspore/mindspore_backend.dll +0 -0
  110. mindspore/mindspore_common.dll +0 -0
  111. mindspore/mindspore_core.dll +0 -0
  112. mindspore/mindspore_glog.dll +0 -0
  113. mindspore/mindspore_ops.dll +0 -0
  114. mindspore/mint/__init__.py +824 -218
  115. mindspore/mint/distributed/__init__.py +66 -4
  116. mindspore/mint/distributed/distributed.py +2594 -44
  117. mindspore/mint/linalg/__init__.py +6 -0
  118. mindspore/mint/nn/__init__.py +473 -14
  119. mindspore/mint/nn/functional.py +486 -11
  120. mindspore/mint/nn/layer/__init__.py +17 -4
  121. mindspore/mint/nn/layer/_functions.py +330 -0
  122. mindspore/mint/nn/layer/activation.py +169 -1
  123. mindspore/mint/nn/layer/basic.py +123 -0
  124. mindspore/mint/nn/layer/conv.py +727 -0
  125. mindspore/mint/nn/layer/normalization.py +215 -19
  126. mindspore/mint/nn/layer/padding.py +797 -0
  127. mindspore/mint/nn/layer/pooling.py +170 -0
  128. mindspore/mint/optim/__init__.py +2 -1
  129. mindspore/mint/optim/adam.py +223 -0
  130. mindspore/mint/optim/adamw.py +26 -19
  131. mindspore/mint/special/__init__.py +2 -1
  132. mindspore/msobj140.dll +0 -0
  133. mindspore/mspdb140.dll +0 -0
  134. mindspore/mspdbcore.dll +0 -0
  135. mindspore/mspdbst.dll +0 -0
  136. mindspore/mspft140.dll +0 -0
  137. mindspore/msvcdis140.dll +0 -0
  138. mindspore/msvcp140_1.dll +0 -0
  139. mindspore/msvcp140_2.dll +0 -0
  140. mindspore/msvcp140_atomic_wait.dll +0 -0
  141. mindspore/msvcp140_codecvt_ids.dll +0 -0
  142. mindspore/multiprocessing/__init__.py +5 -0
  143. mindspore/nn/__init__.py +2 -0
  144. mindspore/nn/cell.py +142 -21
  145. mindspore/nn/dynamic_lr.py +2 -1
  146. mindspore/nn/layer/activation.py +6 -6
  147. mindspore/nn/layer/basic.py +35 -25
  148. mindspore/nn/layer/channel_shuffle.py +3 -3
  149. mindspore/nn/layer/conv.py +3 -0
  150. mindspore/nn/layer/embedding.py +3 -3
  151. mindspore/nn/layer/normalization.py +8 -7
  152. mindspore/nn/layer/padding.py +4 -3
  153. mindspore/nn/layer/pooling.py +55 -23
  154. mindspore/nn/layer/rnn_cells.py +1 -1
  155. mindspore/nn/layer/rnns.py +2 -1
  156. mindspore/nn/layer/timedistributed.py +5 -5
  157. mindspore/nn/layer/transformer.py +48 -26
  158. mindspore/nn/learning_rate_schedule.py +5 -3
  159. mindspore/nn/loss/loss.py +31 -36
  160. mindspore/nn/optim/ada_grad.py +1 -0
  161. mindspore/nn/optim/adadelta.py +2 -2
  162. mindspore/nn/optim/adam.py +1 -1
  163. mindspore/nn/optim/lars.py +1 -4
  164. mindspore/nn/optim/optimizer.py +1 -1
  165. mindspore/nn/optim/rprop.py +2 -2
  166. mindspore/nn/optim/thor.py +2 -1
  167. mindspore/nn/utils/__init__.py +22 -0
  168. mindspore/nn/utils/init.py +73 -0
  169. mindspore/nn/wrap/cell_wrapper.py +4 -6
  170. mindspore/nn/wrap/loss_scale.py +3 -4
  171. mindspore/numpy/array_creations.py +60 -62
  172. mindspore/numpy/array_ops.py +148 -143
  173. mindspore/numpy/logic_ops.py +41 -42
  174. mindspore/numpy/math_ops.py +361 -359
  175. mindspore/numpy/utils.py +16 -16
  176. mindspore/numpy/utils_const.py +4 -4
  177. mindspore/opencv_core452.dll +0 -0
  178. mindspore/opencv_imgcodecs452.dll +0 -0
  179. mindspore/opencv_imgproc452.dll +0 -0
  180. mindspore/ops/__init__.py +2 -1
  181. mindspore/ops/_grad_experimental/grad_comm_ops.py +107 -8
  182. mindspore/ops/_grad_experimental/grad_debug_ops.py +6 -1
  183. mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
  184. mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
  185. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  186. mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
  187. mindspore/ops/_vmap/vmap_array_ops.py +20 -19
  188. mindspore/ops/_vmap/vmap_base.py +0 -2
  189. mindspore/ops/_vmap/vmap_grad_nn_ops.py +19 -13
  190. mindspore/ops/_vmap/vmap_math_ops.py +11 -9
  191. mindspore/ops/_vmap/vmap_nn_ops.py +20 -34
  192. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +149 -12
  193. mindspore/ops/auto_generate/gen_arg_handler.py +0 -61
  194. mindspore/ops/auto_generate/gen_extend_func.py +554 -60
  195. mindspore/ops/auto_generate/gen_ops_def.py +1621 -115
  196. mindspore/ops/auto_generate/gen_ops_prim.py +8027 -3411
  197. mindspore/ops/auto_generate/pyboost_inner_prim.py +183 -79
  198. mindspore/ops/composite/base.py +1 -1
  199. mindspore/ops/composite/multitype_ops/_compile_utils.py +229 -30
  200. mindspore/ops/composite/multitype_ops/pow_impl.py +0 -29
  201. mindspore/ops/function/__init__.py +12 -0
  202. mindspore/ops/function/array_func.py +561 -159
  203. mindspore/ops/function/clip_func.py +64 -0
  204. mindspore/ops/function/debug_func.py +28 -20
  205. mindspore/ops/function/image_func.py +1 -1
  206. mindspore/ops/function/linalg_func.py +5 -4
  207. mindspore/ops/function/math_func.py +1664 -294
  208. mindspore/ops/function/nn_func.py +988 -317
  209. mindspore/ops/function/parameter_func.py +3 -56
  210. mindspore/ops/function/random_func.py +243 -33
  211. mindspore/ops/function/sparse_unary_func.py +1 -1
  212. mindspore/ops/functional.py +18 -5
  213. mindspore/ops/functional_overload.py +897 -0
  214. mindspore/ops/operations/__init__.py +3 -2
  215. mindspore/ops/operations/_embedding_cache_ops.py +4 -4
  216. mindspore/ops/operations/_grad_ops.py +2 -34
  217. mindspore/ops/operations/_infer_ops.py +2 -1
  218. mindspore/ops/operations/_inner_ops.py +38 -8
  219. mindspore/ops/operations/array_ops.py +45 -303
  220. mindspore/ops/operations/comm_ops.py +23 -17
  221. mindspore/ops/operations/custom_ops.py +7 -49
  222. mindspore/ops/operations/debug_ops.py +42 -47
  223. mindspore/ops/operations/inner_ops.py +6 -4
  224. mindspore/ops/operations/linalg_ops.py +3 -2
  225. mindspore/ops/operations/manually_defined/ops_def.py +185 -104
  226. mindspore/ops/operations/math_ops.py +11 -216
  227. mindspore/ops/operations/nn_ops.py +153 -310
  228. mindspore/ops/primitive.py +23 -21
  229. mindspore/ops/tensor_method.py +1669 -0
  230. mindspore/ops_generate/aclnn_kernel_register_auto_cc_generator.py +110 -0
  231. mindspore/ops_generate/add_tensor_docs_generator.py +54 -0
  232. mindspore/ops_generate/arg_handler.py +0 -61
  233. mindspore/ops_generate/auto_grad_impl_cc_generator.py +135 -0
  234. mindspore/ops_generate/auto_grad_reg_cc_generator.py +93 -0
  235. mindspore/ops_generate/base_generator.py +11 -0
  236. mindspore/ops_generate/cpp_create_prim_instance_helper_generator.py +108 -0
  237. mindspore/ops_generate/functional_map_cpp_generator.py +491 -0
  238. mindspore/ops_generate/functional_overload_py_generator.py +110 -0
  239. mindspore/ops_generate/functions_cc_generator.py +233 -0
  240. mindspore/ops_generate/gen_aclnn_implement.py +110 -114
  241. mindspore/ops_generate/gen_constants.py +157 -3
  242. mindspore/ops_generate/gen_ops.py +245 -990
  243. mindspore/ops_generate/gen_pyboost_func.py +97 -998
  244. mindspore/ops_generate/gen_utils.py +119 -33
  245. mindspore/ops_generate/lite_ops_cpp_generator.py +155 -0
  246. mindspore/ops_generate/op_api_proto.py +206 -0
  247. mindspore/ops_generate/op_def_py_generator.py +131 -0
  248. mindspore/ops_generate/op_prim_py_generator.py +480 -0
  249. mindspore/ops_generate/op_proto.py +373 -108
  250. mindspore/ops_generate/op_template_parser.py +436 -0
  251. mindspore/ops_generate/ops_def_cc_generator.py +288 -0
  252. mindspore/ops_generate/ops_def_h_generator.py +74 -0
  253. mindspore/ops_generate/ops_name_h_generator.py +68 -0
  254. mindspore/ops_generate/ops_primitive_h_generator.py +81 -0
  255. mindspore/ops_generate/pyboost_functions_cpp_generator.py +370 -0
  256. mindspore/ops_generate/pyboost_functions_h_generator.py +68 -0
  257. mindspore/ops_generate/pyboost_functions_py_generator.py +148 -0
  258. mindspore/ops_generate/pyboost_grad_function_cpp_generator.py +154 -0
  259. mindspore/ops_generate/pyboost_inner_prim_generator.py +131 -0
  260. mindspore/ops_generate/pyboost_native_grad_functions_generator.py +268 -0
  261. mindspore/ops_generate/pyboost_op_cpp_code_generator.py +851 -0
  262. mindspore/ops_generate/pyboost_overload_functions_cpp_generator.py +344 -0
  263. mindspore/ops_generate/pyboost_utils.py +92 -33
  264. mindspore/ops_generate/template.py +294 -44
  265. mindspore/ops_generate/tensor_func_reg_cpp_generator.py +422 -0
  266. mindspore/parallel/__init__.py +3 -3
  267. mindspore/parallel/_auto_parallel_context.py +44 -34
  268. mindspore/parallel/_cell_wrapper.py +22 -3
  269. mindspore/parallel/_parallel_serialization.py +13 -2
  270. mindspore/parallel/_utils.py +4 -2
  271. mindspore/parallel/algo_parameter_config.py +1 -1
  272. mindspore/parallel/checkpoint_transform.py +44 -0
  273. mindspore/parallel/cluster/process_entity/_api.py +131 -37
  274. mindspore/parallel/cluster/process_entity/_utils.py +41 -6
  275. mindspore/parallel/cluster/run.py +20 -3
  276. mindspore/parallel/parameter_broadcast.py +1 -1
  277. mindspore/parallel/shard.py +3 -0
  278. mindspore/parallel/transform_safetensors.py +119 -253
  279. mindspore/pgodb140.dll +0 -0
  280. mindspore/pgort140.dll +0 -0
  281. mindspore/profiler/__init__.py +17 -4
  282. mindspore/profiler/analysis/__init__.py +0 -0
  283. mindspore/profiler/analysis/parser/__init__.py +0 -0
  284. mindspore/profiler/analysis/parser/ascend_cann_parser.py +166 -0
  285. mindspore/profiler/analysis/parser/base_parser.py +158 -0
  286. mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
  287. mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
  288. mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
  289. mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
  290. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +261 -0
  291. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
  292. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +84 -0
  293. mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
  294. mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
  295. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
  296. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
  297. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
  298. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
  299. mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
  300. mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
  301. mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
  302. mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
  303. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +260 -0
  304. mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
  305. mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
  306. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
  307. mindspore/profiler/analysis/task_manager.py +131 -0
  308. mindspore/profiler/analysis/time_converter.py +84 -0
  309. mindspore/profiler/analysis/viewer/__init__.py +0 -0
  310. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +333 -0
  311. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
  312. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +252 -0
  313. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +313 -0
  314. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +322 -0
  315. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +265 -0
  316. mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
  317. mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
  318. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +97 -0
  319. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
  320. mindspore/profiler/analysis/work_flow.py +73 -0
  321. mindspore/profiler/common/ascend_msprof_exporter.py +138 -0
  322. mindspore/profiler/common/command_executor.py +90 -0
  323. mindspore/profiler/common/constant.py +174 -3
  324. mindspore/profiler/common/file_manager.py +208 -0
  325. mindspore/profiler/common/log.py +130 -0
  326. mindspore/profiler/common/msprof_cmd_tool.py +202 -0
  327. mindspore/profiler/common/path_manager.py +371 -0
  328. mindspore/profiler/common/process_bar.py +168 -0
  329. mindspore/profiler/common/process_pool.py +9 -3
  330. mindspore/profiler/common/profiler_context.py +476 -0
  331. mindspore/profiler/common/profiler_info.py +304 -0
  332. mindspore/profiler/common/profiler_output_path.py +284 -0
  333. mindspore/profiler/common/profiler_parameters.py +210 -0
  334. mindspore/profiler/common/profiler_path_manager.py +120 -0
  335. mindspore/profiler/common/record_function.py +76 -0
  336. mindspore/profiler/common/tlv_decoder.py +76 -0
  337. mindspore/profiler/common/util.py +75 -2
  338. mindspore/profiler/dynamic_profiler.py +270 -37
  339. mindspore/profiler/envprofiler.py +138 -0
  340. mindspore/profiler/mstx.py +199 -0
  341. mindspore/profiler/platform/__init__.py +21 -0
  342. mindspore/profiler/platform/base_profiler.py +40 -0
  343. mindspore/profiler/platform/cpu_profiler.py +124 -0
  344. mindspore/profiler/platform/gpu_profiler.py +74 -0
  345. mindspore/profiler/platform/npu_profiler.py +309 -0
  346. mindspore/profiler/profiler.py +580 -93
  347. mindspore/profiler/profiler_action_controller.py +187 -0
  348. mindspore/profiler/profiler_interface.py +114 -0
  349. mindspore/profiler/schedule.py +208 -0
  350. mindspore/rewrite/api/symbol_tree.py +1 -2
  351. mindspore/run_check/_check_version.py +18 -13
  352. mindspore/runtime/__init__.py +37 -0
  353. mindspore/runtime/device.py +27 -0
  354. mindspore/runtime/event.py +209 -0
  355. mindspore/runtime/executor.py +148 -0
  356. mindspore/runtime/memory.py +392 -0
  357. mindspore/runtime/stream.py +460 -0
  358. mindspore/runtime/thread_bind_core.py +401 -0
  359. mindspore/swresample-4.dll +0 -0
  360. mindspore/swscale-6.dll +0 -0
  361. mindspore/tbbmalloc.dll +0 -0
  362. mindspore/tinyxml2.dll +0 -0
  363. mindspore/train/__init__.py +2 -2
  364. mindspore/train/_utils.py +53 -18
  365. mindspore/train/amp.py +8 -4
  366. mindspore/train/callback/_checkpoint.py +32 -18
  367. mindspore/train/callback/_early_stop.py +1 -1
  368. mindspore/train/callback/_flops_collector.py +105 -69
  369. mindspore/train/callback/_history.py +1 -1
  370. mindspore/train/callback/_summary_collector.py +44 -6
  371. mindspore/train/callback/_tft_register.py +37 -15
  372. mindspore/train/dataset_helper.py +11 -11
  373. mindspore/train/metrics/precision.py +4 -5
  374. mindspore/train/mind_ir_pb2.py +167 -46
  375. mindspore/train/model.py +13 -14
  376. mindspore/train/serialization.py +461 -72
  377. mindspore/train/summary/summary_record.py +1 -2
  378. mindspore/train/train_thor/model_thor.py +1 -1
  379. mindspore/turbojpeg.dll +0 -0
  380. mindspore/utils/__init__.py +4 -2
  381. mindspore/utils/dryrun.py +138 -0
  382. mindspore/utils/runtime_execution_order_check.py +550 -0
  383. mindspore/vcmeta.dll +0 -0
  384. mindspore/vcruntime140.dll +0 -0
  385. mindspore/vcruntime140_1.dll +0 -0
  386. mindspore/version.py +1 -1
  387. {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/METADATA +3 -4
  388. {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/RECORD +391 -265
  389. {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/entry_points.txt +1 -1
  390. mindspore/common/_tensor_overload.py +0 -139
  391. mindspore/mindspore_np_dtype.dll +0 -0
  392. mindspore/profiler/envprofiling.py +0 -254
  393. mindspore/profiler/profiling.py +0 -1926
  394. {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/WHEEL +0 -0
  395. {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,84 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Time converter"""
16
+ from decimal import Decimal
17
+
18
+
19
+ class TimeConverter:
20
+ """
21
+ Time converter class use to convert syscnt to timestamp
22
+
23
+ The timeline is as follows:
24
+
25
+
26
+ boot collect start event
27
+ │ │ │
28
+ origin─────────┴─────────────────────┴────────────────┴─────────────►
29
+
30
+ ────────────────────────────────
31
+ local_time_diff
32
+
33
+ ──────────────────
34
+ cntvct syscnt
35
+
36
+
37
+ boot: The point of events that occurred at the boot time of server
38
+ collect start: The point of events that occurred at the profiler collect start time
39
+ event: The point of events that occurred at the profiler record event time
40
+
41
+ schematic:
42
+ MindSpore profiler record event time is syscnt, we need to convert it to timestamp(us).
43
+ First, we get the boot time(collectionTimeBegin and clockMonotonicRaw) and
44
+ collect start time(cntvct and clock_monotonic_raw) from host_start.log,
45
+ then we can calculate the local_time_diff = clock_monotonic_raw + (collectionTimeBegin - clockMonotonicRaw)
46
+ Finally, we can get the profiler record absolute syscnt = syscnt - cntvct + local_time_diff, and convert
47
+ it to timestamp(ns) by formula: timestamp(ns) = syscnt * 1000 / frequency, 1000 means convert ns to us.
48
+ """
49
+ # multiplier
50
+ US_TO_NS = 1000
51
+ NS_TO_US = Decimal("1e-3")
52
+ DECIMAL_PRECISION = Decimal("0.000")
53
+ # parameters from msprof
54
+ _freq = 100.0
55
+ _cntvct = 0
56
+ _localtime_diff = 0
57
+ _is_loaded = False
58
+
59
+ @classmethod
60
+ def convert_syscnt_to_timestamp_us(cls, syscnt: int) -> Decimal:
61
+ """
62
+ Convert syscnt to timestamp(us)
63
+ Args:
64
+ syscnt: syscnt
65
+ time_fmt: time format
66
+ Returns:
67
+ timestamp(us)
68
+ """
69
+ if not cls._is_loaded:
70
+ raise RuntimeError("init_parameters must be called first")
71
+
72
+ timestamp_ns = Decimal(
73
+ (syscnt - cls._cntvct) * cls.US_TO_NS / cls._freq
74
+ ) + Decimal(cls._localtime_diff)
75
+
76
+ timestamp_us = timestamp_ns * cls.NS_TO_US
77
+ return timestamp_us.quantize(cls.DECIMAL_PRECISION)
78
+
79
+ @classmethod
80
+ def init_parameters(cls, freq: float, cntvct: int, localtime_diff: int):
81
+ cls._freq = freq
82
+ cls._cntvct = cntvct
83
+ cls._localtime_diff = localtime_diff
84
+ cls._is_loaded = True
File without changes
@@ -0,0 +1,333 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Ascend communication viewer"""
16
+ import os
17
+ import re
18
+ from collections import defaultdict
19
+
20
+ from mindspore import log as logger
21
+ from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
22
+ from mindspore.profiler.common.file_manager import FileManager
23
+ from mindspore.profiler.common.log import ProfilerLogger
24
+
25
+
26
+ class AscendCommunicationViewer(BaseViewer):
27
+ """Ascend communication viewer"""
28
+
29
+ COMMUNICATION_TIME_INFO = "Communication Time Info"
30
+ START_TIMESTAMP = "Start Timestamp(us)"
31
+ COMMUNICATION_BANDWIDTH_INFO = "Communication Bandwidth Info"
32
+ HCOM_SEND = "Send"
33
+ HCOM_RECEIVE = "Receive"
34
+ TOTAL = "Total"
35
+ SYNCHRONIZATION_TIME_RATIO = "Synchronization Time Ratio"
36
+ SYNCHRONIZATION_TIME_MS = "Synchronization Time(ms)"
37
+ WAIT_TIME_RATIO = "Wait Time Ratio"
38
+ TRANSIT_TIME_MS = "Transit Time(ms)"
39
+ TRANSIT_SIZE_MB = "Transit Size(MB)"
40
+ SIZE_DISTRIBUTION = "Size Distribution"
41
+ WAIT_TIME_MS = "Wait Time(ms)"
42
+ BANDWIDTH_GB_S = "Bandwidth(GB/s)"
43
+ COMMUNICATION = "communication.json"
44
+ COMMUNICATION_MATRIX = "communication_matrix.json"
45
+ P2P = "p2p"
46
+ COLLECTIVE = "collective"
47
+ TRANSPORT_TYPE = "Transport Type"
48
+ PATTERN1 = re.compile(r"receive|send")
49
+ PATTERN2 = re.compile(r"invalid|broadcast|allreduce|reduce|"
50
+ r"allgather|reducescatter|scatter|alltoall|alltoallv|alltoallvc")
51
+
52
+ def __init__(self, **kwargs):
53
+ super().__init__()
54
+ self.step_list = [{"step_id": None, "start_ts": 0, "end_ts": float('inf'), "comm_ops": {}}]
55
+ self.output_communication = {}
56
+ self.output_matrix_data = {}
57
+ self._output_path = kwargs.get("ascend_profiler_output_path")
58
+ self._msprof_analyze_output_path = kwargs.get("msprof_analyze_output_path")
59
+ self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
60
+ ProfilerLogger.init(self._ascend_ms_dir)
61
+ self._logger = ProfilerLogger.get_instance()
62
+ self._communication_input_path = os.path.join(
63
+ self._msprof_analyze_output_path,
64
+ self.COMMUNICATION
65
+ )
66
+ self._communication_matrix_input_path = os.path.join(
67
+ self._msprof_analyze_output_path,
68
+ self.COMMUNICATION_MATRIX
69
+ )
70
+ self._communication_output_path = os.path.join(
71
+ self._output_path,
72
+ self.COMMUNICATION
73
+ )
74
+ self._communication_matrix_output_path = os.path.join(
75
+ self._output_path,
76
+ self.COMMUNICATION_MATRIX
77
+ )
78
+
79
+ def save(self, data=None):
80
+ """
81
+ Save ascend integrate data.
82
+ """
83
+ self._logger.info("AscendCommunicationViewer start")
84
+ try:
85
+ self._generate_communication()
86
+ self._generate_matrix()
87
+ self._save_analyze_data()
88
+ except Exception as e: # pylint: disable=W0703
89
+ self._logger.error("Failed to save ascend communication data, error: %s", e, exc_info=True)
90
+ self._logger.info("AscendCommunicationViewer end")
91
+
92
+ def _save_analyze_data(self):
93
+ """
94
+ Save analyse data
95
+ """
96
+ self._logger.info("Save ascend communication data start")
97
+ if not self.output_communication:
98
+ return
99
+ FileManager.create_json_file(self._communication_output_path, self.output_communication)
100
+ self._logger.info("Save ascend communication data done")
101
+ if not self.output_matrix_data:
102
+ return
103
+ FileManager.create_json_file(self._communication_matrix_output_path, self.output_matrix_data)
104
+ self._logger.info("Save ascend communication matrix data done")
105
+
106
+ @staticmethod
107
+ def _combine_size_distribution(op_dict: dict, total_dict: dict):
108
+ """combine size distribution"""
109
+ for size, size_info in op_dict.items():
110
+ total_dict[size][0] += size_info[0]
111
+ total_dict[size][1] += size_info[1]
112
+
113
+ @staticmethod
114
+ def _compute_ratio(dividend: float, divisor: float):
115
+ """compute ratio"""
116
+ if abs(divisor) < 1e-15:
117
+ return 0
118
+ return round(dividend / divisor, 4)
119
+
120
+ def _generate_communication(self):
121
+ """
122
+ generate communication.json
123
+ """
124
+ if not os.path.exists(self._communication_input_path):
125
+ return
126
+ communication_data = FileManager.read_json_file(self._communication_input_path)
127
+ if not communication_data:
128
+ return
129
+ self._split_comm_op_by_step(communication_data)
130
+
131
+ for step_info in self.step_list:
132
+ step = "step" + step_info.get("step_id") if step_info.get("step_id") else "step"
133
+ self.output_communication[step] = self._get_communication_ops_dict(step_info.get("comm_ops"))
134
+
135
+ def _generate_matrix(self):
136
+ """generate matrix"""
137
+ if not os.path.exists(self._communication_matrix_input_path):
138
+ return
139
+ matrix_data = FileManager.read_json_file(self._communication_matrix_input_path)
140
+ if not matrix_data:
141
+ return
142
+ matrix_data_by_step = self._split_matrix_by_step(matrix_data)
143
+
144
+ for step, comm_matrix_data in matrix_data_by_step.items():
145
+ self.output_matrix_data[step] = self._get_matrix_ops_dict(comm_matrix_data)
146
+
147
+ def _split_comm_op_by_step(self, communication_data: dict):
148
+ """split comm op by step"""
149
+ if len(self.step_list) == 1:
150
+ self.step_list[0]["comm_ops"] = communication_data
151
+ for communication_op, communication_op_info in communication_data.items():
152
+ start_time = communication_op_info.get(self.COMMUNICATION_TIME_INFO, {}).get(self.START_TIMESTAMP)
153
+ for step_info in self.step_list:
154
+ if step_info.get("start_ts", -1) <= start_time <= step_info.get("end_ts", -1):
155
+ step_info.get("comm_ops", {})[communication_op] = communication_op_info
156
+ break
157
+
158
+ def _split_communication_p2p_ops(self, op_data: dict):
159
+ """
160
+ split communicate
161
+ """
162
+ comm_op_dict = {self.P2P: {}, self.COLLECTIVE: {}}
163
+ for communication_op, communication_info in op_data.items():
164
+ if communication_op.find(self.HCOM_SEND) != -1 or communication_op.find(self.HCOM_RECEIVE) != -1:
165
+ comm_op_dict[self.P2P][communication_op] = communication_info
166
+ elif communication_op.startswith(self.TOTAL):
167
+ continue
168
+ else:
169
+ comm_op_dict[self.COLLECTIVE][communication_op] = communication_info
170
+ return comm_op_dict
171
+
172
+ def _split_matrix_by_step(self, matrix_data: dict) -> dict:
173
+ """
174
+ split matrix by step
175
+ """
176
+ matrix_data_by_step = {}
177
+ if self._is_step_list_empty():
178
+ matrix_data_by_step["step"] = matrix_data
179
+ return matrix_data_by_step
180
+
181
+ for comm_op in matrix_data:
182
+ for step_info in self.step_list:
183
+ if comm_op in step_info.get("comm_ops", {}):
184
+ step = "step" + step_info.get("step_id") if step_info.get("step_id") else "step"
185
+ matrix_data_by_step.setdefault(step, {})[comm_op] = matrix_data.get(comm_op)
186
+ break
187
+ return matrix_data_by_step
188
+
189
+ def _get_communication_ops_dict(self, op_data: dict) -> dict:
190
+ """get communication ops dict"""
191
+ comm_op_dict = self._split_communication_p2p_ops(op_data)
192
+ self._compute_total_info(comm_op_dict[self.P2P])
193
+ self._compute_total_info(comm_op_dict[self.COLLECTIVE])
194
+ return comm_op_dict
195
+
196
+ def _integrate_matrix_data(self, comm_op_dict_simple):
197
+ """integrate the matrix data"""
198
+ comm_op_dict = defaultdict(dict)
199
+ for new_comm_op_name, data in comm_op_dict_simple.items():
200
+ data.sort(key=lambda x: x[self.BANDWIDTH_GB_S], reverse=True)
201
+ t_type = data[0].get(self.TRANSPORT_TYPE, '')
202
+ t_size = sum(x.get(self.TRANSIT_SIZE_MB, 0) for x in data)
203
+ t_time = sum(x.get(self.TRANSIT_TIME_MS, 0) for x in data)
204
+ bandwidth = self._compute_ratio(t_size, t_time)
205
+
206
+ link = new_comm_op_name[2]
207
+
208
+ comm_op_dict[f'{new_comm_op_name[0]}-top1@{new_comm_op_name[1]}'].update({link: data[0]})
209
+ comm_op_dict[f'{new_comm_op_name[0]}-middle@{new_comm_op_name[1]}'].update({link: data[len(data) // 2]})
210
+ comm_op_dict[f'{new_comm_op_name[0]}-bottom1@{new_comm_op_name[1]}'].update({link: data[-1]})
211
+ index2 = -2
212
+ index3 = -3
213
+ if len(data) == 1:
214
+ index2 = -1
215
+ index3 = -1
216
+ elif len(data) == 2:
217
+ index3 = -2
218
+ comm_op_dict[f'{new_comm_op_name[0]}-bottom2@{new_comm_op_name[1]}'].update({link: data[index2]})
219
+ comm_op_dict[f'{new_comm_op_name[0]}-bottom3@{new_comm_op_name[1]}'].update({link: data[index3]})
220
+ comm_op_dict[f'{new_comm_op_name[0]}-total@{new_comm_op_name[1]}'].update({link: {
221
+ self.TRANSPORT_TYPE: t_type,
222
+ self.TRANSIT_SIZE_MB: t_size,
223
+ self.TRANSIT_TIME_MS: t_time,
224
+ self.BANDWIDTH_GB_S: bandwidth
225
+ }})
226
+ return comm_op_dict
227
+
228
+ def _get_matrix_ops_dict(self, op_data: dict) -> dict:
229
+ """parse matrix data"""
230
+ comm_op_dict_simple_p2p = defaultdict(list)
231
+ comm_op_dict_simple_collective = defaultdict(list)
232
+
233
+ for communication_op, communication_info in op_data.items():
234
+ if communication_op.find(self.HCOM_SEND) != -1 or communication_op.find(self.HCOM_RECEIVE) != -1:
235
+
236
+ match_obj = self.PATTERN1.search(communication_op.lower())
237
+ comm_op_type = match_obj.group()
238
+ for link, data in communication_info.items():
239
+ new_comm_op_name = (comm_op_type, communication_op.split("@")[-1], link)
240
+ data['op_name'] = communication_op.split("@")[0]
241
+ comm_op_dict_simple_p2p[new_comm_op_name].append(data)
242
+
243
+ elif communication_op.startswith(self.TOTAL):
244
+ continue
245
+ else:
246
+ match_obj = self.PATTERN2.search(communication_op.lower())
247
+ if not match_obj:
248
+ comm_op_type = communication_op.lower().split('/')[-1].split('-op')[0]
249
+ logger.warning(
250
+ "Communication operator type not found communication_op: %s, use comm_op_type: %s",
251
+ communication_op, comm_op_type)
252
+ else:
253
+ comm_op_type = match_obj.group()
254
+ for link, data in communication_info.items():
255
+ new_comm_op_name = (comm_op_type, communication_op.split("@")[-1], link)
256
+ data['op_name'] = communication_op.split("@")[0]
257
+ comm_op_dict_simple_collective[new_comm_op_name].append(data)
258
+
259
+ comm_op_dict = {self.P2P: self._integrate_matrix_data(comm_op_dict_simple_p2p),
260
+ self.COLLECTIVE: self._integrate_matrix_data(comm_op_dict_simple_collective)}
261
+
262
+ return comm_op_dict
263
+
264
+ def _is_step_list_empty(self):
265
+ """is step list empty"""
266
+ for step_info in self.step_list:
267
+ if step_info.get("comm_ops"):
268
+ return False
269
+ return True
270
+
271
+ def _compute_total_info(self, comm_ops: dict):
272
+ """
273
+ compute total info
274
+ """
275
+ if not comm_ops:
276
+ return
277
+ total_time_info_dict = defaultdict(float)
278
+ total_bandwidth_info_dict = {}
279
+ for _, communication_op_info in comm_ops.items():
280
+ for com_info, com_info_dict in communication_op_info.items():
281
+ if com_info == self.COMMUNICATION_TIME_INFO:
282
+ self._combine_time_info(com_info_dict, total_time_info_dict)
283
+ if com_info == self.COMMUNICATION_BANDWIDTH_INFO:
284
+ self._combine_bandwidth_info(com_info_dict, total_bandwidth_info_dict)
285
+ self._compute_time_ratio(total_time_info_dict)
286
+ self._compute_bandwidth_ratio(total_bandwidth_info_dict)
287
+ comm_ops['Total Op Info'] = {
288
+ self.COMMUNICATION_TIME_INFO: total_time_info_dict,
289
+ self.COMMUNICATION_BANDWIDTH_INFO: total_bandwidth_info_dict
290
+ }
291
+
292
+ def _combine_time_info(self, com_info_dict: dict, total_time_info_dict: dict):
293
+ """combine time info"""
294
+ ratio_list = [self.WAIT_TIME_RATIO, self.SYNCHRONIZATION_TIME_RATIO]
295
+ for time_info in com_info_dict:
296
+ if time_info not in ratio_list and time_info != self.START_TIMESTAMP:
297
+ total_time_info_dict[time_info] += com_info_dict.get(time_info)
298
+
299
+ def _combine_bandwidth_info(self, com_info_dict: dict, total_bandwidth_info_dict: dict):
300
+ """
301
+ combine bandwidth info
302
+ """
303
+ add_list = [self.TRANSIT_TIME_MS, self.TRANSIT_SIZE_MB]
304
+ dict_list = [self.SIZE_DISTRIBUTION]
305
+ for transport_type, part_transport_dict in com_info_dict.items():
306
+ if transport_type not in total_bandwidth_info_dict:
307
+ total_bandwidth_info_dict[transport_type] = {
308
+ self.TRANSIT_TIME_MS: 0,
309
+ self.TRANSIT_SIZE_MB: 0,
310
+ self.SIZE_DISTRIBUTION: defaultdict(lambda: [0, 0])
311
+ }
312
+ for bandwidth_msg, value in part_transport_dict.items():
313
+ if bandwidth_msg in add_list:
314
+ total_bandwidth_info_dict[transport_type][bandwidth_msg] += value
315
+ if bandwidth_msg in dict_list:
316
+ self._combine_size_distribution(value, total_bandwidth_info_dict[transport_type][bandwidth_msg])
317
+
318
+ def _compute_time_ratio(self, total_time_info_dict: dict):
319
+ """compute time ratio"""
320
+ total_time_info_dict[self.WAIT_TIME_RATIO] = \
321
+ self._compute_ratio(total_time_info_dict.get(self.WAIT_TIME_MS, 0),
322
+ total_time_info_dict.get(self.WAIT_TIME_MS, 0) +
323
+ total_time_info_dict.get(self.TRANSIT_TIME_MS, 0))
324
+ total_time_info_dict[self.SYNCHRONIZATION_TIME_RATIO] = \
325
+ self._compute_ratio(total_time_info_dict.get(self.SYNCHRONIZATION_TIME_MS, 0),
326
+ total_time_info_dict.get(self.TRANSIT_TIME_MS, 0) +
327
+ total_time_info_dict.get(self.SYNCHRONIZATION_TIME_MS, 0))
328
+
329
+ def _compute_bandwidth_ratio(self, total_bandwidth_info_dict: dict):
330
+ """compute bandwidth ratio"""
331
+ for _, bandwidth_dict in total_bandwidth_info_dict.items():
332
+ self._compute_ratio(bandwidth_dict.get(self.TRANSIT_SIZE_MB, 0),
333
+ bandwidth_dict.get(self.TRANSIT_TIME_MS, 0))
@@ -0,0 +1,87 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Ascend integrate viewer"""
16
+ import os
17
+ import glob
18
+ from typing import List
19
+
20
+ from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
21
+ from mindspore.profiler.common.file_manager import FileManager
22
+ from mindspore.profiler.common.log import ProfilerLogger
23
+
24
+
25
+ class AscendIntegrateViewer(BaseViewer):
26
+ """Ascend integrate viewer"""
27
+
28
+ CSV_PREFIX_NAME = ["l2_cache", "api_statistic", "op_statistic", "static_op_mem"]
29
+ AI_CPU_CSV_PATTERN = "aicpu_[0-9]*.csv"
30
+
31
+ def __init__(self, **kwargs):
32
+ super().__init__()
33
+ self._output_path = kwargs.get("ascend_profiler_output_path")
34
+ self._framework_path = kwargs.get("framework_path")
35
+ self._analyze_json_path = kwargs.get("analyze_json_path")
36
+ self._msprof_profile_output_path = kwargs.get("msprof_profile_output_path")
37
+ self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
38
+ ProfilerLogger.init(self._ascend_ms_dir)
39
+ self._logger = ProfilerLogger.get_instance()
40
+
41
+ def save(self, data=None):
42
+ """
43
+ Save ascend integrate data.
44
+ """
45
+ self._logger.info("AscendIntegrateViewer start")
46
+ try:
47
+ self._copy_msprof_csv_files()
48
+ self._copy_ai_cpu_csv_file()
49
+ except Exception as e: # pylint: disable=W0703
50
+ self._logger.error("Failed to save ascend integrate data, error: %s", e, exc_info=True)
51
+ self._logger.info("AscendIntegrateViewer end")
52
+
53
+ def _copy_csv_files(self, csv_names: List[str], source_path: str):
54
+ """
55
+ Copy CSV files from source path to output path.
56
+ Args:
57
+ csv_names (List[str]): List of CSV file name prefixes
58
+ source_path (str): Source directory path
59
+ """
60
+ self._logger.info("Copy csv files start")
61
+ for csv_name in csv_names:
62
+ src_file = os.path.join(source_path, csv_name + "_*")
63
+ src_file_list = glob.glob(src_file)
64
+ if src_file_list:
65
+ dst_file = os.path.join(self._output_path, csv_name + ".csv")
66
+ FileManager.copy_file(src_file_list[0], dst_file)
67
+ self._logger.info("Copy csv file %s to %s", src_file_list[0], dst_file)
68
+ self._logger.info("Copy csv files done")
69
+
70
+ def _copy_ai_cpu_csv_file(self):
71
+ """
72
+ Copy ai cpu csv files from source path to output path.
73
+ """
74
+ src_file = os.path.join(self._msprof_profile_output_path, self.AI_CPU_CSV_PATTERN)
75
+ src_file_list = glob.glob(src_file)
76
+ if src_file_list:
77
+ dst_file = os.path.join(self._output_path, "data_preprocess.csv")
78
+ FileManager.copy_file(src_file_list[0], dst_file)
79
+ self._logger.info("Copy aicpu file %s to %s", src_file_list[0], dst_file)
80
+ self._logger.info("Copy aicpu csv files done")
81
+
82
+ def _copy_msprof_csv_files(self):
83
+ """
84
+ Copy msprof csv files from source path to output path.
85
+ """
86
+ self._copy_csv_files(self.CSV_PREFIX_NAME, self._msprof_profile_output_path)
87
+ self._logger.info("Copy msprof csv files done")