mindspore 2.6.0rc1__cp311-cp311-win_amd64.whl → 2.7.0__cp311-cp311-win_amd64.whl

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

Potentially problematic release.


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

Files changed (458) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
  3. mindspore/Newtonsoft.Json.dll +0 -0
  4. mindspore/__init__.py +2 -2
  5. mindspore/_c_dataengine.cp311-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp311-win_amd64.pyd +0 -0
  8. mindspore/_checkparam.py +42 -11
  9. mindspore/_extends/builtin_operations.py +3 -3
  10. mindspore/{_deprecated → _extends/optimize}/__init__.py +9 -3
  11. mindspore/_extends/optimize/cell_utils.py +96 -0
  12. mindspore/_extends/parallel_compile/akg_compiler/custom.py +1109 -0
  13. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  14. mindspore/_extends/parse/__init__.py +3 -3
  15. mindspore/_extends/parse/compile_config.py +44 -22
  16. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +1 -2
  17. mindspore/_extends/parse/parser.py +65 -84
  18. mindspore/_extends/parse/resources.py +39 -0
  19. mindspore/_extends/parse/standard_method.py +58 -14
  20. mindspore/_extends/parse/trope.py +8 -1
  21. mindspore/_extends/pijit/__init__.py +1 -2
  22. mindspore/_extends/pijit/pijit_func_white_list.py +2 -5
  23. mindspore/amp.py +4 -22
  24. mindspore/atlprov.dll +0 -0
  25. mindspore/avcodec-59.dll +0 -0
  26. mindspore/avdevice-59.dll +0 -0
  27. mindspore/avfilter-8.dll +0 -0
  28. mindspore/avformat-59.dll +0 -0
  29. mindspore/avutil-57.dll +0 -0
  30. mindspore/boost/adasum.py +1 -1
  31. mindspore/boost/boost_cell_wrapper.py +4 -4
  32. mindspore/c1.dll +0 -0
  33. mindspore/c1xx.dll +0 -0
  34. mindspore/c2.dll +0 -0
  35. mindspore/common/__init__.py +43 -12
  36. mindspore/common/_grad_function.py +2 -1
  37. mindspore/common/_pijit_context.py +28 -7
  38. mindspore/common/_stub_tensor.py +1 -209
  39. mindspore/common/_tensor_cpp_method.py +1 -1
  40. mindspore/common/_tensor_docs.py +178 -53
  41. mindspore/common/_utils.py +9 -1
  42. mindspore/common/api.py +377 -203
  43. mindspore/common/dtype.py +108 -57
  44. mindspore/common/dump.py +11 -16
  45. mindspore/common/dynamic_shape/__init__.py +0 -0
  46. mindspore/common/{auto_dynamic_shape.py → dynamic_shape/auto_dynamic_shape.py} +17 -23
  47. mindspore/common/dynamic_shape/enable_dynamic.py +197 -0
  48. mindspore/common/file_system.py +59 -9
  49. mindspore/common/generator.py +5 -3
  50. mindspore/common/hook_handle.py +33 -5
  51. mindspore/common/jit_config.py +1 -1
  52. mindspore/common/jit_trace.py +84 -105
  53. mindspore/common/np_dtype.py +3 -3
  54. mindspore/common/parameter.py +27 -29
  55. mindspore/common/recompute.py +5 -7
  56. mindspore/common/sparse_tensor.py +0 -3
  57. mindspore/common/symbol.py +0 -1
  58. mindspore/common/tensor.py +117 -131
  59. mindspore/communication/_comm_helper.py +46 -4
  60. mindspore/communication/management.py +79 -7
  61. mindspore/context.py +67 -55
  62. mindspore/dataset/__init__.py +1 -1
  63. mindspore/dataset/audio/transforms.py +1 -1
  64. mindspore/dataset/core/config.py +38 -4
  65. mindspore/dataset/engine/datasets.py +350 -322
  66. mindspore/dataset/engine/datasets_user_defined.py +70 -24
  67. mindspore/dataset/engine/iterators.py +2 -2
  68. mindspore/dataset/engine/obs/config_loader.py +2 -2
  69. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +8 -0
  70. mindspore/dataset/transforms/c_transforms.py +2 -2
  71. mindspore/dataset/transforms/py_transforms.py +7 -3
  72. mindspore/dataset/transforms/transforms.py +10 -6
  73. mindspore/dataset/vision/__init__.py +1 -1
  74. mindspore/dataset/vision/py_transforms.py +8 -8
  75. mindspore/dataset/vision/transforms.py +17 -5
  76. mindspore/dataset/vision/utils.py +632 -21
  77. mindspore/dataset/vision/validators.py +1 -0
  78. mindspore/device_context/ascend/device.py +1 -1
  79. mindspore/device_context/ascend/op_tuning.py +35 -1
  80. mindspore/device_context/gpu/__init__.py +2 -2
  81. mindspore/device_context/gpu/device.py +1 -1
  82. mindspore/device_context/gpu/op_precision.py +4 -2
  83. mindspore/device_context/gpu/op_tuning.py +6 -3
  84. mindspore/device_manager.py +16 -9
  85. mindspore/dnnl.dll +0 -0
  86. mindspore/dpcmi.dll +0 -0
  87. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +3 -4
  88. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  89. mindspore/experimental/optim/adadelta.py +13 -20
  90. mindspore/experimental/optim/adagrad.py +15 -22
  91. mindspore/experimental/optim/adam.py +17 -24
  92. mindspore/experimental/optim/adamax.py +14 -22
  93. mindspore/experimental/optim/adamw.py +28 -34
  94. mindspore/experimental/optim/asgd.py +15 -25
  95. mindspore/experimental/optim/lr_scheduler.py +27 -45
  96. mindspore/experimental/optim/nadam.py +14 -24
  97. mindspore/experimental/optim/optimizer.py +13 -23
  98. mindspore/experimental/optim/radam.py +18 -24
  99. mindspore/experimental/optim/rmsprop.py +14 -25
  100. mindspore/experimental/optim/rprop.py +15 -26
  101. mindspore/experimental/optim/sgd.py +9 -19
  102. mindspore/hal/__init__.py +4 -4
  103. mindspore/hal/contiguous_tensors_handle.py +2 -2
  104. mindspore/hal/memory.py +27 -7
  105. mindspore/include/api/cell.h +65 -5
  106. mindspore/include/api/cfg.h +24 -7
  107. mindspore/include/api/context.h +1 -0
  108. mindspore/include/api/delegate.h +10 -2
  109. mindspore/include/api/dual_abi_helper.h +100 -19
  110. mindspore/include/api/graph.h +14 -1
  111. mindspore/include/api/kernel.h +16 -3
  112. mindspore/include/api/kernel_api.h +9 -1
  113. mindspore/include/api/metrics/accuracy.h +9 -0
  114. mindspore/include/api/model.h +8 -1
  115. mindspore/include/api/model_group.h +4 -0
  116. mindspore/include/api/model_parallel_runner.h +2 -0
  117. mindspore/include/api/status.h +48 -10
  118. mindspore/include/api/types.h +8 -3
  119. mindspore/include/c_api/model_c.h +0 -58
  120. mindspore/include/c_api/tensor_c.h +0 -26
  121. mindspore/include/dataset/constants.h +9 -0
  122. mindspore/include/dataset/vision_ascend.h +1 -1
  123. mindspore/jpeg62.dll +0 -0
  124. mindspore/mindrecord/tools/cifar10.py +61 -11
  125. mindspore/mindrecord/tools/cifar10_to_mr.py +5 -0
  126. mindspore/mindspore_backend_common.dll +0 -0
  127. mindspore/mindspore_backend_manager.dll +0 -0
  128. mindspore/mindspore_common.dll +0 -0
  129. mindspore/mindspore_core.dll +0 -0
  130. mindspore/mindspore_cpu_res_manager.dll +0 -0
  131. mindspore/mindspore_dump.dll +0 -0
  132. mindspore/mindspore_frontend.dll +0 -0
  133. mindspore/mindspore_glog.dll +0 -0
  134. mindspore/mindspore_memory_pool.dll +0 -0
  135. mindspore/mindspore_ms_backend.dll +0 -0
  136. mindspore/mindspore_ops.dll +0 -0
  137. mindspore/mindspore_ops_host.dll +0 -0
  138. mindspore/mindspore_ops_kernel_common.dll +0 -0
  139. mindspore/mindspore_profiler.dll +0 -0
  140. mindspore/mindspore_pyboost.dll +0 -0
  141. mindspore/mindspore_pynative.dll +0 -0
  142. mindspore/mindspore_res_manager.dll +0 -0
  143. mindspore/mindspore_runtime_pipeline.dll +0 -0
  144. mindspore/mint/__init__.py +6 -46
  145. mindspore/mint/distributed/__init__.py +5 -0
  146. mindspore/mint/distributed/distributed.py +429 -23
  147. mindspore/mint/nn/__init__.py +1 -1
  148. mindspore/mint/nn/functional.py +53 -6
  149. mindspore/mint/nn/layer/_functions.py +163 -294
  150. mindspore/mint/nn/layer/activation.py +8 -6
  151. mindspore/mint/nn/layer/conv.py +140 -104
  152. mindspore/mint/nn/layer/normalization.py +11 -25
  153. mindspore/mint/optim/adam.py +19 -18
  154. mindspore/mint/optim/adamw.py +14 -8
  155. mindspore/mint/optim/sgd.py +5 -5
  156. mindspore/msobj140.dll +0 -0
  157. mindspore/mspdb140.dll +0 -0
  158. mindspore/mspdbcore.dll +0 -0
  159. mindspore/mspdbst.dll +0 -0
  160. mindspore/mspft140.dll +0 -0
  161. mindspore/msvcdis140.dll +0 -0
  162. mindspore/msvcp140_1.dll +0 -0
  163. mindspore/msvcp140_2.dll +0 -0
  164. mindspore/msvcp140_atomic_wait.dll +0 -0
  165. mindspore/msvcp140_codecvt_ids.dll +0 -0
  166. mindspore/nn/cell.py +491 -623
  167. mindspore/nn/grad/cell_grad.py +11 -12
  168. mindspore/nn/layer/activation.py +36 -36
  169. mindspore/nn/layer/basic.py +74 -77
  170. mindspore/nn/layer/channel_shuffle.py +4 -4
  171. mindspore/nn/layer/combined.py +4 -2
  172. mindspore/nn/layer/conv.py +117 -110
  173. mindspore/nn/layer/dense.py +9 -7
  174. mindspore/nn/layer/embedding.py +50 -52
  175. mindspore/nn/layer/image.py +38 -40
  176. mindspore/nn/layer/math.py +111 -112
  177. mindspore/nn/layer/normalization.py +56 -44
  178. mindspore/nn/layer/pooling.py +58 -63
  179. mindspore/nn/layer/rnn_cells.py +33 -33
  180. mindspore/nn/layer/rnns.py +56 -56
  181. mindspore/nn/layer/thor_layer.py +74 -73
  182. mindspore/nn/layer/transformer.py +11 -1
  183. mindspore/nn/learning_rate_schedule.py +20 -20
  184. mindspore/nn/loss/loss.py +79 -81
  185. mindspore/nn/optim/adam.py +4 -6
  186. mindspore/nn/optim/adasum.py +2 -2
  187. mindspore/nn/optim/asgd.py +2 -0
  188. mindspore/nn/optim/lamb.py +1 -3
  189. mindspore/nn/optim/optimizer.py +1 -1
  190. mindspore/nn/optim/tft_wrapper.py +2 -3
  191. mindspore/nn/optim/thor.py +2 -2
  192. mindspore/nn/probability/distribution/_utils/utils.py +2 -2
  193. mindspore/nn/probability/distribution/exponential.py +2 -1
  194. mindspore/nn/probability/distribution/poisson.py +2 -1
  195. mindspore/nn/sparse/sparse.py +3 -3
  196. mindspore/nn/wrap/cell_wrapper.py +73 -42
  197. mindspore/nn/wrap/grad_reducer.py +37 -52
  198. mindspore/nn/wrap/loss_scale.py +72 -74
  199. mindspore/numpy/array_creations.py +7 -7
  200. mindspore/numpy/fft.py +1 -1
  201. mindspore/numpy/math_ops.py +5 -5
  202. mindspore/numpy/utils_const.py +1 -1
  203. mindspore/opencv_core452.dll +0 -0
  204. mindspore/opencv_imgcodecs452.dll +0 -0
  205. mindspore/opencv_imgproc452.dll +0 -0
  206. mindspore/ops/_grad_experimental/grad_comm_ops.py +51 -13
  207. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -0
  208. mindspore/ops/_grad_experimental/grad_inner_ops.py +0 -9
  209. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  210. mindspore/{experimental/es/__init__.py → ops/_op_impl/cpu/joinedstr_op.py} +12 -6
  211. mindspore/ops/_vmap/vmap_array_ops.py +31 -13
  212. mindspore/ops/_vmap/vmap_nn_ops.py +8 -16
  213. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +54 -13
  214. mindspore/ops/auto_generate/gen_extend_func.py +27 -145
  215. mindspore/ops/auto_generate/gen_ops_def.py +1027 -347
  216. mindspore/ops/auto_generate/gen_ops_prim.py +2341 -1117
  217. mindspore/ops/auto_generate/pyboost_inner_prim.py +31 -1
  218. mindspore/ops/composite/__init__.py +10 -0
  219. mindspore/ops/composite/base.py +9 -5
  220. mindspore/ops/composite/multitype_ops/__init__.py +12 -1
  221. mindspore/ops/composite/multitype_ops/_compile_utils.py +133 -109
  222. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -1
  223. mindspore/ops/composite/multitype_ops/add_impl.py +70 -2
  224. mindspore/ops/composite/multitype_ops/div_impl.py +49 -0
  225. mindspore/ops/composite/multitype_ops/floordiv_impl.py +29 -0
  226. mindspore/ops/composite/multitype_ops/getitem_impl.py +11 -0
  227. mindspore/ops/composite/multitype_ops/mod_impl.py +5 -3
  228. mindspore/ops/composite/multitype_ops/mul_impl.py +49 -0
  229. mindspore/ops/composite/multitype_ops/setitem_impl.py +57 -0
  230. mindspore/ops/composite/multitype_ops/sub_impl.py +34 -0
  231. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +14 -0
  232. mindspore/ops/function/__init__.py +4 -1
  233. mindspore/ops/function/_add_attr_func.py +11 -6
  234. mindspore/ops/function/array_func.py +19 -102
  235. mindspore/ops/function/debug_func.py +8 -5
  236. mindspore/ops/function/grad/grad_func.py +5 -13
  237. mindspore/ops/function/math_func.py +77 -572
  238. mindspore/ops/function/nn_func.py +46 -94
  239. mindspore/ops/function/other_func.py +4 -1
  240. mindspore/ops/function/random_func.py +44 -5
  241. mindspore/ops/function/vmap_func.py +2 -1
  242. mindspore/ops/functional.py +4 -4
  243. mindspore/ops/functional_overload.py +594 -18
  244. mindspore/ops/op_info_register.py +21 -0
  245. mindspore/ops/operations/__init__.py +16 -11
  246. mindspore/ops/operations/_custom_ops_utils.py +689 -34
  247. mindspore/ops/operations/_inner_ops.py +14 -18
  248. mindspore/ops/operations/_sequence_ops.py +1 -1
  249. mindspore/ops/operations/array_ops.py +5 -51
  250. mindspore/ops/operations/comm_ops.py +186 -41
  251. mindspore/ops/operations/custom_ops.py +303 -177
  252. mindspore/ops/operations/debug_ops.py +59 -4
  253. mindspore/ops/operations/image_ops.py +13 -13
  254. mindspore/ops/operations/manually_defined/ops_def.py +27 -28
  255. mindspore/ops/operations/math_ops.py +8 -9
  256. mindspore/ops/operations/nn_ops.py +8 -40
  257. mindspore/ops/primitive.py +9 -20
  258. mindspore/ops/tensor_method.py +63 -15
  259. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +1 -1
  260. mindspore/ops_generate/api/functional_map_cpp_generator.py +10 -9
  261. mindspore/ops_generate/api/functions_cc_generator.py +58 -10
  262. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +1 -1
  263. mindspore/ops_generate/common/base_generator.py +14 -0
  264. mindspore/ops_generate/common/gen_constants.py +8 -3
  265. mindspore/ops_generate/common/gen_utils.py +0 -19
  266. mindspore/ops_generate/common/op_proto.py +11 -4
  267. mindspore/ops_generate/common/template.py +88 -11
  268. mindspore/ops_generate/gen_ops.py +1 -1
  269. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +4 -4
  270. mindspore/ops_generate/op_def/ops_def_cc_generator.py +0 -3
  271. mindspore/ops_generate/op_def/ops_name_h_generator.py +0 -3
  272. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +0 -4
  273. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +5 -2
  274. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +49 -8
  275. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +2 -2
  276. mindspore/ops_generate/pyboost/gen_pyboost_func.py +31 -16
  277. mindspore/ops_generate/pyboost/op_template_parser.py +98 -72
  278. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +70 -273
  279. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +14 -6
  280. mindspore/ops_generate/pyboost/pyboost_functions_impl_cpp_generator.py +316 -0
  281. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +1 -1
  282. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +5 -3
  283. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +1 -1
  284. mindspore/ops_generate/pyboost/pyboost_internal_functions_cpp_generator.py +76 -0
  285. mindspore/ops_generate/pyboost/pyboost_internal_functions_h_generator.py +76 -0
  286. mindspore/ops_generate/pyboost/pyboost_internal_kernel_info_adapter_generator.py +125 -0
  287. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +4 -3
  288. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +348 -61
  289. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +1 -1
  290. mindspore/ops_generate/pyboost/pyboost_utils.py +118 -9
  291. mindspore/ops_generate/tensor_py_cc_generator.py +1 -24
  292. mindspore/parallel/_auto_parallel_context.py +16 -23
  293. mindspore/parallel/_cell_wrapper.py +113 -45
  294. mindspore/parallel/_parallel_serialization.py +4 -3
  295. mindspore/parallel/_ps_context.py +4 -6
  296. mindspore/parallel/_tensor.py +167 -12
  297. mindspore/parallel/_transformer/moe.py +1 -1
  298. mindspore/parallel/_transformer/transformer.py +17 -12
  299. mindspore/parallel/_utils.py +5 -11
  300. mindspore/parallel/auto_parallel.py +35 -14
  301. mindspore/parallel/checkpoint_convert.py +3 -3
  302. mindspore/parallel/checkpoint_transform.py +13 -7
  303. mindspore/parallel/cluster/process_entity/_api.py +88 -49
  304. mindspore/parallel/cluster/process_entity/_utils.py +95 -7
  305. mindspore/parallel/cluster/run.py +48 -7
  306. mindspore/parallel/function/__init__.py +8 -1
  307. mindspore/parallel/function/reshard_func.py +12 -12
  308. mindspore/parallel/nn/__init__.py +15 -2
  309. mindspore/parallel/nn/parallel_cell_wrapper.py +50 -14
  310. mindspore/parallel/nn/parallel_grad_reducer.py +7 -14
  311. mindspore/parallel/shard.py +10 -25
  312. mindspore/parallel/transform_safetensors.py +469 -174
  313. mindspore/pgodb140.dll +0 -0
  314. mindspore/pgort140.dll +0 -0
  315. mindspore/profiler/__init__.py +2 -1
  316. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -7
  317. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +3 -0
  318. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +12 -6
  319. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +3 -3
  320. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
  321. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +4 -4
  322. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +3 -3
  323. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +4 -1
  324. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +2 -1
  325. mindspore/profiler/analysis/task_manager.py +1 -1
  326. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +5 -1
  327. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +2 -1
  328. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +10 -9
  329. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +43 -23
  330. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +3 -2
  331. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +9 -5
  332. mindspore/profiler/analysis/viewer/ms_operator_details_viewer.py +132 -0
  333. mindspore/profiler/common/constant.py +16 -0
  334. mindspore/profiler/common/msprof_cmd_tool.py +2 -2
  335. mindspore/profiler/common/path_manager.py +9 -0
  336. mindspore/profiler/common/profiler_context.py +50 -29
  337. mindspore/profiler/common/profiler_info.py +0 -16
  338. mindspore/profiler/common/profiler_meta_data.py +1 -0
  339. mindspore/profiler/common/profiler_op_analyse.py +239 -0
  340. mindspore/profiler/common/profiler_output_path.py +23 -8
  341. mindspore/profiler/common/profiler_parameters.py +128 -35
  342. mindspore/profiler/dynamic_profile/__init__.py +0 -0
  343. mindspore/profiler/dynamic_profile/dynamic_monitor_proxy.py +39 -0
  344. mindspore/profiler/dynamic_profile/dynamic_profiler_config_context.py +666 -0
  345. mindspore/profiler/dynamic_profile/dynamic_profiler_utils.py +62 -0
  346. mindspore/profiler/dynamic_profiler.py +374 -338
  347. mindspore/profiler/envprofiler.py +42 -12
  348. mindspore/profiler/experimental_config.py +112 -7
  349. mindspore/profiler/mstx.py +33 -12
  350. mindspore/profiler/platform/__init__.py +2 -3
  351. mindspore/profiler/platform/cpu_profiler.py +10 -4
  352. mindspore/profiler/platform/npu_profiler.py +30 -20
  353. mindspore/profiler/profiler.py +218 -154
  354. mindspore/profiler/profiler_action_controller.py +65 -77
  355. mindspore/profiler/profiler_interface.py +2 -2
  356. mindspore/profiler/schedule.py +10 -4
  357. mindspore/rewrite/common/config.py +1 -0
  358. mindspore/rewrite/common/namer.py +1 -0
  359. mindspore/rewrite/common/namespace.py +1 -0
  360. mindspore/rewrite/node/node.py +31 -11
  361. mindspore/rewrite/parsers/assign_parser.py +1 -1
  362. mindspore/rewrite/symbol_tree/symbol_tree.py +2 -2
  363. mindspore/run_check/_check_version.py +7 -10
  364. mindspore/runtime/__init__.py +8 -6
  365. mindspore/runtime/event.py +10 -4
  366. mindspore/runtime/executor.py +87 -45
  367. mindspore/runtime/memory.py +31 -32
  368. mindspore/runtime/thread_bind_core.py +299 -165
  369. mindspore/safeguard/rewrite_obfuscation.py +12 -13
  370. mindspore/swresample-4.dll +0 -0
  371. mindspore/swscale-6.dll +0 -0
  372. mindspore/tbbmalloc.dll +0 -0
  373. mindspore/tinyxml2.dll +0 -0
  374. mindspore/train/_utils.py +17 -7
  375. mindspore/train/amp.py +43 -23
  376. mindspore/train/callback/__init__.py +5 -5
  377. mindspore/train/callback/_callback.py +2 -1
  378. mindspore/train/callback/_checkpoint.py +4 -14
  379. mindspore/train/callback/_flops_collector.py +11 -7
  380. mindspore/train/callback/_landscape.py +0 -1
  381. mindspore/train/callback/_train_fault_tolerance.py +98 -21
  382. mindspore/train/data_sink.py +15 -6
  383. mindspore/train/dataset_helper.py +14 -5
  384. mindspore/train/model.py +133 -69
  385. mindspore/train/serialization.py +168 -126
  386. mindspore/train/summary/summary_record.py +13 -2
  387. mindspore/train/train_thor/model_thor.py +2 -2
  388. mindspore/turbojpeg.dll +0 -0
  389. mindspore/utils/__init__.py +3 -2
  390. mindspore/utils/dryrun.py +0 -6
  391. mindspore/utils/runtime_execution_order_check.py +163 -77
  392. mindspore/utils/sdc_detect.py +68 -0
  393. mindspore/utils/utils.py +14 -17
  394. mindspore/vcmeta.dll +0 -0
  395. mindspore/vcruntime140.dll +0 -0
  396. mindspore/vcruntime140_1.dll +0 -0
  397. mindspore/version.py +1 -1
  398. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/METADATA +5 -4
  399. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/RECORD +403 -442
  400. mindspore/_deprecated/jit.py +0 -198
  401. mindspore/_extends/remote/kernel_build_server_ascend.py +0 -75
  402. mindspore/communication/_hccl_management.py +0 -297
  403. mindspore/experimental/es/embedding_service.py +0 -891
  404. mindspore/experimental/es/embedding_service_layer.py +0 -581
  405. mindspore/profiler/common/validator/__init__.py +0 -14
  406. mindspore/profiler/common/validator/validate_path.py +0 -84
  407. mindspore/profiler/parser/__init__.py +0 -14
  408. mindspore/profiler/parser/aicpu_data_parser.py +0 -272
  409. mindspore/profiler/parser/ascend_analysis/__init__.py +0 -14
  410. mindspore/profiler/parser/ascend_analysis/constant.py +0 -71
  411. mindspore/profiler/parser/ascend_analysis/file_manager.py +0 -180
  412. mindspore/profiler/parser/ascend_analysis/function_event.py +0 -185
  413. mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +0 -136
  414. mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +0 -131
  415. mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +0 -104
  416. mindspore/profiler/parser/ascend_analysis/path_manager.py +0 -313
  417. mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +0 -123
  418. mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +0 -86
  419. mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +0 -75
  420. mindspore/profiler/parser/ascend_cluster_generator.py +0 -116
  421. mindspore/profiler/parser/ascend_communicate_generator.py +0 -314
  422. mindspore/profiler/parser/ascend_flops_generator.py +0 -116
  423. mindspore/profiler/parser/ascend_fpbp_generator.py +0 -82
  424. mindspore/profiler/parser/ascend_hccl_generator.py +0 -271
  425. mindspore/profiler/parser/ascend_integrate_generator.py +0 -42
  426. mindspore/profiler/parser/ascend_memory_generator.py +0 -185
  427. mindspore/profiler/parser/ascend_msprof_exporter.py +0 -282
  428. mindspore/profiler/parser/ascend_msprof_generator.py +0 -187
  429. mindspore/profiler/parser/ascend_op_generator.py +0 -334
  430. mindspore/profiler/parser/ascend_steptrace_generator.py +0 -94
  431. mindspore/profiler/parser/ascend_timeline_generator.py +0 -545
  432. mindspore/profiler/parser/base_timeline_generator.py +0 -483
  433. mindspore/profiler/parser/container.py +0 -229
  434. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +0 -697
  435. mindspore/profiler/parser/flops_parser.py +0 -531
  436. mindspore/profiler/parser/framework_enum.py +0 -111
  437. mindspore/profiler/parser/framework_parser.py +0 -464
  438. mindspore/profiler/parser/framework_struct.py +0 -61
  439. mindspore/profiler/parser/gpu_analysis/__init__.py +0 -14
  440. mindspore/profiler/parser/gpu_analysis/function_event.py +0 -44
  441. mindspore/profiler/parser/gpu_analysis/fwk_file_parser.py +0 -89
  442. mindspore/profiler/parser/gpu_analysis/profiler_info_parser.py +0 -72
  443. mindspore/profiler/parser/hccl_parser.py +0 -573
  444. mindspore/profiler/parser/hwts_log_parser.py +0 -122
  445. mindspore/profiler/parser/integrator.py +0 -526
  446. mindspore/profiler/parser/memory_usage_parser.py +0 -277
  447. mindspore/profiler/parser/minddata_analyzer.py +0 -800
  448. mindspore/profiler/parser/minddata_parser.py +0 -186
  449. mindspore/profiler/parser/minddata_pipeline_parser.py +0 -299
  450. mindspore/profiler/parser/op_intermediate_parser.py +0 -149
  451. mindspore/profiler/parser/optime_parser.py +0 -250
  452. mindspore/profiler/parser/profiler_info.py +0 -213
  453. mindspore/profiler/parser/step_trace_parser.py +0 -666
  454. mindspore/utils/hooks.py +0 -81
  455. /mindspore/common/{_auto_dynamic.py → dynamic_shape/_auto_dynamic.py} +0 -0
  456. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/WHEEL +0 -0
  457. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/entry_points.txt +0 -0
  458. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/top_level.txt +0 -0
@@ -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)