mindspore 2.6.0__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 (455) 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 +64 -83
  18. mindspore/_extends/parse/resources.py +39 -0
  19. mindspore/_extends/parse/standard_method.py +47 -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 +177 -52
  41. mindspore/common/_utils.py +9 -1
  42. mindspore/common/api.py +338 -208
  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 +2 -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 +84 -133
  59. mindspore/communication/_comm_helper.py +46 -4
  60. mindspore/communication/management.py +79 -7
  61. mindspore/context.py +47 -38
  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 +69 -23
  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 +5 -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 +1 -0
  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 +4 -44
  145. mindspore/mint/distributed/__init__.py +5 -0
  146. mindspore/mint/distributed/distributed.py +425 -19
  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 +125 -101
  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 +488 -620
  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 +86 -85
  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 +2 -4
  186. mindspore/nn/optim/adasum.py +2 -2
  187. mindspore/nn/optim/lamb.py +1 -3
  188. mindspore/nn/optim/optimizer.py +1 -1
  189. mindspore/nn/optim/tft_wrapper.py +2 -3
  190. mindspore/nn/optim/thor.py +2 -2
  191. mindspore/nn/probability/distribution/_utils/utils.py +2 -2
  192. mindspore/nn/probability/distribution/exponential.py +2 -1
  193. mindspore/nn/probability/distribution/poisson.py +2 -1
  194. mindspore/nn/sparse/sparse.py +3 -3
  195. mindspore/nn/wrap/cell_wrapper.py +73 -42
  196. mindspore/nn/wrap/grad_reducer.py +37 -52
  197. mindspore/nn/wrap/loss_scale.py +72 -74
  198. mindspore/numpy/array_creations.py +7 -7
  199. mindspore/numpy/fft.py +1 -1
  200. mindspore/numpy/math_ops.py +1 -1
  201. mindspore/numpy/utils_const.py +1 -1
  202. mindspore/opencv_core452.dll +0 -0
  203. mindspore/opencv_imgcodecs452.dll +0 -0
  204. mindspore/opencv_imgproc452.dll +0 -0
  205. mindspore/ops/_grad_experimental/grad_comm_ops.py +51 -13
  206. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -0
  207. mindspore/ops/_grad_experimental/grad_inner_ops.py +0 -9
  208. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  209. mindspore/{experimental/es/__init__.py → ops/_op_impl/cpu/joinedstr_op.py} +12 -6
  210. mindspore/ops/_vmap/vmap_array_ops.py +6 -13
  211. mindspore/ops/_vmap/vmap_nn_ops.py +8 -16
  212. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +29 -10
  213. mindspore/ops/auto_generate/gen_extend_func.py +5 -55
  214. mindspore/ops/auto_generate/gen_ops_def.py +753 -273
  215. mindspore/ops/auto_generate/gen_ops_prim.py +1687 -958
  216. mindspore/ops/auto_generate/pyboost_inner_prim.py +31 -1
  217. mindspore/ops/composite/__init__.py +10 -0
  218. mindspore/ops/composite/base.py +9 -5
  219. mindspore/ops/composite/multitype_ops/__init__.py +12 -1
  220. mindspore/ops/composite/multitype_ops/_compile_utils.py +132 -108
  221. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -1
  222. mindspore/ops/composite/multitype_ops/add_impl.py +70 -2
  223. mindspore/ops/composite/multitype_ops/div_impl.py +49 -0
  224. mindspore/ops/composite/multitype_ops/floordiv_impl.py +29 -0
  225. mindspore/ops/composite/multitype_ops/getitem_impl.py +11 -0
  226. mindspore/ops/composite/multitype_ops/mod_impl.py +5 -3
  227. mindspore/ops/composite/multitype_ops/mul_impl.py +49 -0
  228. mindspore/ops/composite/multitype_ops/setitem_impl.py +57 -0
  229. mindspore/ops/composite/multitype_ops/sub_impl.py +34 -0
  230. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +14 -0
  231. mindspore/ops/function/__init__.py +4 -1
  232. mindspore/ops/function/_add_attr_func.py +11 -6
  233. mindspore/ops/function/array_func.py +17 -100
  234. mindspore/ops/function/debug_func.py +8 -5
  235. mindspore/ops/function/grad/grad_func.py +5 -13
  236. mindspore/ops/function/math_func.py +65 -399
  237. mindspore/ops/function/nn_func.py +44 -61
  238. mindspore/ops/function/other_func.py +4 -1
  239. mindspore/ops/function/random_func.py +31 -4
  240. mindspore/ops/functional.py +2 -3
  241. mindspore/ops/functional_overload.py +486 -18
  242. mindspore/ops/op_info_register.py +21 -0
  243. mindspore/ops/operations/__init__.py +5 -2
  244. mindspore/ops/operations/_custom_ops_utils.py +675 -8
  245. mindspore/ops/operations/_inner_ops.py +14 -18
  246. mindspore/ops/operations/_sequence_ops.py +1 -1
  247. mindspore/ops/operations/array_ops.py +4 -50
  248. mindspore/ops/operations/comm_ops.py +186 -41
  249. mindspore/ops/operations/custom_ops.py +244 -175
  250. mindspore/ops/operations/debug_ops.py +55 -4
  251. mindspore/ops/operations/image_ops.py +13 -13
  252. mindspore/ops/operations/manually_defined/ops_def.py +27 -28
  253. mindspore/ops/operations/math_ops.py +8 -9
  254. mindspore/ops/operations/nn_ops.py +6 -7
  255. mindspore/ops/primitive.py +9 -20
  256. mindspore/ops/tensor_method.py +52 -11
  257. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +1 -1
  258. mindspore/ops_generate/api/functional_map_cpp_generator.py +10 -9
  259. mindspore/ops_generate/api/functions_cc_generator.py +58 -10
  260. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +1 -1
  261. mindspore/ops_generate/common/base_generator.py +14 -0
  262. mindspore/ops_generate/common/gen_constants.py +7 -2
  263. mindspore/ops_generate/common/gen_utils.py +0 -19
  264. mindspore/ops_generate/common/op_proto.py +11 -4
  265. mindspore/ops_generate/common/template.py +88 -11
  266. mindspore/ops_generate/gen_ops.py +1 -1
  267. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +4 -4
  268. mindspore/ops_generate/op_def/ops_name_h_generator.py +0 -3
  269. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +0 -4
  270. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +5 -2
  271. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +49 -8
  272. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +2 -2
  273. mindspore/ops_generate/pyboost/gen_pyboost_func.py +31 -16
  274. mindspore/ops_generate/pyboost/op_template_parser.py +98 -72
  275. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +70 -273
  276. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +14 -6
  277. mindspore/ops_generate/pyboost/pyboost_functions_impl_cpp_generator.py +316 -0
  278. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +1 -1
  279. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +5 -3
  280. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +1 -1
  281. mindspore/ops_generate/pyboost/pyboost_internal_functions_cpp_generator.py +76 -0
  282. mindspore/ops_generate/pyboost/pyboost_internal_functions_h_generator.py +76 -0
  283. mindspore/ops_generate/pyboost/pyboost_internal_kernel_info_adapter_generator.py +125 -0
  284. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +4 -3
  285. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +348 -61
  286. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +1 -1
  287. mindspore/ops_generate/pyboost/pyboost_utils.py +118 -9
  288. mindspore/ops_generate/tensor_py_cc_generator.py +1 -24
  289. mindspore/parallel/_auto_parallel_context.py +9 -17
  290. mindspore/parallel/_cell_wrapper.py +106 -40
  291. mindspore/parallel/_parallel_serialization.py +4 -3
  292. mindspore/parallel/_ps_context.py +4 -6
  293. mindspore/parallel/_tensor.py +167 -12
  294. mindspore/parallel/_transformer/moe.py +1 -1
  295. mindspore/parallel/_transformer/transformer.py +17 -12
  296. mindspore/parallel/_utils.py +5 -11
  297. mindspore/parallel/auto_parallel.py +33 -12
  298. mindspore/parallel/checkpoint_convert.py +3 -3
  299. mindspore/parallel/checkpoint_transform.py +5 -1
  300. mindspore/parallel/cluster/process_entity/_api.py +88 -49
  301. mindspore/parallel/cluster/process_entity/_utils.py +95 -7
  302. mindspore/parallel/cluster/run.py +48 -7
  303. mindspore/parallel/function/__init__.py +8 -1
  304. mindspore/parallel/function/reshard_func.py +7 -6
  305. mindspore/parallel/nn/__init__.py +15 -2
  306. mindspore/parallel/nn/parallel_cell_wrapper.py +50 -14
  307. mindspore/parallel/nn/parallel_grad_reducer.py +7 -14
  308. mindspore/parallel/shard.py +9 -23
  309. mindspore/parallel/transform_safetensors.py +468 -174
  310. mindspore/pgodb140.dll +0 -0
  311. mindspore/pgort140.dll +0 -0
  312. mindspore/profiler/__init__.py +2 -1
  313. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -7
  314. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +3 -0
  315. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +3 -0
  316. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +3 -3
  317. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
  318. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +4 -4
  319. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +3 -3
  320. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +4 -1
  321. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +2 -1
  322. mindspore/profiler/analysis/task_manager.py +1 -1
  323. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +5 -1
  324. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +2 -1
  325. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +10 -9
  326. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +43 -23
  327. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +3 -2
  328. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +9 -5
  329. mindspore/profiler/analysis/viewer/ms_operator_details_viewer.py +132 -0
  330. mindspore/profiler/common/constant.py +16 -0
  331. mindspore/profiler/common/msprof_cmd_tool.py +2 -2
  332. mindspore/profiler/common/path_manager.py +9 -0
  333. mindspore/profiler/common/profiler_context.py +50 -29
  334. mindspore/profiler/common/profiler_info.py +0 -16
  335. mindspore/profiler/common/profiler_meta_data.py +1 -0
  336. mindspore/profiler/common/profiler_op_analyse.py +239 -0
  337. mindspore/profiler/common/profiler_output_path.py +23 -8
  338. mindspore/profiler/common/profiler_parameters.py +128 -35
  339. mindspore/profiler/dynamic_profile/__init__.py +0 -0
  340. mindspore/profiler/dynamic_profile/dynamic_monitor_proxy.py +39 -0
  341. mindspore/profiler/dynamic_profile/dynamic_profiler_config_context.py +666 -0
  342. mindspore/profiler/dynamic_profile/dynamic_profiler_utils.py +62 -0
  343. mindspore/profiler/dynamic_profiler.py +374 -338
  344. mindspore/profiler/envprofiler.py +42 -12
  345. mindspore/profiler/experimental_config.py +112 -7
  346. mindspore/profiler/mstx.py +33 -12
  347. mindspore/profiler/platform/__init__.py +2 -3
  348. mindspore/profiler/platform/cpu_profiler.py +10 -4
  349. mindspore/profiler/platform/npu_profiler.py +30 -20
  350. mindspore/profiler/profiler.py +218 -154
  351. mindspore/profiler/profiler_action_controller.py +65 -77
  352. mindspore/profiler/profiler_interface.py +2 -2
  353. mindspore/profiler/schedule.py +10 -4
  354. mindspore/rewrite/common/config.py +1 -0
  355. mindspore/rewrite/common/namer.py +1 -0
  356. mindspore/rewrite/common/namespace.py +1 -0
  357. mindspore/rewrite/node/node.py +31 -11
  358. mindspore/rewrite/parsers/assign_parser.py +1 -1
  359. mindspore/rewrite/symbol_tree/symbol_tree.py +2 -2
  360. mindspore/run_check/_check_version.py +7 -10
  361. mindspore/runtime/__init__.py +8 -6
  362. mindspore/runtime/event.py +10 -4
  363. mindspore/runtime/executor.py +87 -45
  364. mindspore/runtime/memory.py +22 -30
  365. mindspore/runtime/thread_bind_core.py +299 -165
  366. mindspore/safeguard/rewrite_obfuscation.py +12 -13
  367. mindspore/swresample-4.dll +0 -0
  368. mindspore/swscale-6.dll +0 -0
  369. mindspore/tbbmalloc.dll +0 -0
  370. mindspore/tinyxml2.dll +0 -0
  371. mindspore/train/_utils.py +9 -5
  372. mindspore/train/amp.py +43 -23
  373. mindspore/train/callback/__init__.py +5 -5
  374. mindspore/train/callback/_callback.py +2 -1
  375. mindspore/train/callback/_checkpoint.py +4 -14
  376. mindspore/train/callback/_flops_collector.py +11 -7
  377. mindspore/train/callback/_landscape.py +0 -1
  378. mindspore/train/callback/_train_fault_tolerance.py +72 -18
  379. mindspore/train/data_sink.py +15 -6
  380. mindspore/train/dataset_helper.py +14 -5
  381. mindspore/train/model.py +49 -47
  382. mindspore/train/serialization.py +168 -126
  383. mindspore/train/summary/summary_record.py +13 -2
  384. mindspore/train/train_thor/model_thor.py +2 -2
  385. mindspore/turbojpeg.dll +0 -0
  386. mindspore/utils/__init__.py +3 -2
  387. mindspore/utils/dryrun.py +0 -6
  388. mindspore/utils/runtime_execution_order_check.py +162 -78
  389. mindspore/utils/sdc_detect.py +68 -0
  390. mindspore/utils/utils.py +14 -17
  391. mindspore/vcmeta.dll +0 -0
  392. mindspore/vcruntime140.dll +0 -0
  393. mindspore/vcruntime140_1.dll +0 -0
  394. mindspore/version.py +1 -1
  395. {mindspore-2.6.0.dist-info → mindspore-2.7.0.dist-info}/METADATA +5 -4
  396. {mindspore-2.6.0.dist-info → mindspore-2.7.0.dist-info}/RECORD +400 -439
  397. mindspore/_deprecated/jit.py +0 -198
  398. mindspore/_extends/remote/kernel_build_server_ascend.py +0 -75
  399. mindspore/communication/_hccl_management.py +0 -297
  400. mindspore/experimental/es/embedding_service.py +0 -891
  401. mindspore/experimental/es/embedding_service_layer.py +0 -581
  402. mindspore/profiler/common/validator/__init__.py +0 -14
  403. mindspore/profiler/common/validator/validate_path.py +0 -84
  404. mindspore/profiler/parser/__init__.py +0 -14
  405. mindspore/profiler/parser/aicpu_data_parser.py +0 -272
  406. mindspore/profiler/parser/ascend_analysis/__init__.py +0 -14
  407. mindspore/profiler/parser/ascend_analysis/constant.py +0 -71
  408. mindspore/profiler/parser/ascend_analysis/file_manager.py +0 -180
  409. mindspore/profiler/parser/ascend_analysis/function_event.py +0 -185
  410. mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +0 -136
  411. mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +0 -131
  412. mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +0 -104
  413. mindspore/profiler/parser/ascend_analysis/path_manager.py +0 -313
  414. mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +0 -123
  415. mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +0 -86
  416. mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +0 -75
  417. mindspore/profiler/parser/ascend_cluster_generator.py +0 -116
  418. mindspore/profiler/parser/ascend_communicate_generator.py +0 -314
  419. mindspore/profiler/parser/ascend_flops_generator.py +0 -116
  420. mindspore/profiler/parser/ascend_fpbp_generator.py +0 -82
  421. mindspore/profiler/parser/ascend_hccl_generator.py +0 -271
  422. mindspore/profiler/parser/ascend_integrate_generator.py +0 -42
  423. mindspore/profiler/parser/ascend_memory_generator.py +0 -185
  424. mindspore/profiler/parser/ascend_msprof_exporter.py +0 -282
  425. mindspore/profiler/parser/ascend_msprof_generator.py +0 -187
  426. mindspore/profiler/parser/ascend_op_generator.py +0 -334
  427. mindspore/profiler/parser/ascend_steptrace_generator.py +0 -94
  428. mindspore/profiler/parser/ascend_timeline_generator.py +0 -545
  429. mindspore/profiler/parser/base_timeline_generator.py +0 -483
  430. mindspore/profiler/parser/container.py +0 -229
  431. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +0 -697
  432. mindspore/profiler/parser/flops_parser.py +0 -531
  433. mindspore/profiler/parser/framework_enum.py +0 -111
  434. mindspore/profiler/parser/framework_parser.py +0 -464
  435. mindspore/profiler/parser/framework_struct.py +0 -61
  436. mindspore/profiler/parser/gpu_analysis/__init__.py +0 -14
  437. mindspore/profiler/parser/gpu_analysis/function_event.py +0 -44
  438. mindspore/profiler/parser/gpu_analysis/fwk_file_parser.py +0 -89
  439. mindspore/profiler/parser/gpu_analysis/profiler_info_parser.py +0 -72
  440. mindspore/profiler/parser/hccl_parser.py +0 -573
  441. mindspore/profiler/parser/hwts_log_parser.py +0 -122
  442. mindspore/profiler/parser/integrator.py +0 -526
  443. mindspore/profiler/parser/memory_usage_parser.py +0 -277
  444. mindspore/profiler/parser/minddata_analyzer.py +0 -800
  445. mindspore/profiler/parser/minddata_parser.py +0 -186
  446. mindspore/profiler/parser/minddata_pipeline_parser.py +0 -299
  447. mindspore/profiler/parser/op_intermediate_parser.py +0 -149
  448. mindspore/profiler/parser/optime_parser.py +0 -250
  449. mindspore/profiler/parser/profiler_info.py +0 -213
  450. mindspore/profiler/parser/step_trace_parser.py +0 -666
  451. mindspore/utils/hooks.py +0 -81
  452. /mindspore/common/{_auto_dynamic.py → dynamic_shape/_auto_dynamic.py} +0 -0
  453. {mindspore-2.6.0.dist-info → mindspore-2.7.0.dist-info}/WHEEL +0 -0
  454. {mindspore-2.6.0.dist-info → mindspore-2.7.0.dist-info}/entry_points.txt +0 -0
  455. {mindspore-2.6.0.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
  )