mindspore 2.6.0rc1__cp311-cp311-win_amd64.whl → 2.7.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 (458) 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 +2 -2
  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 +42 -11
  9. mindspore/_extends/builtin_operations.py +3 -3
  10. mindspore/{_deprecated → _extends/optimize}/__init__.py +9 -3
  11. mindspore/_extends/optimize/cell_utils.py +96 -0
  12. mindspore/_extends/parallel_compile/akg_compiler/custom.py +1109 -0
  13. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  14. mindspore/_extends/parse/__init__.py +3 -3
  15. mindspore/_extends/parse/compile_config.py +44 -22
  16. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +1 -2
  17. mindspore/_extends/parse/parser.py +65 -84
  18. mindspore/_extends/parse/resources.py +39 -0
  19. mindspore/_extends/parse/standard_method.py +58 -14
  20. mindspore/_extends/parse/trope.py +8 -1
  21. mindspore/_extends/pijit/__init__.py +1 -2
  22. mindspore/_extends/pijit/pijit_func_white_list.py +2 -5
  23. mindspore/amp.py +4 -22
  24. mindspore/atlprov.dll +0 -0
  25. mindspore/avcodec-59.dll +0 -0
  26. mindspore/avdevice-59.dll +0 -0
  27. mindspore/avfilter-8.dll +0 -0
  28. mindspore/avformat-59.dll +0 -0
  29. mindspore/avutil-57.dll +0 -0
  30. mindspore/boost/adasum.py +1 -1
  31. mindspore/boost/boost_cell_wrapper.py +4 -4
  32. mindspore/c1.dll +0 -0
  33. mindspore/c1xx.dll +0 -0
  34. mindspore/c2.dll +0 -0
  35. mindspore/common/__init__.py +43 -12
  36. mindspore/common/_grad_function.py +2 -1
  37. mindspore/common/_pijit_context.py +28 -7
  38. mindspore/common/_stub_tensor.py +1 -209
  39. mindspore/common/_tensor_cpp_method.py +1 -1
  40. mindspore/common/_tensor_docs.py +178 -53
  41. mindspore/common/_utils.py +9 -1
  42. mindspore/common/api.py +377 -203
  43. mindspore/common/dtype.py +108 -57
  44. mindspore/common/dump.py +11 -16
  45. mindspore/common/dynamic_shape/__init__.py +0 -0
  46. mindspore/common/{auto_dynamic_shape.py → dynamic_shape/auto_dynamic_shape.py} +17 -23
  47. mindspore/common/dynamic_shape/enable_dynamic.py +197 -0
  48. mindspore/common/file_system.py +59 -9
  49. mindspore/common/generator.py +5 -3
  50. mindspore/common/hook_handle.py +33 -5
  51. mindspore/common/jit_config.py +1 -1
  52. mindspore/common/jit_trace.py +84 -105
  53. mindspore/common/np_dtype.py +3 -3
  54. mindspore/common/parameter.py +27 -29
  55. mindspore/common/recompute.py +5 -7
  56. mindspore/common/sparse_tensor.py +0 -3
  57. mindspore/common/symbol.py +0 -1
  58. mindspore/common/tensor.py +117 -131
  59. mindspore/communication/_comm_helper.py +46 -4
  60. mindspore/communication/management.py +79 -7
  61. mindspore/context.py +67 -55
  62. mindspore/dataset/__init__.py +1 -1
  63. mindspore/dataset/audio/transforms.py +1 -1
  64. mindspore/dataset/core/config.py +38 -4
  65. mindspore/dataset/engine/datasets.py +350 -322
  66. mindspore/dataset/engine/datasets_user_defined.py +70 -24
  67. mindspore/dataset/engine/iterators.py +2 -2
  68. mindspore/dataset/engine/obs/config_loader.py +2 -2
  69. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +8 -0
  70. mindspore/dataset/transforms/c_transforms.py +2 -2
  71. mindspore/dataset/transforms/py_transforms.py +7 -3
  72. mindspore/dataset/transforms/transforms.py +10 -6
  73. mindspore/dataset/vision/__init__.py +1 -1
  74. mindspore/dataset/vision/py_transforms.py +8 -8
  75. mindspore/dataset/vision/transforms.py +17 -5
  76. mindspore/dataset/vision/utils.py +632 -21
  77. mindspore/dataset/vision/validators.py +1 -0
  78. mindspore/device_context/ascend/device.py +1 -1
  79. mindspore/device_context/ascend/op_tuning.py +35 -1
  80. mindspore/device_context/gpu/__init__.py +2 -2
  81. mindspore/device_context/gpu/device.py +1 -1
  82. mindspore/device_context/gpu/op_precision.py +4 -2
  83. mindspore/device_context/gpu/op_tuning.py +6 -3
  84. mindspore/device_manager.py +16 -9
  85. mindspore/dnnl.dll +0 -0
  86. mindspore/dpcmi.dll +0 -0
  87. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +3 -4
  88. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  89. mindspore/experimental/optim/adadelta.py +13 -20
  90. mindspore/experimental/optim/adagrad.py +15 -22
  91. mindspore/experimental/optim/adam.py +17 -24
  92. mindspore/experimental/optim/adamax.py +14 -22
  93. mindspore/experimental/optim/adamw.py +28 -34
  94. mindspore/experimental/optim/asgd.py +15 -25
  95. mindspore/experimental/optim/lr_scheduler.py +27 -45
  96. mindspore/experimental/optim/nadam.py +14 -24
  97. mindspore/experimental/optim/optimizer.py +13 -23
  98. mindspore/experimental/optim/radam.py +18 -24
  99. mindspore/experimental/optim/rmsprop.py +14 -25
  100. mindspore/experimental/optim/rprop.py +15 -26
  101. mindspore/experimental/optim/sgd.py +9 -19
  102. mindspore/hal/__init__.py +4 -4
  103. mindspore/hal/contiguous_tensors_handle.py +2 -2
  104. mindspore/hal/memory.py +27 -7
  105. mindspore/include/api/cell.h +65 -5
  106. mindspore/include/api/cfg.h +24 -7
  107. mindspore/include/api/context.h +1 -0
  108. mindspore/include/api/delegate.h +10 -2
  109. mindspore/include/api/dual_abi_helper.h +100 -19
  110. mindspore/include/api/graph.h +14 -1
  111. mindspore/include/api/kernel.h +16 -3
  112. mindspore/include/api/kernel_api.h +9 -1
  113. mindspore/include/api/metrics/accuracy.h +9 -0
  114. mindspore/include/api/model.h +8 -1
  115. mindspore/include/api/model_group.h +4 -0
  116. mindspore/include/api/model_parallel_runner.h +2 -0
  117. mindspore/include/api/status.h +48 -10
  118. mindspore/include/api/types.h +8 -3
  119. mindspore/include/c_api/model_c.h +0 -58
  120. mindspore/include/c_api/tensor_c.h +0 -26
  121. mindspore/include/dataset/constants.h +9 -0
  122. mindspore/include/dataset/vision_ascend.h +1 -1
  123. mindspore/jpeg62.dll +0 -0
  124. mindspore/mindrecord/tools/cifar10.py +61 -11
  125. mindspore/mindrecord/tools/cifar10_to_mr.py +5 -0
  126. mindspore/mindspore_backend_common.dll +0 -0
  127. mindspore/mindspore_backend_manager.dll +0 -0
  128. mindspore/mindspore_common.dll +0 -0
  129. mindspore/mindspore_core.dll +0 -0
  130. mindspore/mindspore_cpu_res_manager.dll +0 -0
  131. mindspore/mindspore_dump.dll +0 -0
  132. mindspore/mindspore_frontend.dll +0 -0
  133. mindspore/mindspore_glog.dll +0 -0
  134. mindspore/mindspore_memory_pool.dll +0 -0
  135. mindspore/mindspore_ms_backend.dll +0 -0
  136. mindspore/mindspore_ops.dll +0 -0
  137. mindspore/mindspore_ops_host.dll +0 -0
  138. mindspore/mindspore_ops_kernel_common.dll +0 -0
  139. mindspore/mindspore_profiler.dll +0 -0
  140. mindspore/mindspore_pyboost.dll +0 -0
  141. mindspore/mindspore_pynative.dll +0 -0
  142. mindspore/mindspore_res_manager.dll +0 -0
  143. mindspore/mindspore_runtime_pipeline.dll +0 -0
  144. mindspore/mint/__init__.py +6 -46
  145. mindspore/mint/distributed/__init__.py +5 -0
  146. mindspore/mint/distributed/distributed.py +429 -23
  147. mindspore/mint/nn/__init__.py +1 -1
  148. mindspore/mint/nn/functional.py +53 -6
  149. mindspore/mint/nn/layer/_functions.py +163 -294
  150. mindspore/mint/nn/layer/activation.py +8 -6
  151. mindspore/mint/nn/layer/conv.py +140 -104
  152. mindspore/mint/nn/layer/normalization.py +11 -25
  153. mindspore/mint/optim/adam.py +19 -18
  154. mindspore/mint/optim/adamw.py +14 -8
  155. mindspore/mint/optim/sgd.py +5 -5
  156. mindspore/msobj140.dll +0 -0
  157. mindspore/mspdb140.dll +0 -0
  158. mindspore/mspdbcore.dll +0 -0
  159. mindspore/mspdbst.dll +0 -0
  160. mindspore/mspft140.dll +0 -0
  161. mindspore/msvcdis140.dll +0 -0
  162. mindspore/msvcp140_1.dll +0 -0
  163. mindspore/msvcp140_2.dll +0 -0
  164. mindspore/msvcp140_atomic_wait.dll +0 -0
  165. mindspore/msvcp140_codecvt_ids.dll +0 -0
  166. mindspore/nn/cell.py +491 -623
  167. mindspore/nn/grad/cell_grad.py +11 -12
  168. mindspore/nn/layer/activation.py +36 -36
  169. mindspore/nn/layer/basic.py +74 -77
  170. mindspore/nn/layer/channel_shuffle.py +4 -4
  171. mindspore/nn/layer/combined.py +4 -2
  172. mindspore/nn/layer/conv.py +117 -110
  173. mindspore/nn/layer/dense.py +9 -7
  174. mindspore/nn/layer/embedding.py +50 -52
  175. mindspore/nn/layer/image.py +38 -40
  176. mindspore/nn/layer/math.py +111 -112
  177. mindspore/nn/layer/normalization.py +56 -44
  178. mindspore/nn/layer/pooling.py +58 -63
  179. mindspore/nn/layer/rnn_cells.py +33 -33
  180. mindspore/nn/layer/rnns.py +56 -56
  181. mindspore/nn/layer/thor_layer.py +74 -73
  182. mindspore/nn/layer/transformer.py +11 -1
  183. mindspore/nn/learning_rate_schedule.py +20 -20
  184. mindspore/nn/loss/loss.py +79 -81
  185. mindspore/nn/optim/adam.py +4 -6
  186. mindspore/nn/optim/adasum.py +2 -2
  187. mindspore/nn/optim/asgd.py +2 -0
  188. mindspore/nn/optim/lamb.py +1 -3
  189. mindspore/nn/optim/optimizer.py +1 -1
  190. mindspore/nn/optim/tft_wrapper.py +2 -3
  191. mindspore/nn/optim/thor.py +2 -2
  192. mindspore/nn/probability/distribution/_utils/utils.py +2 -2
  193. mindspore/nn/probability/distribution/exponential.py +2 -1
  194. mindspore/nn/probability/distribution/poisson.py +2 -1
  195. mindspore/nn/sparse/sparse.py +3 -3
  196. mindspore/nn/wrap/cell_wrapper.py +73 -42
  197. mindspore/nn/wrap/grad_reducer.py +37 -52
  198. mindspore/nn/wrap/loss_scale.py +72 -74
  199. mindspore/numpy/array_creations.py +7 -7
  200. mindspore/numpy/fft.py +1 -1
  201. mindspore/numpy/math_ops.py +5 -5
  202. mindspore/numpy/utils_const.py +1 -1
  203. mindspore/opencv_core452.dll +0 -0
  204. mindspore/opencv_imgcodecs452.dll +0 -0
  205. mindspore/opencv_imgproc452.dll +0 -0
  206. mindspore/ops/_grad_experimental/grad_comm_ops.py +51 -13
  207. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -0
  208. mindspore/ops/_grad_experimental/grad_inner_ops.py +0 -9
  209. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  210. mindspore/{experimental/es/__init__.py → ops/_op_impl/cpu/joinedstr_op.py} +12 -6
  211. mindspore/ops/_vmap/vmap_array_ops.py +31 -13
  212. mindspore/ops/_vmap/vmap_nn_ops.py +8 -16
  213. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +54 -13
  214. mindspore/ops/auto_generate/gen_extend_func.py +27 -145
  215. mindspore/ops/auto_generate/gen_ops_def.py +1027 -347
  216. mindspore/ops/auto_generate/gen_ops_prim.py +2341 -1117
  217. mindspore/ops/auto_generate/pyboost_inner_prim.py +31 -1
  218. mindspore/ops/composite/__init__.py +10 -0
  219. mindspore/ops/composite/base.py +9 -5
  220. mindspore/ops/composite/multitype_ops/__init__.py +12 -1
  221. mindspore/ops/composite/multitype_ops/_compile_utils.py +133 -109
  222. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -1
  223. mindspore/ops/composite/multitype_ops/add_impl.py +70 -2
  224. mindspore/ops/composite/multitype_ops/div_impl.py +49 -0
  225. mindspore/ops/composite/multitype_ops/floordiv_impl.py +29 -0
  226. mindspore/ops/composite/multitype_ops/getitem_impl.py +11 -0
  227. mindspore/ops/composite/multitype_ops/mod_impl.py +5 -3
  228. mindspore/ops/composite/multitype_ops/mul_impl.py +49 -0
  229. mindspore/ops/composite/multitype_ops/setitem_impl.py +57 -0
  230. mindspore/ops/composite/multitype_ops/sub_impl.py +34 -0
  231. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +14 -0
  232. mindspore/ops/function/__init__.py +4 -1
  233. mindspore/ops/function/_add_attr_func.py +11 -6
  234. mindspore/ops/function/array_func.py +19 -102
  235. mindspore/ops/function/debug_func.py +8 -5
  236. mindspore/ops/function/grad/grad_func.py +5 -13
  237. mindspore/ops/function/math_func.py +77 -572
  238. mindspore/ops/function/nn_func.py +46 -94
  239. mindspore/ops/function/other_func.py +4 -1
  240. mindspore/ops/function/random_func.py +44 -5
  241. mindspore/ops/function/vmap_func.py +2 -1
  242. mindspore/ops/functional.py +4 -4
  243. mindspore/ops/functional_overload.py +594 -18
  244. mindspore/ops/op_info_register.py +21 -0
  245. mindspore/ops/operations/__init__.py +16 -11
  246. mindspore/ops/operations/_custom_ops_utils.py +689 -34
  247. mindspore/ops/operations/_inner_ops.py +14 -18
  248. mindspore/ops/operations/_sequence_ops.py +1 -1
  249. mindspore/ops/operations/array_ops.py +5 -51
  250. mindspore/ops/operations/comm_ops.py +186 -41
  251. mindspore/ops/operations/custom_ops.py +303 -177
  252. mindspore/ops/operations/debug_ops.py +59 -4
  253. mindspore/ops/operations/image_ops.py +13 -13
  254. mindspore/ops/operations/manually_defined/ops_def.py +27 -28
  255. mindspore/ops/operations/math_ops.py +8 -9
  256. mindspore/ops/operations/nn_ops.py +8 -40
  257. mindspore/ops/primitive.py +9 -20
  258. mindspore/ops/tensor_method.py +63 -15
  259. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +1 -1
  260. mindspore/ops_generate/api/functional_map_cpp_generator.py +10 -9
  261. mindspore/ops_generate/api/functions_cc_generator.py +58 -10
  262. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +1 -1
  263. mindspore/ops_generate/common/base_generator.py +14 -0
  264. mindspore/ops_generate/common/gen_constants.py +8 -3
  265. mindspore/ops_generate/common/gen_utils.py +0 -19
  266. mindspore/ops_generate/common/op_proto.py +11 -4
  267. mindspore/ops_generate/common/template.py +88 -11
  268. mindspore/ops_generate/gen_ops.py +1 -1
  269. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +4 -4
  270. mindspore/ops_generate/op_def/ops_def_cc_generator.py +0 -3
  271. mindspore/ops_generate/op_def/ops_name_h_generator.py +0 -3
  272. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +0 -4
  273. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +5 -2
  274. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +49 -8
  275. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +2 -2
  276. mindspore/ops_generate/pyboost/gen_pyboost_func.py +31 -16
  277. mindspore/ops_generate/pyboost/op_template_parser.py +98 -72
  278. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +70 -273
  279. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +14 -6
  280. mindspore/ops_generate/pyboost/pyboost_functions_impl_cpp_generator.py +316 -0
  281. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +1 -1
  282. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +5 -3
  283. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +1 -1
  284. mindspore/ops_generate/pyboost/pyboost_internal_functions_cpp_generator.py +76 -0
  285. mindspore/ops_generate/pyboost/pyboost_internal_functions_h_generator.py +76 -0
  286. mindspore/ops_generate/pyboost/pyboost_internal_kernel_info_adapter_generator.py +125 -0
  287. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +4 -3
  288. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +348 -61
  289. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +1 -1
  290. mindspore/ops_generate/pyboost/pyboost_utils.py +118 -9
  291. mindspore/ops_generate/tensor_py_cc_generator.py +1 -24
  292. mindspore/parallel/_auto_parallel_context.py +16 -23
  293. mindspore/parallel/_cell_wrapper.py +113 -45
  294. mindspore/parallel/_parallel_serialization.py +4 -3
  295. mindspore/parallel/_ps_context.py +4 -6
  296. mindspore/parallel/_tensor.py +167 -12
  297. mindspore/parallel/_transformer/moe.py +1 -1
  298. mindspore/parallel/_transformer/transformer.py +17 -12
  299. mindspore/parallel/_utils.py +5 -11
  300. mindspore/parallel/auto_parallel.py +35 -14
  301. mindspore/parallel/checkpoint_convert.py +3 -3
  302. mindspore/parallel/checkpoint_transform.py +13 -7
  303. mindspore/parallel/cluster/process_entity/_api.py +88 -49
  304. mindspore/parallel/cluster/process_entity/_utils.py +95 -7
  305. mindspore/parallel/cluster/run.py +48 -7
  306. mindspore/parallel/function/__init__.py +8 -1
  307. mindspore/parallel/function/reshard_func.py +12 -12
  308. mindspore/parallel/nn/__init__.py +15 -2
  309. mindspore/parallel/nn/parallel_cell_wrapper.py +50 -14
  310. mindspore/parallel/nn/parallel_grad_reducer.py +7 -14
  311. mindspore/parallel/shard.py +10 -25
  312. mindspore/parallel/transform_safetensors.py +469 -174
  313. mindspore/pgodb140.dll +0 -0
  314. mindspore/pgort140.dll +0 -0
  315. mindspore/profiler/__init__.py +2 -1
  316. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -7
  317. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +3 -0
  318. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +12 -6
  319. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +3 -3
  320. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
  321. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +4 -4
  322. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +3 -3
  323. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +4 -1
  324. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +2 -1
  325. mindspore/profiler/analysis/task_manager.py +1 -1
  326. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +5 -1
  327. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +2 -1
  328. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +10 -9
  329. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +43 -23
  330. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +3 -2
  331. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +9 -5
  332. mindspore/profiler/analysis/viewer/ms_operator_details_viewer.py +132 -0
  333. mindspore/profiler/common/constant.py +16 -0
  334. mindspore/profiler/common/msprof_cmd_tool.py +2 -2
  335. mindspore/profiler/common/path_manager.py +9 -0
  336. mindspore/profiler/common/profiler_context.py +50 -29
  337. mindspore/profiler/common/profiler_info.py +0 -16
  338. mindspore/profiler/common/profiler_meta_data.py +1 -0
  339. mindspore/profiler/common/profiler_op_analyse.py +239 -0
  340. mindspore/profiler/common/profiler_output_path.py +23 -8
  341. mindspore/profiler/common/profiler_parameters.py +128 -35
  342. mindspore/profiler/dynamic_profile/__init__.py +0 -0
  343. mindspore/profiler/dynamic_profile/dynamic_monitor_proxy.py +39 -0
  344. mindspore/profiler/dynamic_profile/dynamic_profiler_config_context.py +666 -0
  345. mindspore/profiler/dynamic_profile/dynamic_profiler_utils.py +62 -0
  346. mindspore/profiler/dynamic_profiler.py +374 -338
  347. mindspore/profiler/envprofiler.py +42 -12
  348. mindspore/profiler/experimental_config.py +112 -7
  349. mindspore/profiler/mstx.py +33 -12
  350. mindspore/profiler/platform/__init__.py +2 -3
  351. mindspore/profiler/platform/cpu_profiler.py +10 -4
  352. mindspore/profiler/platform/npu_profiler.py +30 -20
  353. mindspore/profiler/profiler.py +218 -154
  354. mindspore/profiler/profiler_action_controller.py +65 -77
  355. mindspore/profiler/profiler_interface.py +2 -2
  356. mindspore/profiler/schedule.py +10 -4
  357. mindspore/rewrite/common/config.py +1 -0
  358. mindspore/rewrite/common/namer.py +1 -0
  359. mindspore/rewrite/common/namespace.py +1 -0
  360. mindspore/rewrite/node/node.py +31 -11
  361. mindspore/rewrite/parsers/assign_parser.py +1 -1
  362. mindspore/rewrite/symbol_tree/symbol_tree.py +2 -2
  363. mindspore/run_check/_check_version.py +7 -10
  364. mindspore/runtime/__init__.py +8 -6
  365. mindspore/runtime/event.py +10 -4
  366. mindspore/runtime/executor.py +87 -45
  367. mindspore/runtime/memory.py +31 -32
  368. mindspore/runtime/thread_bind_core.py +299 -165
  369. mindspore/safeguard/rewrite_obfuscation.py +12 -13
  370. mindspore/swresample-4.dll +0 -0
  371. mindspore/swscale-6.dll +0 -0
  372. mindspore/tbbmalloc.dll +0 -0
  373. mindspore/tinyxml2.dll +0 -0
  374. mindspore/train/_utils.py +17 -7
  375. mindspore/train/amp.py +43 -23
  376. mindspore/train/callback/__init__.py +5 -5
  377. mindspore/train/callback/_callback.py +2 -1
  378. mindspore/train/callback/_checkpoint.py +4 -14
  379. mindspore/train/callback/_flops_collector.py +11 -7
  380. mindspore/train/callback/_landscape.py +0 -1
  381. mindspore/train/callback/_train_fault_tolerance.py +98 -21
  382. mindspore/train/data_sink.py +15 -6
  383. mindspore/train/dataset_helper.py +14 -5
  384. mindspore/train/model.py +133 -69
  385. mindspore/train/serialization.py +168 -126
  386. mindspore/train/summary/summary_record.py +13 -2
  387. mindspore/train/train_thor/model_thor.py +2 -2
  388. mindspore/turbojpeg.dll +0 -0
  389. mindspore/utils/__init__.py +3 -2
  390. mindspore/utils/dryrun.py +0 -6
  391. mindspore/utils/runtime_execution_order_check.py +163 -77
  392. mindspore/utils/sdc_detect.py +68 -0
  393. mindspore/utils/utils.py +14 -17
  394. mindspore/vcmeta.dll +0 -0
  395. mindspore/vcruntime140.dll +0 -0
  396. mindspore/vcruntime140_1.dll +0 -0
  397. mindspore/version.py +1 -1
  398. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/METADATA +5 -4
  399. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/RECORD +403 -442
  400. mindspore/_deprecated/jit.py +0 -198
  401. mindspore/_extends/remote/kernel_build_server_ascend.py +0 -75
  402. mindspore/communication/_hccl_management.py +0 -297
  403. mindspore/experimental/es/embedding_service.py +0 -891
  404. mindspore/experimental/es/embedding_service_layer.py +0 -581
  405. mindspore/profiler/common/validator/__init__.py +0 -14
  406. mindspore/profiler/common/validator/validate_path.py +0 -84
  407. mindspore/profiler/parser/__init__.py +0 -14
  408. mindspore/profiler/parser/aicpu_data_parser.py +0 -272
  409. mindspore/profiler/parser/ascend_analysis/__init__.py +0 -14
  410. mindspore/profiler/parser/ascend_analysis/constant.py +0 -71
  411. mindspore/profiler/parser/ascend_analysis/file_manager.py +0 -180
  412. mindspore/profiler/parser/ascend_analysis/function_event.py +0 -185
  413. mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +0 -136
  414. mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +0 -131
  415. mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +0 -104
  416. mindspore/profiler/parser/ascend_analysis/path_manager.py +0 -313
  417. mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +0 -123
  418. mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +0 -86
  419. mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +0 -75
  420. mindspore/profiler/parser/ascend_cluster_generator.py +0 -116
  421. mindspore/profiler/parser/ascend_communicate_generator.py +0 -314
  422. mindspore/profiler/parser/ascend_flops_generator.py +0 -116
  423. mindspore/profiler/parser/ascend_fpbp_generator.py +0 -82
  424. mindspore/profiler/parser/ascend_hccl_generator.py +0 -271
  425. mindspore/profiler/parser/ascend_integrate_generator.py +0 -42
  426. mindspore/profiler/parser/ascend_memory_generator.py +0 -185
  427. mindspore/profiler/parser/ascend_msprof_exporter.py +0 -282
  428. mindspore/profiler/parser/ascend_msprof_generator.py +0 -187
  429. mindspore/profiler/parser/ascend_op_generator.py +0 -334
  430. mindspore/profiler/parser/ascend_steptrace_generator.py +0 -94
  431. mindspore/profiler/parser/ascend_timeline_generator.py +0 -545
  432. mindspore/profiler/parser/base_timeline_generator.py +0 -483
  433. mindspore/profiler/parser/container.py +0 -229
  434. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +0 -697
  435. mindspore/profiler/parser/flops_parser.py +0 -531
  436. mindspore/profiler/parser/framework_enum.py +0 -111
  437. mindspore/profiler/parser/framework_parser.py +0 -464
  438. mindspore/profiler/parser/framework_struct.py +0 -61
  439. mindspore/profiler/parser/gpu_analysis/__init__.py +0 -14
  440. mindspore/profiler/parser/gpu_analysis/function_event.py +0 -44
  441. mindspore/profiler/parser/gpu_analysis/fwk_file_parser.py +0 -89
  442. mindspore/profiler/parser/gpu_analysis/profiler_info_parser.py +0 -72
  443. mindspore/profiler/parser/hccl_parser.py +0 -573
  444. mindspore/profiler/parser/hwts_log_parser.py +0 -122
  445. mindspore/profiler/parser/integrator.py +0 -526
  446. mindspore/profiler/parser/memory_usage_parser.py +0 -277
  447. mindspore/profiler/parser/minddata_analyzer.py +0 -800
  448. mindspore/profiler/parser/minddata_parser.py +0 -186
  449. mindspore/profiler/parser/minddata_pipeline_parser.py +0 -299
  450. mindspore/profiler/parser/op_intermediate_parser.py +0 -149
  451. mindspore/profiler/parser/optime_parser.py +0 -250
  452. mindspore/profiler/parser/profiler_info.py +0 -213
  453. mindspore/profiler/parser/step_trace_parser.py +0 -666
  454. mindspore/utils/hooks.py +0 -81
  455. /mindspore/common/{_auto_dynamic.py → dynamic_shape/_auto_dynamic.py} +0 -0
  456. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/WHEEL +0 -0
  457. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/entry_points.txt +0 -0
  458. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/top_level.txt +0 -0
@@ -31,7 +31,8 @@ from mindspore.profiler.common.constant import (
31
31
  ProfilerLevel,
32
32
  ProfilerActivity,
33
33
  AicoreMetrics,
34
- ExportType
34
+ ExportType,
35
+ HostSystem
35
36
  )
36
37
  from mindspore.profiler.common.profiler_output_path import ProfilerOutputPath
37
38
  from mindspore.profiler.common.profiler_parameters import ProfilerParameters
@@ -42,6 +43,7 @@ from mindspore.profiler.schedule import Schedule
42
43
  from mindspore import context
43
44
  from mindspore import log as logger
44
45
  from mindspore.profiler.common.profiler_info import ProfilerInfo
46
+ from mindspore.profiler.experimental_config import _ExperimentalConfig
45
47
 
46
48
 
47
49
  @Singleton
@@ -62,12 +64,11 @@ class ProfilerContext:
62
64
  self._profiler_path_mgr: ProfilerOutputPath = None
63
65
  self._on_trace_ready_output_path = None
64
66
  self._jit_level: Optional[str] = ""
65
- self._context_mode: Optional[int] = -1
66
67
 
67
68
  self._init_device_target()
68
69
  self._init_device_id()
69
70
  self._init_rank_id()
70
- self._init_context_mode()
71
+ self._init_jit_level()
71
72
 
72
73
  def set_params(self, **kwargs):
73
74
  """
@@ -81,14 +82,34 @@ class ProfilerContext:
81
82
  logger.warning(f"Both on_trace_ready path and output_path are provided. "
82
83
  f"The on_trace_ready path takes effect. Final path is {final_path}")
83
84
  kwargs["output_path"] = final_path
84
-
85
+ if kwargs.get("experimental_config"):
86
+ self._check_and_set_experimental_params(kwargs)
85
87
  self._profiler_params_mgr: ProfilerParameters = ProfilerParameters(**kwargs)
86
- self._profiler_path_mgr: ProfilerOutputPath = ProfilerOutputPath(
87
- device_id=int(self._device_id), rank_id=int(self._rank_id)
88
- )
89
-
88
+ self._profiler_path_mgr: ProfilerOutputPath = ProfilerOutputPath(rank_id=int(self._rank_id))
90
89
  self._profiler_path_mgr.output_path = self._profiler_params_mgr.output_path
91
90
 
91
+ @staticmethod
92
+ def _check_and_set_experimental_params(kwargs):
93
+ """
94
+ Set experimental parameters
95
+ """
96
+ if not isinstance(kwargs.get("experimental_config"), _ExperimentalConfig):
97
+ logger.warning("For Profiler, experimental_config value must be the "
98
+ "'mindspore.profiler._ExperimentalConfig' class, "
99
+ "reset to default value.")
100
+ return
101
+ kwargs["profiler_level"] = kwargs.get("experimental_config").profiler_level
102
+ kwargs["aic_metrics"] = kwargs.get("experimental_config").aic_metrics
103
+ kwargs["l2_cache"] = kwargs.get("experimental_config").l2_cache
104
+ kwargs["mstx"] = kwargs.get("experimental_config").mstx
105
+ kwargs["data_simplification"] = kwargs.get("experimental_config").data_simplification
106
+ kwargs["export_type"] = kwargs.get("experimental_config").export_type
107
+ kwargs["mstx_domain_include"] = kwargs.get("experimental_config").mstx_domain_include
108
+ kwargs["mstx_domain_exclude"] = kwargs.get("experimental_config").mstx_domain_exclude
109
+ kwargs["sys_io"] = kwargs.get("experimental_config").sys_io
110
+ kwargs["sys_interconnection"] = kwargs.get("experimental_config").sys_interconnection
111
+ kwargs["host_sys"] = kwargs.get("experimental_config").host_sys
112
+
92
113
  @property
93
114
  def on_trace_ready_output_path(self) -> str:
94
115
  """Get the on trace ready output path."""
@@ -113,7 +134,6 @@ class ProfilerContext:
113
134
  "step_list": self._step_list,
114
135
  "mode": self._mode,
115
136
  "jit_level": self._jit_level,
116
- "context_mode": self._context_mode
117
137
  }
118
138
 
119
139
  def load_offline_profiler_params(self, profiler_parameters: Dict[str, Any]) -> None:
@@ -133,6 +153,8 @@ class ProfilerContext:
133
153
  value = [ProfilerActivity(activity) for activity in profiler_parameters[param]]
134
154
  elif param == "export_type":
135
155
  value = [ExportType(export_type) for export_type in profiler_parameters[param]]
156
+ elif param == "host_sys":
157
+ value = [HostSystem(host_sys) for host_sys in profiler_parameters[param]]
136
158
  elif param == "schedule":
137
159
  continue
138
160
  else:
@@ -290,6 +312,16 @@ class ProfilerContext:
290
312
  """Get the mstx from ProfilerParameters."""
291
313
  return self._profiler_params_mgr.mstx
292
314
 
315
+ @property
316
+ def mstx_domain_include(self) -> List[str]:
317
+ """Get the mstx domain include from ProfilerParameters."""
318
+ return self._profiler_params_mgr.mstx_domain_include
319
+
320
+ @property
321
+ def mstx_domain_exclude(self) -> List[str]:
322
+ """Get the mstx domain exclude from ProfilerParameters."""
323
+ return self._profiler_params_mgr.mstx_domain_exclude
324
+
293
325
  @property
294
326
  def data_simplification(self) -> bool:
295
327
  """Get the data simplification from ProfilerParameters."""
@@ -304,6 +336,11 @@ class ProfilerContext:
304
336
  value = True
305
337
  self._profiler_params_mgr.data_simplification = value
306
338
 
339
+ @property
340
+ def record_shapes(self) -> bool:
341
+ """Get the record shapes from ProfilerParameters."""
342
+ return self._profiler_params_mgr.record_shapes
343
+
307
344
  @property
308
345
  def device_target(self) -> str:
309
346
  """Get device target."""
@@ -419,19 +456,6 @@ class ProfilerContext:
419
456
  """Get the is set schedule from ProfilerParameters."""
420
457
  return self._profiler_params_mgr.is_set_schedule
421
458
 
422
- @property
423
- def context_mode(self) -> int:
424
- return self._context_mode
425
-
426
- @context_mode.setter
427
- def context_mode(self, value: int) -> None:
428
- """Set context mode value."""
429
- if not isinstance(value, int):
430
- logger.warning(f"For profiler, the parameter context_mode must be int, "
431
- f"but got {type(value)}, reset to -1.")
432
- value = -1
433
- self._context_mode = value
434
-
435
459
  @property
436
460
  def jit_level(self) -> str:
437
461
  return self._jit_level
@@ -488,13 +512,10 @@ class ProfilerContext:
488
512
  if not self._rank_id or not self._rank_id.isdigit():
489
513
  self._rank_id = "0"
490
514
 
491
- def _init_context_mode(self):
515
+ def _init_jit_level(self):
492
516
  """
493
517
  Initialize the jit level.
494
518
  """
495
- if context.get_context("mode") == context.GRAPH_MODE:
496
- jit_config = context.get_jit_config()
497
- self._jit_level = jit_config.get("jit_level", "")
498
- ProfilerInfo().jit_level = self._jit_level
499
- ProfilerInfo().context_mode = context.get_context("mode")
500
- self._context_mode = context.get_context("mode")
519
+ jit_config = context.get_jit_config()
520
+ self._jit_level = jit_config.get("jit_level", "")
521
+ ProfilerInfo().jit_level = self._jit_level
@@ -64,7 +64,6 @@ class ProfilerInfo:
64
64
  ANALYSIS_COST_TIME = "analysis_cost_time"
65
65
  MS_VERSION = "ms_version"
66
66
  CANN_VERSION = "cann_version"
67
- CONTEXT_MODE = "context_mode"
68
67
  JIT_LEVEL = "jit_level"
69
68
 
70
69
  US_TO_NS = 1000
@@ -77,7 +76,6 @@ class ProfilerInfo:
77
76
  self.ANALYSIS_COST_TIME: {},
78
77
  self.MS_VERSION: ms_version,
79
78
  self.CANN_VERSION: get_cann_version(),
80
- self.CONTEXT_MODE: -1,
81
79
  self.JIT_LEVEL: "",
82
80
  }
83
81
  # time params
@@ -132,20 +130,6 @@ class ProfilerInfo:
132
130
  """
133
131
  self._profiler_info[self.PROFILER_PARAMETERS] = value
134
132
 
135
- @property
136
- def context_mode(self) -> int:
137
- """
138
- Get context mode.
139
- """
140
- return self._profiler_info[self.CONTEXT_MODE]
141
-
142
- @context_mode.setter
143
- def context_mode(self, value: int):
144
- """
145
- Set context mode.
146
- """
147
- self._profiler_info[self.CONTEXT_MODE] = value
148
-
149
133
  @property
150
134
  def jit_level(self) -> str:
151
135
  """
@@ -30,6 +30,7 @@ class ProfilerMetaData:
30
30
  This class is used to handle metadata.
31
31
  """
32
32
  metadata: Dict[str, str] = {}
33
+ MAX_META_SIZE = 100 * 1024 * 1024 # 100MB
33
34
 
34
35
  @classmethod
35
36
  def get_metadata(cls) -> Dict[str, str]:
@@ -0,0 +1,239 @@
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
+ """The OpAnalyser."""
16
+ import json
17
+ import os
18
+ from collections import defaultdict
19
+ from mindspore.profiler.common.path_manager import PathManager
20
+
21
+
22
+ class OpAnalyser:
23
+ """
24
+ The parser for parsing framework files.
25
+
26
+ Note:
27
+ This parser only supports CPU and GPU devices.
28
+
29
+ Args:
30
+ output_path (str): The profiling path which should contain GPU profiling data.
31
+ dev_id (str): The device ID.
32
+ """
33
+
34
+ def __init__(self, output_path, dev_id, op_names=None):
35
+ """The parser for parsing framework files."""
36
+ self._dev_id = dev_id
37
+ self._output_path = PathManager.get_real_path(output_path)
38
+ self.op_names = op_names
39
+ self.op_name = ''
40
+ self.framework_list = []
41
+ self.op_detail = {}
42
+ self.operation_info = {}
43
+ self.activity_info_dir = []
44
+ self.framework_info_dir = []
45
+ self.cpu_detail_info_dir = []
46
+ self.gpu_op_type_info_dir = []
47
+ self.op_execute_times = {}
48
+ self.op_step_shape_info = defaultdict(list)
49
+
50
+ def parse(self):
51
+ """Parse op performance data."""
52
+ self.get_device_target_filename()
53
+ self.get_framework_summary()
54
+ self.get_cpu_op_detail_info()
55
+ self.get_activity_op_info()
56
+ if isinstance(self.op_names, str):
57
+ self.combine_performance_data(self.op_names)
58
+ elif isinstance(self.op_names, list):
59
+ for op_name in self.op_names:
60
+ self.combine_performance_data(op_name)
61
+ self.operation_info["device_id"] = self._dev_id
62
+ return json.dumps(self.operation_info)
63
+
64
+ def get_framework_summary(self):
65
+ """Get framework data."""
66
+ for filename in self.framework_info_dir:
67
+ op_side = filename.split('_')[0]
68
+ framework_file_path = os.path.join(self._output_path, filename)
69
+ PathManager.check_input_file_path(framework_file_path)
70
+ PathManager.check_directory_path_readable(framework_file_path)
71
+ with open(framework_file_path, 'r') as f_obj:
72
+ framework_info = f_obj.readlines()
73
+ for line_info in framework_info:
74
+ line_info = line_info.strip(' ').strip('\n').split(';')
75
+ # line_info[0]: op_type, line_info[1]: op_name, line_info[2]: graph_id, line_info[3]: input_shape;
76
+ input_shape = line_info[3:]
77
+ item = [line_info[0], line_info[1], input_shape, op_side]
78
+ if not self.op_step_shape_info.get(line_info[1]):
79
+ self.op_step_shape_info[line_info[1]].append(op_side)
80
+ self.op_step_shape_info[line_info[1]].append(input_shape)
81
+ if item not in self.framework_list:
82
+ self.framework_list.append(item)
83
+
84
+ def get_cpu_op_detail_info(self):
85
+ """Get cpu operators detail data."""
86
+ for filename in self.cpu_detail_info_dir:
87
+ op_side = filename.split('_')[0]
88
+ op_detail_file_path = os.path.join(self._output_path, filename)
89
+ PathManager.check_input_file_path(op_detail_file_path)
90
+ PathManager.check_directory_path_readable(op_detail_file_path)
91
+ with open(op_detail_file_path, 'r') as f_obj:
92
+ op_detail_info = f_obj.readlines()
93
+ for line_info in op_detail_info[1:]:
94
+ line_info = line_info.strip(' ').strip('\n').split(',')
95
+ if not self.op_detail.get(line_info[2]):
96
+ # line_info[4]: op_occurrences, line_info[5]: op_detail_time(us), line_info[6]: op_avg_time(us);
97
+ self.op_detail[line_info[2]] = [float(line_info[4]), float(line_info[5]),
98
+ float(line_info[6]), op_side]
99
+
100
+ def get_execute_times(self):
101
+ """Get gpu operators execute times."""
102
+ if self.gpu_op_type_info_dir:
103
+ gpu_op_type_file_path = os.path.join(self._output_path, self.gpu_op_type_info_dir[0])
104
+ PathManager.check_input_file_path(gpu_op_type_file_path)
105
+ PathManager.check_directory_path_readable(gpu_op_type_file_path)
106
+ with open(gpu_op_type_file_path, 'r') as fp:
107
+ op_type_info = fp.readlines()
108
+ for line_info in op_type_info[1:]:
109
+ line_info = line_info.strip(' ').strip('\n').split(',')
110
+ self.op_execute_times[line_info[0]] = line_info[1]
111
+
112
+ def get_activity_op_info(self):
113
+ """Get op detail data."""
114
+ all_file = os.listdir(self._output_path)
115
+ for file_name in all_file:
116
+ if file_name.startswith('gpu_op_type') and file_name.endswith(f'{self._dev_id}.csv'):
117
+ self.gpu_op_type_info_dir.append(file_name)
118
+ if not self.gpu_op_type_info_dir and self.activity_info_dir:
119
+ raise RuntimeError(f'The output file <%s> is not found.' % self.gpu_op_type_info_dir)
120
+ self.get_execute_times()
121
+ for filename in self.activity_info_dir:
122
+ op_side = filename.split('_')[0]
123
+ activity_file_path = os.path.join(self._output_path, filename)
124
+ PathManager.check_input_file_path(activity_file_path)
125
+ PathManager.check_directory_path_readable(activity_file_path)
126
+ with open(activity_file_path, 'r') as file:
127
+ activity_info = file.readlines()
128
+ for line_info in activity_info[1:]:
129
+ line_info = line_info.strip(' ').strip('\n').replace(', ', ';').split(',')
130
+ op_name = line_info[2].split('/')[-1]
131
+ # op_name: xxx-opx
132
+ op_type = op_name.split('-')[0]
133
+ op_value = self.op_execute_times.get(op_type)
134
+ if op_value is not None and op_value != '':
135
+ try:
136
+ op_occurrences = int(op_value)
137
+ except (ValueError, TypeError):
138
+ op_occurrences = 1
139
+ else:
140
+ op_occurrences = 1
141
+
142
+ op_total_time = float(line_info[-4])
143
+ if not self.op_detail.get(op_name):
144
+ # line_info[4]: op_occurrences, line_info[5]: op_detail_time(us), line_info[6]: op_avg_time(us);
145
+ if op_occurrences > 0:
146
+ avg_time = round(op_total_time / op_occurrences, 4)
147
+ else:
148
+ avg_time = 0
149
+ self.op_detail[op_name] = [
150
+ op_occurrences, op_total_time, avg_time, op_side
151
+ ]
152
+ else:
153
+ self.op_detail.get(op_name)[1] += op_total_time
154
+ self.op_detail.get(op_name)[2] = self.op_detail.get(op_name)[1] / self.op_detail.get(op_name)[0]
155
+ self.op_detail[op_name] = [
156
+ self.op_detail.get(op_name)[0],
157
+ round(self.op_detail.get(op_name)[1], 4),
158
+ round(self.op_detail.get(op_name)[2], 4), op_side
159
+ ]
160
+
161
+ def combine_performance_data(self, op_name):
162
+ """Combine operator detail info with framework info."""
163
+ unique_op_info = []
164
+ op_shape_dict = {}
165
+ operation_info = {}
166
+ factor = 1000 # convert time unit from ms to us.
167
+ for line_info in self.framework_list:
168
+ op_detail = self.op_detail.get(line_info[1])
169
+ if not op_detail:
170
+ continue
171
+ if op_name in line_info and line_info[3] == op_detail[3]:
172
+ op_side = line_info[3]
173
+ op_shape = '[{}]{}'.format(op_side, ','.join(line_info[2]))
174
+ op_occurrences = int(op_detail[0])
175
+ op_total_time = float(op_detail[1])
176
+ op_avg_time = float(op_detail[2])
177
+ if op_shape in op_shape_dict:
178
+ # Classify according to the operator information of the same shape.
179
+ op_shape_dict.get(op_shape)[0] += op_occurrences
180
+ op_shape_dict.get(op_shape)[1] += op_total_time
181
+ if op_shape_dict.get(op_shape)[0] > 0:
182
+ op_shape_dict.get(op_shape)[2] = op_shape_dict.get(op_shape)[1] / op_shape_dict.get(op_shape)[0]
183
+ else:
184
+ op_shape_dict.get(op_shape)[2] = 0
185
+ op_shape_dict[op_shape] = [
186
+ op_shape_dict.get(op_shape)[0], round(op_shape_dict.get(op_shape)[1], 4),
187
+ round(op_shape_dict.get(op_shape)[2], 4), op_side
188
+ ]
189
+ else:
190
+ op_shape_dict[op_shape] = [op_occurrences, op_total_time, op_avg_time, op_side]
191
+
192
+ for input_shape in op_shape_dict:
193
+ # 0: op_occurrences, 1: op_total_time, 2: op_avg_time, 3: op_side
194
+ operation_info['op_side'] = op_shape_dict.get(input_shape)[3]
195
+ operation_info['input_shape'] = input_shape.strip('[').split(']')[-1]
196
+ operation_info['op_occurrences'] = op_shape_dict.get(input_shape)[0]
197
+ if operation_info.get('op_side') == 'cpu':
198
+ operation_info['op_total_time(us)'] = round(op_shape_dict.get(input_shape)[1] * factor, 4)
199
+ operation_info['op_avg_time(us)'] = round(op_shape_dict.get(input_shape)[2] * factor, 4)
200
+ else:
201
+ operation_info['op_total_time(us)'] = op_shape_dict.get(input_shape)[1]
202
+ operation_info['op_avg_time(us)'] = op_shape_dict.get(input_shape)[2]
203
+ unique_op_info.append(operation_info)
204
+ operation_info = dict()
205
+
206
+ if unique_op_info:
207
+ self.operation_info[op_name] = unique_op_info
208
+ else:
209
+ raise RuntimeError(f'The information of <{op_name}> is not found. Please verify that the operator name is'
210
+ f' correct or the operator is used in the network.')
211
+
212
+ def get_device_target_filename(self):
213
+ """Get device target filename."""
214
+ gpu_framework_file = f'gpu_framework_{self._dev_id}.txt'
215
+ cpu_framework_file = f'cpu_framework_{self._dev_id}.txt'
216
+ gpu_activity_file = f'gpu_activity_data_{self._dev_id}.csv'
217
+ cpu_op_detail_file = f'cpu_op_detail_info_{self._dev_id}.csv'
218
+ all_file = os.listdir(self._output_path)
219
+ if not all_file:
220
+ raise RuntimeError(f'No profiler file is found in the path <%s>. '
221
+ f'Check whether the profiler path is correct.' % self._output_path)
222
+ if gpu_activity_file in all_file and gpu_framework_file not in all_file:
223
+ raise RuntimeError(f'The output file <%s> is not found.' % gpu_framework_file)
224
+ if cpu_op_detail_file in all_file and cpu_framework_file not in all_file:
225
+ raise RuntimeError(f'The output file <%s> is not found.' % cpu_framework_file)
226
+ if gpu_framework_file in all_file and gpu_activity_file not in all_file:
227
+ raise RuntimeError(f'The output file <%s> is not found.' % gpu_activity_file)
228
+ if cpu_framework_file in all_file and cpu_op_detail_file not in all_file:
229
+ raise RuntimeError(f'The output file <%s> is not found.' % cpu_op_detail_file)
230
+ if gpu_activity_file not in all_file and cpu_op_detail_file not in all_file:
231
+ raise RuntimeError(f'The profiling data of this card which device_id is equal to {self._dev_id} does not'
232
+ f' exist. Check whether device_id is correct.')
233
+ for file_name in all_file:
234
+ if file_name.endswith(f'activity_data_{self._dev_id}.csv'):
235
+ self.activity_info_dir.append(file_name)
236
+ if file_name.endswith(f'framework_{self._dev_id}.txt'):
237
+ self.framework_info_dir.append(file_name)
238
+ if file_name.startswith('cpu_op_detail') and file_name.endswith(f'{self._dev_id}.csv'):
239
+ self.cpu_detail_info_dir.append(file_name)
@@ -14,7 +14,10 @@
14
14
  # ============================================================================
15
15
  """Profiler output path"""
16
16
  import os
17
+ import glob
18
+ import re
17
19
  from typing import Any, Dict, Optional
20
+ from mindspore import log as logger
18
21
  from mindspore.profiler.common.path_manager import PathManager
19
22
 
20
23
 
@@ -49,12 +52,9 @@ class ProfilerOutputPath:
49
52
  _MINISTUDIO_PROFILER_OUTPUT = "mindstudio_profiler_output"
50
53
  _MINISTUDIO_ANALYZE_OUTPUT = "analyze"
51
54
 
52
- def __init__(self, rank_id: int, device_id: int):
53
- if not isinstance(rank_id, int) or not isinstance(device_id, int):
54
- raise ValueError("rank_id and device_id must be integers")
55
+ def __init__(self, rank_id: int):
55
56
 
56
57
  self._rank_id = rank_id
57
- self._device_id = device_id
58
58
  self._output_path: Optional[str] = None
59
59
  self._ascend_ms_dir: Optional[str] = None
60
60
  self._ascend_profiler_output_path: Optional[str] = None
@@ -269,10 +269,25 @@ class ProfilerOutputPath:
269
269
  self._msprof_profile_host_path = os.path.join(
270
270
  self._msprof_profile_path, ProfilerOutputPath._MINISTUDIO_PROFILER_HOST
271
271
  )
272
- self._msprof_profile_device_path = os.path.join(
273
- self._msprof_profile_path,
274
- ProfilerOutputPath._MINISTUDIO_PROFILER_DEVICE.format(self._device_id)
275
- )
272
+
273
+ device_pattern = os.path.join(self._msprof_profile_path, "device_*")
274
+ device_dirs = glob.glob(device_pattern)
275
+ valid_device_dirs = [d for d in device_dirs if re.match(r'^device_\d+$', os.path.basename(d))]
276
+
277
+ if valid_device_dirs:
278
+ device_dir = os.path.basename(valid_device_dirs[0])
279
+ device_id = device_dir.replace("device_", "")
280
+ self._msprof_profile_device_path = os.path.join(
281
+ self._msprof_profile_path,
282
+ ProfilerOutputPath._MINISTUDIO_PROFILER_DEVICE.format(device_id)
283
+ )
284
+ else:
285
+ logger.error(f"No device_* directory found in {self._msprof_profile_path}, using device_0 as default")
286
+ self._msprof_profile_device_path = os.path.join(
287
+ self._msprof_profile_path,
288
+ ProfilerOutputPath._MINISTUDIO_PROFILER_DEVICE.format("0")
289
+ )
290
+
276
291
  self._msprof_profile_log_path = os.path.join(
277
292
  self._msprof_profile_path, ProfilerOutputPath._MINISTUDIO_PROFILER_LOG
278
293
  )