mindspore 2.6.0__cp311-cp311-win_amd64.whl → 2.7.0rc1__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 (403) 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 +1 -1
  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 +40 -9
  9. mindspore/{_deprecated → _extends/optimize}/__init__.py +9 -3
  10. mindspore/_extends/optimize/cell_utils.py +96 -0
  11. mindspore/_extends/parse/__init__.py +2 -2
  12. mindspore/_extends/parse/compile_config.py +44 -22
  13. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +1 -1
  14. mindspore/_extends/parse/parser.py +36 -61
  15. mindspore/_extends/parse/resources.py +39 -0
  16. mindspore/_extends/parse/standard_method.py +32 -13
  17. mindspore/_extends/parse/trope.py +8 -1
  18. mindspore/_extends/pijit/__init__.py +1 -2
  19. mindspore/amp.py +4 -4
  20. mindspore/atlprov.dll +0 -0
  21. mindspore/avcodec-59.dll +0 -0
  22. mindspore/avdevice-59.dll +0 -0
  23. mindspore/avfilter-8.dll +0 -0
  24. mindspore/avformat-59.dll +0 -0
  25. mindspore/avutil-57.dll +0 -0
  26. mindspore/boost/adasum.py +1 -1
  27. mindspore/boost/boost_cell_wrapper.py +4 -4
  28. mindspore/c1.dll +0 -0
  29. mindspore/c1xx.dll +0 -0
  30. mindspore/c2.dll +0 -0
  31. mindspore/common/__init__.py +27 -2
  32. mindspore/common/_grad_function.py +2 -1
  33. mindspore/common/_pijit_context.py +28 -7
  34. mindspore/common/_stub_tensor.py +1 -209
  35. mindspore/common/_tensor_cpp_method.py +1 -1
  36. mindspore/common/_tensor_docs.py +76 -15
  37. mindspore/common/api.py +193 -112
  38. mindspore/common/dtype.py +21 -11
  39. mindspore/common/dump.py +10 -15
  40. mindspore/common/generator.py +2 -3
  41. mindspore/common/hook_handle.py +11 -2
  42. mindspore/common/jit_config.py +1 -1
  43. mindspore/common/jit_trace.py +84 -105
  44. mindspore/common/parameter.py +26 -12
  45. mindspore/common/recompute.py +3 -3
  46. mindspore/common/sparse_tensor.py +0 -3
  47. mindspore/common/symbol.py +0 -1
  48. mindspore/common/tensor.py +48 -83
  49. mindspore/communication/_comm_helper.py +46 -4
  50. mindspore/communication/management.py +79 -7
  51. mindspore/context.py +38 -23
  52. mindspore/dataset/core/config.py +3 -3
  53. mindspore/dataset/engine/datasets.py +20 -7
  54. mindspore/dataset/engine/datasets_user_defined.py +32 -2
  55. mindspore/dataset/engine/iterators.py +2 -2
  56. mindspore/dataset/engine/obs/config_loader.py +2 -2
  57. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +8 -0
  58. mindspore/dataset/transforms/py_transforms.py +7 -3
  59. mindspore/dataset/transforms/transforms.py +7 -3
  60. mindspore/dataset/vision/validators.py +1 -0
  61. mindspore/device_context/ascend/device.py +1 -1
  62. mindspore/device_context/gpu/__init__.py +2 -2
  63. mindspore/device_context/gpu/device.py +1 -1
  64. mindspore/device_context/gpu/op_precision.py +4 -2
  65. mindspore/device_context/gpu/op_tuning.py +6 -3
  66. mindspore/device_manager.py +16 -9
  67. mindspore/dnnl.dll +0 -0
  68. mindspore/dpcmi.dll +0 -0
  69. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +3 -5
  70. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  71. mindspore/experimental/optim/adadelta.py +13 -20
  72. mindspore/experimental/optim/adagrad.py +15 -22
  73. mindspore/experimental/optim/adam.py +17 -24
  74. mindspore/experimental/optim/adamax.py +14 -22
  75. mindspore/experimental/optim/adamw.py +28 -34
  76. mindspore/experimental/optim/asgd.py +15 -25
  77. mindspore/experimental/optim/lr_scheduler.py +27 -45
  78. mindspore/experimental/optim/nadam.py +14 -24
  79. mindspore/experimental/optim/optimizer.py +13 -23
  80. mindspore/experimental/optim/radam.py +18 -24
  81. mindspore/experimental/optim/rmsprop.py +14 -25
  82. mindspore/experimental/optim/rprop.py +15 -26
  83. mindspore/experimental/optim/sgd.py +9 -19
  84. mindspore/hal/__init__.py +4 -4
  85. mindspore/hal/contiguous_tensors_handle.py +2 -2
  86. mindspore/hal/memory.py +1 -0
  87. mindspore/include/api/cell.h +37 -1
  88. mindspore/include/api/delegate.h +10 -0
  89. mindspore/include/api/model.h +3 -0
  90. mindspore/include/api/types.h +2 -2
  91. mindspore/include/c_api/model_c.h +0 -58
  92. mindspore/include/c_api/tensor_c.h +0 -26
  93. mindspore/include/dataset/vision_ascend.h +1 -1
  94. mindspore/jpeg62.dll +0 -0
  95. mindspore/mindrecord/tools/cifar10.py +60 -11
  96. mindspore/mindrecord/tools/cifar10_to_mr.py +5 -0
  97. mindspore/mindspore_backend_common.dll +0 -0
  98. mindspore/mindspore_backend_manager.dll +0 -0
  99. mindspore/mindspore_common.dll +0 -0
  100. mindspore/mindspore_core.dll +0 -0
  101. mindspore/mindspore_cpu_res_manager.dll +0 -0
  102. mindspore/mindspore_dump.dll +0 -0
  103. mindspore/mindspore_frontend.dll +0 -0
  104. mindspore/mindspore_glog.dll +0 -0
  105. mindspore/mindspore_memory_pool.dll +0 -0
  106. mindspore/mindspore_ms_backend.dll +0 -0
  107. mindspore/mindspore_ops.dll +0 -0
  108. mindspore/mindspore_ops_host.dll +0 -0
  109. mindspore/mindspore_ops_kernel_common.dll +0 -0
  110. mindspore/mindspore_profiler.dll +0 -0
  111. mindspore/mindspore_pyboost.dll +0 -0
  112. mindspore/mindspore_pynative.dll +0 -0
  113. mindspore/mindspore_res_manager.dll +0 -0
  114. mindspore/mindspore_runtime_pipeline.dll +0 -0
  115. mindspore/mint/__init__.py +4 -44
  116. mindspore/mint/distributed/__init__.py +1 -0
  117. mindspore/mint/distributed/distributed.py +208 -5
  118. mindspore/mint/nn/__init__.py +1 -1
  119. mindspore/mint/nn/functional.py +53 -6
  120. mindspore/mint/nn/layer/_functions.py +164 -294
  121. mindspore/mint/nn/layer/activation.py +8 -6
  122. mindspore/mint/nn/layer/conv.py +122 -98
  123. mindspore/mint/nn/layer/normalization.py +8 -22
  124. mindspore/mint/optim/adam.py +19 -18
  125. mindspore/mint/optim/adamw.py +14 -8
  126. mindspore/mint/optim/sgd.py +5 -5
  127. mindspore/msobj140.dll +0 -0
  128. mindspore/mspdb140.dll +0 -0
  129. mindspore/mspdbcore.dll +0 -0
  130. mindspore/mspdbst.dll +0 -0
  131. mindspore/mspft140.dll +0 -0
  132. mindspore/msvcdis140.dll +0 -0
  133. mindspore/msvcp140_1.dll +0 -0
  134. mindspore/msvcp140_2.dll +0 -0
  135. mindspore/msvcp140_atomic_wait.dll +0 -0
  136. mindspore/msvcp140_codecvt_ids.dll +0 -0
  137. mindspore/nn/cell.py +325 -499
  138. mindspore/nn/grad/cell_grad.py +11 -12
  139. mindspore/nn/layer/activation.py +32 -34
  140. mindspore/nn/layer/basic.py +67 -64
  141. mindspore/nn/layer/channel_shuffle.py +4 -4
  142. mindspore/nn/layer/combined.py +4 -2
  143. mindspore/nn/layer/conv.py +86 -85
  144. mindspore/nn/layer/dense.py +9 -7
  145. mindspore/nn/layer/embedding.py +50 -52
  146. mindspore/nn/layer/image.py +37 -39
  147. mindspore/nn/layer/math.py +111 -112
  148. mindspore/nn/layer/normalization.py +56 -44
  149. mindspore/nn/layer/pooling.py +58 -63
  150. mindspore/nn/layer/rnn_cells.py +33 -33
  151. mindspore/nn/layer/rnns.py +56 -56
  152. mindspore/nn/layer/thor_layer.py +74 -73
  153. mindspore/nn/layer/transformer.py +11 -1
  154. mindspore/nn/learning_rate_schedule.py +20 -20
  155. mindspore/nn/loss/loss.py +79 -81
  156. mindspore/nn/optim/adam.py +1 -1
  157. mindspore/nn/optim/adasum.py +2 -2
  158. mindspore/nn/optim/optimizer.py +1 -1
  159. mindspore/nn/optim/thor.py +2 -2
  160. mindspore/nn/probability/distribution/exponential.py +2 -1
  161. mindspore/nn/probability/distribution/poisson.py +2 -1
  162. mindspore/nn/sparse/sparse.py +3 -3
  163. mindspore/nn/wrap/cell_wrapper.py +34 -37
  164. mindspore/nn/wrap/grad_reducer.py +37 -37
  165. mindspore/nn/wrap/loss_scale.py +72 -74
  166. mindspore/numpy/array_creations.py +5 -5
  167. mindspore/numpy/fft.py +1 -1
  168. mindspore/numpy/math_ops.py +1 -1
  169. mindspore/opencv_core452.dll +0 -0
  170. mindspore/opencv_imgcodecs452.dll +0 -0
  171. mindspore/opencv_imgproc452.dll +0 -0
  172. mindspore/ops/_grad_experimental/grad_comm_ops.py +51 -13
  173. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -0
  174. mindspore/ops/_vmap/vmap_array_ops.py +6 -13
  175. mindspore/ops/_vmap/vmap_nn_ops.py +8 -16
  176. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +17 -8
  177. mindspore/ops/auto_generate/gen_extend_func.py +1 -51
  178. mindspore/ops/auto_generate/gen_ops_def.py +463 -257
  179. mindspore/ops/auto_generate/gen_ops_prim.py +1127 -885
  180. mindspore/ops/auto_generate/pyboost_inner_prim.py +31 -1
  181. mindspore/ops/composite/__init__.py +10 -0
  182. mindspore/ops/composite/base.py +8 -4
  183. mindspore/ops/composite/multitype_ops/__init__.py +12 -1
  184. mindspore/ops/composite/multitype_ops/_compile_utils.py +132 -108
  185. mindspore/ops/composite/multitype_ops/add_impl.py +70 -2
  186. mindspore/ops/composite/multitype_ops/div_impl.py +49 -0
  187. mindspore/ops/composite/multitype_ops/floordiv_impl.py +29 -0
  188. mindspore/ops/composite/multitype_ops/getitem_impl.py +11 -0
  189. mindspore/ops/composite/multitype_ops/mod_impl.py +5 -3
  190. mindspore/ops/composite/multitype_ops/mul_impl.py +49 -0
  191. mindspore/ops/composite/multitype_ops/setitem_impl.py +57 -0
  192. mindspore/ops/composite/multitype_ops/sub_impl.py +34 -0
  193. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +14 -0
  194. mindspore/ops/function/__init__.py +3 -1
  195. mindspore/ops/function/_add_attr_func.py +11 -6
  196. mindspore/ops/function/array_func.py +7 -94
  197. mindspore/ops/function/debug_func.py +4 -3
  198. mindspore/ops/function/grad/grad_func.py +1 -1
  199. mindspore/ops/function/math_func.py +21 -367
  200. mindspore/ops/function/nn_func.py +26 -41
  201. mindspore/ops/function/other_func.py +4 -1
  202. mindspore/ops/function/random_func.py +31 -4
  203. mindspore/ops/functional.py +0 -2
  204. mindspore/ops/functional_overload.py +463 -6
  205. mindspore/ops/op_info_register.py +21 -0
  206. mindspore/ops/operations/__init__.py +5 -2
  207. mindspore/ops/operations/_custom_ops_utils.py +675 -8
  208. mindspore/ops/operations/_inner_ops.py +3 -6
  209. mindspore/ops/operations/_sequence_ops.py +1 -1
  210. mindspore/ops/operations/comm_ops.py +185 -26
  211. mindspore/ops/operations/custom_ops.py +235 -172
  212. mindspore/ops/operations/debug_ops.py +55 -4
  213. mindspore/ops/operations/image_ops.py +13 -13
  214. mindspore/ops/operations/manually_defined/ops_def.py +15 -16
  215. mindspore/ops/operations/math_ops.py +3 -4
  216. mindspore/ops/operations/nn_ops.py +5 -6
  217. mindspore/ops/primitive.py +6 -10
  218. mindspore/ops/tensor_method.py +36 -4
  219. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +1 -1
  220. mindspore/ops_generate/api/functional_map_cpp_generator.py +10 -9
  221. mindspore/ops_generate/api/functions_cc_generator.py +58 -10
  222. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +1 -1
  223. mindspore/ops_generate/common/base_generator.py +14 -0
  224. mindspore/ops_generate/common/gen_constants.py +7 -2
  225. mindspore/ops_generate/common/gen_utils.py +0 -19
  226. mindspore/ops_generate/common/op_proto.py +11 -4
  227. mindspore/ops_generate/common/template.py +88 -11
  228. mindspore/ops_generate/gen_ops.py +1 -1
  229. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +4 -4
  230. mindspore/ops_generate/op_def/ops_name_h_generator.py +0 -3
  231. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +0 -4
  232. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +5 -2
  233. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +49 -8
  234. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +2 -2
  235. mindspore/ops_generate/pyboost/gen_pyboost_func.py +31 -0
  236. mindspore/ops_generate/pyboost/op_template_parser.py +98 -72
  237. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +70 -273
  238. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +14 -6
  239. mindspore/ops_generate/pyboost/pyboost_functions_impl_cpp_generator.py +316 -0
  240. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +1 -1
  241. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +5 -3
  242. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +1 -1
  243. mindspore/ops_generate/pyboost/pyboost_internal_functions_cpp_generator.py +76 -0
  244. mindspore/ops_generate/pyboost/pyboost_internal_functions_h_generator.py +76 -0
  245. mindspore/ops_generate/pyboost/pyboost_internal_kernel_info_adapter_generator.py +125 -0
  246. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +4 -3
  247. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +348 -61
  248. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +1 -1
  249. mindspore/ops_generate/pyboost/pyboost_utils.py +118 -9
  250. mindspore/ops_generate/tensor_py_cc_generator.py +1 -24
  251. mindspore/parallel/_auto_parallel_context.py +4 -2
  252. mindspore/parallel/_cell_wrapper.py +106 -40
  253. mindspore/parallel/_parallel_serialization.py +1 -1
  254. mindspore/parallel/_ps_context.py +4 -6
  255. mindspore/parallel/_tensor.py +167 -12
  256. mindspore/parallel/_transformer/moe.py +1 -1
  257. mindspore/parallel/_transformer/transformer.py +13 -8
  258. mindspore/parallel/auto_parallel.py +12 -5
  259. mindspore/parallel/checkpoint_convert.py +3 -3
  260. mindspore/parallel/checkpoint_transform.py +3 -1
  261. mindspore/parallel/cluster/process_entity/_api.py +84 -48
  262. mindspore/parallel/cluster/process_entity/_utils.py +95 -7
  263. mindspore/parallel/cluster/run.py +43 -4
  264. mindspore/parallel/function/__init__.py +8 -1
  265. mindspore/parallel/function/reshard_func.py +1 -1
  266. mindspore/parallel/nn/__init__.py +15 -2
  267. mindspore/parallel/nn/parallel_cell_wrapper.py +9 -10
  268. mindspore/parallel/nn/parallel_grad_reducer.py +7 -6
  269. mindspore/parallel/shard.py +2 -2
  270. mindspore/parallel/transform_safetensors.py +462 -174
  271. mindspore/pgodb140.dll +0 -0
  272. mindspore/pgort140.dll +0 -0
  273. mindspore/profiler/__init__.py +2 -1
  274. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -7
  275. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +3 -0
  276. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +3 -0
  277. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +3 -3
  278. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
  279. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +4 -4
  280. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +3 -3
  281. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +4 -1
  282. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +2 -1
  283. mindspore/profiler/analysis/task_manager.py +1 -1
  284. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +5 -1
  285. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +2 -1
  286. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +42 -22
  287. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +3 -2
  288. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +9 -5
  289. mindspore/profiler/analysis/viewer/ms_operator_details_viewer.py +132 -0
  290. mindspore/profiler/common/constant.py +16 -0
  291. mindspore/profiler/common/profiler_context.py +25 -27
  292. mindspore/profiler/common/profiler_info.py +0 -16
  293. mindspore/profiler/common/profiler_op_analyse.py +235 -0
  294. mindspore/profiler/common/profiler_output_path.py +23 -8
  295. mindspore/profiler/common/profiler_parameters.py +128 -35
  296. mindspore/profiler/dynamic_profile/__init__.py +0 -0
  297. mindspore/profiler/dynamic_profile/dynamic_monitor_proxy.py +39 -0
  298. mindspore/profiler/dynamic_profile/dynamic_profiler_config_context.py +666 -0
  299. mindspore/profiler/dynamic_profile/dynamic_profiler_utils.py +62 -0
  300. mindspore/profiler/dynamic_profiler.py +305 -314
  301. mindspore/profiler/envprofiler.py +12 -7
  302. mindspore/profiler/experimental_config.py +96 -6
  303. mindspore/profiler/mstx.py +33 -12
  304. mindspore/profiler/platform/__init__.py +2 -3
  305. mindspore/profiler/platform/npu_profiler.py +29 -19
  306. mindspore/profiler/profiler.py +35 -19
  307. mindspore/profiler/profiler_action_controller.py +64 -76
  308. mindspore/profiler/schedule.py +10 -4
  309. mindspore/rewrite/common/config.py +1 -0
  310. mindspore/rewrite/common/namer.py +1 -0
  311. mindspore/rewrite/common/namespace.py +1 -0
  312. mindspore/rewrite/node/node.py +31 -11
  313. mindspore/rewrite/parsers/assign_parser.py +1 -1
  314. mindspore/rewrite/symbol_tree/symbol_tree.py +1 -1
  315. mindspore/run_check/_check_version.py +7 -10
  316. mindspore/runtime/__init__.py +5 -5
  317. mindspore/runtime/event.py +10 -4
  318. mindspore/runtime/executor.py +60 -45
  319. mindspore/runtime/memory.py +21 -30
  320. mindspore/runtime/thread_bind_core.py +298 -164
  321. mindspore/safeguard/rewrite_obfuscation.py +12 -13
  322. mindspore/swresample-4.dll +0 -0
  323. mindspore/swscale-6.dll +0 -0
  324. mindspore/tbbmalloc.dll +0 -0
  325. mindspore/tinyxml2.dll +0 -0
  326. mindspore/train/_utils.py +6 -2
  327. mindspore/train/amp.py +43 -20
  328. mindspore/train/callback/__init__.py +5 -5
  329. mindspore/train/callback/_checkpoint.py +3 -6
  330. mindspore/train/callback/_flops_collector.py +1 -1
  331. mindspore/train/callback/_landscape.py +0 -1
  332. mindspore/train/callback/_train_fault_tolerance.py +71 -13
  333. mindspore/train/data_sink.py +11 -2
  334. mindspore/train/dataset_helper.py +9 -0
  335. mindspore/train/model.py +51 -33
  336. mindspore/train/serialization.py +133 -111
  337. mindspore/train/summary/summary_record.py +13 -2
  338. mindspore/turbojpeg.dll +0 -0
  339. mindspore/utils/__init__.py +3 -2
  340. mindspore/utils/dryrun.py +0 -6
  341. mindspore/utils/runtime_execution_order_check.py +162 -78
  342. mindspore/utils/sdc_detect.py +68 -0
  343. mindspore/utils/utils.py +6 -9
  344. mindspore/vcmeta.dll +0 -0
  345. mindspore/vcruntime140.dll +0 -0
  346. mindspore/vcruntime140_1.dll +0 -0
  347. mindspore/version.py +1 -1
  348. {mindspore-2.6.0.dist-info → mindspore-2.7.0rc1.dist-info}/METADATA +5 -4
  349. {mindspore-2.6.0.dist-info → mindspore-2.7.0rc1.dist-info}/RECORD +352 -390
  350. mindspore/_deprecated/jit.py +0 -198
  351. mindspore/experimental/es/__init__.py +0 -22
  352. mindspore/experimental/es/embedding_service.py +0 -891
  353. mindspore/experimental/es/embedding_service_layer.py +0 -581
  354. mindspore/profiler/parser/__init__.py +0 -14
  355. mindspore/profiler/parser/aicpu_data_parser.py +0 -272
  356. mindspore/profiler/parser/ascend_analysis/__init__.py +0 -14
  357. mindspore/profiler/parser/ascend_analysis/constant.py +0 -71
  358. mindspore/profiler/parser/ascend_analysis/file_manager.py +0 -180
  359. mindspore/profiler/parser/ascend_analysis/function_event.py +0 -185
  360. mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +0 -136
  361. mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +0 -131
  362. mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +0 -104
  363. mindspore/profiler/parser/ascend_analysis/path_manager.py +0 -313
  364. mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +0 -123
  365. mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +0 -86
  366. mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +0 -75
  367. mindspore/profiler/parser/ascend_cluster_generator.py +0 -116
  368. mindspore/profiler/parser/ascend_communicate_generator.py +0 -314
  369. mindspore/profiler/parser/ascend_flops_generator.py +0 -116
  370. mindspore/profiler/parser/ascend_fpbp_generator.py +0 -82
  371. mindspore/profiler/parser/ascend_hccl_generator.py +0 -271
  372. mindspore/profiler/parser/ascend_integrate_generator.py +0 -42
  373. mindspore/profiler/parser/ascend_memory_generator.py +0 -185
  374. mindspore/profiler/parser/ascend_msprof_exporter.py +0 -282
  375. mindspore/profiler/parser/ascend_msprof_generator.py +0 -187
  376. mindspore/profiler/parser/ascend_op_generator.py +0 -334
  377. mindspore/profiler/parser/ascend_steptrace_generator.py +0 -94
  378. mindspore/profiler/parser/ascend_timeline_generator.py +0 -545
  379. mindspore/profiler/parser/base_timeline_generator.py +0 -483
  380. mindspore/profiler/parser/container.py +0 -229
  381. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +0 -697
  382. mindspore/profiler/parser/flops_parser.py +0 -531
  383. mindspore/profiler/parser/framework_enum.py +0 -111
  384. mindspore/profiler/parser/framework_parser.py +0 -464
  385. mindspore/profiler/parser/framework_struct.py +0 -61
  386. mindspore/profiler/parser/gpu_analysis/__init__.py +0 -14
  387. mindspore/profiler/parser/gpu_analysis/function_event.py +0 -44
  388. mindspore/profiler/parser/gpu_analysis/fwk_file_parser.py +0 -89
  389. mindspore/profiler/parser/gpu_analysis/profiler_info_parser.py +0 -72
  390. mindspore/profiler/parser/hccl_parser.py +0 -573
  391. mindspore/profiler/parser/hwts_log_parser.py +0 -122
  392. mindspore/profiler/parser/integrator.py +0 -526
  393. mindspore/profiler/parser/memory_usage_parser.py +0 -277
  394. mindspore/profiler/parser/minddata_analyzer.py +0 -800
  395. mindspore/profiler/parser/minddata_parser.py +0 -186
  396. mindspore/profiler/parser/minddata_pipeline_parser.py +0 -299
  397. mindspore/profiler/parser/op_intermediate_parser.py +0 -149
  398. mindspore/profiler/parser/optime_parser.py +0 -250
  399. mindspore/profiler/parser/profiler_info.py +0 -213
  400. mindspore/profiler/parser/step_trace_parser.py +0 -666
  401. {mindspore-2.6.0.dist-info → mindspore-2.7.0rc1.dist-info}/WHEEL +0 -0
  402. {mindspore-2.6.0.dist-info → mindspore-2.7.0rc1.dist-info}/entry_points.txt +0 -0
  403. {mindspore-2.6.0.dist-info → mindspore-2.7.0rc1.dist-info}/top_level.txt +0 -0
@@ -1,186 +0,0 @@
1
- # Copyright 2020 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
- """Minddata aicpu parser."""
16
- import os
17
- import glob
18
- import csv
19
-
20
- from mindspore.profiler.common.util import get_file_join_name, fwrite_format
21
- from mindspore import log as logger
22
- from mindspore.profiler.common.validator.validate_path import \
23
- validate_and_normalize_path
24
-
25
-
26
- class MinddataParser:
27
- """Minddata Aicpu Parser."""
28
-
29
- @staticmethod
30
- def parse_step_minddata_aicpu_data(one_step, result):
31
- """
32
- Parse step mind_data ai_cpu data.
33
-
34
- Args:
35
- one_step (str): The mind_data step info text, it is one of two structures.
36
-
37
- Type queue: node_name,queue_size,run_start,run_end
38
- Type run: node_name,run_start,run_end,queue_size
39
-
40
- result ([[node_name, node_start, node_end, queue_size]]): Step info list.
41
- """
42
-
43
- if not one_step:
44
- return
45
- node_info = one_step.split(", ")
46
- node_name, node_start, node_end, queue_size = "", 0, 0, 0
47
- if node_info:
48
- node_name = node_info[0].replace("Node:", "")
49
-
50
- if len(node_info) > 3:
51
- if "queue" in node_info[1]:
52
- queue_size = node_info[1].replace("queue size:", "")
53
- node_start = node_info[2].replace("Run start:", "")
54
- node_end = node_info[3].replace("Run end:", "")
55
- elif "Run" in node_info[1]:
56
- queue_size = node_info[3].replace("queue size:", "")
57
- node_start = node_info[1].replace("Run start:", "")
58
- node_end = node_info[2].replace("Run end:", "")
59
- queue_size = int(queue_size) if queue_size.isdigit() else queue_size
60
- node_start = int(node_start) if node_start.isdigit() else node_start
61
- node_end = int(node_end) if node_end.isdigit() else node_end
62
-
63
- one_step_list = [node_name, node_start, node_end, queue_size]
64
- result.append(one_step_list)
65
-
66
- @staticmethod
67
- def parse_minddata_aicpu_data(minddata_aicpu_source_path):
68
- """
69
- Parse minddata get_next info which contains queue size and execute time.
70
-
71
- Args:
72
- minddata_aicpu_source_path (str): the source file path.
73
-
74
- Returns:
75
- list[Union[str, float]], the converted data.
76
- """
77
- result = list()
78
- try:
79
- minddata_aicpu_source_path = validate_and_normalize_path(minddata_aicpu_source_path)
80
- with open(minddata_aicpu_source_path) as source_data_file:
81
- source_data = source_data_file.read()
82
- step_data = source_data.split("\x00")
83
- for one_step in step_data:
84
- MinddataParser.parse_step_minddata_aicpu_data(one_step, result)
85
- except OSError:
86
- logger.error("Open get_next profiling file error.")
87
-
88
- return result
89
-
90
- @staticmethod
91
- def execute(source_path, output_path, job_id, device_id):
92
- """
93
- Execute the parser.
94
-
95
- Args:
96
- source_path (str): the source file path, eg: profiler.
97
- output_path (str): the output file path, eg: profiler.
98
- job_id (str): the job id, eg: PROF_XXX/device_*
99
- device_id (str): the device id.
100
- """
101
- if MinddataParser._is_legacy_aicpu_data(source_path, job_id):
102
- logger.warning("The aicpu data is legacy, which will be deprecated in the future, please update your "
103
- "CANN and driver version.")
104
- MinddataParser._execute_legacy(os.path.join(source_path, job_id), output_path, device_id)
105
- return
106
-
107
- MinddataParser._execute(source_path, output_path, job_id, device_id)
108
-
109
- @staticmethod
110
- def _is_legacy_aicpu_data(source_path, job_id) -> bool:
111
- """
112
- Check whether the aicpu data is legacy.
113
-
114
- Args:
115
- source_path (str): the source file path, eg: profiler.
116
- job_id (str): the job id, eg: PROF_XXX/device_*
117
- Returns:
118
- bool, True if the aicpu data is legacy, False otherwise.
119
- """
120
- legacy_files = glob.glob(os.path.join(source_path, job_id, "data", "DATA_PREPROCESS.*"))
121
- return len(legacy_files) > 0
122
-
123
- @staticmethod
124
- def _execute(source_path, output_path, job_id, device_id):
125
- """
126
- Execute the parser when using newest CANN and driver version.
127
-
128
- Args:
129
- source_path (str): the source file path, eg: profiler.
130
- output_path (str): the output file path, eg: profiler.
131
- job_id (str): the job id, eg: PROF_XXX/device_*
132
- device_id (str): the device id.
133
- """
134
- minddata_aicpu_data = []
135
- prof_path = job_id.split("/")[0]
136
- if not prof_path:
137
- logger.error("The job_id is invalid: %s", job_id)
138
- return
139
-
140
- prof_output_path = os.path.join(source_path, prof_path, "mindstudio_profiler_output")
141
- aicpu_file = glob.glob(os.path.join(prof_output_path, "aicpu_mi_*.csv"))
142
- if not aicpu_file:
143
- return
144
-
145
- # aicpu_file len is 1
146
- for file_path in aicpu_file:
147
- file_path = validate_and_normalize_path(file_path)
148
- with open(file_path, "r", newline='') as f:
149
- reader = csv.reader(f)
150
- minddata_aicpu_data = [[line[1], line[2][:-2], line[3][:-2], line[4]] for line in reader]
151
-
152
- if minddata_aicpu_data:
153
- minddata_aicpu_output_path = os.path.join(output_path, "minddata_aicpu_" + str(device_id) + ".txt")
154
- fwrite_format(minddata_aicpu_output_path, minddata_aicpu_data[1:], is_start=True)
155
- logger.info("Minddata aicpu data has been saved to %s", minddata_aicpu_output_path)
156
-
157
- @staticmethod
158
- def _execute_legacy(source_path, output_path, device_id):
159
- """
160
- Execute the parser when using legacy CANN and driver version.
161
-
162
- Args:
163
- source_path (str): the source file path, eg: profiler/PROF_XXX/device_*.
164
- output_path (str): the output file path, eg: profiler.
165
- device_id (str): the device id.
166
- """
167
- col_names = ["node_name", "start_time", "end_time", "queue_size"]
168
- source_path = validate_and_normalize_path(source_path)
169
- minddata_aicpu_source_path = get_file_join_name(
170
- input_path=source_path, file_name='DATA_PREPROCESS.AICPUMI')
171
- if not minddata_aicpu_source_path:
172
- minddata_aicpu_source_path = get_file_join_name(
173
- input_path=source_path, file_name='DATA_PREPROCESS.dev.AICPUMI')
174
- if not minddata_aicpu_source_path:
175
- minddata_aicpu_source_path = get_file_join_name(
176
- input_path=os.path.join(source_path, "data"), file_name='DATA_PREPROCESS.AICPUMI')
177
- if not minddata_aicpu_source_path:
178
- minddata_aicpu_source_path = get_file_join_name(
179
- input_path=os.path.join(source_path, "data"), file_name='DATA_PREPROCESS.dev.AICPUMI')
180
- if not minddata_aicpu_source_path:
181
- return
182
- minddata_aicpu_output_path = os.path.join(output_path, "minddata_aicpu_" + str(device_id) + ".txt")
183
- minddata_aicpu_data = MinddataParser.parse_minddata_aicpu_data(minddata_aicpu_source_path)
184
- if minddata_aicpu_data:
185
- fwrite_format(minddata_aicpu_output_path, " ".join(col_names), is_start=True)
186
- fwrite_format(minddata_aicpu_output_path, minddata_aicpu_data, is_start=True)
@@ -1,299 +0,0 @@
1
- # Copyright 2020 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
- """Thr parser for parsing minddata pipeline files."""
16
- import csv
17
- import json
18
- import os
19
- import stat
20
- from queue import Queue
21
-
22
- from mindspore.profiler.common.exceptions.exceptions import \
23
- ProfilerPathErrorException, ProfilerRawFileException, \
24
- ProfilerDirNotFoundException
25
- from mindspore import log as logger
26
- from mindspore.profiler.common.validator.validate_path import \
27
- validate_and_normalize_path
28
-
29
-
30
- class MinddataPipelineParser:
31
- """
32
- Thr parser for parsing minddata pipeline files.
33
-
34
- Args:
35
- source_dir (str): The minddata pipeline source dir.
36
- device_id (str): The device ID.
37
- output_path (str): The directory of the parsed file. Default: `./`.
38
-
39
- Raises:
40
- ProfilerPathErrorException: If the minddata pipeline file path or
41
- the output path is invalid.
42
- """
43
- _raw_pipeline_file_name = 'pipeline_profiling_{}.json'
44
- _parsed_pipeline_file_name = 'minddata_pipeline_raw_{}.csv'
45
- _col_names = [
46
- 'op_id', 'op_type', 'num_workers', 'output_queue_size',
47
- 'output_queue_average_size', 'output_queue_length',
48
- 'output_queue_usage_rate', 'sample_interval', 'parent_id', 'children_id'
49
- ]
50
-
51
- def __init__(self, source_dir, device_id, output_path='./'):
52
- self._device_id = device_id
53
- self._pipeline_path = self._get_pipeline_path(source_dir)
54
- self._save_path = self._get_save_path(output_path)
55
-
56
- @property
57
- def save_path(self):
58
- """
59
- The property of save path.
60
-
61
- Returns:
62
- str, the save path.
63
- """
64
- return self._save_path
65
-
66
- def parse(self):
67
- """
68
- Parse the minddata pipeline files.
69
-
70
- Raises:
71
- ProfilerRawFileException: If fails to parse the raw file of
72
- minddata pipeline or the file is empty.
73
- """
74
- if not self._pipeline_path:
75
- return
76
- with open(self._pipeline_path, 'r') as file:
77
- try:
78
- pipeline_info = json.load(file)
79
- except (json.JSONDecodeError, TypeError) as err:
80
- logger.warning(err)
81
- raise ProfilerRawFileException(
82
- 'Fail to parse minddata pipeline file.'
83
- ) from err
84
- if not pipeline_info:
85
- logger.warning('The minddata pipeline file is empty.')
86
- raise ProfilerRawFileException(
87
- 'The minddata pipeline file is empty.'
88
- )
89
-
90
- self._parse_and_save(pipeline_info)
91
-
92
- def _get_pipeline_path(self, source_dir):
93
- """
94
- Get the minddata pipeline file path.
95
-
96
- Args:
97
- source_dir (str): The minddata pipeline source dir.
98
-
99
- Returns:
100
- str, the minddata pipeline file path.
101
- """
102
- pipeline_path = os.path.join(
103
- source_dir,
104
- self._raw_pipeline_file_name.format(self._device_id)
105
- )
106
-
107
- try:
108
- pipeline_path = validate_and_normalize_path(pipeline_path)
109
- except RuntimeError as err:
110
- logger.warning('Minddata pipeline file is invalid.')
111
- raise ProfilerPathErrorException('Minddata pipeline file is invalid.') from err
112
- if not os.path.isfile(pipeline_path):
113
- logger.warning(
114
- 'The minddata pipeline file <%s> not found.', pipeline_path
115
- )
116
- pipeline_path = ""
117
-
118
- return pipeline_path
119
-
120
- def _get_save_path(self, output_path):
121
- """
122
- Get the save path.
123
-
124
- Args:
125
- output_path (str): The output dir.
126
-
127
- Returns:
128
- str, the save path.
129
- """
130
- try:
131
- output_dir = validate_and_normalize_path(output_path)
132
- except RuntimeError as err:
133
- logger.warning('Output path is invalid.')
134
- raise ProfilerPathErrorException('Output path is invalid.') from err
135
- if not os.path.isdir(output_dir):
136
- logger.warning('The output dir <%s> not found.', output_dir)
137
- raise ProfilerDirNotFoundException(output_dir)
138
- return os.path.join(
139
- output_dir, self._parsed_pipeline_file_name.format(self._device_id)
140
- )
141
-
142
- def _parse_and_save(self, pipeline_info):
143
- """
144
- Parse and save the parsed minddata pipeline file.
145
-
146
- Args:
147
- pipeline_info (dict): The pipeline info reads from the raw file of
148
- the minddata pipeline.
149
-
150
- Raises:
151
- ProfilerRawFileException: If the format of minddata pipeline raw
152
- file is wrong.
153
- """
154
- sample_interval = pipeline_info.get('sampling_interval')
155
- op_info = pipeline_info.get('op_info')
156
- if sample_interval is None or not op_info:
157
- raise ProfilerRawFileException(
158
- 'The format of minddata pipeline raw file is wrong.'
159
- )
160
-
161
- op_id_info_cache = {}
162
- for item in op_info:
163
- if not item:
164
- raise ProfilerRawFileException(
165
- 'The content of minddata pipeline raw file is wrong.'
166
- )
167
- op_id_info_cache[item.get('op_id')] = item
168
-
169
- with os.fdopen(os.open(self._save_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as save_file:
170
- csv_writer = csv.writer(save_file)
171
- csv_writer.writerow(self._col_names)
172
- self._parse_and_save_op_info(
173
- csv_writer, op_id_info_cache, sample_interval
174
- )
175
- os.chmod(self._save_path, stat.S_IREAD | stat.S_IWRITE)
176
-
177
- def _parse_and_save_op_info(self, csv_writer, op_id_info_cache,
178
- sample_interval):
179
- """
180
- Parse and save the minddata pipeline operator information.
181
-
182
- Args:
183
- csv_writer (csv.writer): The csv writer.
184
- op_id_info_cache (dict): The operator id and information cache.
185
- sample_interval (int): The sample interval.
186
-
187
- Raises:
188
- ProfilerRawFileException: If the operator that id is 0 does not exist.
189
- """
190
- queue = Queue()
191
- root_node = op_id_info_cache.get(0)
192
- if not root_node:
193
- raise ProfilerRawFileException(
194
- 'The format of minddata pipeline raw file is wrong, '
195
- 'the operator that id is 0 does not exist.'
196
- )
197
- root_node['parent_id'] = None
198
- queue.put_nowait(root_node)
199
-
200
- while not queue.empty():
201
- node = queue.get_nowait()
202
- self._update_child_node(node, op_id_info_cache)
203
- csv_writer.writerow(self._get_op_info(node, sample_interval))
204
-
205
- op_id = node.get('op_id')
206
- children_ids = node.get('children')
207
- if not children_ids:
208
- continue
209
- for child_op_id in children_ids:
210
- sub_node = op_id_info_cache.get(child_op_id)
211
- sub_node['parent_id'] = op_id
212
- queue.put_nowait(sub_node)
213
-
214
- def _update_child_node(self, node, op_id_info_cache):
215
- """
216
- Updates the child node information of the operator.
217
-
218
- Args:
219
- node (dict): The node represents an operator.
220
- op_id_info_cache (dict): The operator id and information cache.
221
- """
222
- child_op_ids = node.get('children')
223
- if not child_op_ids:
224
- return
225
-
226
- queue = Queue()
227
- self._cp_list_item_to_queue(child_op_ids, queue)
228
-
229
- new_child_op_ids = []
230
- while not queue.empty():
231
- child_op_id = queue.get_nowait()
232
- child_node = op_id_info_cache.get(child_op_id)
233
- if child_node is None:
234
- continue
235
- metrics = child_node.get('metrics')
236
- if not metrics or not metrics.get('output_queue'):
237
- op_ids = child_node.get('children')
238
- if op_ids:
239
- self._cp_list_item_to_queue(op_ids, queue)
240
- else:
241
- new_child_op_ids.append(child_op_id)
242
-
243
- node['children'] = new_child_op_ids
244
-
245
- def _get_op_info(self, op_node, sample_interval):
246
- """
247
- Get the operator information.
248
-
249
- Args:
250
- op_node (dict): The node represents an operator.
251
- sample_interval (int): The sample interval.
252
-
253
- Returns:
254
- list[str, int, float], the operator information.
255
- """
256
- queue_size = None
257
- queue_average_size = None
258
- queue_length = None
259
- queue_usage_rate = None
260
- metrics = op_node.get('metrics')
261
- if metrics:
262
- output_queue = metrics.get('output_queue')
263
- if output_queue:
264
- queue_size = output_queue.get('size')
265
- if queue_size is None:
266
- raise ValueError("The queue can not be None.")
267
- if queue_size:
268
- queue_average_size = sum(queue_size) / len(queue_size)
269
- queue_length = output_queue.get('length')
270
- if queue_length == 0:
271
- raise ValueError("The length of queue can not be 0.")
272
- if queue_average_size is not None:
273
- queue_usage_rate = queue_average_size / queue_length
274
-
275
- children_id = op_node.get('children')
276
- op_info = [
277
- op_node.get('op_id'),
278
- op_node.get('op_type'),
279
- op_node.get('num_workers'),
280
- queue_size,
281
- queue_average_size,
282
- queue_length,
283
- queue_usage_rate,
284
- sample_interval,
285
- op_node.get('parent_id'),
286
- children_id if children_id else None
287
- ]
288
- return op_info
289
-
290
- def _cp_list_item_to_queue(self, inner_list, queue):
291
- """
292
- Copy the contents of a list to a queue.
293
-
294
- Args:
295
- inner_list (list): The list.
296
- queue (Queue): The target queue.
297
- """
298
- for item in inner_list:
299
- queue.put_nowait(item)
@@ -1,149 +0,0 @@
1
- # Copyright 2022 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 intermediate files parser."""
16
- import csv
17
- import os
18
- import stat
19
- from mindspore.profiler.common.exceptions.exceptions import ProfilerFileNotFoundException, \
20
- ProfilerIOException
21
- from mindspore import log as logger
22
- from mindspore.profiler.common.validator.validate_path import validate_and_normalize_path
23
-
24
-
25
- class OPIntermediateParser:
26
- """
27
- Op intermediate files parser.
28
-
29
- Args:
30
- profiling_dir (str): The directory where the parsed profiling files are
31
- located.
32
- rank_id (str): The rank ID.
33
- """
34
-
35
- _output_timeline_data_file_path = 'output_timeline_data_{}.txt'
36
- _file_name_op_intermediate_type = 'pynative_op_intermediate_{}_type.csv'
37
- _file_name_op_intermediate_detail = 'pynative_op_intermediate_{}_detail.csv'
38
-
39
- _op_intermediate_type_header = ['op_type', 'execution_time', 'execution_frequency', 'percent']
40
- _op_intermediate_op_header = ['full_op_name', 'execution_time']
41
-
42
- _ms_decimal_digits = 6
43
- _percent_decimal_digits = 2
44
-
45
- def __init__(self, profiling_dir, rank_id):
46
- self._profiling_dir = profiling_dir
47
- self._rank_id = rank_id
48
-
49
- def get_timeline_data(self, all_reduce_names=None):
50
- """
51
- Load timeline data from file.
52
-
53
- Args:
54
- all_reduce_names (list): The communication operator list.
55
- """
56
- all_reduce_names = all_reduce_names or []
57
- file_path = os.path.join(
58
- self._profiling_dir,
59
- self._output_timeline_data_file_path.format(self._rank_id)
60
- )
61
- file_path = validate_and_normalize_path(file_path)
62
- if not os.path.exists(file_path):
63
- logger.critical("Failed to find parsed timeline file.")
64
- raise ProfilerFileNotFoundException('parsed timeline file')
65
-
66
- timeline_list = []
67
- try:
68
- with open(file_path, 'r') as f_obj:
69
- for line in f_obj:
70
- # line: op_name, stream_id, start_time(ms), duration(ms)
71
- line_list = line.strip('\n').split(',')
72
- # filter out communication operators
73
- if line_list[0] == 'op_name' or line_list[0] in all_reduce_names:
74
- continue
75
- timeline_list.append(line_list)
76
- except (IOError, OSError) as err:
77
- logger.critical('Error occurred when read timeline intermediate file: %s', err)
78
- raise ProfilerIOException() from err
79
- finally:
80
- pass
81
-
82
- return timeline_list
83
-
84
- def parser_pynative_op_intermediate_detail(self):
85
- """Parse pynative op intermediate detail."""
86
- timeline_list = self.get_timeline_data(None)
87
- # key:op name, value:[op count, total op execution time]
88
- op_intermediate_detail = {}
89
- for timeline in timeline_list:
90
- op_name = timeline[0].split('/')[-1]
91
-
92
- detail = op_intermediate_detail.get(op_name)
93
- if not detail:
94
- detail = [0, 0]
95
- op_intermediate_detail[op_name] = detail
96
- detail[0] = detail[0] + 1
97
- detail[1] = detail[1] + float(timeline[3])
98
-
99
- op_op_file_path = os.path.join(self._profiling_dir,
100
- self._file_name_op_intermediate_detail.format(self._rank_id))
101
- with os.fdopen(os.open(op_op_file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as op_file:
102
- csv_writer = csv.writer(op_file)
103
- csv_writer.writerow(self._op_intermediate_op_header)
104
-
105
- for op_name, op_name_time_info in op_intermediate_detail.items():
106
- op_info = [
107
- op_name, round(op_name_time_info[1] / op_name_time_info[0], self._ms_decimal_digits)
108
- ]
109
- csv_writer.writerow(op_info)
110
- os.chmod(op_op_file_path, stat.S_IREAD | stat.S_IWRITE)
111
-
112
- def parser_pynative_op_type(self):
113
- """Parse pynative op intermediate type."""
114
- timeline_list = self.get_timeline_data(None)
115
- # key:op type, value:[op count, total op execution time, op execution time percent]
116
- op_type_list = {}
117
- for timeline in timeline_list:
118
- type_name = timeline[0].split('/')[-1].split('-')[0]
119
- op_type = op_type_list.get(type_name)
120
- if not op_type:
121
- op_type = [0, 0, 0]
122
- op_type_list[type_name] = op_type
123
- op_type[0] = op_type[0] + 1
124
- op_type[1] = op_type[1] + float(timeline[3])
125
-
126
- sum_avg_time = 0
127
- for _, op_type in op_type_list.items():
128
- op_type[1] = op_type[1] / op_type[0]
129
- sum_avg_time = sum_avg_time + op_type[1]
130
-
131
- if sum_avg_time <= 0:
132
- logger.error("Operator time must be greater than 0.")
133
- return
134
- for _, op_type in op_type_list.items():
135
- op_type[2] = op_type[1] / sum_avg_time
136
-
137
- op_type_file_path = os.path.join(self._profiling_dir,
138
- self._file_name_op_intermediate_type.format(self._rank_id))
139
- with os.fdopen(os.open(op_type_file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as type_file:
140
- csv_writer = csv.writer(type_file)
141
- csv_writer.writerow(self._op_intermediate_type_header)
142
-
143
- for op_type, op_type_time_info in op_type_list.items():
144
- type_info = [
145
- op_type, op_type_time_info[1], op_type_time_info[0],
146
- round((op_type_time_info[1] / sum_avg_time) * 100, self._percent_decimal_digits)
147
- ]
148
- csv_writer.writerow(type_info)
149
- os.chmod(op_type_file_path, stat.S_IREAD | stat.S_IWRITE)