mindspore 2.6.0__cp310-cp310-win_amd64.whl → 2.7.0__cp310-cp310-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mindspore might be problematic. Click here for more details.

Files changed (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.cp310-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
  8. mindspore/_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
@@ -1,334 +0,0 @@
1
- # Copyright 2023 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
- """op analyse model"""
16
- import csv
17
- import json
18
- import logging
19
- import os
20
- import stat
21
- from typing import Optional, List
22
-
23
- import numpy as np
24
- from mindspore import log as logger
25
- from mindspore.profiler.common.exceptions.exceptions import ProfilerIOException
26
-
27
-
28
- class AscendOPGenerator:
29
- """Generate ascend op data from DataFrame."""
30
-
31
- def __init__(
32
- self, op_summary: np.ndarray, op_statistic: np.ndarray,
33
- dynamic_status: bool = False, launch_ops: Optional[List] = None
34
- ):
35
- self.op_summary = op_summary
36
- self.op_statistic = op_statistic
37
- self.dynamic_status = dynamic_status
38
- self.op_detail = None
39
- self.op_type = None
40
- self.aicpu_detail = None
41
- self.framework_raw = None
42
- self.output_timeline_data = None
43
- self.launch_ops = launch_ops if launch_ops else []
44
- self.aclnn_status = bool(launch_ops)
45
- self._full_kernel_name = None
46
- self._sub_graph = None
47
- self._op_name = None
48
- self._kernel_name = None
49
-
50
- self.op_detail_dt = np.dtype(
51
- [('full_kernel_name', object), ('task_duration', float),
52
- ('execution_frequency', int), ('task_type', object)])
53
-
54
- self.op_type_dt = np.dtype(
55
- [('kernel_type', object), ('total_time', float), ('execution_frequency', int), ('percent', float)])
56
-
57
- self.aicpu_detail_dt = np.dtype(
58
- [('serial_number', int), ('kernel_type', object), ('total_time', float), ('dispatch_time', float),
59
- ('execution_time', float), ('run_start', float), ('run_end', float)])
60
-
61
- self.framwork_raw_dt = np.dtype(
62
- [('task_id', int), ('stream_id', int), ('block_dim', int), ('full_kernel_name', object),
63
- ('op_name', object), ('kernel_name', object), ('kernel_type', object), ('subgraph', object),
64
- ('op_info', object), ('model_id', int), ('task_type', object)])
65
-
66
- def parse(self):
67
- """
68
- Analyse op summary op statistic generate op data.
69
- """
70
- if isinstance(self.op_summary, np.ndarray) and self.op_summary.shape[0] == 0 or \
71
- not isinstance(self.op_summary, np.ndarray) and not self.op_summary:
72
- return
73
- self._combine_op_and_kernel(self.op_summary, self.launch_ops)
74
- # aicore intermediation detail
75
- self.op_detail = self._parse_op_detail(self.op_summary)
76
-
77
- # aicore intermediation type
78
- self.op_type = self._parse_op_type(self.op_statistic)
79
-
80
- # aicpu_intermediation
81
- self.aicpu_detail = self._parse_aicpu_detail(self.op_summary)
82
-
83
- # framwork_raw
84
- self.framework_raw = self._parse_framework_raw(self.op_summary)
85
-
86
- self.output_timeline_data = self.op_summary[self.op_summary['Task Type'] == 'AI_CORE'][
87
- ['Op Name', 'Stream ID', 'Task Start Time', 'Task Duration']]
88
-
89
- def write(self, aicore_intermediate_detail_path, aicore_intermediate_type_path, aicpu_intermediate_detail_path,
90
- framework_raw_path, output_timeline_data_path):
91
- """
92
- Write the op_intermediate_detail.csv op_intermediate_type.csv aicpu_intermediate.csv and framework_raw.csv.
93
-
94
- Args:
95
- aicore_intermediate_detail_path(str): op_intermediate_detail.csv path.
96
- aicore_intermediate_type_path(str): op_intermediate_type.csv path.
97
- aicpu_intermediate_detail_path(str): aicpu_intermediate.csv path.
98
- framework_raw_path: framework_raw.csv path
99
- output_timeline_data_path : output_timeline_data.txt path
100
- """
101
- # aicore intermediation detail
102
- if isinstance(self.op_detail, np.ndarray) and self.op_detail.shape[0] != 0:
103
- try:
104
- with os.fdopen(os.open(aicore_intermediate_detail_path,
105
- os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR),
106
- 'w') as aicore_detail:
107
- writer = csv.writer(aicore_detail)
108
- writer.writerow(self.op_detail.dtype.names)
109
- writer.writerows(self.op_detail.tolist())
110
- except (IOError, OSError) as err:
111
- logging.critical('Errot occurred when write aicore detail file: %s', err)
112
- raise ProfilerIOException() from err
113
- if os.path.exists(aicore_intermediate_detail_path):
114
- os.chmod(aicore_intermediate_detail_path, stat.S_IREAD | stat.S_IWRITE)
115
-
116
- # aicore intermediation type
117
- if isinstance(self.op_type, np.ndarray) and self.op_type.shape[0] != 0:
118
- try:
119
- with os.fdopen(os.open(aicore_intermediate_type_path,
120
- os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR),
121
- 'w') as aicore_type:
122
- writer = csv.writer(aicore_type)
123
- writer.writerow(self.op_type.dtype.names)
124
- writer.writerows(self.op_type.tolist())
125
- except (IOError, OSError) as err:
126
- logging.critical('Errot occurred when write aicore type file: %s', err)
127
- raise ProfilerIOException() from err
128
- if os.path.exists(aicore_intermediate_type_path):
129
- os.chmod(aicore_intermediate_type_path, stat.S_IREAD | stat.S_IWRITE)
130
-
131
- # aicpu_intermediation
132
- if isinstance(self.aicpu_detail, np.ndarray) and self.aicpu_detail.shape[0] != 0:
133
- try:
134
- with os.fdopen(os.open(aicpu_intermediate_detail_path,
135
- os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR),
136
- 'w') as aicpu_type:
137
- writer = csv.writer(aicpu_type)
138
- writer.writerow(self.aicpu_detail.dtype.names)
139
- writer.writerows(self.aicpu_detail.tolist())
140
- except (IOError, OSError) as err:
141
- logging.critical('Errot occurred when write aicpu detail file: %s', err)
142
- raise ProfilerIOException() from err
143
- if os.path.exists(aicpu_intermediate_detail_path):
144
- os.chmod(aicpu_intermediate_detail_path, stat.S_IREAD | stat.S_IWRITE)
145
-
146
- # framwork_raw
147
- if isinstance(self.framework_raw, np.ndarray) and self.framework_raw.shape[0] != 0:
148
- try:
149
- with os.fdopen(os.open(framework_raw_path,
150
- os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR),
151
- 'w') as framework:
152
- writer = csv.writer(framework)
153
- writer.writerow(self.framework_raw.dtype.names)
154
- writer.writerows(self.framework_raw.tolist())
155
- except (IOError, OSError) as err:
156
- logging.critical('Errot occurred when write framework file: %s', err)
157
- raise ProfilerIOException() from err
158
- if os.path.exists(framework_raw_path):
159
- os.chmod(framework_raw_path, stat.S_IREAD | stat.S_IWRITE)
160
-
161
- # output_timeline_data
162
- if isinstance(self.output_timeline_data, np.ndarray) and self.output_timeline_data.size and \
163
- self.output_timeline_data.shape[0] != 0 and output_timeline_data_path:
164
- try:
165
- with os.fdopen(os.open(output_timeline_data_path,
166
- os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR),
167
- 'w') as output_timeline_data:
168
- writer = csv.writer(output_timeline_data)
169
- writer.writerow(['kernel_name', 'stream_id', 'start_time(us)', 'duration(ms)'])
170
- writer.writerows(self.output_timeline_data.tolist())
171
- except (IOError, OSError) as err:
172
- logging.critical('Error occurred when write output timeline data file: %s', err)
173
- raise ProfilerIOException() from err
174
- if os.path.exists(aicpu_intermediate_detail_path):
175
- os.chmod(aicpu_intermediate_detail_path, stat.S_IREAD | stat.S_IWRITE)
176
-
177
- def _combine_op_and_kernel(self, op_summary, launch_ops):
178
- """update op name, kernel name etc."""
179
- if isinstance(op_summary, np.ndarray) and op_summary.shape[0] == 0 or not isinstance(op_summary, np.ndarray) \
180
- and not op_summary:
181
- return
182
- self._full_kernel_name = op_summary['Op Name'].copy()
183
- self._op_name = op_summary['Op Name'].copy()
184
- self._kernel_name = np.array(
185
- [x[-1] for x in np.char.split(op_summary['Op Name'].astype(str), sep='/')], dtype=object)
186
- self._sub_graph = np.array(
187
- [x[0] for x in np.char.split(op_summary['Op Name'].astype(str), sep='/')], dtype=object)
188
-
189
- if launch_ops and len(launch_ops) != len(op_summary):
190
- logger.error("Size mismatch between op_summary and launch_ops!")
191
- launch_ops = []
192
-
193
- for index, launch_op in enumerate(launch_ops):
194
- if not launch_op:
195
- continue
196
- self._op_name[index] = launch_op
197
- self._kernel_name[index] = self._full_kernel_name[index]
198
- self._full_kernel_name[index] = f"{launch_op}/{self._full_kernel_name[index]}"
199
- self._sub_graph[index] = launch_op.split("/")[0]
200
-
201
- def _parse_op_detail(self, op_summary):
202
- """
203
- Analyse op summary generate op detail data.
204
-
205
- Args:
206
- op_summary(DataFrame): op summary data.
207
- """
208
- if isinstance(op_summary, np.ndarray) and op_summary.shape[0] == 0 or \
209
- not isinstance(op_summary, np.ndarray) and not op_summary:
210
- return None
211
- if self.aclnn_status:
212
- op_detail = np.empty((len(op_summary),), dtype=self.op_detail_dt)
213
- op_detail['task_type'] = op_summary['Task Type']
214
- op_detail['execution_frequency'] = np.ones((len(op_summary),), dtype=int)
215
- op_detail['task_duration'] = op_summary['Task Duration']
216
- op_detail['full_kernel_name'] = self._full_kernel_name
217
- else:
218
- groups, index, inverse, counts = np.unique(op_summary['Op Name'], return_index=True,
219
- return_inverse=True, return_counts=True)
220
-
221
- op_detail = np.empty((len(groups),), dtype=self.op_detail_dt)
222
- op_detail['full_kernel_name'] = groups
223
- op_detail['task_type'] = op_summary[index]['Task Type']
224
- nonzero_duration = np.bincount(inverse) != 0
225
- op_detail['task_duration'] = np.where(nonzero_duration, np.bincount(
226
- inverse, weights=op_summary['Task Duration']) / np.bincount(inverse), 0)
227
- op_detail['execution_frequency'] = counts
228
-
229
- return op_detail
230
-
231
- def _parse_op_type(self, op_statistic):
232
- """
233
- Analyse op statistic generate op type data.
234
-
235
- Args:
236
- op_statistic(DataFrame): op statistic data.
237
- """
238
- if isinstance(op_statistic, np.ndarray) and op_statistic.shape[0] == 0 or \
239
- not isinstance(op_statistic, np.ndarray) and not op_statistic:
240
- return None
241
- groups, _, inverse, _ = np.unique(op_statistic['Op Type'], return_index=True, return_inverse=True,
242
- return_counts=True)
243
-
244
- op_type = np.empty((len(groups),), dtype=self.op_type_dt)
245
- op_type['kernel_type'] = groups
246
- op_type['total_time'] = np.bincount(inverse, weights=op_statistic['Total Time'])
247
- op_type['execution_frequency'] = np.bincount(inverse, weights=op_statistic['Count'])
248
- op_type['percent'] = op_type['total_time'] / np.sum(op_statistic['Total Time']) if np.sum(
249
- op_statistic['Total Time']) != 0 else 0
250
-
251
- return op_type
252
-
253
- def _parse_aicpu_detail(self, op_summary):
254
- """
255
- Analyse op summary generate aicpu detail data.
256
-
257
- Args:
258
- op_summary(DataFrame): op summary data.
259
- """
260
- if isinstance(op_summary, np.ndarray) and op_summary.shape[0] == 0 or \
261
- not isinstance(op_summary, np.ndarray) and not op_summary:
262
- return None
263
- op_summary = op_summary[op_summary['Task Type'] == 'AI_CPU']
264
-
265
- aicpu_detail = np.empty((len(op_summary),), dtype=self.aicpu_detail_dt)
266
-
267
- aicpu_detail['serial_number'] = [i for i in range(1, op_summary.shape[0] + 1)]
268
- aicpu_detail['kernel_type'] = op_summary['Op Type']
269
- aicpu_detail['total_time'] = op_summary['Task Duration'] + op_summary['Task Wait Time']
270
- aicpu_detail['dispatch_time'] = op_summary['Task Wait Time']
271
- aicpu_detail['execution_time'] = op_summary['Task Duration']
272
- aicpu_detail['run_start'] = op_summary['Task Start Time']
273
- aicpu_detail['run_end'] = aicpu_detail['run_start'] + aicpu_detail['total_time']
274
-
275
- return aicpu_detail
276
-
277
- def _parse_framework_raw(self, op_summary):
278
- """
279
- Analyse op summary generate op framework data.
280
-
281
- Args:
282
- op_summary(DataFrame): op summary data.
283
- """
284
-
285
- def op_info_analyse(row):
286
- """generate op info data"""
287
- if not row['Input Shapes']:
288
- return ""
289
- input_shapes = row['Input Shapes'].replace('"', '').split(';')
290
- input_data_types = row['Input Data Types'].replace('_', '').split(';')
291
- input_formats = row['Input Formats'].replace('_', '').split(';')
292
- output_shapes = row['Output Shapes'].replace('"', '').split(';')
293
- output_data_types = row['Output Data Types'].replace('_', '').split(';')
294
- output_formats = row['Output Formats'].replace('_', '').split(';')
295
- op_info = {}
296
- if isinstance(input_shapes, list) and len(input_shapes) >= 1 and input_shapes[0] != '':
297
- input_size = len(input_shapes)
298
- for i in range(input_size):
299
- op_info[f'Input_{i}'] = {
300
- 'format': input_formats[i],
301
- 'data_type': input_data_types[i],
302
- 'shape': input_shapes[i]
303
- }
304
- if isinstance(output_shapes, list) and len(output_shapes) >= 1 and output_shapes[0] != '':
305
- output_size = len(output_shapes)
306
- for i in range(output_size):
307
- op_info[f'Output_{i}'] = {
308
- 'format': output_formats[i],
309
- 'data_type': output_data_types[i],
310
- 'shape': output_shapes[i]
311
- }
312
- return json.dumps(op_info)
313
- if isinstance(op_summary, np.ndarray) and op_summary.shape[0] == 0 or \
314
- not isinstance(op_summary, np.ndarray) and not op_summary:
315
- return None
316
- if self.dynamic_status or self.aclnn_status:
317
- index = list(range(op_summary.shape[0]))
318
- else:
319
- _, index, _, _ = np.unique(op_summary['Op Name'], return_index=True, return_inverse=True,
320
- return_counts=True)
321
- framwork_raw = np.empty((len(index),), dtype=self.framwork_raw_dt)
322
-
323
- framwork_raw['task_id'] = op_summary[index]['Task ID']
324
- framwork_raw['stream_id'] = op_summary[index]['Stream ID']
325
- framwork_raw['full_kernel_name'] = self._full_kernel_name[index]
326
- framwork_raw['op_name'] = self._op_name[index]
327
- framwork_raw['kernel_name'] = self._kernel_name[index]
328
- framwork_raw['kernel_type'] = op_summary[index]['Op Type']
329
- framwork_raw['subgraph'] = self._sub_graph[index]
330
- framwork_raw['op_info'] = [op_info_analyse(x) for x in op_summary[index]]
331
- framwork_raw['model_id'] = op_summary[index]['Model ID']
332
- framwork_raw['task_type'] = op_summary[index]['Task Type']
333
-
334
- return framwork_raw
@@ -1,94 +0,0 @@
1
- # Copyright 2023 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
- """"step analyse model"""
16
- import csv
17
- import logging
18
- import os
19
- import stat
20
-
21
- import numpy as np
22
- from mindspore.profiler.common.exceptions.exceptions import ProfilerIOException
23
-
24
-
25
- class AscendStepTraceGenerator:
26
- """Generate ascend steptrace data from DataFrame."""
27
-
28
- def __init__(self, steptrace):
29
- self.steptrace = steptrace
30
- self.steptrace_detail = None
31
-
32
- self.steptrace_detail_dt = [
33
- ('step_num', object), ('start_point', np.int64), ('end_point', np.int64),
34
- ('total', np.int64), ('fp_point', np.int64), ('bp_point', np.int64),
35
- ('iteration_interval', np.int64), ('fp_and_bp', np.int64), ('tail', np.int64)
36
- ]
37
-
38
- def parse(self):
39
- """Analyse the original steptrace data generate steptrace data."""
40
- if not isinstance(self.steptrace, np.ndarray) or self.steptrace.shape[0] == 0 or not self.steptrace.tolist():
41
- return
42
- for name in self.steptrace.dtype.names[9::2]:
43
- self.steptrace_detail_dt.append((name, np.int64))
44
- self.steptrace_detail_dt.append((f'{name}_start_point', np.int64))
45
- self.steptrace_detail_dt.append((f'{name}_end_point', np.int64))
46
- self.steptrace_detail_dt = np.dtype(self.steptrace_detail_dt)
47
- self.steptrace_detail = np.empty((len(self.steptrace),), dtype=self.steptrace_detail_dt)
48
-
49
- unit = 1e+5
50
- self.steptrace_detail['step_num'] = self.steptrace['Iteration ID']
51
- self.steptrace_detail['start_point'] = (self.steptrace['FP Start'] - self.steptrace['Data Aug Bound']) * unit
52
- self.steptrace_detail['end_point'] = self.steptrace['Iteration End'] * unit
53
- self.steptrace_detail['total'] = (self.steptrace['Iteration Time'] + self.steptrace['Data Aug Bound']) * unit
54
- self.steptrace_detail['fp_point'] = self.steptrace['FP Start'] * unit
55
- self.steptrace_detail['bp_point'] = self.steptrace['BP End'] * unit
56
- self.steptrace_detail['iteration_interval'] = self.steptrace['Data Aug Bound'] * unit
57
- self.steptrace_detail['fp_and_bp'] = self.steptrace['FP to BP Time'] * unit
58
- self.steptrace_detail['tail'] = self.steptrace['Iteration Refresh'] * unit
59
-
60
- for name in self.steptrace.dtype.names[9::2]:
61
- self.steptrace_detail[name] = self.steptrace[f'{name} duration'] * unit
62
- self.steptrace_detail[f'{name}_start_point'] = self.steptrace[name] * unit
63
- self.steptrace_detail[f'{name}_end_point'] = (self.steptrace[name] + self.steptrace[
64
- f'{name} duration']) * unit
65
-
66
- if self.steptrace_detail.shape[0] > 1:
67
- avg_values = np.mean(self.steptrace_detail.tolist(), axis=0)
68
- avg_row = np.array([tuple(avg_values)], dtype=self.steptrace_detail_dt)
69
- else:
70
- avg_row = self.steptrace_detail[0]
71
- avg_row['step_num'] = '-'
72
- self.steptrace_detail = np.append(self.steptrace_detail, avg_row)
73
-
74
- def write(self, step_trace_intermediate_file_path):
75
- """
76
- Write the step_trace_raw.cs
77
-
78
- Args:
79
- step_trace_intermediate_file_path(str): step_trace_raw.csv path.
80
-
81
- """
82
- if not isinstance(self.steptrace_detail, np.ndarray):
83
- return
84
- try:
85
- with os.fdopen(os.open(step_trace_intermediate_file_path,
86
- os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR), 'w') as st:
87
- writer = csv.writer(st)
88
- writer.writerow(self.steptrace_detail.dtype.names)
89
- writer.writerows(self.steptrace_detail.tolist())
90
- except (IOError, OSError) as err:
91
- logging.critical('Errot occurred when write step trace file: %s', err)
92
- raise ProfilerIOException() from err
93
- if os.path.exists(step_trace_intermediate_file_path):
94
- os.chmod(step_trace_intermediate_file_path, stat.S_IREAD | stat.S_IWRITE)