mindspore 2.1.0__cp39-cp39-win_amd64.whl → 2.2.11__cp39-cp39-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 (488) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +4 -1
  3. mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
  4. mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
  5. mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
  6. mindspore/_check_jit_forbidden_api.py +3 -1
  7. mindspore/_checkparam.py +23 -29
  8. mindspore/_extends/graph_kernel/__init__.py +0 -1
  9. mindspore/_extends/graph_kernel/model/graph_split.py +84 -76
  10. mindspore/_extends/graph_kernel/model/model_builder.py +9 -50
  11. mindspore/_extends/graph_kernel/splitter.py +4 -11
  12. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +122 -15
  13. mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +84 -67
  14. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +4 -2
  15. mindspore/_extends/parallel_compile/akg_compiler/util.py +10 -7
  16. mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +2 -2
  17. mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +6 -5
  18. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +1 -1
  19. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -1
  20. mindspore/_extends/parse/__init__.py +13 -15
  21. mindspore/_extends/parse/namespace.py +7 -33
  22. mindspore/_extends/parse/parser.py +67 -72
  23. mindspore/_extends/parse/resources.py +1 -1
  24. mindspore/_extends/parse/standard_method.py +86 -106
  25. mindspore/_extends/parse/trope.py +1 -1
  26. mindspore/_extends/remote/kernel_build_server.py +25 -7
  27. mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
  28. mindspore/_install_custom.py +43 -0
  29. mindspore/amp.py +47 -11
  30. mindspore/boost/boost.py +1 -8
  31. mindspore/boost/boost_cell_wrapper.py +3 -2
  32. mindspore/boost/grad_accumulation.py +1 -1
  33. mindspore/boost/group_loss_scale_manager.py +8 -7
  34. mindspore/common/__init__.py +5 -3
  35. mindspore/common/_jit_fallback_utils.py +6 -0
  36. mindspore/common/_register_for_adapter.py +2 -0
  37. mindspore/common/_register_for_tensor.py +2 -2
  38. mindspore/common/_stub_tensor.py +13 -0
  39. mindspore/common/_utils.py +29 -0
  40. mindspore/common/api.py +174 -259
  41. mindspore/common/auto_dynamic_shape.py +494 -0
  42. mindspore/common/dtype.py +18 -11
  43. mindspore/common/dump.py +6 -4
  44. mindspore/common/initializer.py +14 -14
  45. mindspore/common/jit_config.py +33 -15
  46. mindspore/common/lazy_inline.py +126 -7
  47. mindspore/common/mindir_util.py +101 -0
  48. mindspore/common/parameter.py +51 -41
  49. mindspore/common/seed.py +4 -4
  50. mindspore/common/sparse_tensor.py +13 -14
  51. mindspore/common/tensor.py +243 -165
  52. mindspore/communication/__init__.py +7 -4
  53. mindspore/communication/_comm_helper.py +83 -4
  54. mindspore/communication/management.py +152 -84
  55. mindspore/config/op_info.config +14 -3
  56. mindspore/context.py +152 -61
  57. mindspore/dataset/__init__.py +5 -5
  58. mindspore/dataset/audio/__init__.py +2 -2
  59. mindspore/dataset/audio/transforms.py +52 -52
  60. mindspore/dataset/callback/ds_callback.py +16 -2
  61. mindspore/dataset/core/config.py +68 -51
  62. mindspore/dataset/engine/cache_client.py +33 -7
  63. mindspore/dataset/engine/datasets.py +250 -112
  64. mindspore/dataset/engine/datasets_audio.py +43 -211
  65. mindspore/dataset/engine/datasets_standard_format.py +16 -35
  66. mindspore/dataset/engine/datasets_text.py +43 -67
  67. mindspore/dataset/engine/datasets_user_defined.py +86 -100
  68. mindspore/dataset/engine/datasets_vision.py +219 -1029
  69. mindspore/dataset/engine/iterators.py +11 -4
  70. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +4 -0
  71. mindspore/dataset/engine/obs/util.py +3 -0
  72. mindspore/dataset/engine/samplers.py +1 -1
  73. mindspore/dataset/engine/validators.py +19 -5
  74. mindspore/dataset/text/__init__.py +3 -3
  75. mindspore/dataset/text/transforms.py +101 -127
  76. mindspore/dataset/text/utils.py +205 -138
  77. mindspore/dataset/transforms/__init__.py +1 -1
  78. mindspore/dataset/transforms/py_transforms_util.py +40 -12
  79. mindspore/dataset/transforms/transforms.py +95 -40
  80. mindspore/dataset/utils/browse_dataset.py +8 -2
  81. mindspore/dataset/utils/line_reader.py +17 -19
  82. mindspore/dataset/vision/__init__.py +3 -3
  83. mindspore/dataset/vision/c_transforms.py +6 -3
  84. mindspore/dataset/vision/transforms.py +409 -287
  85. mindspore/dataset/vision/utils.py +13 -14
  86. mindspore/dataset/vision/validators.py +11 -1
  87. mindspore/dnnl.dll +0 -0
  88. mindspore/experimental/map_parameter.py +14 -0
  89. mindspore/{nn/optim_ex → experimental/optim}/__init__.py +30 -29
  90. mindspore/{nn/optim_ex → experimental/optim}/adam.py +60 -67
  91. mindspore/{nn/optim_ex → experimental/optim}/adamw.py +181 -203
  92. mindspore/experimental/optim/lr_scheduler.py +1427 -0
  93. mindspore/{nn/optim_ex → experimental/optim}/optimizer.py +252 -259
  94. mindspore/{nn/optim_ex → experimental/optim}/sgd.py +147 -152
  95. mindspore/gen_ops.py +273 -0
  96. mindspore/include/OWNERS +0 -1
  97. mindspore/include/api/data_type.h +2 -1
  98. mindspore/include/api/graph.h +0 -15
  99. mindspore/include/api/kernel.h +2 -0
  100. mindspore/include/api/kernel_api.h +37 -12
  101. mindspore/include/api/model.h +17 -14
  102. mindspore/include/api/status.h +8 -3
  103. mindspore/include/api/types.h +37 -4
  104. mindspore/include/c_api/ms/abstract.h +67 -0
  105. mindspore/include/c_api/ms/attribute.h +197 -0
  106. mindspore/include/c_api/ms/base/handle_types.h +43 -0
  107. mindspore/include/c_api/ms/base/macros.h +32 -0
  108. mindspore/include/c_api/ms/base/status.h +33 -0
  109. mindspore/include/c_api/ms/base/types.h +282 -0
  110. mindspore/include/c_api/ms/context.h +102 -0
  111. mindspore/include/c_api/ms/graph.h +160 -0
  112. mindspore/include/c_api/ms/node.h +606 -0
  113. mindspore/include/c_api/ms/tensor.h +161 -0
  114. mindspore/include/c_api/ms/value.h +84 -0
  115. mindspore/include/dataset/constants.h +6 -5
  116. mindspore/include/dataset/execute.h +23 -13
  117. mindspore/include/dataset/text.h +26 -26
  118. mindspore/include/dataset/transforms.h +13 -13
  119. mindspore/include/dataset/vision.h +60 -60
  120. mindspore/include/dataset/vision_ascend.h +5 -6
  121. mindspore/include/dataset/vision_lite.h +17 -17
  122. mindspore/jpeg62.dll +0 -0
  123. mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
  124. mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
  125. mindspore/mindspore_backend.dll +0 -0
  126. mindspore/mindspore_common.dll +0 -0
  127. mindspore/mindspore_core.dll +0 -0
  128. mindspore/mindspore_glog.dll +0 -0
  129. mindspore/mindspore_shared_lib.dll +0 -0
  130. mindspore/nn/__init__.py +0 -2
  131. mindspore/nn/cell.py +313 -74
  132. mindspore/nn/dynamic_lr.py +21 -21
  133. mindspore/nn/layer/activation.py +22 -30
  134. mindspore/nn/layer/basic.py +15 -13
  135. mindspore/nn/layer/channel_shuffle.py +1 -1
  136. mindspore/nn/layer/container.py +271 -9
  137. mindspore/nn/layer/conv.py +323 -204
  138. mindspore/nn/layer/dense.py +8 -5
  139. mindspore/nn/layer/embedding.py +33 -27
  140. mindspore/nn/layer/flash_attention.py +61 -95
  141. mindspore/nn/layer/image.py +8 -6
  142. mindspore/nn/layer/math.py +16 -25
  143. mindspore/nn/layer/normalization.py +107 -66
  144. mindspore/nn/layer/padding.py +1 -1
  145. mindspore/nn/layer/pooling.py +131 -109
  146. mindspore/nn/layer/rnn_cells.py +27 -22
  147. mindspore/nn/layer/rnns.py +13 -16
  148. mindspore/nn/layer/thor_layer.py +1 -1
  149. mindspore/nn/layer/transformer.py +221 -154
  150. mindspore/nn/learning_rate_schedule.py +9 -1
  151. mindspore/nn/loss/loss.py +235 -174
  152. mindspore/nn/optim/ada_grad.py +2 -1
  153. mindspore/nn/optim/adadelta.py +1 -0
  154. mindspore/nn/optim/adafactor.py +2 -1
  155. mindspore/nn/optim/adam.py +7 -4
  156. mindspore/nn/optim/adamax.py +3 -2
  157. mindspore/nn/optim/adasum.py +2 -2
  158. mindspore/nn/optim/asgd.py +2 -3
  159. mindspore/nn/optim/ftrl.py +6 -5
  160. mindspore/nn/optim/lamb.py +7 -4
  161. mindspore/nn/optim/lars.py +1 -1
  162. mindspore/nn/optim/lazyadam.py +5 -3
  163. mindspore/nn/optim/momentum.py +2 -1
  164. mindspore/nn/optim/optimizer.py +53 -4
  165. mindspore/nn/optim/proximal_ada_grad.py +3 -4
  166. mindspore/nn/optim/rmsprop.py +4 -3
  167. mindspore/nn/optim/rprop.py +23 -12
  168. mindspore/nn/optim/sgd.py +26 -11
  169. mindspore/nn/optim/thor.py +9 -7
  170. mindspore/nn/probability/bijector/bijector.py +5 -5
  171. mindspore/nn/probability/bijector/power_transform.py +27 -27
  172. mindspore/nn/probability/bijector/softplus.py +3 -3
  173. mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -3
  174. mindspore/nn/probability/distribution/bernoulli.py +5 -5
  175. mindspore/nn/probability/distribution/beta.py +3 -3
  176. mindspore/nn/probability/distribution/categorical.py +7 -7
  177. mindspore/nn/probability/distribution/cauchy.py +0 -1
  178. mindspore/nn/probability/distribution/distribution.py +3 -3
  179. mindspore/nn/probability/distribution/gamma.py +3 -3
  180. mindspore/nn/probability/distribution/geometric.py +4 -4
  181. mindspore/nn/probability/distribution/gumbel.py +4 -4
  182. mindspore/nn/probability/distribution/log_normal.py +2 -2
  183. mindspore/nn/probability/distribution/logistic.py +2 -2
  184. mindspore/nn/probability/distribution/poisson.py +4 -4
  185. mindspore/nn/probability/distribution/transformed_distribution.py +3 -3
  186. mindspore/nn/probability/distribution/uniform.py +6 -6
  187. mindspore/nn/wrap/__init__.py +4 -2
  188. mindspore/nn/wrap/cell_wrapper.py +87 -34
  189. mindspore/nn/wrap/grad_reducer.py +8 -5
  190. mindspore/nn/wrap/loss_scale.py +105 -42
  191. mindspore/numpy/array_creations.py +1 -2
  192. mindspore/numpy/array_ops.py +3 -2
  193. mindspore/numpy/utils_const.py +5 -5
  194. mindspore/opencv_core452.dll +0 -0
  195. mindspore/opencv_imgcodecs452.dll +0 -0
  196. mindspore/opencv_imgproc452.dll +0 -0
  197. mindspore/ops/_grad_experimental/__init__.py +0 -5
  198. mindspore/ops/_grad_experimental/grad_array_ops.py +2 -3
  199. mindspore/ops/_grad_experimental/grad_comm_ops.py +15 -2
  200. mindspore/ops/_grad_experimental/grad_debug_ops.py +0 -37
  201. mindspore/ops/_grad_experimental/grad_implementations.py +11 -1
  202. mindspore/ops/_grad_experimental/grad_inner_ops.py +2 -216
  203. mindspore/ops/_grad_experimental/grad_math_ops.py +19 -199
  204. mindspore/ops/_grad_experimental/grad_sparse.py +15 -0
  205. mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -3
  206. mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
  207. mindspore/ops/_op_impl/aicpu/__init__.py +14 -2
  208. mindspore/ops/_op_impl/aicpu/add.py +3 -3
  209. mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
  210. mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
  211. mindspore/ops/_op_impl/{_custom_op/flash_attention/constants.py → aicpu/eps.py} +18 -27
  212. mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
  213. mindspore/ops/_op_impl/aicpu/linear_sum_assignment.py +21 -2
  214. mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
  215. mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
  216. mindspore/ops/_op_impl/aicpu/multinomial.py +3 -3
  217. mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +15 -7
  218. mindspore/ops/_op_impl/aicpu/random_categorical.py +39 -19
  219. mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +5 -2
  220. mindspore/ops/_op_impl/aicpu/random_poisson.py +103 -52
  221. mindspore/ops/_op_impl/aicpu/random_shuffle.py +17 -15
  222. mindspore/ops/_op_impl/aicpu/{sparseaddmm.py → sparse_addmm.py} +2 -2
  223. mindspore/ops/_op_impl/aicpu/{sparsesparsemaximum.py → sparse_sparse_maximum.py} +4 -4
  224. mindspore/ops/_op_impl/aicpu/standard_laplace.py +5 -5
  225. mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -5
  226. mindspore/ops/_op_impl/aicpu/truncated_normal.py +9 -7
  227. mindspore/ops/_op_impl/aicpu/uniform.py +5 -3
  228. mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +8 -4
  229. mindspore/ops/_op_impl/aicpu/uniform_int.py +5 -5
  230. mindspore/ops/_op_impl/aicpu/uniform_real.py +4 -4
  231. mindspore/ops/_op_impl/tbe/__init__.py +4 -4
  232. mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
  233. mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
  234. mindspore/ops/_primitive_cache.py +1 -1
  235. mindspore/ops/_tracefunc.py +45 -13
  236. mindspore/ops/_utils/utils.py +6 -1
  237. mindspore/ops/_vmap/vmap_array_ops.py +3 -3
  238. mindspore/ops/_vmap/vmap_base.py +3 -3
  239. mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
  240. mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
  241. mindspore/ops/_vmap/vmap_math_ops.py +5 -2
  242. mindspore/ops/_vmap/vmap_nn_ops.py +61 -7
  243. mindspore/ops/arg_dtype_cast.py +54 -0
  244. mindspore/ops/composite/base.py +37 -10
  245. mindspore/ops/composite/math_ops.py +5 -4
  246. mindspore/ops/composite/multitype_ops/_compile_utils.py +275 -73
  247. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +16 -9
  248. mindspore/ops/composite/multitype_ops/add_impl.py +43 -4
  249. mindspore/ops/composite/multitype_ops/getitem_impl.py +42 -4
  250. mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
  251. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  252. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
  253. mindspore/ops/deprecated.py +304 -0
  254. mindspore/ops/function/__init__.py +4 -1
  255. mindspore/ops/function/array_func.py +174 -193
  256. mindspore/ops/function/clip_func.py +81 -13
  257. mindspore/ops/function/debug_func.py +1 -1
  258. mindspore/ops/function/grad/grad_func.py +18 -9
  259. mindspore/ops/function/image_func.py +10 -4
  260. mindspore/ops/function/linalg_func.py +5 -5
  261. mindspore/ops/function/math_func.py +575 -386
  262. mindspore/ops/function/nn_func.py +568 -260
  263. mindspore/ops/function/random_func.py +88 -57
  264. mindspore/ops/function/sparse_func.py +1 -1
  265. mindspore/ops/function/sparse_unary_func.py +14 -12
  266. mindspore/ops/function/vmap_func.py +6 -5
  267. mindspore/ops/functional.py +15 -10
  268. mindspore/ops/op_info_register.py +244 -25
  269. mindspore/ops/operations/__init__.py +31 -19
  270. mindspore/ops/operations/_grad_ops.py +71 -7
  271. mindspore/ops/operations/_inner_ops.py +350 -17
  272. mindspore/ops/operations/_quant_ops.py +4 -8
  273. mindspore/ops/operations/_sequence_ops.py +42 -0
  274. mindspore/ops/operations/array_ops.py +68 -282
  275. mindspore/ops/operations/comm_ops.py +107 -59
  276. mindspore/ops/operations/custom_ops.py +94 -70
  277. mindspore/ops/operations/debug_ops.py +8 -4
  278. mindspore/ops/operations/image_ops.py +18 -12
  279. mindspore/ops/operations/inner_ops.py +26 -3
  280. mindspore/ops/operations/math_ops.py +192 -144
  281. mindspore/ops/operations/nn_ops.py +857 -489
  282. mindspore/ops/operations/other_ops.py +0 -22
  283. mindspore/ops/operations/random_ops.py +53 -111
  284. mindspore/ops/operations/sparse_ops.py +3 -1
  285. mindspore/ops/primitive.py +24 -18
  286. mindspore/parallel/_auto_parallel_context.py +68 -8
  287. mindspore/parallel/_cost_model_context.py +2 -2
  288. mindspore/parallel/_offload_context.py +17 -3
  289. mindspore/parallel/_parallel_serialization.py +12 -5
  290. mindspore/parallel/_ps_context.py +12 -0
  291. mindspore/parallel/_tensor.py +18 -13
  292. mindspore/parallel/_transformer/layers.py +5 -3
  293. mindspore/parallel/_transformer/loss.py +1 -0
  294. mindspore/parallel/_transformer/moe.py +2 -2
  295. mindspore/parallel/_transformer/op_parallel_config.py +12 -1
  296. mindspore/parallel/_transformer/transformer.py +23 -3
  297. mindspore/parallel/_utils.py +11 -7
  298. mindspore/parallel/algo_parameter_config.py +85 -5
  299. mindspore/parallel/checkpoint_transform.py +19 -12
  300. mindspore/parallel/shard.py +21 -14
  301. mindspore/profiler/common/struct_type.py +3 -3
  302. mindspore/profiler/common/util.py +4 -2
  303. mindspore/profiler/envprofiling.py +1 -1
  304. mindspore/profiler/parser/aicpu_data_parser.py +5 -3
  305. mindspore/profiler/parser/ascend_flops_generator.py +2 -2
  306. mindspore/profiler/parser/ascend_fpbp_generator.py +1 -1
  307. mindspore/profiler/parser/ascend_hccl_generator.py +249 -12
  308. mindspore/profiler/parser/ascend_msprof_exporter.py +150 -255
  309. mindspore/profiler/parser/ascend_msprof_generator.py +204 -17
  310. mindspore/profiler/parser/ascend_op_generator.py +6 -6
  311. mindspore/profiler/parser/ascend_steptrace_generator.py +6 -4
  312. mindspore/profiler/parser/ascend_timeline_generator.py +14 -187
  313. mindspore/profiler/parser/base_timeline_generator.py +10 -8
  314. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +16 -12
  315. mindspore/profiler/parser/flops_parser.py +15 -11
  316. mindspore/profiler/parser/framework_parser.py +38 -22
  317. mindspore/profiler/parser/hccl_parser.py +16 -12
  318. mindspore/profiler/parser/integrator.py +22 -11
  319. mindspore/profiler/parser/memory_usage_parser.py +2 -2
  320. mindspore/profiler/parser/minddata_analyzer.py +12 -14
  321. mindspore/profiler/parser/minddata_pipeline_parser.py +1 -1
  322. mindspore/profiler/parser/msadvisor_parser.py +8 -4
  323. mindspore/profiler/parser/op_intermediate_parser.py +5 -2
  324. mindspore/profiler/parser/optime_parser.py +1 -1
  325. mindspore/profiler/parser/profiler_info.py +21 -2
  326. mindspore/profiler/parser/step_trace_parser.py +11 -14
  327. mindspore/profiler/profiling.py +179 -89
  328. mindspore/rewrite/api/node.py +102 -19
  329. mindspore/rewrite/api/node_type.py +5 -1
  330. mindspore/rewrite/api/pattern_engine.py +1 -1
  331. mindspore/rewrite/api/scoped_value.py +9 -17
  332. mindspore/rewrite/api/symbol_tree.py +131 -47
  333. mindspore/rewrite/ast_helpers/__init__.py +2 -1
  334. mindspore/rewrite/ast_helpers/ast_finder.py +129 -0
  335. mindspore/rewrite/ast_helpers/ast_modifier.py +116 -104
  336. mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +93 -46
  337. mindspore/rewrite/common/rewrite_elog.py +5 -1
  338. mindspore/rewrite/namer.py +33 -24
  339. mindspore/rewrite/namespace.py +14 -5
  340. mindspore/{_extends/graph_kernel/expanders/complex → rewrite/node}/__init__.py +9 -9
  341. mindspore/rewrite/node/call_function.py +79 -0
  342. mindspore/rewrite/node/cell_container.py +135 -0
  343. mindspore/rewrite/node/control_flow.py +88 -0
  344. mindspore/rewrite/{node.py → node/node.py} +273 -234
  345. mindspore/rewrite/node/node_manager.py +254 -0
  346. mindspore/rewrite/{topological_manager.py → node/node_topological_manager.py} +13 -46
  347. mindspore/rewrite/parsers/arguments_parser.py +22 -21
  348. mindspore/rewrite/parsers/assign_parser.py +216 -221
  349. mindspore/rewrite/parsers/attribute_parser.py +9 -7
  350. mindspore/rewrite/parsers/class_def_parser.py +174 -113
  351. mindspore/rewrite/parsers/constant_parser.py +9 -6
  352. mindspore/rewrite/parsers/container_parser.py +9 -7
  353. mindspore/rewrite/parsers/for_parser.py +42 -21
  354. mindspore/rewrite/parsers/function_def_parser.py +24 -16
  355. mindspore/rewrite/parsers/if_parser.py +28 -24
  356. mindspore/rewrite/parsers/module_parser.py +196 -25
  357. mindspore/rewrite/{parser.py → parsers/parser.py} +4 -2
  358. mindspore/rewrite/{parser_register.py → parsers/parser_register.py} +1 -1
  359. mindspore/rewrite/parsers/return_parser.py +6 -6
  360. mindspore/rewrite/sparsify/sparse_transformer.py +12 -3
  361. mindspore/rewrite/sparsify/utils.py +1 -1
  362. mindspore/rewrite/symbol_tree.py +523 -578
  363. mindspore/rewrite/symbol_tree_builder.py +9 -193
  364. mindspore/rewrite/symbol_tree_dumper.py +2 -2
  365. mindspore/run_check/_check_version.py +6 -4
  366. mindspore/{ops/bprop_mindir → safeguard}/__init__.py +4 -3
  367. mindspore/safeguard/rewrite_obfuscation.py +541 -0
  368. mindspore/tinyxml2.dll +0 -0
  369. mindspore/train/_utils.py +7 -3
  370. mindspore/train/amp.py +323 -123
  371. mindspore/train/anf_ir_pb2.py +14 -2
  372. mindspore/train/callback/_backup_and_restore.py +2 -12
  373. mindspore/train/callback/_callback.py +29 -4
  374. mindspore/train/callback/_checkpoint.py +23 -8
  375. mindspore/train/callback/_early_stop.py +2 -2
  376. mindspore/train/callback/_landscape.py +4 -4
  377. mindspore/train/callback/_loss_monitor.py +2 -2
  378. mindspore/train/callback/_on_request_exit.py +2 -2
  379. mindspore/train/callback/_reduce_lr_on_plateau.py +3 -4
  380. mindspore/train/callback/_summary_collector.py +15 -8
  381. mindspore/train/callback/_time_monitor.py +58 -5
  382. mindspore/train/data_sink.py +5 -11
  383. mindspore/train/dataset_helper.py +84 -57
  384. mindspore/train/loss_scale_manager.py +2 -2
  385. mindspore/train/metrics/__init__.py +3 -3
  386. mindspore/train/metrics/cosine_similarity.py +1 -1
  387. mindspore/train/metrics/hausdorff_distance.py +3 -2
  388. mindspore/train/metrics/mean_surface_distance.py +3 -2
  389. mindspore/train/metrics/metric.py +39 -19
  390. mindspore/train/metrics/roc.py +2 -2
  391. mindspore/train/metrics/root_mean_square_surface_distance.py +4 -3
  392. mindspore/train/mind_ir_pb2.py +85 -36
  393. mindspore/train/model.py +187 -47
  394. mindspore/train/serialization.py +487 -161
  395. mindspore/train/summary/_summary_adapter.py +1 -1
  396. mindspore/train/summary/_writer_pool.py +3 -2
  397. mindspore/train/summary/summary_record.py +37 -17
  398. mindspore/train/train_thor/convert_utils.py +3 -3
  399. mindspore/train/train_thor/dataset_helper.py +1 -1
  400. mindspore/turbojpeg.dll +0 -0
  401. mindspore/version.py +1 -1
  402. {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/METADATA +7 -4
  403. {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/RECORD +406 -463
  404. mindspore/_extends/graph_kernel/expander.py +0 -80
  405. mindspore/_extends/graph_kernel/expanders/__init__.py +0 -54
  406. mindspore/_extends/graph_kernel/expanders/_utils.py +0 -269
  407. mindspore/_extends/graph_kernel/expanders/addn.py +0 -33
  408. mindspore/_extends/graph_kernel/expanders/batchnorm.py +0 -152
  409. mindspore/_extends/graph_kernel/expanders/batchnorm_grad.py +0 -105
  410. mindspore/_extends/graph_kernel/expanders/clip_by_norm_no_div_sum.py +0 -33
  411. mindspore/_extends/graph_kernel/expanders/complex/abs.py +0 -30
  412. mindspore/_extends/graph_kernel/expanders/complex/add.py +0 -44
  413. mindspore/_extends/graph_kernel/expanders/complex/div.py +0 -62
  414. mindspore/_extends/graph_kernel/expanders/complex/mul.py +0 -52
  415. mindspore/_extends/graph_kernel/expanders/complex/real_div.py +0 -62
  416. mindspore/_extends/graph_kernel/expanders/complex/sub.py +0 -45
  417. mindspore/_extends/graph_kernel/expanders/conv2d.py +0 -200
  418. mindspore/_extends/graph_kernel/expanders/dropout_grad.py +0 -30
  419. mindspore/_extends/graph_kernel/expanders/equal_count.py +0 -50
  420. mindspore/_extends/graph_kernel/expanders/erfc.py +0 -35
  421. mindspore/_extends/graph_kernel/expanders/expand_dims.py +0 -50
  422. mindspore/_extends/graph_kernel/expanders/fused_adam.py +0 -44
  423. mindspore/_extends/graph_kernel/expanders/fused_adam_weight_decay.py +0 -47
  424. mindspore/_extends/graph_kernel/expanders/fused_mul_add.py +0 -28
  425. mindspore/_extends/graph_kernel/expanders/gelu_grad.py +0 -70
  426. mindspore/_extends/graph_kernel/expanders/gkdropout.py +0 -40
  427. mindspore/_extends/graph_kernel/expanders/identity.py +0 -25
  428. mindspore/_extends/graph_kernel/expanders/layernorm.py +0 -93
  429. mindspore/_extends/graph_kernel/expanders/layernorm_grad.py +0 -113
  430. mindspore/_extends/graph_kernel/expanders/logsoftmax.py +0 -46
  431. mindspore/_extends/graph_kernel/expanders/logsoftmax_grad.py +0 -36
  432. mindspore/_extends/graph_kernel/expanders/matmul.py +0 -80
  433. mindspore/_extends/graph_kernel/expanders/maximum_grad.py +0 -59
  434. mindspore/_extends/graph_kernel/expanders/minimum_grad.py +0 -80
  435. mindspore/_extends/graph_kernel/expanders/oneslike.py +0 -26
  436. mindspore/_extends/graph_kernel/expanders/reduce_mean.py +0 -43
  437. mindspore/_extends/graph_kernel/expanders/relu_grad.py +0 -32
  438. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits.py +0 -41
  439. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits_grad.py +0 -35
  440. mindspore/_extends/graph_kernel/expanders/sigmoid_grad.py +0 -31
  441. mindspore/_extends/graph_kernel/expanders/slice.py +0 -35
  442. mindspore/_extends/graph_kernel/expanders/softmax_cross_entropy_with_logits.py +0 -42
  443. mindspore/_extends/graph_kernel/expanders/softmax_grad_ext.py +0 -41
  444. mindspore/_extends/graph_kernel/expanders/softsign.py +0 -28
  445. mindspore/_extends/graph_kernel/expanders/sqrt_grad.py +0 -29
  446. mindspore/_extends/graph_kernel/expanders/square_sum_all.py +0 -44
  447. mindspore/_extends/graph_kernel/expanders/square_sum_v1.py +0 -37
  448. mindspore/_extends/graph_kernel/expanders/squared_difference.py +0 -43
  449. mindspore/_extends/graph_kernel/expanders/tanh_grad.py +0 -31
  450. mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
  451. mindspore/dataset/datapreprocess/__init__.py +0 -20
  452. mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
  453. mindspore/include/api/net.h +0 -142
  454. mindspore/nn/lr_scheduler.py +0 -262
  455. mindspore/ops/_grad_experimental/grad_image_ops.py +0 -248
  456. mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -181
  457. mindspore/ops/_grad_experimental/grad_other_ops.py +0 -72
  458. mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
  459. mindspore/ops/_grad_experimental/grad_sequence_ops.py +0 -351
  460. mindspore/ops/_op_impl/_custom_op/flash_attention/__init__.py +0 -0
  461. mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +0 -350
  462. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +0 -409
  463. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +0 -578
  464. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +0 -199
  465. mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +0 -446
  466. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/__init__.py +0 -0
  467. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/sparse_tiling.py +0 -45
  468. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/strategy.py +0 -67
  469. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +0 -62
  470. mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -0
  471. mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -0
  472. mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -0
  473. mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
  474. mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
  475. mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -0
  476. mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -0
  477. mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
  478. mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
  479. mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -0
  480. mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -0
  481. mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -0
  482. mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -0
  483. mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -0
  484. mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
  485. mindspore/rewrite/node_visitor.py +0 -44
  486. {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/WHEEL +0 -0
  487. {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/entry_points.txt +0 -0
  488. {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/top_level.txt +0 -0
@@ -14,14 +14,14 @@
14
14
  # ============================================================================
15
15
  """msprof PROF data export api file"""
16
16
  import os
17
+ import shutil
18
+ import json
19
+ from json import JSONDecodeError
20
+ from collections import defaultdict
17
21
  from subprocess import CalledProcessError, TimeoutExpired
18
22
  from subprocess import Popen, PIPE
19
- from typing import List, Optional
20
- import json
21
- from json.decoder import JSONDecodeError
22
23
  import csv
23
- from mindspore import log as logger, context
24
- from mindspore.communication import get_rank
24
+ from mindspore import log as logger
25
25
  from mindspore.profiler.common.util import get_file_path
26
26
 
27
27
 
@@ -30,7 +30,7 @@ class AscendMsprofExporter:
30
30
  msprof exporter. export cann edge profiling data.
31
31
 
32
32
  args:
33
- prof_root_dir: the root path of PROF_* files
33
+ source_path: the root path of PROF_* files
34
34
 
35
35
  files under prof_root_dir is like:
36
36
  profiler/PROF_*/device_{id}/data/xxx
@@ -41,197 +41,104 @@ class AscendMsprofExporter:
41
41
  >> ms_exporter = AscendMsprofExporter("path/to/profiler/data")
42
42
  >> ms_exporter.export(start_time)
43
43
  """
44
-
45
- _null_info = ""
46
- _csv_header_model_id = "Model ID"
47
- _csv_header_iter_id = "Iteration ID"
48
- _profiling_prefix = "PROF"
44
+ DRV_VERSION = 467473
45
+ _hiai_msprof_tail = "Ascend/latest/tools/profiler/bin"
46
+ _msprof_cmd = "msprof"
47
+ _ascend_mark = "Ascend"
49
48
  _summary_dir = "summary"
49
+ _timeline_dir = "timeline"
50
50
  _step_trace_mark = "step_trace"
51
51
  _op_summary_mark = "op_summary"
52
52
  _op_statistic_mark = "op_statistic"
53
- _device_mark = "device"
54
- _msprof_cmd = "msprof"
55
- _info_prefix = "info.json"
56
- _start_log = "start_info"
57
- _rank_id_mark = "rank_id"
58
- _dev_info = "DeviceInfo"
59
- _dev_index = 0
60
- _dev_id = "id"
61
- _ascend_mark = "Ascend"
62
- _hiai_msprof_tail = "Ascend/latest/tools/profiler/bin"
63
53
 
64
- def __init__(self, prof_root_dir: str, time_out=3000) -> None:
65
- self._prof_root_dir = prof_root_dir
66
- self._start_time = 0
67
- self._support_step_trace = True
68
- self._prof_paths = []
69
- self._output_path = None
70
- self._device_path = None
71
- self._model_ids = []
72
- self._iter_ids = []
54
+ def __init__(self, source_path, time_out=3600):
73
55
  self._time_out = time_out
56
+ self.source_path = source_path
57
+ self.prof_root_dir = os.path.abspath(os.path.join(self.source_path, os.path.pardir)) # PROF*/
58
+
74
59
  self._check_msprof_env()
75
60
 
76
- @staticmethod
77
- def _check_readable(file_path: str):
78
- """Check whether the file is readable"""
79
- if not os.access(file_path, os.R_OK):
80
- msg = "The file {} is not readable.".format(file_path)
81
- raise PermissionError(msg)
82
-
83
- @staticmethod
84
- def _parse_start_info(input_file: str):
85
- """Get profiler start time from start info file."""
86
- start_time = -1
61
+ def get_drv_version(self):
62
+ """Get the drv_version for choosing the export mode."""
63
+ host_dir = os.path.join(self.prof_root_dir, 'host')
64
+ cmd = ['python',
65
+ '/usr/local/Ascend/latest/tools/profiler/profiler_tool/analysis/interface/get_msprof_info.py',
66
+ '-dir', host_dir]
87
67
  try:
88
- with open(input_file, "r") as f:
89
- start_time = json.load(f).get("collectionTimeBegin")
90
- except (JSONDecodeError, FileNotFoundError, TypeError, PermissionError) as err:
91
- logger.warning(err)
92
- return int(start_time)
68
+ outs, _ = self._run_cmd(cmd)
69
+ if not outs:
70
+ logger.warning('Check the drvVersion can`t find the result, use single export mode instead.')
71
+ return False
72
+ result = json.loads(outs)
73
+ logger.info('get drv_version result is : %s', result)
74
+ status = result.get('status', 1)
75
+ if status == 1:
76
+ return False
77
+ drv_version = result.get('data', {}).get('version_info', {}).get('drv_version', 0)
78
+ if drv_version >= self.DRV_VERSION:
79
+ return True
80
+ return False
81
+ except (RuntimeError, JSONDecodeError, AttributeError) as err:
82
+ logger.warning('Get the drvVersion error, use single-export mode instead. detail : %s', err)
83
+ return False
93
84
 
94
- def export(self, start_time=0, time_out=3000, support_step_trace=True):
85
+ def export(self, model_iteration_dict=None):
95
86
  """start_time is the time to collect PROF data"""
96
- self._start_time = start_time
97
- self._time_out = time_out
98
- self._support_step_trace = support_step_trace
99
- self._init_output_path()
100
- if not self._output_path:
101
- raise FileNotFoundError("Do not found valid profiling directory")
102
- trace_file = self._get_device_trace_file(self._output_path, self._device_path)
103
- if trace_file:
104
- self._export_whole_prof(self._output_path, trace_file)
105
- self._check_export_files(self._device_path, trace_file)
106
-
107
- def get_job_dir(self):
108
- """Return matched PROF directory path. Call this function after exporting profiling data."""
109
- return self._output_path
110
-
111
- def _run_cmd(self, cmd: List[str], raise_error=True):
112
- """run msprof tool shell command"""
87
+
88
+ flag = self.get_drv_version()
89
+ if not flag or model_iteration_dict:
90
+ flag = False
91
+ if not model_iteration_dict:
92
+ model_iteration_dict = self._generate_step_trace(self.prof_root_dir, self.source_path)
93
+
94
+ if model_iteration_dict:
95
+ for model_id, value in model_iteration_dict.items():
96
+ for iteration_id in value:
97
+ msprof_export_cmd = self._msprof_command_generator_old(self.prof_root_dir, model_id,
98
+ iteration_id)
99
+ self._run_cmd(msprof_export_cmd)
100
+
101
+ self._check_export_files_old(self.source_path, model_iteration_dict)
102
+ else:
103
+ msprof_export_cmd = self._msprof_command_generator(self.prof_root_dir)
104
+ self._run_cmd(msprof_export_cmd)
105
+ self._check_export_files(self.source_path)
106
+
107
+ return flag
108
+
109
+ def _run_cmd(self, cmd):
110
+ """run shell command"""
113
111
  try:
114
112
  proc = Popen(cmd, stdout=PIPE, stderr=PIPE, text=True)
115
113
  except (FileNotFoundError, PermissionError, CalledProcessError) as exc:
116
- raise RuntimeError(exc)
114
+ raise RuntimeError(exc) from exc
117
115
  try:
118
116
  outs, errs = proc.communicate(timeout=self._time_out)
119
- except TimeoutExpired:
117
+ except TimeoutExpired as err:
120
118
  proc.kill()
121
119
  msg = "The possible cause is that too much data is collected " \
122
- "and the export time is too long."
120
+ "and the export time is too long."
123
121
  logger.error(msg)
124
- raise TimeoutError(msg)
122
+ raise TimeoutError(msg) from err
125
123
  logger.info(outs)
126
- if raise_error and errs != self._null_info:
127
- raise RuntimeError(errs)
128
- return outs
124
+ return outs, errs
129
125
 
130
- def _export_helper(self, output, model_id=None, iter_id=None):
126
+ def _msprof_command_generator_old(self, output, model_id=None, iter_id=None):
131
127
  """msprof export helper"""
132
128
  export_cmd = [self._msprof_cmd, "--export=on", "--output={}".format(output)]
133
- if model_id:
129
+ if isinstance(model_id, int) and model_id >= 0:
134
130
  export_cmd.append("--model-id={}".format(model_id))
135
- if iter_id:
131
+ if isinstance(iter_id, int) and iter_id >= 0:
136
132
  export_cmd.append("--iteration-id={}".format(iter_id))
137
- _ = self._run_cmd(export_cmd)
138
-
139
- def _get_model_iter_ids(self, trace_file: str):
140
- """Read the step_trace file and get all the model_ids and iteration_ids"""
141
- if self._model_ids and self._iter_ids:
142
- return
143
- self._check_readable(trace_file)
144
- with open(trace_file, "r") as f:
145
- reader = csv.reader(f)
146
- for idx, row in enumerate(reader):
147
- if idx == 0:
148
- model_idx = row.index(self._csv_header_model_id)
149
- iter_idx = row.index(self._csv_header_iter_id)
150
- else:
151
- self._model_ids.append(int(row[model_idx]))
152
- self._iter_ids.append(int(row[iter_idx]))
153
-
154
- def _check_export_files(self, device_path: str, trace_file: Optional[str]):
155
- """Check the existence of op_summary & op_statistic files."""
156
- summary_path = os.path.join(device_path, self._summary_dir)
157
- if not os.path.isdir(summary_path):
158
- raise RuntimeError("Path {} is not a existing directory.".format(summary_path))
159
-
160
- sumary_filess = os.listdir(summary_path)
161
- op_summary = set()
162
- op_statistic = set()
163
-
164
- for summary_file in sumary_filess:
165
- if summary_file.startswith(self._op_summary_mark):
166
- op_summary.add(summary_file)
167
- elif summary_file.startswith(self._op_statistic_mark):
168
- op_statistic.add(summary_file)
169
-
170
- if not op_summary:
171
- raise RuntimeError("The op_summary file was not found, " \
172
- "perhaps the original data was not collected.")
173
- if not op_statistic:
174
- raise RuntimeError("The op_statistics file was not found, " \
175
- "perhaps the original data was not collected.")
176
-
177
- if not trace_file:
178
- return
179
-
180
- dev_id = context.get_context("device_id")
181
- self._get_model_iter_ids(trace_file)
182
-
183
- for model_id, iter_id in zip(self._model_ids, self._iter_ids):
184
- tag = "_{}_{}_{}.csv".format(dev_id, model_id, iter_id)
185
- op_sum_file = self._op_summary_mark + tag
186
- op_sta_file = self._op_statistic_mark + tag
187
- if op_sum_file not in op_summary:
188
- logger.warning("[Profiler]The file {} was not found, " \
189
- "perhaps the original data was not collected.".format(op_sum_file))
190
- if op_sta_file not in op_statistic:
191
- logger.warning("[Profiler]The file {} was not found, " \
192
- "perhaps the original data was not collected.".format(op_sta_file))
193
-
194
- logger.info("Finish checking files.")
195
-
196
- def _export_whole_prof(self, prof: str, trace_file: str):
197
- """export all the data under PROF directory"""
198
- self._get_model_iter_ids(trace_file)
199
-
200
- for model_id, iter_id in zip(self._model_ids, self._iter_ids):
201
- self._export_helper(prof, model_id, iter_id)
202
-
203
- def _get_device_trace_file(self, prof_path: str, device_path: str):
204
- """search the step trace csv file under device directory"""
205
-
206
- summary_path = os.path.join(device_path, self._summary_dir)
207
-
208
- if not os.path.exists(summary_path):
209
- self._export_helper(output=prof_path)
133
+ return export_cmd
210
134
 
211
- if not os.path.isdir(summary_path):
212
- msg = "Path {} is not a existing directory. Make sure there is " \
213
- "valid profiling data directory!".format(summary_path)
214
- raise FileNotFoundError(msg)
215
-
216
- step_trace_file = get_file_path(summary_path, self._step_trace_mark)
217
-
218
- if not step_trace_file and self._support_step_trace:
219
- msg = "Do not found step trace csv file in {}.".format(self._output_path)
220
- raise FileNotFoundError(msg)
221
-
222
- return step_trace_file
135
+ def _msprof_command_generator(self, output):
136
+ """msprof export helper"""
137
+ return [self._msprof_cmd, "--export=on", "--output={}".format(output)]
223
138
 
224
139
  def _check_msprof_env(self):
225
140
  """Check the existence of msprof binary tool"""
226
- msprof_cmd = ["which", self._msprof_cmd]
227
- outs = self._run_cmd(msprof_cmd, raise_error=False)
228
- if outs != self._null_info:
229
- return
230
- logger.warning("[Profiler]The msprof command was not found. Searching from environment variables...")
231
- self._search_and_add()
232
141
 
233
- def _search_and_add(self):
234
- """Search msprof and add it to PATH"""
235
142
  def _check_msprof(temp_path: str):
236
143
  if not os.path.isdir(temp_path):
237
144
  return False
@@ -240,6 +147,12 @@ class AscendMsprofExporter:
240
147
  return True
241
148
  return False
242
149
 
150
+ msprof_cmd = ["which", self._msprof_cmd]
151
+ outs, _ = self._run_cmd(msprof_cmd)
152
+ if outs != "":
153
+ return
154
+ logger.warning("[Profiler]The msprof command was not found. Searching from environment variables...")
155
+
243
156
  msprof_path = None
244
157
  envs = os.environ
245
158
  if envs.get("ASCEND_TOOLKIT_HOME"):
@@ -252,8 +165,7 @@ class AscendMsprofExporter:
252
165
  for path in path_list:
253
166
  if self._ascend_mark in path:
254
167
  prefix = path.split(self._ascend_mark)[0]
255
- tail = self._hiai_msprof_tail
256
- temp_path = os.path.join(prefix, tail)
168
+ temp_path = os.path.join(prefix, self._hiai_msprof_tail)
257
169
  if _check_msprof(temp_path):
258
170
  msprof_path = temp_path
259
171
  break
@@ -264,98 +176,81 @@ class AscendMsprofExporter:
264
176
 
265
177
  logger.info("The msprof command has been added to the path!")
266
178
 
267
- def _init_output_path(self):
268
- """find all the directories start with PROF"""
269
- self._prof_paths = []
179
+ def _generate_step_trace(self, prof_path, device_path):
180
+ """"generate model_id iteration_id dict"""
270
181
 
271
- if not os.path.isdir(self._prof_root_dir):
272
- msg = "Path {} is not an existing directory.".format(self._prof_root_dir)
273
- raise RuntimeError(msg)
182
+ summary_path = os.path.join(device_path, self._summary_dir)
183
+ timeline_path = os.path.join(device_path, self._timeline_dir)
274
184
 
275
- for loc_root, loc_dirs, _ in os.walk(self._prof_root_dir):
276
- for loc_dir in loc_dirs:
277
- if loc_dir.startswith(self._profiling_prefix):
278
- self._prof_paths.append(os.path.join(loc_root, loc_dir))
185
+ self._run_cmd(self._msprof_command_generator_old(prof_path))
279
186
 
280
- if not self._prof_paths:
281
- msg = "Do not found profiling data. Make sure there are directories start with PROF."
187
+ if not os.path.isdir(summary_path):
188
+ msg = "Path {} is not a existing directory. Make sure there is " \
189
+ "valid profiling data directory!".format(summary_path)
282
190
  raise FileNotFoundError(msg)
283
191
 
284
- # consider there may exists old PROF data, new PROF data have higher priority.
285
- self._prof_paths.sort() # sort by created time
286
-
287
- device_path = self._search_by_rank_id(self._prof_paths)
288
- if device_path:
289
- dev_par = os.path.join(device_path, os.path.pardir)
290
- abs_dev_par = os.path.abspath(dev_par)
291
- self._output_path = abs_dev_par
292
- self._device_path = device_path
293
-
294
- def _search_by_rank_id(self, prof_paths: str):
295
- """search valid device path through rank_id"""
296
- device_paths = []
297
-
298
- for prof_path in prof_paths:
299
- if not os.path.isdir(prof_path):
300
- continue
301
- devices = os.listdir(prof_path)
302
- for device in devices:
303
- if not device.startswith(self._device_mark):
304
- continue
305
- dev_path = os.path.join(prof_path, device)
306
- device_paths.append(dev_path)
307
-
308
- # search by rank id
309
- find_device_path = None
310
- rank_id = None
311
- device_id = context.get_context("device_id")
192
+ step_trace_file = get_file_path(summary_path, self._step_trace_mark)
312
193
 
313
- try:
314
- rank_id = get_rank()
315
- except RuntimeError:
316
- logger.warning("[Profiler]Do not get rank_id in the environment variable, use device_id instead.")
317
-
318
- for dev_path in device_paths:
319
- if not os.path.isdir(dev_path):
320
- continue
321
- start_log = get_file_path(dev_path, self._start_log)
322
- if not start_log:
323
- continue
324
- start_time = self._parse_start_info(start_log)
325
- if start_time < self._start_time:
326
- continue
327
- info_json = get_file_path(dev_path, self._info_prefix)
328
- if not info_json:
329
- continue
330
- temp_rank_id, temp_dev_id = self._parse_info_json(info_json)
331
- if rank_id is not None and rank_id == temp_rank_id:
332
- find_device_path = dev_path
333
- break
334
- if (rank_id is None or temp_rank_id == -1) and device_id == temp_dev_id:
335
- find_device_path = dev_path
336
-
337
- return find_device_path
338
-
339
- def _parse_info_json(self, info_file: str):
340
- """get rank_id from info.json.{device_id} file"""
341
- rank_id = -1
342
- dev_id = -1
343
- info_dict = {}
344
- try:
345
- with open(info_file, "r") as f:
346
- info_dict = json.load(f)
347
- except (JSONDecodeError, FileNotFoundError, TypeError, PermissionError) as err:
348
- logger.warning(err)
349
- if info_dict.get(self._rank_id_mark) is None:
350
- msg = "[Profiler]There is no rank_id key in file {}".format(info_file)
351
- logger.warning(msg)
352
- else:
353
- rank_id = info_dict.get(self._rank_id_mark)
194
+ if not step_trace_file:
195
+ logger.info("Do not found step trace csv file in {} .".format(summary_path))
196
+ return None
197
+
198
+ step_trace = defaultdict(list)
199
+ with os.fdopen(os.open(step_trace_file, os.O_RDONLY, 0o600), newline='', mode='r') as csvfile:
200
+ reader = csv.reader(csvfile, delimiter=',', quotechar='"')
201
+ for index, value in enumerate(next(reader)):
202
+ if value == 'Model ID':
203
+ model_id = index
204
+ if value == 'Iteration ID':
205
+ iteration_id = index
206
+ for row in reader:
207
+ step_trace[int(row[model_id])].append(int(row[iteration_id]))
208
+
209
+ if os.path.isdir(summary_path):
210
+ shutil.rmtree(summary_path)
211
+ if os.path.isdir(timeline_path):
212
+ shutil.rmtree(timeline_path)
213
+
214
+ return step_trace
215
+
216
+ def _check_export_files_old(self, source_path, step_trace):
217
+ """Check the existence of op_summary & op_statistic files."""
218
+ summary_path = os.path.join(source_path, self._summary_dir)
219
+ if not os.path.isdir(summary_path):
220
+ raise RuntimeError("Path {} is not a existing directory.".format(summary_path))
221
+ op_summary = set()
222
+ op_statistic = set()
354
223
 
355
- if not info_dict.get(self._dev_info):
356
- return rank_id, dev_id
224
+ for summary_file in os.listdir(summary_path):
225
+ if summary_file.startswith(self._op_summary_mark):
226
+ op_summary.add(summary_file)
227
+ elif summary_file.startswith(self._op_statistic_mark):
228
+ op_statistic.add(summary_file)
357
229
 
358
- dev_info = info_dict.get(self._dev_info)
359
- dev_id = dev_info[self._dev_index].get(self._dev_id, -1)
230
+ if not op_summary:
231
+ raise RuntimeError("The op_summary file was not found, perhaps the original data was not collected.")
232
+ if not op_statistic:
233
+ raise RuntimeError("The op_statistics file was not found, perhaps the original data was not collected.")
234
+
235
+ logger.info("Finish checking files.")
360
236
 
361
- return rank_id, dev_id
237
+ def _check_export_files(self, source_path):
238
+ """Check the existence of op_summary & op_statistic files."""
239
+ summary_path = os.path.join(source_path, self._summary_dir)
240
+ if not os.path.isdir(summary_path):
241
+ raise RuntimeError("Path {} is not a existing directory.".format(summary_path))
242
+ summary_file_list = os.listdir(summary_path)
243
+ op_summary = set()
244
+ op_statistic = set()
245
+
246
+ for summary_file in summary_file_list:
247
+ if summary_file.startswith(self._op_summary_mark):
248
+ op_summary.add(summary_file)
249
+ elif summary_file.startswith(self._op_statistic_mark):
250
+ op_statistic.add(summary_file)
251
+
252
+ if not op_summary:
253
+ raise RuntimeError("The op_summary file was not found, perhaps the original data was not collected.")
254
+ if not op_statistic:
255
+ raise RuntimeError("The op_statistics file was not found, perhaps the original data was not collected.")
256
+ logger.info("Finish checking files.")