mindstudio-probe 8.3.3__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.3.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.3.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 +28 -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.3.dist-info/LICENSE +0 -201
  451. mindstudio_probe-8.3.3.dist-info/RECORD +0 -491
  452. mindstudio_probe-8.3.3.dist-info/entry_points.txt +0 -2
  453. mindstudio_probe-8.3.3.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,580 @@
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 itertools
23
+ import multiprocessing
24
+ import os
25
+ import uuid
26
+
27
+ import numpy as np
28
+
29
+ from msprobe.msaccucmp.cmp_utils import log, path_check
30
+ from msprobe.msaccucmp.dump_parse import dump_utils, mapping
31
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
32
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
33
+ from msprobe.msaccucmp.vector_cmp.compare_detail.detail import DetailInfo
34
+ from msprobe.msaccucmp.cmp_utils.file_utils import FileUtils
35
+ from msprobe.msaccucmp.cmp_utils.multi_process.progress import Progress
36
+
37
+
38
+ class MinMaxValue:
39
+ """
40
+ The class for absolute and relative value min max value recorder
41
+ """
42
+
43
+ def __init__(self: any) -> None:
44
+ self._min_absolute_error = np.nan
45
+ self._max_absolute_error = np.nan
46
+ self._min_relative_error = np.nan
47
+ self._max_relative_error = np.nan
48
+
49
+ def get_min_and_max_value(self: any) -> str:
50
+ """
51
+ Get min/max absolute error and min/max relative error
52
+ """
53
+ return "MinAbsoluteError:%.6f\nMaxAbsoluteError:%.6f\nMinRelativeError:%.6f\nMaxRelativeError:%.6f" \
54
+ % (self._min_absolute_error, self._max_absolute_error,
55
+ self._min_relative_error, self._max_relative_error)
56
+
57
+ def set_min_absolute_error(self: any, value: any) -> None:
58
+ """
59
+ Set min absolute error
60
+ """
61
+ self._min_absolute_error = value
62
+
63
+ def set_max_absolute_error(self: any, value: any) -> None:
64
+ """
65
+ Set max absolute error
66
+ """
67
+ self._max_absolute_error = value
68
+
69
+ def set_min_relative_error(self: any, value: any) -> None:
70
+ """
71
+ Set min relative error
72
+ """
73
+ self._min_relative_error = value
74
+
75
+ def set_max_relative_error(self: any, value: any) -> None:
76
+ """
77
+ Set max relative error
78
+ """
79
+ self._max_relative_error = value
80
+
81
+
82
+ class TopN:
83
+ """
84
+ The class for recording the top n absolute/relative error values
85
+ """
86
+
87
+ def __init__(self: any, is_bool: bool = False) -> None:
88
+ self._absolute_error_top_n_list = []
89
+ self._relative_error_top_n_list = []
90
+ self.is_bool = is_bool
91
+
92
+ def set_absolute_top_n_list(self: any, index_list: list, *data_lists: any) -> None:
93
+ """
94
+ set and store the top n absolute error values
95
+ """
96
+ self._absolute_error_top_n_list = self._make_top_n_list(index_list, *data_lists)
97
+
98
+ def set_relative_top_n_list(self: any, index_list: list, *data_lists: any) -> None:
99
+ """
100
+ set and store the top n relative error values
101
+ """
102
+ self._relative_error_top_n_list = self._make_top_n_list(index_list, *data_lists)
103
+
104
+ def get_absolute_error_top_n_list(self: any) -> list:
105
+ """
106
+ get top n absolute error list
107
+ """
108
+ return self._absolute_error_top_n_list
109
+
110
+ def get_relative_error_top_n_list(self: any) -> list:
111
+ """
112
+ get top n relative error list
113
+ """
114
+ return self._relative_error_top_n_list
115
+
116
+ def _make_top_n_list(self: any, index_list: list, *data_lists: any) -> list:
117
+ if len(data_lists) < 6:
118
+ raise RuntimeError('The number of arguments is not correct.')
119
+ dim_list = data_lists[0]
120
+ left_list = data_lists[1]
121
+ right_list = data_lists[2]
122
+ absolute_error_list = data_lists[3]
123
+ relative_error_list = data_lists[4]
124
+ error_type = data_lists[5]
125
+ top_n_original_list = []
126
+ for i, index in enumerate(index_list):
127
+ # variable row value,for example,[17866338,"22 16 32 98",-0.866699,-0.000017,0.866682,51349.906250]
128
+ row = [
129
+ index, " ".join((str(x) for x in dim_list[i])), left_list[i], right_list[i],
130
+ absolute_error_list[i], relative_error_list[i]
131
+ ]
132
+ top_n_original_list.append(row)
133
+ if error_type == "absolute":
134
+ # 4 is AbsoluteError column subscript.
135
+ # 5 is RelativeError column subscript.
136
+ # 0 is Index column subscript.
137
+ return self._get_top_n_result(top_n_original_list, 4, 0)
138
+ return self._get_top_n_result(top_n_original_list, 5, 0)
139
+
140
+ def _get_top_n_result(self: any, original_list: list, first_key: int, second_key: int) -> list:
141
+ top_n_list = []
142
+ sort_list = sorted(original_list, key=lambda x: (x[first_key], x[second_key]), reverse=True)
143
+ if not self.is_bool:
144
+ item_template = '%d,%s,%.6f\t,%.6f\t,%.6f\t,%.6f\t\n'
145
+ else:
146
+ item_template = '%d,%s,%s\t,%s\t,%.6f\t,%.6f\t\n'
147
+ for item in sort_list:
148
+ if self.is_bool:
149
+ item[2] = str(item[2])
150
+ item[3] = str(item[3])
151
+ line = item_template % tuple(item)
152
+ line = line.replace("nan", "-").replace("inf", "-")
153
+ top_n_list.append(line)
154
+ return top_n_list
155
+
156
+
157
+ class DetailWriter:
158
+ """
159
+ The class for detail writer
160
+ """
161
+
162
+ def __init__(self: any, output_path: str, detail_info: DetailInfo) -> None:
163
+ self.output_path = output_path
164
+ self.progress = None
165
+ self.detail_info = detail_info
166
+ self.min_max_value = MinMaxValue()
167
+ self.top_n = TopN()
168
+ self._total_num = 0
169
+ self.dump_file_name = ""
170
+
171
+ @staticmethod
172
+ def _padding_shape_to_4d(dim: tuple) -> list:
173
+ left_count = max(0, ConstManager.FOUR_DIMS_LENGTH) - len(dim)
174
+ return list(dim) + left_count * [1]
175
+
176
+ @staticmethod
177
+ def _write_one_detail(index: int, file_stream: any, *data_values: any, is_bool: bool = False) -> None:
178
+ cur_dim = data_values[0]
179
+ my_output_value = data_values[1]
180
+ ground_truth_value = data_values[2]
181
+ absolute_error = data_values[3]
182
+ relative_error = data_values[4]
183
+ # add index, n,c,h,w or id, my output value, ground truth value, absolute error, relative error to line
184
+ if not is_bool:
185
+ if np.isnan(relative_error) or np.isinf(relative_error):
186
+ line = '%d,%s,%.6f\t,%.6f\t,%.6f\t,-\n' \
187
+ % (index, " ".join((str(x) for x in cur_dim)), my_output_value,
188
+ ground_truth_value, absolute_error)
189
+ else:
190
+ line = '%d,%s,%.6f\t,%.6f\t,%.6f\t,%.6f\t\n' \
191
+ % (index, " ".join((str(x) for x in cur_dim)), my_output_value,
192
+ ground_truth_value, absolute_error, relative_error)
193
+ else:
194
+ line = '%d,%s,%s\t,%s\t,-\t,-\n' \
195
+ % (index, " ".join((str(x) for x in cur_dim)), my_output_value,
196
+ ground_truth_value)
197
+ # write line to file
198
+ file_stream.write(line)
199
+
200
+ @staticmethod
201
+ def _replace_inf_and_nan(nd_array: any) -> any:
202
+ if np.isinf(nd_array).any():
203
+ inf_index = np.isinf(nd_array)
204
+ nd_array[inf_index] = np.nan
205
+ return np.nan_to_num(nd_array)
206
+ return np.nan_to_num(nd_array)
207
+
208
+ @staticmethod
209
+ def _calculate_str_length(headers: list, data: list) -> list:
210
+ max_header_list = (len(header.strip()) for header in headers)
211
+ max_column_list = list(max_header_list)
212
+ for _data in data:
213
+ max_data_list = (len(str(_element.strip())) for _element in _data)
214
+ new_max_column_list = []
215
+ for _element in zip(max_data_list, max_column_list):
216
+ new_max_column_list.append(max(_element))
217
+ max_column_list = new_max_column_list
218
+ return max_column_list
219
+
220
+ @staticmethod
221
+ def _show_top_n_data(data: list, max_column_list: list) -> None:
222
+ for _data in data:
223
+ for index, _element in enumerate(_data):
224
+ end = '\n' if index == len(_data) - 1 else '\t'
225
+ print(str(_element.strip()).ljust(max_column_list[index], ' '), end=end)
226
+
227
+ @staticmethod
228
+ def _show_top_n_header(headers: list, max_column_list: list) -> None:
229
+ for index, header in enumerate(headers):
230
+ end = '\n' if index == len(headers) - 1 else '\t'
231
+ print(str(header.strip()).ljust(max_column_list[index], ' '), end=end)
232
+
233
+ def delete_old_detail_result_files(self: any) -> None:
234
+ """
235
+ Delete old detail result files
236
+ """
237
+ if not os.path.exists(self.output_path):
238
+ return
239
+ # delete old result
240
+ for item in os.listdir(self.output_path):
241
+ if item == ConstManager.SIMPLE_OP_MAPPING_FILE_NAME:
242
+ continue
243
+ if self._match_detail_file_name(item):
244
+ path = os.path.join(self.output_path, item)
245
+ if os.path.exists(path):
246
+ os.remove(path)
247
+ self._delete_too_long_file()
248
+
249
+ def write(self: any, dim: tuple, my_output_data: any, ground_truth_data: any, dump_file_name: str = "") -> None:
250
+ """
251
+ Write detail info file
252
+ :param dim: the shape
253
+ :param my_output_data: my output data
254
+ :param ground_truth_data: ground truth data
255
+ :param dump_file_name: dump file name
256
+ """
257
+ self.progress = Progress(len(my_output_data))
258
+ self.dump_file_name = dump_file_name
259
+ old_file_name = '%s.npy' % (self.detail_info.tensor_id.get_file_prefix())
260
+ new_file_name = self._handle_too_long_file_name(old_file_name, ConstManager.NPY_SUFFIX)
261
+ new_file_path = os.path.join(self.output_path, new_file_name)
262
+ FileUtils.save_array_to_file(new_file_path, my_output_data.reshape(dim), np_save=True)
263
+ log.print_write_result_info("%s after shape conversion" % self.detail_info.tensor_id.get_tensor_id(),
264
+ new_file_name)
265
+ # check whether the types of my_output_data and ground_truth_data are Boolean.
266
+ self._check_dtype_is_bool(my_output_data, ground_truth_data)
267
+ # transform dim shape to list
268
+ dim_list = self._transform_dim_list(dim)
269
+ # use numpy to calculate the summaries
270
+ res_generator = self._array_calculate(my_output_data, ground_truth_data, dim_list, self.top_n.is_bool)
271
+ # write summary file
272
+ self._write_detail_summary_file(self.top_n.is_bool)
273
+ # write each value to file
274
+ self._write_detail_result_multi_proc(res_generator)
275
+ # finish and print progress
276
+ self.progress.update_and_print_progress(ConstManager.MAX_PROGRESS)
277
+ # write and print top_n
278
+ self._handle_top_n()
279
+ log.print_write_result_info('details result', self.output_path)
280
+
281
+ def _write_detail_result_multi_proc(self: any, res_generator: any) -> None:
282
+ if self.detail_info.ignore_result:
283
+ return
284
+ # prepare task pool
285
+ cpu_count = int((multiprocessing.cpu_count() + 1) / 2)
286
+ pool = multiprocessing.Pool(cpu_count)
287
+
288
+ # allocate all tasks evenly by multi-processing number
289
+ task_list = []
290
+ for _ in range(cpu_count):
291
+ task_list.append([])
292
+ for i, group in enumerate(res_generator):
293
+ task_list[i % cpu_count].append(group)
294
+
295
+ # make a listen process to listen the print progress
296
+ comm_queue = multiprocessing.Manager().Queue()
297
+ listen_proc = multiprocessing.Process(target=self._listen_and_print,
298
+ args=(comm_queue,))
299
+ listen_proc.start()
300
+
301
+ # apply tasks
302
+ for task in task_list:
303
+ pool.apply_async(self._multi_process_group_write,
304
+ args=(task, comm_queue,))
305
+ # wait till done
306
+ pool.close()
307
+ pool.join()
308
+ listen_proc.terminate()
309
+
310
+ def _listen_and_print(self: any, queue: multiprocessing.Queue) -> None:
311
+ while True:
312
+ add_num = queue.get(True)
313
+ self.progress.update_progress(add_num)
314
+ if not self.progress.is_done():
315
+ self.progress.print_progress()
316
+
317
+ def _separate_group_generator(self: any, dim_list: list, data_group: tuple, is_bool: bool = False) -> tuple:
318
+ # generate the slice data of input lists
319
+ i = 0
320
+ length = len(dim_list)
321
+ my_output_data = data_group[0]
322
+ ground_truth_data = data_group[1]
323
+ absolute_error = data_group[2]
324
+ relative_error = data_group[3]
325
+ max_line = self.detail_info.max_line
326
+ while (i + 1) * max_line < length:
327
+ left = i * max_line
328
+ right = (i + 1) * max_line
329
+ s = slice(left, right)
330
+ yield i, dim_list[s], my_output_data[s], ground_truth_data[s], absolute_error[s], relative_error[s], is_bool
331
+ i = i + 1
332
+
333
+ s = slice(i * max_line, length)
334
+ yield i, dim_list[s], my_output_data[s], ground_truth_data[s], absolute_error[s], relative_error[s], is_bool
335
+
336
+ def _group_write_exec(self: any, task_group: list, queue: multiprocessing.Queue) -> None:
337
+ for arg_group in task_group:
338
+ task_index = arg_group[0]
339
+ dim_list = arg_group[1]
340
+ my_output_data = arg_group[2]
341
+ ground_truth_data = arg_group[3]
342
+ absolute_error = arg_group[4]
343
+ relative_error = arg_group[5]
344
+ # make header, should do once
345
+ file_path = self._make_detail_output_file(task_index * self.detail_info.max_line)
346
+ # create file IO pointer
347
+ detail_output_file = os.fdopen(os.open(file_path, ConstManager.WRITE_FLAGS, ConstManager.WRITE_MODES),
348
+ 'w')
349
+ detail_output_file.write(self.detail_info.make_detail_header())
350
+
351
+ # write detail results one by one
352
+ for offset, dim in enumerate(dim_list):
353
+ index = task_index * self.detail_info.max_line + offset
354
+ self._write_one_detail(index, detail_output_file, dim, my_output_data[offset],
355
+ ground_truth_data[offset], absolute_error[offset], relative_error[offset],
356
+ is_bool=arg_group[6])
357
+
358
+ detail_output_file.close()
359
+
360
+ # add the write count to the shared queue
361
+ queue.put(len(dim_list))
362
+
363
+ def _multi_process_group_write(self: any, task_group: list, queue: multiprocessing.Queue) -> None:
364
+ try:
365
+ self._group_write_exec(task_group, queue)
366
+ except Exception as error:
367
+ log.print_error_log('Failed to write detail info in subprocess. %s' % error)
368
+
369
+ def _transform_dim_list(self: any, dim: tuple) -> list:
370
+ if self.detail_info.detail_format != '()':
371
+ # padding shape to 4d
372
+ dims = self._padding_shape_to_4d(dim)
373
+ args = (range(x) for x in dims)
374
+ # write each detail value
375
+ cur_dim_list = list(itertools.product(*args))
376
+ else:
377
+ cur_dim_list = []
378
+ for cur_dim0 in range(dim[0]):
379
+ cur_dim_list.append([cur_dim0])
380
+
381
+ return cur_dim_list
382
+
383
+ def _match_detail_file_name(self: any, file_name: str) -> bool:
384
+ name = self.detail_info.tensor_id.get_file_prefix()
385
+ return file_name == ("%s_summary.txt" % name) or (file_name.startswith("%s_" % name) and (
386
+ file_name.endswith(ConstManager.CSV_SUFFIX) or file_name.endswith(ConstManager.NPY_SUFFIX)))
387
+
388
+ def _make_detail_output_file(self: any, file_index: int = 0) -> str:
389
+ # make file name based on the index,then return the path
390
+ old_file_name = "%s_%d.csv" % (self.detail_info.tensor_id.get_file_prefix(), file_index)
391
+ new_file_name = self._handle_too_long_file_name(old_file_name, ConstManager.CSV_SUFFIX, file_index)
392
+ file_path = os.path.join(self.output_path, new_file_name)
393
+
394
+ return file_path
395
+
396
+ def _array_calculate(self: any, my_output_data: any, ground_truth_data: any, dim_list: list,
397
+ is_bool: bool = False) -> any:
398
+ self._total_num = len(my_output_data)
399
+ absolute_error, relative_error = self._cal_err(my_output_data, ground_truth_data, is_bool)
400
+ # find the index of top n error values
401
+ top_n = self.detail_info.top_n
402
+ if len(absolute_error) < top_n:
403
+ top_n = len(absolute_error) - 1
404
+ absolute_top_n_index, relative_top_n_index = self._get_error_top_n_index(absolute_error, relative_error, top_n,
405
+ is_bool)
406
+ # record top n lines in calculator
407
+ self._set_top_n_list("absolute", absolute_top_n_index, dim_list,
408
+ (my_output_data[absolute_top_n_index], ground_truth_data[absolute_top_n_index],
409
+ absolute_error[absolute_top_n_index], relative_error[absolute_top_n_index]))
410
+ self._set_top_n_list("relative", relative_top_n_index, dim_list,
411
+ (my_output_data[relative_top_n_index], ground_truth_data[relative_top_n_index],
412
+ absolute_error[relative_top_n_index], relative_error[relative_top_n_index]))
413
+
414
+ # return the generator of compute result, to save memory
415
+ return self._separate_group_generator(dim_list,
416
+ (my_output_data, ground_truth_data, absolute_error, relative_error),
417
+ is_bool)
418
+
419
+ def _cal_err(self: any, my_output_data: any, ground_truth_data: any, is_bool: bool) -> tuple:
420
+ if not is_bool:
421
+ # use numpy to calculate summary data quickly
422
+ absolute_error = np.abs(my_output_data - ground_truth_data)
423
+ abs_ground_data = np.abs(ground_truth_data)
424
+ relative_error = np.true_divide(absolute_error, abs_ground_data)
425
+ else:
426
+ absolute_error = np.array([np.nan] * self._total_num)
427
+ relative_error = np.array([np.nan] * self._total_num)
428
+ return absolute_error, relative_error
429
+
430
+ def _get_error_top_n_index(self: any, absolute_error: any, relative_error: any, top_n: int, is_bool: bool) -> tuple:
431
+ if not is_bool:
432
+ absolute_new_error = self._replace_inf_and_nan(absolute_error)
433
+ relative_new_error = self._replace_inf_and_nan(relative_error)
434
+ absolute_top_n_index = np.argpartition(absolute_new_error, -top_n)[-top_n:].tolist()
435
+ relative_top_n_index = np.argpartition(relative_new_error, -top_n)[-top_n:].tolist()
436
+ if len(absolute_new_error) != 0:
437
+ self.min_max_value.set_min_absolute_error(np.nanmin(absolute_new_error))
438
+ self.min_max_value.set_max_absolute_error(np.nanmax(absolute_new_error))
439
+ if len(relative_new_error) != 0:
440
+ self.min_max_value.set_min_relative_error(np.nanmin(relative_new_error))
441
+ self.min_max_value.set_max_relative_error(np.nanmax(relative_new_error))
442
+ else:
443
+ absolute_top_n_index = list(range(top_n))
444
+ relative_top_n_index = list(range(top_n))
445
+
446
+ self.min_max_value.set_min_absolute_error(np.nan)
447
+ self.min_max_value.set_max_absolute_error(np.nan)
448
+ self.min_max_value.set_min_relative_error(np.nan)
449
+ self.min_max_value.set_max_relative_error(np.nan)
450
+ return absolute_top_n_index, relative_top_n_index
451
+
452
+ def _set_top_n_list(self: any, error_type: str, index_list: list, dim_list: list, top_n_data_group: tuple) -> None:
453
+ top_n_dims = []
454
+ for i in index_list:
455
+ top_n_dims.append(dim_list[i])
456
+ if error_type == "absolute":
457
+ self.top_n.set_absolute_top_n_list(index_list, top_n_dims, top_n_data_group[0], top_n_data_group[1],
458
+ top_n_data_group[2], top_n_data_group[3], error_type)
459
+ else:
460
+ self.top_n.set_relative_top_n_list(index_list, top_n_dims, top_n_data_group[0], top_n_data_group[1],
461
+ top_n_data_group[2], top_n_data_group[3], error_type)
462
+
463
+ def _check_dtype_is_bool(self: any, my_output_data: any, ground_truth_data: any) -> None:
464
+ is_bool = my_output_data.dtype == np.bool_ and ground_truth_data.dtype == np.bool_
465
+ self.top_n.is_bool = is_bool
466
+
467
+ def _write_top_n_file(self: any, top_n_type: str, top_n_list: list) -> None:
468
+ old_file_name = "%s_%s_error_topn.csv" % (self.detail_info.tensor_id.get_file_prefix(), top_n_type)
469
+ top_n_type_suffix = "_%s_error_topn.csv" % top_n_type
470
+ new_file_name = self._handle_too_long_file_name(old_file_name, top_n_type_suffix)
471
+ top_n_path = os.path.join(self.output_path, new_file_name)
472
+ path_check.check_write_path_secure(top_n_path)
473
+ try:
474
+ with os.fdopen(os.open(top_n_path, ConstManager.WRITE_FLAGS, ConstManager.WRITE_MODES), 'w') as top_n_file:
475
+ top_n_file.write(self.detail_info.make_detail_header())
476
+ for line in top_n_list:
477
+ top_n_file.write(line)
478
+ except (OSError, SystemError, ValueError, TypeError, RuntimeError,
479
+ MemoryError, KeyError, IOError) as error:
480
+ log.print_error_log('Failed to write top n file. %s' % error)
481
+ raise CompareError(CompareError.MSACCUCMP_WRITE_FILE_ERROR) from error
482
+
483
+ def _make_show_data(self: any, top_n_list: list) -> (list, list):
484
+ header = self.detail_info.make_detail_header().split(',')
485
+ data = []
486
+ for item in top_n_list:
487
+ data.append(item.split(','))
488
+ return header, data
489
+
490
+ def _show_top_n(self: any, top_n_type: str, top_n_list: list) -> None:
491
+ headers, data = self._make_show_data(top_n_list)
492
+ max_column_list = self._calculate_str_length(headers, data)
493
+ log.print_info_log("%s TopN" % top_n_type)
494
+ self._show_top_n_header(headers, max_column_list)
495
+ self._show_top_n_data(data, max_column_list)
496
+
497
+ def _handle_top_n(self: any) -> None:
498
+ print("\n")
499
+ absolute_top_n = self.top_n.get_absolute_error_top_n_list()
500
+ self._write_top_n_file('absolute', absolute_top_n)
501
+ self._show_top_n("Absolute Error", absolute_top_n)
502
+ print("\n")
503
+ relative_top_n = self.top_n.get_relative_error_top_n_list()
504
+ self._write_top_n_file('relative', relative_top_n)
505
+ self._show_top_n("Relative Error", relative_top_n)
506
+
507
+ def _write_detail_summary_file(self: any, is_bool: bool = False) -> None:
508
+ content = "TotalCount:%d\n%s%s\n" \
509
+ % (self._total_num, self.detail_info.get_detail_info(), self.min_max_value.get_min_and_max_value())
510
+ if is_bool:
511
+ log.print_warn_log('Boolean data does not support calculate Relative Error or Absolute Error!')
512
+ content = content.replace('nan', '-')
513
+ old_file_name = "%s_summary.txt" % (self.detail_info.tensor_id.get_file_prefix())
514
+ new_file_name = self._handle_too_long_file_name(old_file_name, ConstManager.SUMMARY_TXT_SUFFIX)
515
+ summary_file_path = os.path.join(self.output_path, new_file_name)
516
+ path_check.check_write_path_secure(summary_file_path)
517
+ try:
518
+ with os.fdopen(os.open(summary_file_path, ConstManager.WRITE_FLAGS, ConstManager.WRITE_MODES),
519
+ 'w') as summary_file:
520
+ summary_file.write(content)
521
+ except (OSError, SystemError, ValueError, TypeError, RuntimeError,
522
+ MemoryError, KeyError, IOError) as error:
523
+ log.print_error_log('Failed to write detail summary file. %s' % error)
524
+ raise CompareError(CompareError.MSACCUCMP_WRITE_FILE_ERROR) from error
525
+
526
+ def _handle_too_long_file_name(self: any, file_name: str, suffix: str, file_index: int = 0) -> str:
527
+ if len(file_name) >= ConstManager.LINUX_FILE_NAME_MAX_LEN:
528
+ tensor_type_index = self.detail_info.tensor_id.get_tensor_type_index()
529
+ new_file_name = "%s%s%s" % (self.dump_file_name.replace('/', '_').replace('.', '_'),
530
+ tensor_type_index, suffix)
531
+ if ConstManager.CSV_SUFFIX == suffix:
532
+ new_file_name = "%s%s_%s%s" % (self.dump_file_name.replace('/', '_').replace('.', '_'),
533
+ tensor_type_index, file_index, suffix)
534
+ if len(new_file_name) >= ConstManager.LINUX_FILE_NAME_MAX_LEN:
535
+ value = ''.join(str(uuid.uuid3(uuid.NAMESPACE_DNS, file_name)).split('-'))
536
+ new_file_name = "%s%s" % (value, suffix)
537
+ self._save_op_mapping_file(file_name, new_file_name)
538
+ return new_file_name
539
+ return file_name
540
+
541
+ def _save_op_mapping_file(self: any, old_file_name: str, new_file_name: str) -> None:
542
+ single_op_mapping_path = os.path.join(self.output_path, ConstManager.SIMPLE_OP_MAPPING_FILE_NAME)
543
+ try:
544
+ with os.fdopen(os.open(single_op_mapping_path, ConstManager.WRITE_FLAGS, ConstManager.WRITE_MODES),
545
+ 'a+') as mapping_file:
546
+ content = "%s,%s\n" % (new_file_name, old_file_name)
547
+ mapping_file.write(content)
548
+ except (OSError, SystemError, ValueError, TypeError, RuntimeError,
549
+ MemoryError, KeyError, IOError) as error:
550
+ log.print_error_log('Failed to save mapping file. %s' % error)
551
+ raise CompareError(CompareError.MSACCUCMP_WRITE_FILE_ERROR) from error
552
+
553
+ def _delete_file_by_mapping(self: any, hash_to_file_name_map: dict) -> list:
554
+ delete_keys = []
555
+ # delete old result
556
+ for key, value in hash_to_file_name_map.items():
557
+ if self._match_detail_file_name(value):
558
+ path = os.path.join(self.output_path, key)
559
+ if os.path.exists(path):
560
+ os.remove(path)
561
+ delete_keys.append(key)
562
+ return delete_keys
563
+
564
+ def _delete_too_long_file(self: any) -> None:
565
+ mapping_file_path = os.path.join(self.output_path, ConstManager.SIMPLE_OP_MAPPING_FILE_NAME)
566
+ if not os.path.exists(mapping_file_path):
567
+ return
568
+ hash_to_file_name_map = mapping.read_mapping_file(mapping_file_path)
569
+ delete_keys = self._delete_file_by_mapping(hash_to_file_name_map)
570
+ for key in delete_keys:
571
+ hash_to_file_name_map.pop(key)
572
+ if os.path.exists(mapping_file_path):
573
+ os.remove(mapping_file_path)
574
+ # save other compare result records.
575
+ if hash_to_file_name_map:
576
+ with os.fdopen(os.open(mapping_file_path, ConstManager.WRITE_FLAGS, ConstManager.WRITE_MODES),
577
+ "w") as output_file:
578
+ for key, value in hash_to_file_name_map.items():
579
+ content = "%s,%s\n" % (key, value)
580
+ output_file.write(content)
@@ -0,0 +1,16 @@
1
+ # -------------------------------------------------------------------------
2
+ # This file is part of the MindStudio project.
3
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
4
+ #
5
+ # MindStudio is licensed under Mulan PSL v2.
6
+ # You can use this software according to the terms and conditions of the Mulan PSL v2.
7
+ # You may obtain a copy of Mulan PSL v2 at:
8
+ #
9
+ # http://license.coscl.org.cn/MulanPSL2
10
+ #
11
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
12
+ # EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
13
+ # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
14
+ # See the Mulan PSL v2 for more details.
15
+ # -------------------------------------------------------------------------
16
+