mindstudio-probe 8.3.2__py3-none-any.whl → 26.0.0a1__py3-none-any.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.
Files changed (689) hide show
  1. {mindstudio_probe-8.3.2.dist-info → mindstudio_probe-26.0.0a1.dist-info}/METADATA +26 -14
  2. mindstudio_probe-26.0.0a1.dist-info/RECORD +498 -0
  3. {mindstudio_probe-8.3.2.dist-info → mindstudio_probe-26.0.0a1.dist-info}/WHEEL +1 -1
  4. mindstudio_probe-26.0.0a1.dist-info/entry_points.txt +5 -0
  5. mindstudio_probe-26.0.0a1.dist-info/licenses/LICENSE +124 -0
  6. mindstudio_probe-26.0.0a1.dist-info/top_level.txt +2 -0
  7. msprobe/__init__.py +12 -13
  8. msprobe/config.json +9 -31
  9. msprobe/core/__init__.py +12 -11
  10. msprobe/core/acc_check/acc_check_cli.py +145 -0
  11. msprobe/core/common/const.py +97 -38
  12. msprobe/core/common/db_manager.py +133 -12
  13. msprobe/core/common/decorator.py +12 -11
  14. msprobe/core/common/exceptions.py +12 -11
  15. msprobe/core/common/file_utils.py +101 -25
  16. msprobe/core/common/framework_adapter.py +36 -25
  17. msprobe/core/common/global_lock.py +12 -11
  18. msprobe/core/common/inplace_op_checker.py +12 -11
  19. msprobe/core/common/log.py +22 -11
  20. msprobe/core/common/megatron_utils.py +566 -11
  21. msprobe/core/common/parallel_state.py +12 -11
  22. msprobe/core/common/runtime.py +12 -11
  23. msprobe/core/common/utils.py +41 -41
  24. msprobe/core/compare/acc_compare.py +361 -104
  25. msprobe/core/compare/atb_data_compare.py +422 -0
  26. msprobe/core/compare/auto_compare.py +134 -0
  27. msprobe/core/compare/check.py +14 -17
  28. msprobe/core/compare/compare_cli.py +72 -149
  29. msprobe/core/compare/config.py +12 -13
  30. msprobe/core/compare/diff_analyze/first_diff_analyze.py +28 -15
  31. msprobe/core/compare/diff_analyze/ignore_op_list.yaml +3 -0
  32. msprobe/core/compare/find_first/analyzer.py +18 -18
  33. msprobe/core/compare/find_first/graph.py +12 -11
  34. msprobe/core/compare/find_first/utils.py +13 -12
  35. msprobe/core/compare/indicator_analysis/__init__.py +15 -0
  36. msprobe/core/compare/indicator_analysis/algorithm.py +363 -0
  37. msprobe/core/compare/indicator_analysis/api_data.py +141 -0
  38. msprobe/core/compare/indicator_analysis/calculator.py +181 -0
  39. msprobe/core/compare/indicator_analysis/utils.py +116 -0
  40. msprobe/core/compare/layer_mapping/__init__.py +12 -11
  41. msprobe/core/compare/layer_mapping/data_scope_parser.py +20 -11
  42. msprobe/core/compare/layer_mapping/layer_mapping.py +14 -13
  43. msprobe/core/compare/layer_mapping/postprocess_pass.py +13 -11
  44. msprobe/core/compare/merge_result/merge_result.py +12 -11
  45. msprobe/core/compare/merge_result/merge_result_cli.py +12 -11
  46. msprobe/core/compare/merge_result/utils.py +12 -11
  47. msprobe/core/compare/multiprocessing_compute.py +13 -14
  48. msprobe/core/compare/npy_compare.py +13 -11
  49. msprobe/core/compare/offline_data_compare.py +160 -0
  50. msprobe/core/compare/stats_diff_calc.py +39 -0
  51. msprobe/core/compare/torchair_acc_cmp.py +764 -0
  52. msprobe/core/compare/torchair_cmp_utils.py +338 -0
  53. msprobe/core/compare/utils.py +140 -49
  54. msprobe/core/config_check/__init__.py +12 -11
  55. msprobe/core/config_check/checkers/__init__.py +12 -11
  56. msprobe/core/config_check/checkers/base_checker.py +15 -14
  57. msprobe/core/config_check/checkers/dataset_checker.py +13 -12
  58. msprobe/core/config_check/checkers/env_args_checker.py +13 -12
  59. msprobe/core/config_check/checkers/hyperparameter_checker.py +16 -15
  60. msprobe/core/config_check/checkers/pip_checker.py +15 -15
  61. msprobe/core/config_check/checkers/random_checker.py +13 -12
  62. msprobe/core/config_check/checkers/weights_checker.py +14 -12
  63. msprobe/core/config_check/ckpt_compare/ckpt_comparator.py +13 -17
  64. msprobe/core/config_check/ckpt_compare/megatron_loader.py +13 -12
  65. msprobe/core/config_check/ckpt_compare/metrics.py +12 -11
  66. msprobe/core/config_check/config_check_cli.py +18 -17
  67. msprobe/core/config_check/config_checker.py +16 -14
  68. msprobe/core/config_check/resource/dependency.yaml +15 -12
  69. msprobe/core/config_check/resource/env.yaml +12 -11
  70. msprobe/core/config_check/utils/hyperparameter_parser.py +12 -11
  71. msprobe/core/config_check/utils/utils.py +12 -11
  72. msprobe/core/{data_dump → dump/api_dump}/api_registry.py +12 -11
  73. msprobe/core/{common_config.py → dump/common_config.py} +13 -24
  74. msprobe/core/dump/data_dump/data_collector.py +257 -0
  75. msprobe/core/{data_dump → dump/data_dump}/data_processor/base.py +45 -36
  76. msprobe/core/{data_dump → dump/data_dump}/data_processor/factory.py +33 -25
  77. msprobe/core/{data_dump → dump/data_dump}/data_processor/mindspore_processor.py +37 -113
  78. msprobe/core/{data_dump → dump/data_dump}/data_processor/pytorch_processor.py +364 -131
  79. msprobe/core/{data_dump → dump/data_dump}/json_writer.py +24 -31
  80. msprobe/core/{data_dump → dump/data_dump}/scope.py +12 -13
  81. msprobe/core/{debugger → dump/debugger}/precision_debugger.py +15 -23
  82. msprobe/core/dump/dump2db/db_utils.py +215 -0
  83. msprobe/core/dump/dump2db/dump2db.py +409 -0
  84. msprobe/core/{hook_manager.py → dump/hook_manager.py} +38 -87
  85. msprobe/core/dump/kernel_dump/kernel_config.py +34 -0
  86. msprobe/core/{service.py → dump/service.py} +43 -27
  87. msprobe/core/install_deps/install_deps.py +51 -0
  88. msprobe/core/monitor/anomaly_processor.py +13 -11
  89. msprobe/core/monitor/csv2db.py +73 -93
  90. msprobe/core/monitor/db_utils.py +140 -205
  91. msprobe/core/monitor/utils.py +18 -17
  92. msprobe/core/monitor_v2/__init__.py +20 -0
  93. msprobe/core/monitor_v2/base.py +83 -0
  94. msprobe/core/monitor_v2/cc.py +287 -0
  95. msprobe/core/monitor_v2/factory.py +81 -0
  96. msprobe/core/monitor_v2/module.py +201 -0
  97. msprobe/core/monitor_v2/optimizer.py +245 -0
  98. msprobe/core/monitor_v2/param.py +154 -0
  99. msprobe/core/monitor_v2/trainer.py +326 -0
  100. msprobe/core/monitor_v2/utils.py +122 -0
  101. msprobe/core/monitor_v2/weight_grad.py +419 -0
  102. msprobe/core/monitor_v2/writer.py +162 -0
  103. msprobe/core/overflow_check/abnormal_scene.py +12 -11
  104. msprobe/core/overflow_check/api_info.py +12 -11
  105. msprobe/core/overflow_check/checker.py +12 -11
  106. msprobe/core/overflow_check/filter.py +13 -11
  107. msprobe/core/overflow_check/level.py +12 -11
  108. msprobe/core/overflow_check/utils.py +12 -11
  109. msprobe/core/single_save/single_comparator.py +12 -11
  110. msprobe/core/single_save/single_saver.py +12 -11
  111. msprobe/infer/__init__.py +16 -0
  112. msprobe/infer/offline/__init__.py +16 -0
  113. msprobe/infer/offline/compare/__init__.py +16 -0
  114. msprobe/infer/offline/compare/msquickcmp/__init__.py +16 -0
  115. msprobe/infer/offline/compare/msquickcmp/adapter_cli/__init__.py +16 -0
  116. msprobe/infer/offline/compare/msquickcmp/adapter_cli/args_adapter.py +46 -0
  117. msprobe/infer/offline/compare/msquickcmp/atc/__init__.py +16 -0
  118. msprobe/infer/offline/compare/msquickcmp/atc/atc_utils.py +98 -0
  119. msprobe/infer/offline/compare/msquickcmp/cmp_process.py +328 -0
  120. msprobe/infer/offline/compare/msquickcmp/common/__init__.py +16 -0
  121. msprobe/infer/offline/compare/msquickcmp/common/args_check.py +112 -0
  122. msprobe/infer/offline/compare/msquickcmp/common/convert.py +74 -0
  123. msprobe/infer/offline/compare/msquickcmp/common/dump_data.py +121 -0
  124. msprobe/infer/offline/compare/msquickcmp/common/dynamic_argument_bean.py +39 -0
  125. msprobe/infer/offline/compare/msquickcmp/common/utils.py +669 -0
  126. msprobe/infer/offline/compare/msquickcmp/config.ini +6 -0
  127. msprobe/infer/offline/compare/msquickcmp/dump/__init__.py +16 -0
  128. msprobe/infer/offline/compare/msquickcmp/dump/args_adapter.py +50 -0
  129. msprobe/infer/offline/compare/msquickcmp/dump/dump_process.py +91 -0
  130. msprobe/infer/offline/compare/msquickcmp/install_aclruntime_aisbench.sh +180 -0
  131. msprobe/infer/offline/compare/msquickcmp/main.py +199 -0
  132. msprobe/infer/offline/compare/msquickcmp/net_compare/__init__.py +16 -0
  133. msprobe/infer/offline/compare/msquickcmp/net_compare/net_compare.py +277 -0
  134. msprobe/infer/offline/compare/msquickcmp/npu/__init__.py +16 -0
  135. msprobe/infer/offline/compare/msquickcmp/npu/npu_dump_data.py +558 -0
  136. msprobe/infer/offline/compare/msquickcmp/npu/om_parser.py +416 -0
  137. msprobe/infer/offline/compare/msquickcmp/onnx_model/__init__.py +16 -0
  138. msprobe/infer/offline/compare/msquickcmp/onnx_model/onnx_dump_data.py +374 -0
  139. msprobe/infer/utils/__init__.py +15 -0
  140. msprobe/infer/utils/acc_cmp.py +94 -0
  141. msprobe/infer/utils/check/__init__.py +37 -0
  142. msprobe/infer/utils/check/args_checker.py +35 -0
  143. msprobe/infer/utils/check/checker.py +227 -0
  144. msprobe/infer/utils/check/dict_checker.py +78 -0
  145. msprobe/infer/utils/check/func_wrapper.py +96 -0
  146. msprobe/infer/utils/check/list_checker.py +56 -0
  147. msprobe/infer/utils/check/number_checker.py +64 -0
  148. msprobe/infer/utils/check/obj_checker.py +41 -0
  149. msprobe/infer/utils/check/path_checker.py +249 -0
  150. msprobe/infer/utils/check/rule.py +126 -0
  151. msprobe/infer/utils/check/string_checker.py +66 -0
  152. msprobe/infer/utils/cmp_algorithm.py +261 -0
  153. msprobe/infer/utils/constants.py +112 -0
  154. msprobe/infer/utils/file_open_check.py +337 -0
  155. msprobe/infer/utils/util.py +177 -0
  156. msprobe/mindspore/__init__.py +14 -13
  157. msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +14 -13
  158. msprobe/mindspore/api_accuracy_checker/api_info.py +12 -11
  159. msprobe/mindspore/api_accuracy_checker/api_runner.py +12 -11
  160. msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +12 -11
  161. msprobe/mindspore/api_accuracy_checker/bench_functions/flash_attention_score.py +12 -11
  162. msprobe/mindspore/api_accuracy_checker/bench_functions/fusion_operator.py +12 -11
  163. msprobe/mindspore/api_accuracy_checker/checker_support_api.yaml +12 -11
  164. msprobe/mindspore/api_accuracy_checker/cmd_parser.py +15 -14
  165. msprobe/mindspore/api_accuracy_checker/compute_element.py +12 -11
  166. msprobe/mindspore/api_accuracy_checker/data_manager.py +13 -11
  167. msprobe/mindspore/api_accuracy_checker/main.py +12 -11
  168. msprobe/mindspore/api_accuracy_checker/multi_api_accuracy_checker.py +14 -12
  169. msprobe/mindspore/api_accuracy_checker/multi_data_manager.py +13 -11
  170. msprobe/mindspore/api_accuracy_checker/torch_mindtorch_importer.py +12 -11
  171. msprobe/mindspore/api_accuracy_checker/type_mapping.py +12 -11
  172. msprobe/mindspore/api_accuracy_checker/utils.py +12 -11
  173. msprobe/mindspore/common/const.py +15 -74
  174. msprobe/mindspore/common/log.py +12 -11
  175. msprobe/mindspore/common/utils.py +30 -15
  176. msprobe/mindspore/compare/common_dir_compare.py +21 -23
  177. msprobe/mindspore/compare/distributed_compare.py +18 -16
  178. msprobe/mindspore/compare/ms_compare.py +14 -14
  179. msprobe/mindspore/compare/ms_graph_compare.py +26 -20
  180. msprobe/mindspore/compare/utils.py +14 -12
  181. msprobe/mindspore/{cell_processor.py → dump/cell_processor.py} +15 -14
  182. msprobe/mindspore/{debugger → dump/debugger}/debugger_config.py +12 -30
  183. msprobe/mindspore/{debugger → dump/debugger}/precision_debugger.py +43 -45
  184. msprobe/mindspore/dump/{cell_dump_process.py → dump_processor/cell_dump_process.py} +31 -17
  185. msprobe/mindspore/dump/{cell_dump_with_insert_gradient.py → dump_processor/cell_dump_with_insert_gradient.py} +18 -14
  186. msprobe/mindspore/dump/{dump_tool_factory.py → dump_processor/dump_tool_factory.py} +16 -15
  187. msprobe/mindspore/dump/{graph_mode_cell_dump.py → dump_processor/graph_mode_cell_dump.py} +16 -15
  188. msprobe/mindspore/dump/{graph_tensor_dump.py → dump_processor/graph_tensor_dump.py} +134 -133
  189. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/api_register.py +15 -14
  190. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/hook_cell.py +12 -11
  191. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/ms_hook_manager.py +47 -20
  192. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/primitive_hooks.py +14 -13
  193. msprobe/mindspore/dump/{hook_cell → dump_processor/hook_cell}/support_wrap_ops.yaml +13 -11
  194. msprobe/mindspore/dump/{jit_dump.py → dump_processor/jit_dump.py} +14 -13
  195. msprobe/mindspore/dump/{kernel_graph_dump.py → dump_processor/kernel_graph_dump.py} +13 -12
  196. msprobe/mindspore/dump/{kernel_kbyk_dump.py → dump_processor/kernel_kbyk_dump.py} +13 -12
  197. msprobe/mindspore/{exception_dump → dump/exception_dump}/exception_dump_tool_factory.py +14 -13
  198. msprobe/mindspore/{exception_dump → dump/exception_dump}/kernel_graph_exception_dump.py +13 -12
  199. msprobe/mindspore/{mindspore_service.py → dump/mindspore_service.py} +18 -17
  200. msprobe/mindspore/dump/mindtorch/__init__.py +19 -0
  201. msprobe/mindspore/dump/ms_config.py +105 -0
  202. msprobe/mindspore/{overflow_check → dump/overflow_check}/kernel_graph_overflow_check.py +13 -12
  203. msprobe/mindspore/{overflow_check → dump/overflow_check}/overflow_check_tool_factory.py +14 -13
  204. msprobe/mindspore/dump/task_handler_factory.py +43 -0
  205. msprobe/mindspore/monitor/common_func.py +12 -11
  206. msprobe/mindspore/monitor/data_writers.py +12 -11
  207. msprobe/mindspore/monitor/distributed/wrap_distributed.py +93 -39
  208. msprobe/mindspore/monitor/features.py +12 -11
  209. msprobe/mindspore/monitor/module_hook.py +19 -22
  210. msprobe/mindspore/monitor/optimizer_collect.py +29 -25
  211. msprobe/mindspore/monitor/utils.py +13 -11
  212. msprobe/msaccucmp/advisor/__init__.py +16 -0
  213. msprobe/msaccucmp/advisor/advisor_const.py +65 -0
  214. msprobe/msaccucmp/advisor/advisor_result.py +73 -0
  215. msprobe/msaccucmp/advisor/compare_advisor.py +99 -0
  216. msprobe/msaccucmp/advisor/input_advisor.py +66 -0
  217. msprobe/msaccucmp/advisor/node_advisor.py +68 -0
  218. msprobe/msaccucmp/advisor/overflow_advisor.py +58 -0
  219. msprobe/msaccucmp/algorithm_manager/__init__.py +16 -0
  220. msprobe/msaccucmp/algorithm_manager/algorithm_manager.py +464 -0
  221. msprobe/msaccucmp/algorithm_manager/algorithm_parameter.py +42 -0
  222. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_AccumulatedRelativeError.py +46 -0
  223. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_CosineSimilarity.py +58 -0
  224. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_KullbackLeiblerDivergence.py +84 -0
  225. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MaxAbsoluteError.py +41 -0
  226. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MaxRelativeError.py +46 -0
  227. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MeanAbsoluteError.py +41 -0
  228. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_MeanRelativeError.py +46 -0
  229. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_RelativeEuclideanDistance.py +46 -0
  230. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_RootMeanSquareError.py +40 -0
  231. msprobe/msaccucmp/algorithm_manager/builtin_algorithm/alg_StandardDeviation.py +47 -0
  232. msprobe/msaccucmp/cmp_utils/__init__.py +16 -0
  233. msprobe/msaccucmp/cmp_utils/common.py +113 -0
  234. msprobe/msaccucmp/cmp_utils/constant/__init__.py +16 -0
  235. msprobe/msaccucmp/cmp_utils/constant/compare_error.py +81 -0
  236. msprobe/msaccucmp/cmp_utils/constant/const_manager.py +530 -0
  237. msprobe/msaccucmp/cmp_utils/file_utils.py +497 -0
  238. msprobe/msaccucmp/cmp_utils/log.py +257 -0
  239. msprobe/msaccucmp/cmp_utils/multi_process/__init__.py +16 -0
  240. msprobe/msaccucmp/cmp_utils/multi_process/multi_convert_process.py +140 -0
  241. msprobe/msaccucmp/cmp_utils/multi_process/progress.py +78 -0
  242. msprobe/msaccucmp/cmp_utils/path_check.py +274 -0
  243. msprobe/msaccucmp/cmp_utils/reg_manager.py +98 -0
  244. msprobe/msaccucmp/cmp_utils/tlv_parse.py +279 -0
  245. msprobe/msaccucmp/cmp_utils/utils.py +356 -0
  246. msprobe/msaccucmp/cmp_utils/utils_type.py +63 -0
  247. msprobe/msaccucmp/compare_vector.py +48 -0
  248. msprobe/msaccucmp/conversion/__init__.py +16 -0
  249. msprobe/msaccucmp/conversion/data_conversion.py +277 -0
  250. msprobe/msaccucmp/conversion/dtype_conversion.py +99 -0
  251. msprobe/msaccucmp/conversion/shape_format_conversion.py +477 -0
  252. msprobe/msaccucmp/conversion/tensor_conversion.py +369 -0
  253. msprobe/msaccucmp/dump_data_conversion.py +46 -0
  254. msprobe/msaccucmp/dump_parse/__init__.py +16 -0
  255. msprobe/msaccucmp/dump_parse/big_dump_data.py +317 -0
  256. msprobe/msaccucmp/dump_parse/dump.py +423 -0
  257. msprobe/msaccucmp/dump_parse/dump_data_object.py +322 -0
  258. msprobe/msaccucmp/dump_parse/dump_data_parser.py +436 -0
  259. msprobe/msaccucmp/dump_parse/dump_utils.py +246 -0
  260. msprobe/msaccucmp/dump_parse/ffts_parser.py +137 -0
  261. msprobe/msaccucmp/dump_parse/mapping.py +62 -0
  262. msprobe/msaccucmp/dump_parse/nano_dump_data.py +392 -0
  263. msprobe/msaccucmp/dump_parse/proto_dump_data.py +308 -0
  264. msprobe/msaccucmp/dump_parser.py +90 -0
  265. msprobe/msaccucmp/format_manager/__init__.py +16 -0
  266. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_NCHW.py +53 -0
  267. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_ND.py +52 -0
  268. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_NZ_to_NHWC.py +53 -0
  269. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_Z_to_HWCN.py +47 -0
  270. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_FRACTAL_Z_to_NCHW.py +47 -0
  271. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_FRACTAL_Z.py +89 -0
  272. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_NCHW.py +37 -0
  273. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_HWCN_to_NHWC.py +37 -0
  274. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_HWCN.py +43 -0
  275. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_NCHW.py +48 -0
  276. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NC1HWC0_to_NHWC.py +43 -0
  277. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NCHW_to_FRACTAL_Z.py +87 -0
  278. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NCHW_to_NHWC.py +37 -0
  279. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NDC1HWC0_to_NCDHW.py +48 -0
  280. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NDC1HWC0_to_ND.py +44 -0
  281. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_FRACTAL_Z.py +87 -0
  282. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_HWCN.py +37 -0
  283. msprobe/msaccucmp/format_manager/builtin_format_convert/convert_NHWC_to_NCHW.py +37 -0
  284. msprobe/msaccucmp/format_manager/format_manager.py +307 -0
  285. msprobe/msaccucmp/inplace_layer_process.py +186 -0
  286. msprobe/msaccucmp/msaccucmp.py +532 -0
  287. msprobe/msaccucmp/mscmp_advisor.py +128 -0
  288. msprobe/msaccucmp/overflow/__init__.py +16 -0
  289. msprobe/msaccucmp/overflow/overflow_analyse.py +305 -0
  290. msprobe/msaccucmp/overflow/overflow_detection.py +143 -0
  291. msprobe/msaccucmp/pytorch_cmp/__init__.py +16 -0
  292. msprobe/msaccucmp/pytorch_cmp/compare_pytorch.py +389 -0
  293. msprobe/msaccucmp/pytorch_cmp/hdf5_parser.py +377 -0
  294. msprobe/msaccucmp/pytorch_cmp/pytorch_dump_data.py +461 -0
  295. msprobe/msaccucmp/shape_conversion.py +41 -0
  296. msprobe/msaccucmp/vector_cmp/__init__.py +16 -0
  297. msprobe/msaccucmp/vector_cmp/batch_compare.py +197 -0
  298. msprobe/msaccucmp/vector_cmp/compare_detail/__init__.py +16 -0
  299. msprobe/msaccucmp/vector_cmp/compare_detail/compare_detail.py +245 -0
  300. msprobe/msaccucmp/vector_cmp/compare_detail/detail.py +182 -0
  301. msprobe/msaccucmp/vector_cmp/compare_detail/detail_writer.py +580 -0
  302. msprobe/msaccucmp/vector_cmp/fusion_manager/__init__.py +16 -0
  303. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_fusion_op.py +588 -0
  304. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_npu_vs_npu.py +339 -0
  305. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_result.py +326 -0
  306. msprobe/msaccucmp/vector_cmp/fusion_manager/compare_rule.py +156 -0
  307. msprobe/msaccucmp/vector_cmp/fusion_manager/fusion_op.py +204 -0
  308. msprobe/msaccucmp/vector_cmp/fusion_manager/fusion_rule_parser.py +635 -0
  309. msprobe/msaccucmp/vector_cmp/fusion_manager/quant_filter.py +187 -0
  310. msprobe/msaccucmp/vector_cmp/range_manager/__init__.py +16 -0
  311. msprobe/msaccucmp/vector_cmp/range_manager/range_manager.py +100 -0
  312. msprobe/msaccucmp/vector_cmp/range_manager/range_mode.py +94 -0
  313. msprobe/msaccucmp/vector_cmp/range_manager/select_mode.py +86 -0
  314. msprobe/msaccucmp/vector_cmp/vector_comparison.py +535 -0
  315. msprobe/msprobe.py +101 -130
  316. msprobe/overflow_check/__init__.py +15 -0
  317. msprobe/{nan_analyze → overflow_check}/analyzer.py +38 -27
  318. msprobe/{nan_analyze → overflow_check}/graph.py +30 -27
  319. msprobe/{nan_analyze → overflow_check}/utils.py +15 -14
  320. msprobe/pytorch/__init__.py +20 -14
  321. msprobe/pytorch/aclgraph_dump/__init__.py +45 -0
  322. msprobe/pytorch/aclgraph_dump/_meta.py +26 -0
  323. msprobe/pytorch/api_accuracy_checker/{run_ut/run_ut.py → acc_check/acc_check.py} +50 -45
  324. msprobe/pytorch/api_accuracy_checker/{run_ut/run_ut_utils.py → acc_check/acc_check_utils.py} +201 -30
  325. msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/data_generate.py +56 -16
  326. msprobe/pytorch/api_accuracy_checker/{run_ut/multi_run_ut.py → acc_check/multi_acc_check.py} +32 -47
  327. msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/run_overflow_check.py +19 -18
  328. msprobe/pytorch/api_accuracy_checker/common/config.py +22 -20
  329. msprobe/pytorch/api_accuracy_checker/common/utils.py +72 -13
  330. msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +41 -11
  331. msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +23 -14
  332. msprobe/pytorch/api_accuracy_checker/compare/compare.py +45 -32
  333. msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +12 -11
  334. msprobe/pytorch/api_accuracy_checker/compare/compare_input.py +14 -12
  335. msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +14 -12
  336. msprobe/pytorch/api_accuracy_checker/precision_standard/absolute_threshold.py +12 -11
  337. msprobe/pytorch/api_accuracy_checker/precision_standard/accumulative_error_compare.py +12 -11
  338. msprobe/pytorch/api_accuracy_checker/precision_standard/base_standard.py +21 -19
  339. msprobe/pytorch/api_accuracy_checker/precision_standard/benchmark_compare.py +14 -13
  340. msprobe/pytorch/api_accuracy_checker/precision_standard/binary_consistency.py +12 -11
  341. msprobe/pytorch/api_accuracy_checker/precision_standard/standard_config.py +60 -11
  342. msprobe/pytorch/api_accuracy_checker/precision_standard/standard_register.py +27 -16
  343. msprobe/pytorch/api_accuracy_checker/precision_standard/thousandth_standard.py +13 -11
  344. msprobe/pytorch/api_accuracy_checker/precision_standard/ulp_compare.py +39 -18
  345. msprobe/pytorch/bench_functions/__init__.py +12 -11
  346. msprobe/pytorch/bench_functions/apply_adam.py +12 -11
  347. msprobe/pytorch/bench_functions/apply_adam_w.py +12 -11
  348. msprobe/pytorch/bench_functions/confusion_transpose.py +12 -11
  349. msprobe/pytorch/bench_functions/fast_gelu.py +12 -11
  350. msprobe/pytorch/bench_functions/group_norm_silu.py +12 -11
  351. msprobe/pytorch/bench_functions/layer_norm_eval.py +12 -11
  352. msprobe/pytorch/bench_functions/linear.py +12 -11
  353. msprobe/pytorch/bench_functions/matmul_backward.py +12 -11
  354. msprobe/pytorch/bench_functions/mish.py +12 -11
  355. msprobe/pytorch/bench_functions/moe_gating_top_k_softmax.py +12 -11
  356. msprobe/pytorch/bench_functions/npu_fusion_attention.py +12 -11
  357. msprobe/pytorch/bench_functions/rms_norm.py +12 -11
  358. msprobe/pytorch/bench_functions/rotary_mul.py +12 -11
  359. msprobe/pytorch/bench_functions/scaled_mask_softmax.py +12 -11
  360. msprobe/pytorch/bench_functions/sort_v2.py +12 -11
  361. msprobe/pytorch/bench_functions/swiglu.py +12 -11
  362. msprobe/pytorch/common/__init__.py +12 -11
  363. msprobe/pytorch/common/log.py +12 -11
  364. msprobe/pytorch/common/parse_json.py +12 -11
  365. msprobe/pytorch/common/utils.py +52 -19
  366. msprobe/pytorch/compare/distributed_compare.py +13 -13
  367. msprobe/pytorch/compare/match.py +12 -11
  368. msprobe/pytorch/compare/pt_compare.py +14 -20
  369. msprobe/pytorch/compare/pt_diff_analyze.py +12 -11
  370. msprobe/pytorch/compare/utils.py +12 -11
  371. msprobe/pytorch/{hook_module → dump/api_dump}/api_register.py +18 -16
  372. msprobe/pytorch/{hook_module → dump/api_dump}/hook_module.py +14 -13
  373. msprobe/pytorch/{hook_module → dump/api_dump}/pt_hook_manager.py +68 -23
  374. msprobe/pytorch/{hook_module → dump/api_dump}/register_optimizer_hook.py +13 -11
  375. msprobe/pytorch/{hook_module → dump/api_dump}/script_wrapper.py +17 -14
  376. msprobe/pytorch/{hook_module → dump/api_dump}/utils.py +12 -11
  377. msprobe/pytorch/{debugger → dump/debugger}/debugger_config.py +23 -38
  378. msprobe/pytorch/dump/debugger/precision_debugger.py +130 -0
  379. msprobe/pytorch/{function_factory.py → dump/function_factory.py} +12 -11
  380. msprobe/pytorch/dump/module_dump/hook_wrapper.py +17 -13
  381. msprobe/pytorch/dump/module_dump/module_dump.py +16 -15
  382. msprobe/pytorch/dump/module_dump/{module_processer.py → module_processor.py} +54 -42
  383. msprobe/pytorch/dump/pt_config.py +128 -0
  384. msprobe/pytorch/{pytorch_service.py → dump/pytorch_service.py} +22 -21
  385. msprobe/pytorch/monitor/csv2tb.py +13 -11
  386. msprobe/pytorch/monitor/data_writers.py +13 -11
  387. msprobe/pytorch/monitor/distributed/wrap_distributed.py +13 -11
  388. msprobe/pytorch/monitor/features.py +12 -11
  389. msprobe/pytorch/monitor/module_hook.py +67 -59
  390. msprobe/pytorch/monitor/module_metric.py +13 -11
  391. msprobe/pytorch/monitor/optimizer_collect.py +37 -35
  392. msprobe/pytorch/monitor/utils.py +13 -11
  393. msprobe/pytorch/monitor/visualizer.py +12 -11
  394. msprobe/pytorch/torchair_dump/__init__.py +17 -0
  395. msprobe/pytorch/torchair_dump/torchair_dump.py +114 -0
  396. msprobe/scripts/atb/config_example.json +10 -0
  397. msprobe/scripts/atb/load_atb_probe.sh +101 -0
  398. msprobe/scripts/atb/unload_atb_probe.sh +27 -0
  399. msprobe/scripts/build_msaccucmp.sh +186 -0
  400. msprobe/scripts/conf/help.info +6 -0
  401. msprobe/scripts/conf/version.info +3 -0
  402. msprobe/scripts/run_script/common.sh +538 -0
  403. msprobe/scripts/run_script/main_msaccucmp.sh +232 -0
  404. msprobe/visualization/__init__.py +12 -11
  405. msprobe/visualization/builder/__init__.py +12 -11
  406. msprobe/visualization/builder/graph_builder.py +45 -30
  407. msprobe/visualization/builder/graph_merger.py +53 -32
  408. msprobe/visualization/builder/msprobe_adapter.py +34 -44
  409. msprobe/visualization/compare/__init__.py +12 -11
  410. msprobe/visualization/compare/graph_comparator.py +63 -51
  411. msprobe/visualization/compare/mode_adapter.py +28 -113
  412. msprobe/visualization/db_utils.py +133 -22
  413. msprobe/visualization/graph/__init__.py +12 -11
  414. msprobe/visualization/graph/base_node.py +15 -27
  415. msprobe/visualization/graph/distributed_analyzer.py +97 -40
  416. msprobe/visualization/graph/graph.py +14 -16
  417. msprobe/visualization/graph/node_colors.py +34 -31
  418. msprobe/visualization/graph/node_op.py +12 -11
  419. msprobe/visualization/graph_service.py +580 -205
  420. msprobe/visualization/utils.py +278 -31
  421. tb_graph_ascend/secure_build.py +175 -0
  422. tb_graph_ascend/server/__init__.py +15 -0
  423. tb_graph_ascend/server/app/__init__.py +15 -0
  424. tb_graph_ascend/server/app/model/__init__.py +15 -0
  425. tb_graph_ascend/server/app/model/hierarchy.py +348 -0
  426. tb_graph_ascend/server/app/model/layout_hierarchy_model.py +69 -0
  427. tb_graph_ascend/server/app/model/match_nodes_model.py +573 -0
  428. tb_graph_ascend/server/app/repositories/__init__.py +15 -0
  429. tb_graph_ascend/server/app/repositories/graph_repo_base.py +32 -0
  430. tb_graph_ascend/server/app/repositories/graph_repo_db.py +879 -0
  431. tb_graph_ascend/server/app/repositories/graph_repo_vis.py +83 -0
  432. tb_graph_ascend/server/app/service/__init__.py +18 -0
  433. tb_graph_ascend/server/app/service/graph_service_base.py +158 -0
  434. tb_graph_ascend/server/app/service/graph_service_db.py +438 -0
  435. tb_graph_ascend/server/app/service/graph_service_factory.py +54 -0
  436. tb_graph_ascend/server/app/service/graph_service_vis.py +480 -0
  437. tb_graph_ascend/server/app/utils/__init__.py +15 -0
  438. tb_graph_ascend/server/app/utils/constant.py +80 -0
  439. tb_graph_ascend/server/app/utils/file_check_wrapper.py +46 -0
  440. tb_graph_ascend/server/app/utils/global_state.py +95 -0
  441. tb_graph_ascend/server/app/utils/graph_utils.py +661 -0
  442. tb_graph_ascend/server/app/utils/i18n.py +153 -0
  443. tb_graph_ascend/server/app/utils/request_method.py +46 -0
  444. tb_graph_ascend/server/app/views/__init__.py +15 -0
  445. tb_graph_ascend/server/app/views/graph_views.py +304 -0
  446. tb_graph_ascend/server/plugin.py +108 -0
  447. tb_graph_ascend/server/static/index.html +9250 -0
  448. tb_graph_ascend/server/static/index.js +21 -0
  449. tb_graph_ascend/setup.py +57 -0
  450. mindstudio_probe-8.3.2.dist-info/LICENSE +0 -201
  451. mindstudio_probe-8.3.2.dist-info/RECORD +0 -491
  452. mindstudio_probe-8.3.2.dist-info/entry_points.txt +0 -2
  453. mindstudio_probe-8.3.2.dist-info/top_level.txt +0 -1
  454. msprobe/CMakeLists.txt +0 -5
  455. msprobe/README.md +0 -203
  456. msprobe/core/advisor/advisor.py +0 -129
  457. msprobe/core/advisor/advisor_const.py +0 -58
  458. msprobe/core/advisor/advisor_result.py +0 -58
  459. msprobe/core/compare/find_first/data_processor.py +0 -35
  460. msprobe/core/compare/highlight.py +0 -390
  461. msprobe/core/data_dump/data_collector.py +0 -356
  462. msprobe/core/grad_probe/constant.py +0 -90
  463. msprobe/core/grad_probe/grad_compare.py +0 -187
  464. msprobe/core/grad_probe/utils.py +0 -105
  465. msprobe/core/kernel_dump/kernel_config.py +0 -33
  466. msprobe/docs/01.installation.md +0 -250
  467. msprobe/docs/02.config_introduction.md +0 -221
  468. msprobe/docs/03.config_examples.md +0 -281
  469. msprobe/docs/04.kernel_dump_PyTorch.md +0 -73
  470. msprobe/docs/05.data_dump_PyTorch.md +0 -518
  471. msprobe/docs/06.data_dump_MindSpore.md +0 -618
  472. msprobe/docs/07.accuracy_checker_PyTorch.md +0 -310
  473. msprobe/docs/09.accuracy_checker_MindSpore.md +0 -120
  474. msprobe/docs/10.accuracy_compare_PyTorch.md +0 -637
  475. msprobe/docs/11.accuracy_compare_MindSpore.md +0 -769
  476. msprobe/docs/12.overflow_check_PyTorch.md +0 -82
  477. msprobe/docs/13.overflow_check_MindSpore.md +0 -33
  478. msprobe/docs/14.data_parse_PyTorch.md +0 -282
  479. msprobe/docs/15.free_benchmarking_PyTorch.md +0 -169
  480. msprobe/docs/16.free_benchmarking_MindSpore.md +0 -159
  481. msprobe/docs/17.grad_probe.md +0 -205
  482. msprobe/docs/18.online_dispatch.md +0 -89
  483. msprobe/docs/19.monitor.md +0 -753
  484. msprobe/docs/20.monitor_performance_baseline.md +0 -52
  485. msprobe/docs/21.visualization_PyTorch.md +0 -519
  486. msprobe/docs/22.visualization_MindSpore.md +0 -515
  487. msprobe/docs/23.generate_operator_PyTorch.md +0 -107
  488. msprobe/docs/24.code_mapping_Mindspore.md +0 -29
  489. msprobe/docs/25.tool_function_introduction.md +0 -29
  490. msprobe/docs/26.data_dump_PyTorch_baseline.md +0 -48
  491. msprobe/docs/27.dump_json_instruction.md +0 -795
  492. msprobe/docs/28.debugger_save_instruction.md +0 -288
  493. msprobe/docs/28.kernel_dump_MindSpore.md +0 -69
  494. msprobe/docs/29.data_dump_MSAdapter.md +0 -235
  495. msprobe/docs/30.overflow_check_MSAdapter.md +0 -31
  496. msprobe/docs/31.config_check.md +0 -107
  497. msprobe/docs/32.ckpt_compare.md +0 -69
  498. msprobe/docs/33.generate_operator_MindSpore.md +0 -181
  499. msprobe/docs/34.RL_collect.md +0 -101
  500. msprobe/docs/35.nan_analyze.md +0 -73
  501. msprobe/docs/36.calculation_result_change.md +0 -75
  502. msprobe/docs/FAQ.md +0 -232
  503. msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +0 -146
  504. msprobe/docs/accuracy_checker_MindSpore/accuracy_checker_MindSpore_baseline.md +0 -14
  505. msprobe/docs/data_dump_MindSpore/data_dump_MindSpore_baseline.md +0 -33
  506. msprobe/docs/data_dump_MindSpore/dynamic_graph_quick_start_example.md +0 -217
  507. msprobe/docs/img/BLOOM-7B_1.png +0 -0
  508. msprobe/docs/img/BLOOM-7B_2.png +0 -0
  509. msprobe/docs/img/BLOOM-7B_3.png +0 -0
  510. msprobe/docs/img/BLOOM-7B_4.png +0 -0
  511. msprobe/docs/img/GPT-3_1.png +0 -0
  512. msprobe/docs/img/GPT-3_2.png +0 -0
  513. msprobe/docs/img/GPT-3_3.png +0 -0
  514. msprobe/docs/img/GPT-3_4.png +0 -0
  515. msprobe/docs/img/GPT-3_5.png +0 -0
  516. msprobe/docs/img/GPT-3_6.png +0 -0
  517. msprobe/docs/img/GPT-3_7.png +0 -0
  518. msprobe/docs/img/GPT-3_8.png +0 -0
  519. msprobe/docs/img/YOLOV5S_1.png +0 -0
  520. msprobe/docs/img/YOLOV5S_2.png +0 -0
  521. msprobe/docs/img/accuracy_checking_details.png +0 -0
  522. msprobe/docs/img/accuracy_checking_result.png +0 -0
  523. msprobe/docs/img/api_precision_compare_details.png +0 -0
  524. msprobe/docs/img/api_precision_compare_result.png +0 -0
  525. msprobe/docs/img/auto_analyze_log.png +0 -0
  526. msprobe/docs/img/compare_result.png +0 -0
  527. msprobe/docs/img/compare_result_pkl.png +0 -0
  528. msprobe/docs/img/compare_result_pkl_md5.png.png +0 -0
  529. msprobe/docs/img/cpu_info.png +0 -0
  530. msprobe/docs/img/free_benchmark.png +0 -0
  531. msprobe/docs/img/free_benchmark_framework.png +0 -0
  532. msprobe/docs/img/grad_probe_image-1.png +0 -0
  533. msprobe/docs/img/grad_probe_image-2.png +0 -0
  534. msprobe/docs/img/grad_probe_image-3.png +0 -0
  535. msprobe/docs/img/grad_probe_image-4.png +0 -0
  536. msprobe/docs/img/grad_probe_image.png +0 -0
  537. msprobe/docs/img/merge_result.png +0 -0
  538. msprobe/docs/img/module_compare.png +0 -0
  539. msprobe/docs/img/monitor/cpu_info.png +0 -0
  540. msprobe/docs/img/monitor/step_count_per_record.png +0 -0
  541. msprobe/docs/img/ms_dump.png +0 -0
  542. msprobe/docs/img/ms_layer.png +0 -0
  543. msprobe/docs/img/pt_dump.png +0 -0
  544. msprobe/docs/img/save_compare_result_sample.png +0 -0
  545. msprobe/docs/img/visualization/fuzzy_match_ms.png +0 -0
  546. msprobe/docs/img/visualization/fuzzy_match_pt.png +0 -0
  547. msprobe/docs/img/visualization/proxy.png +0 -0
  548. msprobe/docs/img/visualization/tensorboard_1.png +0 -0
  549. msprobe/docs/img/visualization/tensorboard_2.png +0 -0
  550. msprobe/docs/img/visualization/vis_browser_1.png +0 -0
  551. msprobe/docs/img/visualization/vis_browser_2.png +0 -0
  552. msprobe/docs/img/visualization/vis_match_info.png +0 -0
  553. msprobe/docs/img/visualization/vis_precision_info.png +0 -0
  554. msprobe/docs/img/visualization/vis_search_info.png +0 -0
  555. msprobe/docs/img/visualization/vis_show_info.png +0 -0
  556. msprobe/docs/img/visualization/vis_showcase.png +0 -0
  557. msprobe/docs/img/visualization/vis_unmatch_info.png +0 -0
  558. msprobe/docs/visualization/GPTModel.png +0 -0
  559. msprobe/docs/visualization/ParallelMLP.png +0 -0
  560. msprobe/docs/visualization/layer_mapping_example.md +0 -132
  561. msprobe/docs/visualization/mapping.png +0 -0
  562. msprobe/docs/visualization/mapping1.png +0 -0
  563. msprobe/docs/visualization/mindspeed_llamafactoary_img/1.png +0 -0
  564. msprobe/docs/visualization/mindspeed_llamafactoary_img/2.png +0 -0
  565. msprobe/docs/visualization/mindspeed_llamafactoary_img/3.png +0 -0
  566. msprobe/docs/visualization/mindspeed_llamafactoary_img/4.png +0 -0
  567. msprobe/docs/visualization/mindspeed_llamafactoary_img/5.png +0 -0
  568. msprobe/docs/visualization/mindspeed_llamafactoary_img/6.png +0 -0
  569. msprobe/docs/visualization/mindspeed_llamafactoary_img/7.png +0 -0
  570. msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory-qwen25vl.txt +0 -59
  571. msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory1.png +0 -0
  572. msprobe/docs/visualization/mindspeed_llamafactoary_img/llamafactory2.png +0 -0
  573. msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed-mm-qwen25vl.txt +0 -80
  574. msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed1.png +0 -0
  575. msprobe/docs/visualization/mindspeed_llamafactoary_img/mindspeed2.png +0 -0
  576. msprobe/docs/visualization/mindspeed_llamafactory_mapping.md +0 -330
  577. msprobe/docs/visualization/module_name.png +0 -0
  578. msprobe/docs/visualization/module_name1.png +0 -0
  579. msprobe/docs/visualization/no_mapping.png +0 -0
  580. msprobe/docs/visualization/no_mapping1.png +0 -0
  581. msprobe/docs/visualization/no_mapping_analyze.png +0 -0
  582. msprobe/docs/visualization/top_layer.png +0 -0
  583. msprobe/mindspore/api_accuracy_checker/generate_op_script/op_generator.py +0 -460
  584. msprobe/mindspore/api_accuracy_checker/generate_op_script/operator_replication.template +0 -2081
  585. msprobe/mindspore/code_mapping/bind.py +0 -283
  586. msprobe/mindspore/code_mapping/cmd_parser.py +0 -40
  587. msprobe/mindspore/code_mapping/graph.py +0 -49
  588. msprobe/mindspore/code_mapping/graph_parser.py +0 -211
  589. msprobe/mindspore/code_mapping/main.py +0 -24
  590. msprobe/mindspore/code_mapping/processor.py +0 -34
  591. msprobe/mindspore/dym_loader/hook_dynamic_loader.cpp +0 -111
  592. msprobe/mindspore/dym_loader/hook_dynamic_loader.h +0 -52
  593. msprobe/mindspore/free_benchmark/api_pynative_self_check.py +0 -257
  594. msprobe/mindspore/free_benchmark/common/config.py +0 -27
  595. msprobe/mindspore/free_benchmark/common/handler_params.py +0 -31
  596. msprobe/mindspore/free_benchmark/common/utils.py +0 -100
  597. msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +0 -638
  598. msprobe/mindspore/free_benchmark/handler/base_handler.py +0 -105
  599. msprobe/mindspore/free_benchmark/handler/check_handler.py +0 -55
  600. msprobe/mindspore/free_benchmark/handler/fix_handler.py +0 -51
  601. msprobe/mindspore/free_benchmark/handler/handler_factory.py +0 -36
  602. msprobe/mindspore/free_benchmark/perturbation/add_noise.py +0 -82
  603. msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +0 -45
  604. msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +0 -78
  605. msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +0 -77
  606. msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +0 -56
  607. msprobe/mindspore/free_benchmark/perturbation/no_change.py +0 -27
  608. msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +0 -46
  609. msprobe/mindspore/free_benchmark/self_check_tool_factory.py +0 -51
  610. msprobe/mindspore/grad_probe/global_context.py +0 -127
  611. msprobe/mindspore/grad_probe/grad_analyzer.py +0 -260
  612. msprobe/mindspore/grad_probe/grad_monitor.py +0 -42
  613. msprobe/mindspore/grad_probe/grad_stat_csv.py +0 -161
  614. msprobe/mindspore/grad_probe/hook.py +0 -115
  615. msprobe/mindspore/grad_probe/utils.py +0 -43
  616. msprobe/mindspore/mindtorch/__init__.py +0 -18
  617. msprobe/mindspore/ms_config.py +0 -153
  618. msprobe/mindspore/task_handler_factory.py +0 -44
  619. msprobe/nan_analyze/__init__.py +0 -14
  620. msprobe/pytorch/api_accuracy_checker/generate_op_script/config_op.json +0 -9
  621. msprobe/pytorch/api_accuracy_checker/generate_op_script/op_generator.py +0 -480
  622. msprobe/pytorch/api_accuracy_checker/generate_op_script/operator_replication.template +0 -567
  623. msprobe/pytorch/debugger/precision_debugger.py +0 -181
  624. msprobe/pytorch/free_benchmark/__init__.py +0 -23
  625. msprobe/pytorch/free_benchmark/common/constant.py +0 -85
  626. msprobe/pytorch/free_benchmark/common/counter.py +0 -87
  627. msprobe/pytorch/free_benchmark/common/enums.py +0 -80
  628. msprobe/pytorch/free_benchmark/common/params.py +0 -152
  629. msprobe/pytorch/free_benchmark/common/utils.py +0 -143
  630. msprobe/pytorch/free_benchmark/compare/grad_saver.py +0 -215
  631. msprobe/pytorch/free_benchmark/compare/single_benchmark.py +0 -121
  632. msprobe/pytorch/free_benchmark/main.py +0 -123
  633. msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +0 -28
  634. msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +0 -56
  635. msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +0 -107
  636. msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +0 -121
  637. msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +0 -89
  638. msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +0 -87
  639. msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +0 -43
  640. msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +0 -60
  641. msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +0 -34
  642. msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +0 -252
  643. msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +0 -54
  644. msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +0 -40
  645. msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +0 -45
  646. msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +0 -181
  647. msprobe/pytorch/grad_probe/__init__.py +0 -0
  648. msprobe/pytorch/grad_probe/grad_monitor.py +0 -108
  649. msprobe/pytorch/grad_probe/grad_stat_csv.py +0 -160
  650. msprobe/pytorch/hook_module/__init__.py +0 -16
  651. msprobe/pytorch/hook_module/wrap_aten.py +0 -111
  652. msprobe/pytorch/online_dispatch/__init__.py +0 -19
  653. msprobe/pytorch/online_dispatch/compare.py +0 -224
  654. msprobe/pytorch/online_dispatch/dispatch.py +0 -332
  655. msprobe/pytorch/online_dispatch/dump_compare.py +0 -179
  656. msprobe/pytorch/online_dispatch/single_compare.py +0 -412
  657. msprobe/pytorch/online_dispatch/torch_ops_config.yaml +0 -58
  658. msprobe/pytorch/online_dispatch/utils.py +0 -158
  659. msprobe/pytorch/parse_tool/__init__.py +0 -0
  660. msprobe/pytorch/parse_tool/cli.py +0 -31
  661. msprobe/pytorch/parse_tool/lib/__init__.py +0 -0
  662. msprobe/pytorch/parse_tool/lib/compare.py +0 -253
  663. msprobe/pytorch/parse_tool/lib/config.py +0 -50
  664. msprobe/pytorch/parse_tool/lib/file_desc.py +0 -45
  665. msprobe/pytorch/parse_tool/lib/interactive_cli.py +0 -97
  666. msprobe/pytorch/parse_tool/lib/parse_exception.py +0 -54
  667. msprobe/pytorch/parse_tool/lib/parse_tool.py +0 -161
  668. msprobe/pytorch/parse_tool/lib/utils.py +0 -299
  669. msprobe/pytorch/parse_tool/lib/visualization.py +0 -85
  670. msprobe/pytorch/pt_config.py +0 -299
  671. /msprobe/core/{grad_probe → dump}/__init__.py +0 -0
  672. /msprobe/{mindspore/code_mapping → core/dump/api_dump}/__init__.py +0 -0
  673. /msprobe/{mindspore/debugger → core/dump/data_dump}/__init__.py +0 -0
  674. /msprobe/{mindspore/exception_dump → core/dump/data_dump/data_processor}/__init__.py +0 -0
  675. /msprobe/{mindspore/free_benchmark → core/dump/debugger}/__init__.py +0 -0
  676. /msprobe/{mindspore/free_benchmark/common → core/dump/kernel_dump}/__init__.py +0 -0
  677. /msprobe/mindspore/{free_benchmark/handler → dump/debugger}/__init__.py +0 -0
  678. /msprobe/mindspore/{grad_probe → dump/dump_processor}/__init__.py +0 -0
  679. /msprobe/mindspore/{overflow_check → dump/exception_dump}/__init__.py +0 -0
  680. /msprobe/mindspore/{mindtorch → dump/mindtorch}/mindtorch_adaptor.py +0 -0
  681. /msprobe/{pytorch/api_accuracy_checker/run_ut → mindspore/dump/overflow_check}/__init__.py +0 -0
  682. /msprobe/{pytorch/debugger → mindspore/monitor}/__init__.py +0 -0
  683. /msprobe/{pytorch/free_benchmark/common → msaccucmp}/__init__.py +0 -0
  684. /msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/.keep +0 -0
  685. /msprobe/pytorch/{free_benchmark/perturbed_layers → api_accuracy_checker/acc_check}/__init__.py +0 -0
  686. /msprobe/pytorch/api_accuracy_checker/{run_ut → acc_check}/torch_ut_setting.json +0 -0
  687. /msprobe/pytorch/{free_benchmark/perturbed_layers/npu → dump/api_dump}/__init__.py +0 -0
  688. /msprobe/pytorch/{hook_module → dump/api_dump}/support_wrap_ops.yaml +0 -0
  689. /msprobe/pytorch/{free_benchmark/result_handlers → dump/debugger}/__init__.py +0 -0
@@ -0,0 +1,436 @@
1
+ # coding=utf-8
2
+ # -------------------------------------------------------------------------
3
+ # This file is part of the MindStudio project.
4
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
5
+ #
6
+ # MindStudio is licensed under Mulan PSL v2.
7
+ # You can use this software according to the terms and conditions of the Mulan PSL v2.
8
+ # You may obtain a copy of Mulan PSL v2 at:
9
+ #
10
+ # http://license.coscl.org.cn/MulanPSL2
11
+ #
12
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
13
+ # EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
14
+ # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
15
+ # See the Mulan PSL v2 for more details.
16
+ # -------------------------------------------------------------------------
17
+
18
+ """
19
+ Function:
20
+ DumpDataParser class. This class mainly involves the parser_dump_data function.
21
+ """
22
+ import os
23
+ import json
24
+ import struct
25
+
26
+ import numpy as np
27
+
28
+ from msprobe.msaccucmp.cmp_utils import utils, utils_type, path_check
29
+ from msprobe.msaccucmp.cmp_utils import log
30
+ from msprobe.msaccucmp.cmp_utils import common
31
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
32
+ from msprobe.msaccucmp.cmp_utils.file_utils import FileUtils
33
+ from msprobe.msaccucmp.cmp_utils.multi_process.multi_convert_process import MultiConvertProcess
34
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
35
+ from msprobe.msaccucmp.dump_parse import dump_utils
36
+ from msprobe.msaccucmp.dump_parse.dump_data_object import DumpDataObj
37
+
38
+
39
+ class DumpDataParser:
40
+ """
41
+ The class for dump data parser
42
+ """
43
+ OLD_OVERFLOW_ELEMENT = ('model_id', 'stream_id', 'task_id', 'task_type', 'pc_start', 'para_base')
44
+
45
+ def __init__(self: any, arguments: any) -> None:
46
+ self.path_str = arguments.dump_path
47
+ self.input_path = []
48
+ self.multi_process = None
49
+ if os.path.islink(os.path.abspath(arguments.output_path)):
50
+ log.print_error_log('The path "%r" is a softlink, not permitted.' % arguments.output_path)
51
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
52
+ self.output_path = os.path.realpath(arguments.output_path)
53
+ self.dump_version = arguments.dump_version
54
+ self.output_file_type = arguments.output_file_type
55
+
56
+ @staticmethod
57
+ def _parser_overflow_info(data: any, start: int) -> dict:
58
+ overflow_info = {}
59
+ for idx, key in enumerate(DumpDataParser.OLD_OVERFLOW_ELEMENT):
60
+ index = start + idx * ConstManager.UINT64_SIZE
61
+ value = OpDebugInfoParser.unpack_uint_value(data, index, 'UINT64')
62
+ if key in ['pc_start', 'para_base']:
63
+ overflow_info[key] = hex(value)
64
+ else:
65
+ overflow_info[key] = value
66
+ return overflow_info
67
+
68
+ @staticmethod
69
+ def _parser_ai_core_status(ai_core_info: dict, data: any, start: int) -> None:
70
+ index = start
71
+ kernel_code = OpDebugInfoParser.unpack_uint_value(data, index, 'UINT64')
72
+ ai_core_info['kernel_code'] = hex(kernel_code)
73
+ index += ConstManager.UINT64_SIZE
74
+ block_idx = OpDebugInfoParser.unpack_uint_value(data, index, 'UINT64')
75
+ ai_core_info['block_idx'] = block_idx
76
+ index += ConstManager.UINT64_SIZE
77
+ status = OpDebugInfoParser.unpack_uint_value(data, index, 'UINT64')
78
+ ai_core_info['status'] = status
79
+
80
+ @staticmethod
81
+ def _write_log(log_file_path, log_space):
82
+ log_str = log_space.data.decode()
83
+ log_str = log_str.replace(ConstManager.END_FLAG, "")
84
+ path_check.check_write_path_secure(log_file_path)
85
+ with os.fdopen(os.open(log_file_path, ConstManager.WRITE_FLAGS, ConstManager.WRITE_MODES), 'w+') as text_file:
86
+ text_file.truncate()
87
+ text_file.write(log_str)
88
+
89
+ def parse_dump_data(self: any) -> int:
90
+ """
91
+ Convert dump data to numpy and bin file
92
+ """
93
+ # 1. check arguments valid
94
+ self.check_arguments_valid()
95
+ # 2. parse dump data
96
+ if len(self.input_path) == 1 and os.path.isfile(self.input_path[0]):
97
+ ret, _ = self._parse_one_dump_file(self.input_path[0])
98
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
99
+ log.print_error_log('Failed to parse dump file "%s".' % self.input_path[0])
100
+ return ret
101
+ return self.multi_process.process()
102
+
103
+ def parse_log_data(self: any) -> int:
104
+ """
105
+ Convert dump data to numpy and bin file
106
+ """
107
+ # 1. check arguments valid
108
+ ret = path_check.check_output_path_valid(self.output_path, True)
109
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
110
+ raise CompareError(ret)
111
+ ret = path_check.check_path_valid(self.path_str, True, False, path_type=path_check.PathType.File)
112
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
113
+ raise CompareError(ret)
114
+ try:
115
+ self._save_log_data()
116
+ except CompareError as error:
117
+ return error.code
118
+ return CompareError.MSACCUCMP_NONE_ERROR
119
+
120
+ def check_arguments_valid(self: any) -> None:
121
+ """
122
+ Check arguments valid
123
+ """
124
+ self.input_path = path_check.get_path_list_for_str(self.path_str)
125
+ self.multi_process = MultiConvertProcess(self._parse_one_dump_file, self.input_path, self.output_path)
126
+ ret = path_check.check_output_path_valid(self.output_path, True)
127
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
128
+ raise CompareError(ret)
129
+
130
+ def _save_log_data(self):
131
+ dump_data = dump_utils.parse_dump_file(self.path_str, self.dump_version)
132
+ log_space = dump_data.space
133
+ dump_file_name = os.path.basename(self.path_str)
134
+ if len(log_space) == 0:
135
+ log.print_error_log("There is no log data in %r" % self.path_str)
136
+ raise CompareError(CompareError.MSACCUCMP_INVALID_OVERFLOW_TYPE_ERROR)
137
+ for (index, log_data) in enumerate(log_space):
138
+ log_file_name = '%s.%d.log' % (dump_file_name, index)
139
+ log_file_path = os.path.join(self.output_path, log_file_name)
140
+ log.print_info_log('Start to parse the data of log:%d in "%r".' % (index, self.path_str))
141
+ try:
142
+ self._write_log(log_file_path, log_data)
143
+ except (OSError, SystemError, ValueError, TypeError, RuntimeError, MemoryError) as error:
144
+ log.print_error_log('Failed to save log data. %s'
145
+ % str(error))
146
+ raise CompareError(CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR) from error
147
+
148
+ log.print_info_log('The data of log:%d has been parsed into "%r".'
149
+ % (index, log_file_path))
150
+
151
+ def _save_tensor_to_file(self: any, dump_path: str, dump_data: DumpDataObj, tensor_type: str) -> None:
152
+ tensor_list = dump_data.input_data if tensor_type == ConstManager.INPUT else dump_data.output_data
153
+ op_name = dump_data.op_name
154
+ ffts_auto = False
155
+ if len(tensor_list) == 0:
156
+ log.print_warn_log('There is no %s in "%r".' % (tensor_type, dump_path))
157
+ return
158
+ if dump_data.get_ffts_mode:
159
+ if tensor_type == ConstManager.INPUT:
160
+ shape_list = dump_data.ffts_auto_input_shape_list
161
+ else:
162
+ shape_list = dump_data.ffts_auto_output_shape_list
163
+ if len(shape_list) == len(tensor_list):
164
+ ffts_auto = True
165
+ else:
166
+ log.print_error_log('The length of shape_list %s is not equal \
167
+ to the length of tensor_list %s.' % (shape_list, tensor_list))
168
+ raise CompareError(CompareError.MSACCUCMP_INVALID_INPUT_MAPPING)
169
+
170
+ name = os.path.basename(dump_path)
171
+ for (index, tensor) in enumerate(tensor_list):
172
+ log.print_info_log('Start to parse the data of %s:%d in "%r".' % (tensor_type, index, dump_path))
173
+ try:
174
+ array = tensor.data
175
+ except CompareError:
176
+ log.print_warn_log('Failed to parse the data of %s:%d in "%r".' % (tensor_type, index, dump_path))
177
+ continue
178
+ if self.output_file_type == 'npy':
179
+ file_name = '%s.%s.%d.npy' % (name, tensor_type, index)
180
+ file_name = FileUtils.handle_too_long_file_name(
181
+ file_name, '.npy', os.path.join(self.output_path, ConstManager.MAPPING_FILE_NAME))
182
+ elif self.output_file_type == 'msnpy':
183
+ file_name = utils.make_msnpy_file_name(dump_path, op_name, tensor_type, index, tensor.tensor_format)
184
+ file_name = FileUtils.handle_too_long_file_name(
185
+ file_name, '.npy', os.path.join(self.output_path, ConstManager.MAPPING_FILE_NAME))
186
+ else:
187
+ file_name = '%s.%s.%d.%s.%s.%s.bin' \
188
+ % (name, tensor_type, index, utils.get_string_from_list(array.shape, '_'),
189
+ np.dtype(common.get_dtype_by_data_type(tensor.data_type)).name,
190
+ common.get_format_string(tensor.tensor_format))
191
+ file_name = FileUtils.handle_too_long_file_name(
192
+ file_name, '.bin', os.path.join(self.output_path, ConstManager.MAPPING_FILE_NAME))
193
+ output_file_path = os.path.join(self.output_path, file_name)
194
+ if ffts_auto:
195
+ FileUtils.save_array_to_file(
196
+ output_file_path, array, self.output_file_type != 'bin', shape_list[index])
197
+ else:
198
+ FileUtils.save_array_to_file(output_file_path, array, self.output_file_type != 'bin', tensor.shape)
199
+ log.print_info_log('The data of %s:%d has been parsed into "%r".'
200
+ % (tensor_type, index, output_file_path))
201
+
202
+ def _save_buffer_to_file(self: any, dump_path: str, tensor_list: list) -> None:
203
+ if tensor_list is None or len(tensor_list) == 0:
204
+ log.print_warn_log('There is no buffer data in "%r".' % dump_path)
205
+ return
206
+ name = os.path.basename(dump_path)
207
+ for (index, tensor) in enumerate(tensor_list):
208
+ buffer_type = ConstManager.BUFFER_TYPE_MAP.get(tensor.buffer_type)
209
+ log.print_info_log('Start to parse the data of %sbuffer:%d in "%r".'
210
+ % (buffer_type, index, dump_path))
211
+ file_name = "%s.%sbuffer.%s.bin" % (name, buffer_type, index)
212
+ file_name = FileUtils.handle_too_long_file_name(
213
+ file_name, '.bin', os.path.join(self.output_path, ConstManager.MAPPING_FILE_NAME))
214
+ output_dump_path = os.path.join(self.output_path, file_name)
215
+ FileUtils.save_data_to_file(output_dump_path, tensor.data, 'wb', delete=True)
216
+ log.print_info_log('The data of %sbuffer:%d has been parsed into "%r".'
217
+ % (buffer_type, index, output_dump_path))
218
+
219
+ def _save_space_to_file(self: any, dump_path: str, tensor_list: list) -> None:
220
+ if tensor_list is None or len(tensor_list) == 0:
221
+ log.print_warn_log('There is no space data in "%s".' % dump_path)
222
+ return
223
+ name = os.path.basename(dump_path)
224
+ for (index, tensor) in enumerate(tensor_list):
225
+ log.print_info_log('Start to parse the data of space:%d in "%r".' % (index, dump_path))
226
+ file_name = "%s.space.%s.bin" % (name, index)
227
+ file_name = FileUtils.handle_too_long_file_name(
228
+ file_name, '.bin', os.path.join(self.output_path, ConstManager.MAPPING_FILE_NAME))
229
+ output_dump_path = os.path.join(self.output_path, file_name)
230
+ FileUtils.save_data_to_file(output_dump_path, tensor.data, 'wb', delete=True)
231
+ log.print_info_log('The data of space:%d has been parsed into "%r".' % (index, output_dump_path))
232
+
233
+ def _save_op_debug_to_file(self: any, dump_path: str, output: any) -> None:
234
+ for idx, item in enumerate(output):
235
+ bytes_data = utils.convert_ndarray_to_bytes(item.data)
236
+ magic = OpDebugInfoParser.unpack_uint_value(bytes_data, 0, 'UINT32')
237
+ if magic == ConstManager.MAGIC_NUM:
238
+ debug_info_parser = OpDebugInfoParser(bytes_data)
239
+ debug_info = debug_info_parser.parse_op_debug_new_version()
240
+ else:
241
+ debug_info = self._parse_op_debug_old_version(dump_path, idx, bytes_data)
242
+ json_path = os.path.join(self.output_path, "%s.output.%d.json" % (os.path.basename(dump_path), idx))
243
+ FileUtils.save_data_to_file(json_path, json.dumps(debug_info, sort_keys=False, indent=4), 'w+', delete=True)
244
+ log.print_info_log('The data of output:%d has been parsed into "%r".' % (idx, json_path))
245
+
246
+ def _parse_op_debug_old_version(self: any, dump_path: str, idx: int, item_data: any) -> dict:
247
+ if len(item_data) != ConstManager.OVERFLOW_CHECK_SIZE:
248
+ log.print_error_log('The data size (%d) of output:%d is not equal to %d in %r. '
249
+ 'Please check the dump file.'
250
+ % (len(item_data), idx, ConstManager.OVERFLOW_CHECK_SIZE, dump_path))
251
+ raise CompareError(CompareError.MSACCUCMP_INVALID_DUMP_DATA_ERROR)
252
+ # parser DHA Atomic Add info
253
+ index = 0
254
+ dha_atomic_add_info = self._parser_overflow_info(item_data, index)
255
+ # parser L2 Atomic Add info
256
+ index += ConstManager.DHA_ATOMIC_ADD_INFO_SIZE
257
+ l2_atomic_add_info = self._parser_overflow_info(item_data, index)
258
+ # parser AI Core info
259
+ index += ConstManager.L2_ATOMIC_ADD_INFO_SIZE
260
+ ai_core_info = self._parser_overflow_info(item_data, index)
261
+ # parser DHA Atomic Add status
262
+ index += ConstManager.AI_CORE_INFO_SIZE
263
+ dha_atomic_add_status = OpDebugInfoParser.unpack_uint_value(item_data, index, 'UINT64')
264
+ dha_atomic_add_info['status'] = dha_atomic_add_status
265
+ # parser L2 Atomic Add status
266
+ index += ConstManager.DHA_ATOMIC_ADD_STATUS_SIZE
267
+ l2_atomic_add_status = OpDebugInfoParser.unpack_uint_value(item_data, index, 'UINT64')
268
+ l2_atomic_add_info['status'] = l2_atomic_add_status
269
+ # parser AI Core status
270
+ index += ConstManager.L2_ATOMIC_ADD_STATUS_SIZE
271
+ self._parser_ai_core_status(ai_core_info, item_data, index)
272
+
273
+ data = {
274
+ 'DHA Atomic Add': dha_atomic_add_info,
275
+ 'L2 Atomic Add': l2_atomic_add_info,
276
+ 'AI Core': ai_core_info
277
+ }
278
+ return data
279
+
280
+ def _parse_one_file_exec(self: any, dump_path: str) -> None:
281
+ ret = path_check.check_path_valid(dump_path, True, False, path_type=path_check.PathType.File)
282
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
283
+ raise CompareError(ret)
284
+ dump_data = dump_utils.parse_dump_file(dump_path, self.dump_version)
285
+
286
+ if os.path.basename(dump_path).startswith('Opdebug.Node_OpDebug.'):
287
+ self._save_op_debug_to_file(dump_path, dump_data.output_data)
288
+ else:
289
+ if dump_data.get_ffts_mode:
290
+ try:
291
+ thread_id = int(dump_path.split('.')[-2])
292
+ except (IndexError, ValueError) as e:
293
+ log.print_error_log('Parse thread_id failed, please check dump_path! dump_path: {}'
294
+ .format(dump_path))
295
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR) from e
296
+ dump_data.ffts_auto_input_shape_list = dump_data.calculate_auto_mode_shape(thread_id, "input")
297
+ dump_data.ffts_auto_output_shape_list = dump_data.calculate_auto_mode_shape(thread_id, "output")
298
+
299
+ self._save_tensor_to_file(dump_path, dump_data, 'input')
300
+ self._save_tensor_to_file(dump_path, dump_data, 'output')
301
+ self._save_buffer_to_file(dump_path, dump_data.buffer)
302
+ self._save_space_to_file(dump_path, dump_data.space)
303
+
304
+ def _parse_one_dump_file(self: any, dump_path: str) -> (int, str):
305
+ try:
306
+ self._parse_one_file_exec(dump_path)
307
+ except CompareError as error:
308
+ return error.code, dump_path
309
+ return CompareError.MSACCUCMP_NONE_ERROR, dump_path
310
+
311
+
312
+ class OpDebugInfoParser:
313
+ """
314
+ Data parsing class for OpDebug dump files of the new version
315
+ """
316
+
317
+ def __init__(self: any, data: any) -> None:
318
+ self.data = data
319
+ self.overflow_info = {}
320
+
321
+ @staticmethod
322
+ def unpack_uint_value(data: any, index: int, uint_type: str) -> int:
323
+ type_para = ConstManager.UNPACK_FORMAT.get(uint_type)
324
+ # 返回值是数据类型名字,按照数据字长取地址得到的数据
325
+ return struct.unpack(type_para.get('FMT'), data[index:index + type_para.get('SIZE')])[0]
326
+
327
+ @staticmethod
328
+ def _change_debug_info_fomat(debug_info: dict) -> None:
329
+ for item in ConstManager.HEX_FORMAT_ITEM:
330
+ if item in debug_info.keys():
331
+ debug_info[item] = hex(debug_info[item])
332
+
333
+ @staticmethod
334
+ def is_new_type(acc_type: str, version: int):
335
+ return acc_type in ("AIC", "AIV") and version == 1
336
+
337
+ def _check_acc_debug_info(self, acc_debug_info: dict, version: int) -> None:
338
+ if acc_debug_info.get('valid') != 1:
339
+ log.print_error_log('The value of valid in the OpDebug file is {}, it is not 1'
340
+ .format(acc_debug_info.get('valid')))
341
+
342
+ acc_type = acc_debug_info.get('acc_type')
343
+ if not acc_type:
344
+ log.print_error_log("The value of 'acc_type' is {}, it's invalid".format(acc_type))
345
+ raise CompareError(CompareError.MSACCUCMP_INVALID_OVERFLOW_TYPE_ERROR)
346
+
347
+ expect_data_len = 0
348
+ if acc_type in ConstManager.DEBUG_INFO_MAP.keys():
349
+ if self.is_new_type(acc_type, version):
350
+ expect_data_len = len(ConstManager.DEBUG_INFO_MAP.get(acc_type)) + 3
351
+ else:
352
+ expect_data_len = len(ConstManager.DEBUG_INFO_MAP.get(acc_type))
353
+ expect_data_len *= ConstManager.UINT64_SIZE
354
+
355
+ real_data_len = acc_debug_info.get('data_len')
356
+ if real_data_len != expect_data_len:
357
+ log.print_error_log('The value of data_len in the OpDebug file is {}, it is not equal'
358
+ ' the expect value {}'.format(real_data_len, expect_data_len))
359
+
360
+ def parse_op_debug_new_version(self: any) -> dict:
361
+ op_debug = {}
362
+
363
+ # 先解析所有 UINT32 字段(包括 version)
364
+ for idx, key in enumerate(ConstManager.OVERFLOW_DEBUG):
365
+ if key == 'acc_list':
366
+ continue
367
+ index = idx * ConstManager.UINT32_SIZE
368
+ value = self.unpack_uint_value(self.data, index, 'UINT32')
369
+ op_debug[key] = value
370
+ version = op_debug.get('version', None)
371
+
372
+ # 再解析 acc_list
373
+ acc_index = ConstManager.OVERFLOW_DEBUG.index('acc_list') * ConstManager.UINT32_SIZE
374
+ op_debug['acc_list'] = self._parse_acc_debug_info(acc_index, version)
375
+
376
+ magic_key = ConstManager.MAGIC_KEY_WORD
377
+ op_debug[magic_key] = hex(op_debug.get(magic_key))
378
+ return op_debug
379
+
380
+ def _parse_acc_debug_info(self: any, start: int, version: int) -> dict:
381
+ acc_debug_info = {}
382
+ acc_type = 0
383
+ data_index = 0
384
+ for idx, key in enumerate(ConstManager.ACC_DEBUG):
385
+ index = start + idx * ConstManager.UINT32_SIZE
386
+ if key == 'acc_type':
387
+ type_value = self.unpack_uint_value(self.data, index, 'UINT32')
388
+ acc_type = ConstManager.ACC_TYPE.get(type_value)
389
+ acc_debug_info[key] = acc_type
390
+ continue
391
+ if key == 'data':
392
+ data_index = index
393
+ else:
394
+ value = self.unpack_uint_value(self.data, index, 'UINT32')
395
+ acc_debug_info[key] = value
396
+
397
+ self._check_acc_debug_info(acc_debug_info, version)
398
+ acc_debug_info['data'] = self._parse_debug_info(data_index, acc_type, version)
399
+ return acc_debug_info
400
+
401
+ def _parse_new_type_debug_info(self, data_names: tuple, start: int) -> dict:
402
+ debug_info = {}
403
+ for idx, key in enumerate(data_names):
404
+ if key == 'status':
405
+ debug_info[key] = self._parse_new_type_status_field(start, idx)
406
+ else:
407
+ index = start + idx * ConstManager.UINT64_SIZE
408
+ debug_info[key] = self.unpack_uint_value(self.data, index, 'UINT64')
409
+ return debug_info
410
+
411
+ def _parse_new_type_status_field(self, start: int, idx: int) -> list:
412
+ base_index = start + idx * ConstManager.UINT64_SIZE
413
+ return [
414
+ self.unpack_uint_value(self.data, base_index + i * ConstManager.UINT64_SIZE, 'UINT64')
415
+ for i in range(ConstManager.STATUS_LEN)
416
+ ]
417
+
418
+ def _parse_normal_debug_info(self, data_names: tuple, start: int) -> dict:
419
+ """解析普通类型字段"""
420
+ return {
421
+ key: self.unpack_uint_value(self.data, start + idx * ConstManager.UINT64_SIZE, 'UINT64')
422
+ for idx, key in enumerate(data_names)
423
+ }
424
+
425
+ def _parse_debug_info(self: any, start: int, acc_type: str, version: int) -> dict:
426
+ data_names = []
427
+ if acc_type in ConstManager.DEBUG_INFO_MAP.keys():
428
+ data_names = ConstManager.DEBUG_INFO_MAP.get(acc_type)
429
+
430
+ debug_info = {}
431
+ if self.is_new_type(acc_type, version):
432
+ debug_info = self._parse_new_type_debug_info(data_names, start)
433
+ else:
434
+ debug_info = self._parse_normal_debug_info(data_names, start)
435
+ self._change_debug_info_fomat(debug_info)
436
+ return debug_info
@@ -0,0 +1,246 @@
1
+ # coding=utf-8
2
+ # -------------------------------------------------------------------------
3
+ # This file is part of the MindStudio project.
4
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
5
+ #
6
+ # MindStudio is licensed under Mulan PSL v2.
7
+ # You can use this software according to the terms and conditions of the Mulan PSL v2.
8
+ # You may obtain a copy of Mulan PSL v2 at:
9
+ #
10
+ # http://license.coscl.org.cn/MulanPSL2
11
+ #
12
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
13
+ # EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
14
+ # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
15
+ # See the Mulan PSL v2 for more details.
16
+ # -------------------------------------------------------------------------
17
+
18
+ """
19
+ Function:
20
+ This file mainly involves the common function.
21
+ """
22
+ import re
23
+ import os
24
+
25
+ from functools import wraps
26
+ import numpy as np
27
+ from msprobe.msaccucmp.dump_parse.proto_dump_data import DumpData
28
+
29
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
30
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
31
+ from msprobe.msaccucmp.cmp_utils.reg_manager import RegManager
32
+ from msprobe.msaccucmp.cmp_utils import log
33
+ from msprobe.msaccucmp.dump_parse.big_dump_data import DumpDataHandler
34
+ from msprobe.msaccucmp.dump_parse.dump_data_object import DumpDataObj, DumpTensor
35
+ from msprobe.msaccucmp.dump_parse.nano_dump_data import NanoDumpData, NanoDumpDataParser, NanoDumpDataHandler
36
+
37
+
38
+ class SortMode:
39
+ """
40
+ The class of sort mode
41
+ """
42
+ hash_to_file_name_map = {}
43
+
44
+ def __init__(self, parameter):
45
+ self.parameter = parameter
46
+
47
+ def __call__(self: any, wrap_function):
48
+ """
49
+ the wrapper of get info to sort
50
+ @param wrap_function: file name
51
+ @return: Basis of sorted
52
+ """
53
+ @wraps(wrap_function)
54
+ def inner(*args, **kwargs):
55
+ file_path = wrap_function(*args, **kwargs)
56
+ file_name = os.path.basename(file_path)
57
+ file_name = self.hash_to_file_name_map.get(file_name) if file_name.isdigit() else file_name
58
+ if file_name is None:
59
+ log.print_warn_log('The file_name is invalid, failed to sort')
60
+ return ConstManager.INVALID_SORT_MODE
61
+ file_split = file_name.split('.')
62
+ if self.parameter == ConstManager.NORMAL_MODE or \
63
+ self.parameter == ConstManager.FFTS_TIMESTAMP:
64
+ return self._parameter_timestamp(file_split, file_name)
65
+ elif self.parameter == ConstManager.AUTOMATIC_MODE:
66
+ return self._parameter_auto(file_split, file_name)
67
+ elif self.parameter == ConstManager.MANUAL_MODE:
68
+ return self._parameter_manual(file_split, file_name)
69
+ else:
70
+ log.print_warn_log('The sort mode parameter is invalid, failed to sort')
71
+ return ConstManager.INVALID_SORT_MODE
72
+ return inner
73
+
74
+ @staticmethod
75
+ def _parameter_manual(file_split, file_name):
76
+ # Conv2D.partition0_rank2_new_sub_graph15_sgt_graph_0_fp32_vars_conv2d_39_Conv2D_lxslice0. \
77
+ # 2.9.1670205071724946.4.487.0.0
78
+ slice_x = file_split[1][-1]
79
+ if not slice_x.isdigit():
80
+ log.print_warn_log(
81
+ 'The file name \"{}\"\'s slice_x is invalid.'.format(file_name))
82
+ return ConstManager.INVALID_SLICE_X
83
+ return int(slice_x)
84
+
85
+ @staticmethod
86
+ def _parameter_auto(file_split, file_name):
87
+ thread_id = file_split[-2]
88
+ if not thread_id.isdigit():
89
+ log.print_warn_log(
90
+ 'The file name \"{}\"\'s thread_id is invalid.'.format(file_name))
91
+ return ConstManager.INVALID_THREAD_ID
92
+ return int(thread_id)
93
+
94
+ def _parameter_timestamp(self, file_split, file_name):
95
+ if self.parameter == ConstManager.FFTS_TIMESTAMP:
96
+ timestamp = file_split[4]
97
+ elif file_name.endswith(
98
+ (ConstManager.STANDARD_SUFFIX, ConstManager.NUMPY_SUFFIX, ConstManager.QUANT_SUFFIX)):
99
+ timestamp = file_split[2]
100
+ else:
101
+ timestamp = file_split[-1]
102
+ if not check_valid_timestamp(timestamp):
103
+ log.print_warn_log(
104
+ 'The file name \"{}\"\'s timestamp is invalid.'.format(file_name))
105
+ return ConstManager.INVALID_TIMESTAMP
106
+ return int(timestamp)
107
+
108
+
109
+ @SortMode(ConstManager.AUTOMATIC_MODE)
110
+ def get_ffts_auto(file_name):
111
+ """
112
+ get thread id of ffts auto mode from file name
113
+ @param file_name: file name
114
+ @return: thread id
115
+ """
116
+ return file_name
117
+
118
+
119
+ @SortMode(ConstManager.MANUAL_MODE)
120
+ def get_ffts_manual(file_name):
121
+ """
122
+ get slice X of ffts manual mode from file name
123
+ @param file_name: file name
124
+ @return: slice X
125
+ """
126
+ return file_name
127
+
128
+
129
+ @SortMode(ConstManager.NORMAL_MODE)
130
+ def get_normal_timestamp(file_name):
131
+ """
132
+ get timestamp of normal mode
133
+ @param file_name: file name
134
+ @return: timestamp
135
+ """
136
+ return file_name
137
+
138
+
139
+ @SortMode(ConstManager.FFTS_TIMESTAMP)
140
+ def get_ffts_timestamp(file_name):
141
+ """
142
+ get timestamp of ffts mode
143
+ @param file_name: file name
144
+ @return: timestamp
145
+ """
146
+ return file_name
147
+
148
+
149
+ def sort_dump_file_list(dump_file_type: int, dump_file_list: list) -> list:
150
+ """
151
+ sort dump file list by different dump mode
152
+ @param dump_file_type: dump data mode
153
+ @param dump_file_list: dump file list
154
+ @return: sorted dump file list
155
+ """
156
+ if dump_file_type == ConstManager.NORMAL_MODE:
157
+ dump_file_list.sort(key=get_normal_timestamp)
158
+ elif dump_file_type == ConstManager.AUTOMATIC_MODE or dump_file_type == ConstManager.MANUAL_MODE:
159
+ dump_file_list.sort(key=get_ffts_timestamp)
160
+ if dump_file_type == ConstManager.AUTOMATIC_MODE:
161
+ dump_file_list.sort(key=get_ffts_auto)
162
+ elif dump_file_type == ConstManager.MANUAL_MODE:
163
+ dump_file_list.sort(key=get_ffts_manual)
164
+ return dump_file_list
165
+
166
+
167
+ def read_numpy_file(path: str) -> any:
168
+ """
169
+ Read numpy file
170
+ :param path: the numpy file path
171
+ :return: numpy data
172
+ """
173
+ return DumpDataHandler(path).read_numpy_file()
174
+
175
+
176
+ def convert_dump_data_object(input_path, dump_version) -> DumpDataObj:
177
+ """
178
+ This is a wrapper
179
+ @param wrap_function: function need to be wrapped
180
+ @return: inner function
181
+ """
182
+ try:
183
+ dump_data = DumpDataHandler(input_path).parse_dump_data()
184
+ except CompareError as error:
185
+ if error.code == CompareError.MSACCUCMP_UNMATCH_STANDARD_DUMP_SIZE:
186
+ dump_data = DumpData()
187
+ else:
188
+ raise error
189
+ dump_data_object = convert_dump_data(dump_data)
190
+ return dump_data_object
191
+
192
+
193
+ def convert_dump_data(dump_data: DumpData) -> DumpDataObj:
194
+ """
195
+ Convert dump_data to DumpDataObj
196
+ @param dump_data: DumpData object
197
+ @return: DumpDataObj object
198
+ """
199
+ dump_data_object = DumpDataObj(dump_data)
200
+
201
+ return dump_data_object
202
+
203
+
204
+ def convert_nano_dump_data(nano_dump_data: NanoDumpData) -> DumpDataObj:
205
+ """
206
+ Convert dump_data to DumpDataObj
207
+ @param dump_data: DumpData object
208
+ @return: DumpDataObj object
209
+ """
210
+ dump_data_object = DumpDataObj(dump_data=None, nano_dump_data=nano_dump_data)
211
+ return dump_data_object
212
+
213
+
214
+ def parse_dump_file(input_path: str, dump_version: int) -> DumpDataObj:
215
+ """
216
+ Parse dump file
217
+ :param input_path: the input file path
218
+ :param dump_version: the dump version
219
+ :return: DumpData
220
+ """
221
+ if NanoDumpDataHandler(input_path).check_is_nano_dump_format():
222
+ nano_dump_data = NanoDumpDataHandler(input_path).parse_dump_data()
223
+ return convert_nano_dump_data(nano_dump_data)
224
+ else:
225
+ return convert_dump_data_object(input_path, dump_version)
226
+
227
+
228
+ def get_op_type_from_file_name(dump_path: str):
229
+ """
230
+ get op_type from dump file name
231
+ """
232
+ dump_file_name = os.path.basename(dump_path).replace("*", "0")
233
+ is_match, match = RegManager.match_group(RegManager.OFFLINE_DUMP_PATTERN, dump_file_name)
234
+ if is_match:
235
+ op_type_end_index = dump_file_name.find('.')
236
+ return dump_file_name[:op_type_end_index]
237
+ return ConstManager.NAN
238
+
239
+
240
+ def check_valid_timestamp(timestamp) -> bool:
241
+ """
242
+ Check if timestamp format is valid
243
+ @param timestamp: timestamp from dump_file_path
244
+ @return: True or False
245
+ """
246
+ return len(timestamp) == ConstManager.TIMESTAMP_LENGTH and timestamp.isdigit()