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,588 @@
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
+ FusionOpComparison class. This class mainly involves the compare function.
21
+ """
22
+ import collections
23
+
24
+ from msprobe.msaccucmp.vector_cmp.fusion_manager import fusion_rule_parser
25
+ from msprobe.msaccucmp.cmp_utils import utils, utils_type
26
+ from msprobe.msaccucmp.cmp_utils import log
27
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.compare_npu_vs_npu import NpuVsNpuComparison
28
+ from msprobe.msaccucmp.vector_cmp.fusion_manager import compare_result
29
+ from msprobe.msaccucmp.dump_parse.dump import DumpType
30
+ from msprobe.msaccucmp.overflow.overflow_detection import OverflowDetection
31
+ from msprobe.msaccucmp.vector_cmp.range_manager.range_manager import RangeManager
32
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.fusion_op import FusionOp
33
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.fusion_op import Tensor
34
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
35
+ from msprobe.msaccucmp.conversion.tensor_conversion import TensorConversion
36
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
37
+ from msprobe.msaccucmp.dump_parse.dump_data_object import DumpDataObj
38
+ from msprobe.msaccucmp.dump_parse import dump_utils
39
+ from msprobe.msaccucmp.cmp_utils import common
40
+
41
+
42
+ class FusionOpComparison:
43
+ """
44
+ The class for fusion op compare
45
+ """
46
+ TIMESTAMP_INDEX = 0
47
+ ORIGINAL_NAMES_INDEX = 2
48
+
49
+ def __init__(self: any, *args: any) -> None:
50
+ fusion_op_name, compare_rule, compare_data, format_manager, arguments = args
51
+ self.compare_data = compare_data
52
+ self.compare_rule = compare_rule
53
+ self.format_manager = format_manager
54
+ self.algorithm_manager = arguments.get('algorithm_manager')
55
+ self.fusion_op_list = self.compare_rule.fusion_info.fusion_op_name_to_op_map[fusion_op_name]
56
+ self.left_dump_file_path = ''
57
+ self.left_dump_data = None
58
+ self.overflow_detection = arguments.get('overflow_detection', False)
59
+ self.is_ground_truth_gpu_or_cpu = \
60
+ True if utils.dump_path_contains_npy(arguments.get("golden_dump_path")) else False
61
+ self.is_my_dump_gpu_or_cpu = \
62
+ True if utils.dump_path_contains_npy(arguments.get("my_dump_path")) else False
63
+ self.op_name_origin_output_index_map = {}
64
+ self.max_cmp_size = arguments.get('max_cmp_size')
65
+
66
+ @staticmethod
67
+ def _check_dequant_op(fusion_op: FusionOp) -> bool:
68
+ if fusion_op.op_type == 'AscendDequant':
69
+ return True
70
+ for suffix in ConstManager.DEQUANT_OP_NANE_SUFFIX_LIST:
71
+ if fusion_op.op_name.endswith(suffix):
72
+ return True
73
+ return False
74
+
75
+ @staticmethod
76
+ def _handle_error_msg(compare_error: CompareError, fusion_op: FusionOp, tensor_id: str) -> str:
77
+ if compare_error.code == CompareError.MSACCUCMP_NO_DUMP_FILE_ERROR:
78
+ error_msg = [log.print_no_right_dump_file_error(fusion_op.op_name, tensor_id)]
79
+ elif compare_error.code == CompareError.MSACCUCMP_INVALID_FRACTAL_NZ_DUMP_DATA_ERROR:
80
+ error_msg = [log.print_invalid_nz_dump_data(compare_error.message, op_name=fusion_op.op_name)]
81
+ else:
82
+ error_msg = [compare_error.message]
83
+ return error_msg
84
+
85
+ def sort_l1_fusion_dump_file(self: any) -> list:
86
+ """
87
+ Sort l1 fusion dump file by timestamp
88
+ :return: the sorted dump file by timestamp
89
+ """
90
+ timestamp_list = []
91
+ for fusion_op in self.fusion_op_list:
92
+ try:
93
+ file_path_list, data_mode = self.compare_data.left_dump_info.get_op_dump_file(
94
+ fusion_op.op_name, print_log=False)
95
+ except CompareError:
96
+ continue
97
+ finally:
98
+ pass
99
+ file_path = file_path_list[-1]
100
+ if data_mode == ConstManager.NORMAL_MODE:
101
+ timestamp = dump_utils.get_normal_timestamp(file_path)
102
+ else:
103
+ timestamp = dump_utils.get_ffts_timestamp(file_path)
104
+ original_names = utils.get_string_from_list(
105
+ fusion_op.attr.original_op_names)
106
+ timestamp_list.append([timestamp, fusion_op, original_names])
107
+ # sort by timestamp
108
+ sort_timestamp_list = sorted(timestamp_list, key=lambda s: s[self.TIMESTAMP_INDEX])
109
+ return sort_timestamp_list
110
+
111
+ def get_right_dump_data(self: any, fusion_op: FusionOp, index: int, is_input: bool = False,
112
+ parse: bool = True, tensor_id: str = None) -> Tensor:
113
+ """
114
+ Get the right dump file path and data by left dump data
115
+ :param fusion_op: the fusion op
116
+ :param index: the index
117
+ :param is_input: the left data is input or not
118
+ :param parse: need parse dump data or not
119
+ :param tensor_id: tensor index
120
+ :return tensor and dump data
121
+ """
122
+ compare_fusion_op = fusion_op
123
+ compare_index = index
124
+ if is_input:
125
+ compare_fusion_op, compare_index = self._find_pre_op(fusion_op, index)
126
+ while compare_fusion_op.op_type in ConstManager.SPECIAL_OPS_TYPE:
127
+ # Assume that the input and output indexes of the special op are in one-to-one correspondence.
128
+ compare_fusion_op, compare_index = self._find_pre_op(compare_fusion_op, compare_index)
129
+
130
+ origin_tensor = compare_fusion_op.get_origin_tensor(compare_index)
131
+ if is_input and tensor_id:
132
+ self.op_name_origin_output_index_map[tensor_id] = (compare_fusion_op.op_name, compare_index)
133
+ left_data_type = ConstManager.INPUT if is_input else ConstManager.OUTPUT
134
+ log.print_info_log('[%s] Left(%s:%s:%d) <======> Right(%s:%s:%d)'
135
+ % (fusion_op.op_name, fusion_op.op_name, left_data_type, index, origin_tensor.name,
136
+ ConstManager.OUTPUT, origin_tensor.index))
137
+ if not parse:
138
+ index = None if self.compare_data.right_dump_info.type == DumpType.Offline else origin_tensor.index
139
+ dump_file_list, _ = self.compare_data.right_dump_info.get_op_dump_file(origin_tensor.name, index)
140
+ dump_file_path = dump_file_list[-1]
141
+ origin_tensor.set_path(dump_file_path)
142
+ return origin_tensor
143
+ dump_file_path, dump_data = self.compare_data.get_right_dump_data(
144
+ origin_tensor.name, origin_tensor.index)
145
+ origin_tensor.set_path(dump_file_path)
146
+ if self.compare_data.right_dump_info.type == DumpType.Offline:
147
+ if origin_tensor.index >= len(dump_data.output_data):
148
+ log.print_out_of_range_error(fusion_op.op_name, "output", origin_tensor.index,
149
+ '[0, %d)' % len(dump_data.output_data))
150
+ raise CompareError(CompareError.MSACCUCMP_INDEX_OUT_OF_BOUNDS_ERROR)
151
+
152
+ origin_tensor.set_data(dump_data.output_data[origin_tensor.index])
153
+ origin_tensor.tensor_format = \
154
+ common.get_format_string(dump_data.output_data[origin_tensor.index].tensor_format)
155
+ origin_tensor.shape = dump_data.output_data[origin_tensor.index].shape
156
+
157
+ else:
158
+ origin_tensor.set_data(dump_data.output_data[0])
159
+ return origin_tensor
160
+
161
+ def compare(self: any) -> (int, bool, list):
162
+ """
163
+ Compare for one the fusion op
164
+ :return error_code:VectorComparisonErrorCode
165
+ :return dump_match: True, at least one operator match;False, no operator match
166
+ :return result: the compare result by the fusion op
167
+ """
168
+ ret = CompareError.MSACCUCMP_NONE_ERROR
169
+ dump_match = False
170
+ result = None
171
+
172
+ try:
173
+ if self.compare_rule.quant_fusion_rule_file_path == '' \
174
+ and self.compare_rule.fusion_json_file_path == '':
175
+ npu_vs_npu_comparison = NpuVsNpuComparison(self.compare_data, self.fusion_op_list,
176
+ self.algorithm_manager, self.overflow_detection)
177
+ return npu_vs_npu_comparison.compare()
178
+ except (OSError, SystemError, ValueError, TypeError, RuntimeError, MemoryError,
179
+ AttributeError) as error:
180
+ log.print_error_log('Failed to compare %s. %s' % (self.fusion_op_list[0].op_name, error))
181
+ return CompareError.MSACCUCMP_UNKNOWN_ERROR, False, []
182
+
183
+ # 1. get the fusion op relation
184
+ relation = fusion_rule_parser.get_relation_for_fusion(self.fusion_op_list)
185
+ # 2. get the map for {original_op_names, op_list}
186
+ right_to_left_map = fusion_rule_parser.make_right_to_left_multi_map(self.fusion_op_list)
187
+ # 3. compare by relation
188
+ if relation in (utils_type.FusionRelation.OneToOne, utils_type.FusionRelation.MultiToOne):
189
+ dump_match, result, ret = self._compare_for_any_to_one()
190
+ elif relation in (utils_type.FusionRelation.OneToMulti, utils_type.FusionRelation.MultiToMulti):
191
+ dump_match, result, ret = self._compare_for_any_to_multi(right_to_left_map)
192
+ elif relation == utils_type.FusionRelation.L1Fusion:
193
+ dump_match, result, ret = self._compare_for_l1_fusion(right_to_left_map)
194
+ return ret, dump_match, result
195
+
196
+ def make_gpu_and_npu_mapping_table(self: any) -> list:
197
+ """
198
+ Generate table content by op name
199
+ :return table content
200
+ """
201
+ table_content = []
202
+ for fusion_op in self.fusion_op_list:
203
+ ok, my_output_dump_path = self._get_my_output_dump_path(fusion_op, table_content)
204
+ if not ok:
205
+ continue
206
+ ok, my_output_dump_data = self._parse_dump_file(fusion_op, my_output_dump_path, table_content)
207
+ if not ok:
208
+ continue
209
+ self._make_mapping_by_input(fusion_op, my_output_dump_data.input_data, my_output_dump_path, table_content)
210
+ self._make_mapping_by_output(fusion_op, my_output_dump_data.output_data, my_output_dump_path, table_content)
211
+ return table_content
212
+
213
+ def _compare_by_operator(self: any, fusion_op: FusionOp) -> list:
214
+ """
215
+ Compare for one operator
216
+ """
217
+ log.print_start_to_compare_op(fusion_op.op_name)
218
+ try:
219
+ self.left_dump_file_path, self.left_dump_data = \
220
+ self.compare_data.get_left_dump_data(fusion_op.op_name)
221
+ except CompareError as error:
222
+ error.message = log.print_no_left_dump_file_error(fusion_op.op_name, fusion_op.op_type)
223
+ raise error
224
+ finally:
225
+ pass
226
+ compare_vector_result = []
227
+ if not self._check_dequant_op(fusion_op):
228
+ _, result = self._compare_by_tensor(fusion_op, True)
229
+ compare_vector_result += result
230
+ if fusion_op.op_type != 'AscendQuant':
231
+ _, result = self._compare_by_tensor(fusion_op, False)
232
+ compare_vector_result += result
233
+ return compare_vector_result
234
+
235
+ def _compare_for_any_to_one(self: any) -> (bool, list, int):
236
+ """
237
+ Compare for any to one relation fusion op
238
+ """
239
+ dump_match = False
240
+ cmp_result_list = []
241
+ # compare each fusion op
242
+ fusion_op_result = compare_result.FusionOpComResult(self.algorithm_manager,
243
+ overflow_detection=self.overflow_detection,
244
+ dump_is_cpu_or_gpu_data=[self.is_ground_truth_gpu_or_cpu,
245
+ self.is_my_dump_gpu_or_cpu])
246
+ ret = CompareError.MSACCUCMP_NONE_ERROR
247
+
248
+ for fusion_op in self.fusion_op_list:
249
+ single_op_cmp_result = compare_result.SingleOpCmpResult()
250
+ # skip not support compare op
251
+ if fusion_op.attr.quant_filter:
252
+ log.print_skip_quant_info(fusion_op.op_name)
253
+ continue
254
+ result = None
255
+ # 1. compare op
256
+ error_msg = []
257
+ try:
258
+ result = self._compare_by_operator(fusion_op)
259
+ except CompareError as compare_error:
260
+ ret = compare_error.code
261
+ error_msg.append(compare_error.message)
262
+ if result:
263
+ dump_match = True
264
+ # 2. make compare result to string
265
+ _result = fusion_op_result.get_result(fusion_op, result, error_msg)
266
+
267
+ result_info = utils.ResultInfo(
268
+ fusion_op.op_name, dump_match, _result.result_list, ret,
269
+ fusion_op.input_list, _result.input_result_list, _result.output_result_list,
270
+ _result.is_ffts, self.op_name_origin_output_index_map, False)
271
+
272
+ single_op_cmp_result.update_attr(result_info)
273
+ cmp_result_list.append(single_op_cmp_result)
274
+ return dump_match, cmp_result_list, ret
275
+
276
+ def _compare_for_any_to_multi(self: any, right_to_left_map: dict) -> (bool, list, int):
277
+ """
278
+ Compare for any to multi relation fusion op
279
+ """
280
+ dump_match = False
281
+ has_result_for_any_to_multi = False
282
+ error_msg = []
283
+ cmp_result_list = []
284
+ ret = CompareError.MSACCUCMP_NONE_ERROR
285
+ fusion_op_result = compare_result.FusionOpComResult(self.algorithm_manager, right_to_left_map,
286
+ self.overflow_detection,
287
+ dump_is_cpu_or_gpu_data=[self.is_ground_truth_gpu_or_cpu,
288
+ self.is_my_dump_gpu_or_cpu])
289
+ # compare each fusion op
290
+ for fusion_op in self.fusion_op_list:
291
+ single_op_cmp_result = compare_result.SingleOpCmpResult()
292
+ if fusion_op.attr.quant_filter:
293
+ log.print_skip_quant_info(fusion_op.op_name)
294
+ continue
295
+ result = None
296
+ if fusion_op.is_inner_node():
297
+ warn_message = '[%s] The op is inner node for multi to multi relation.Skip the op.' \
298
+ % fusion_op.op_name
299
+ log.print_warn_log(warn_message)
300
+ error_msg.append(warn_message)
301
+ continue
302
+ # 1. compare op
303
+ try:
304
+ result = self._compare_by_operator(fusion_op)
305
+ except CompareError as compare_error:
306
+ ret = compare_error.code
307
+ error_msg.append(compare_error.message)
308
+ if ret == CompareError.MSACCUCMP_NO_DUMP_FILE_ERROR:
309
+ continue
310
+ finally:
311
+ pass
312
+ has_result_for_any_to_multi = True
313
+ dump_match = True
314
+ error_msg.clear()
315
+ # 2. write compare result to file
316
+ _result = fusion_op_result.get_result(fusion_op, result, error_msg)
317
+
318
+ result_info = utils.ResultInfo(
319
+ fusion_op.op_name, dump_match, _result.result_list, ret,
320
+ fusion_op.input_list, _result.input_result_list, _result.output_result_list,
321
+ _result.is_ffts, self.op_name_origin_output_index_map, False)
322
+
323
+ single_op_cmp_result.update_attr(result_info)
324
+ cmp_result_list.append(single_op_cmp_result)
325
+ # no result for any to multi, write empty result to file
326
+ if not has_result_for_any_to_multi:
327
+ single_op_cmp_result = compare_result.SingleOpCmpResult()
328
+ _result = fusion_op_result.get_result(self.fusion_op_list[0], None, error_msg)
329
+ result_info = utils.ResultInfo(
330
+ self.fusion_op_list[0].op_name, dump_match, _result.result_list, ret,
331
+ self.fusion_op_list[0].input_list, _result.input_result_list, _result.output_result_list,
332
+ _result.is_ffts, self.op_name_origin_output_index_map, False)
333
+ single_op_cmp_result.update_attr(result_info)
334
+ cmp_result_list.append(single_op_cmp_result)
335
+ return dump_match, cmp_result_list, ret
336
+
337
+ def _compare_for_l1_fusion_not_timestamp(self, fusion_op_result):
338
+ error_msg = []
339
+
340
+ single_op_cmp_result = compare_result.SingleOpCmpResult()
341
+ error_msg.append("The fusion operator list is empty")
342
+ _result = fusion_op_result.get_result(self.fusion_op_list[0], None, error_msg)
343
+ result_info = utils.ResultInfo(self.fusion_op_list[0].op_name, False, _result.result_list,
344
+ CompareError.MSACCUCMP_NO_DUMP_FILE_ERROR, self.fusion_op_list[0].input_list,
345
+ _result.input_result_list, _result.output_result_list, _result.is_ffts,
346
+ self.op_name_origin_output_index_map, False)
347
+ single_op_cmp_result.update_attr(result_info)
348
+ return False, [single_op_cmp_result], CompareError.MSACCUCMP_NO_DUMP_FILE_ERROR
349
+
350
+ def _compare_for_l1_fusion(self: any, right_to_left_map: dict) -> (bool, list, int):
351
+ timestamp_list = self.sort_l1_fusion_dump_file()
352
+ error_msg = []
353
+ fusion_op_result = compare_result.FusionOpComResult(self.algorithm_manager, right_to_left_map,
354
+ self.overflow_detection,
355
+ dump_is_cpu_or_gpu_data=[self.is_ground_truth_gpu_or_cpu,
356
+ self.is_my_dump_gpu_or_cpu])
357
+
358
+ if not timestamp_list:
359
+ return self._compare_for_l1_fusion_not_timestamp(fusion_op_result)
360
+
361
+ # if the dump data is only input,
362
+ # the dump file of min and max timestamp for input is the same
363
+ # if the dump data is only output,
364
+ # the dump file of max timestamp for output is complete
365
+ # if the dump data contains input and output,
366
+ # the dump file of max timestamp for output is complete
367
+ # the dump file of min timestamp for input is complete
368
+ l1_fusion_list = []
369
+ if timestamp_list[-1][self.ORIGINAL_NAMES_INDEX] != timestamp_list[0][self.ORIGINAL_NAMES_INDEX]:
370
+ l1_fusion_list.append(timestamp_list[0][ConstManager.FUSION_OP_INDEX])
371
+ l1_fusion_list.append(timestamp_list[-1][ConstManager.FUSION_OP_INDEX])
372
+ dump_match = False
373
+ has_result_for_any_to_multi = False
374
+ ret = CompareError.MSACCUCMP_NONE_ERROR
375
+ cmp_result_list = []
376
+
377
+ # compare each fusion op
378
+ for fusion_op in l1_fusion_list:
379
+ single_op_cmp_result = compare_result.SingleOpCmpResult()
380
+ if fusion_op.attr.quant_filter:
381
+ log.print_skip_quant_info(fusion_op.op_name)
382
+ continue
383
+
384
+ result = None
385
+ # 1. compare op
386
+ try:
387
+ result = self._compare_by_operator(fusion_op)
388
+ except CompareError as compare_error:
389
+ ret = compare_error.code
390
+ error_msg.append(compare_error.message)
391
+ if ret == CompareError.MSACCUCMP_NO_DUMP_FILE_ERROR:
392
+ continue
393
+ error_msg.clear()
394
+ has_result_for_any_to_multi = True
395
+ dump_match = True
396
+ # 2. write compare result to file
397
+ _result = fusion_op_result.get_result(fusion_op, result, error_msg)
398
+
399
+ result_info = utils.ResultInfo(fusion_op.op_name, dump_match, _result.result_list, ret,
400
+ fusion_op.input_list, _result.input_result_list, _result.output_result_list,
401
+ _result.is_ffts, self.op_name_origin_output_index_map, False)
402
+
403
+ single_op_cmp_result.update_attr(result_info)
404
+ cmp_result_list.append(single_op_cmp_result)
405
+
406
+ # no result for any to multi, write empty result to file
407
+ if not has_result_for_any_to_multi:
408
+ single_op_cmp_result = compare_result.SingleOpCmpResult()
409
+ _result = fusion_op_result.get_result(self.fusion_op_list[0], None, error_msg)
410
+
411
+ result_info = utils.ResultInfo(
412
+ self.fusion_op_list[0].op_name, dump_match, _result.result_list, ret,
413
+ self.fusion_op_list[0].input_list, _result.input_result_list, _result.output_result_list,
414
+ _result.is_ffts, self.op_name_origin_output_index_map, False)
415
+
416
+ single_op_cmp_result.update_attr(result_info)
417
+ cmp_result_list.append(single_op_cmp_result)
418
+
419
+ return dump_match, cmp_result_list, ret
420
+
421
+ def _find_pre_op(self: any, fusion_op: FusionOp, index: int = 0) -> any:
422
+ input_tensor = fusion_op.get_input_tensor(index)
423
+ _, compare_fusion_op = \
424
+ self.compare_rule.fusion_info.get_fusion_op_list(input_tensor.name)
425
+ compare_index = input_tensor.index
426
+ return compare_fusion_op, compare_index
427
+
428
+ def _compare_by_one_tensor(self: any, fusion_op: FusionOp, index: int,
429
+ is_input: bool, tensor: any, tensor_id: str) -> (list, list, list):
430
+ # 1. get ground truth dump data by original op name and index
431
+ ground_truth_tensor = self.get_right_dump_data(fusion_op, index, is_input, tensor_id=tensor_id)
432
+ if tensor.original_shape:
433
+ ground_truth_tensor.shape = tensor.original_shape
434
+ # 2. deserialize output data to array
435
+ tensor_conversion = TensorConversion(fusion_op, self.format_manager, is_detail=False)
436
+ my_output_array, ground_truth_array, my_output_shape = \
437
+ tensor_conversion.get_my_output_and_ground_truth_data(self.compare_data, tensor, ground_truth_tensor)
438
+ my_output_dtype = my_output_array.dtype
439
+ ground_truth_dtype = ground_truth_array.dtype
440
+
441
+ # 3. compare by support algorithm
442
+ result, compare_fail_message = self.algorithm_manager.compare(
443
+ my_output_array, ground_truth_array,
444
+ {'my_output_dump_file': self.left_dump_file_path,
445
+ 'ground_truth_dump_file': ground_truth_tensor.path,
446
+ 'shape_type': utils.get_shape_type(my_output_shape)},
447
+ self.max_cmp_size)
448
+
449
+ return result, compare_fail_message, [my_output_shape, my_output_dtype, ground_truth_dtype]
450
+
451
+ def _compare_by_tensor(self: any, fusion_op: FusionOp, is_input: bool) -> (bool, list):
452
+ tensor_list = self.left_dump_data.input_data if is_input else self.left_dump_data.output_data
453
+ match = False
454
+ tensor_result_list = []
455
+ # compare each tensor
456
+ for (index, tensor) in enumerate(tensor_list):
457
+ result = self._compare(fusion_op, index, is_input, tensor)
458
+ # Check whether the current input/output data overflows
459
+ overflow_result = ''
460
+ if self.overflow_detection:
461
+ overflow_result = OverflowDetection.process_model_overflow_detection(fusion_op.op_name, index, is_input,
462
+ tensor)
463
+ match = match or result.match
464
+ # 4. merge result
465
+ tensor_info = {
466
+ "tensor_id": result.tensor_id,
467
+ "shape": result.shape,
468
+ "op_type": fusion_op.op_type,
469
+ "my_output_dtype": result.my_output_dtype,
470
+ "ground_truth_dtype": result.ground_truth_dtype,
471
+ "my_output_address": result.my_output_address,
472
+ "ground_truth_address": result.ground_truth_address
473
+ }
474
+ tensor_result = compare_result.TensorResult(tensor_info, [result.algorithm_result, overflow_result],
475
+ result.error_msg, tensor.is_ffts)
476
+ tensor_result_list.append(tensor_result)
477
+ return match, tensor_result_list
478
+
479
+ def _compare(self: any, fusion_op: FusionOp, index: int, is_input: bool, tensor: any) -> tuple:
480
+ tensor_type = ConstManager.INPUT if is_input else ConstManager.OUTPUT
481
+ tensor_id = "%s:%s:%d" % (fusion_op.op_name, tensor_type, index)
482
+ match = True
483
+ my_output_dtype = "NaN"
484
+ ground_truth_dtype = "NaN"
485
+ try:
486
+ algorithm_result, error_msg, [shape, my_output_dtype, ground_truth_dtype] = self._compare_by_one_tensor(
487
+ fusion_op, index, is_input, tensor, tensor_id)
488
+ except CompareError as compare_error:
489
+ error_msg = self._handle_error_msg(compare_error, fusion_op, tensor_id)
490
+ algorithm_result = self.algorithm_manager.make_nan_result()
491
+ shape = tensor.shape
492
+ match = False
493
+
494
+ CompareResult = collections.namedtuple(
495
+ 'Result',
496
+ ['tensor_id', 'shape', 'algorithm_result', 'error_msg', 'match', 'my_output_dtype', 'ground_truth_dtype',
497
+ 'my_output_address', 'ground_truth_address'])
498
+ result = CompareResult(tensor_id, shape, algorithm_result, error_msg, match, my_output_dtype,
499
+ ground_truth_dtype,
500
+ my_output_address=utils.get_address_from_tensor(tensor),
501
+ ground_truth_address=ConstManager.NAN)
502
+ return result
503
+
504
+ def _get_my_output_dump_path(self: any, fusion_op: FusionOp, table_content: list) -> (bool, str):
505
+ output_index = None
506
+ left_dump_info = self.compare_data.left_dump_info
507
+ if left_dump_info.type == DumpType.Quant:
508
+ output_index = 0
509
+ try:
510
+ return True, self.compare_data.left_dump_info.get_op_dump_file(fusion_op.op_name, output_index)[0][-1]
511
+ except IndexError as e:
512
+ log.print_error_log("index out of bounds error when get op dump file, please check.")
513
+ raise CompareError(CompareError.MSACCUCMP_INDEX_OUT_OF_BOUNDS_ERROR) from e
514
+ except (OSError, SystemError, ValueError, TypeError, RuntimeError, MemoryError,
515
+ AttributeError, CompareError):
516
+ message = '[{0}] There is no left dump file for the op "{0}".'.format(fusion_op.op_name)
517
+ log.print_warn_log(message)
518
+ table_content.append(self._make_mapping_table_content(
519
+ ConstManager.NAN, ConstManager.NAN, ConstManager.NAN, fusion_op))
520
+ return False, ''
521
+
522
+ def _get_ground_truth_dump_path(self: any, fusion_op: FusionOp, index: int, is_input: bool) -> (bool, str):
523
+ ground_truth_tensor = None
524
+ try:
525
+ ground_truth_tensor = self.get_right_dump_data(fusion_op, index, is_input, parse=False)
526
+ except (OSError, SystemError, ValueError, TypeError, RuntimeError, MemoryError,
527
+ AttributeError, CompareError):
528
+ message = '[{0}] There is no right dump file for the op "{0}".'.format(fusion_op.op_name)
529
+ log.print_warn_log(message)
530
+
531
+ if ground_truth_tensor:
532
+ return ground_truth_tensor.path
533
+ else:
534
+ return ConstManager.NAN
535
+
536
+ def _parse_dump_file(self: any, fusion_op: FusionOp, my_output_dump_path: str,
537
+ table_content: list) -> (bool, DumpDataObj):
538
+ try:
539
+ return True, dump_utils.parse_dump_file(my_output_dump_path, self.compare_data.dump_version)
540
+ except (OSError, SystemError, ValueError, TypeError, RuntimeError, MemoryError,
541
+ AttributeError, CompareError):
542
+ log.print_error_log("{} file parse error".format(my_output_dump_path))
543
+ table_content.append(self._make_mapping_table_content(
544
+ ConstManager.NAN, my_output_dump_path, ConstManager.NAN, fusion_op))
545
+ finally:
546
+ pass
547
+ return False, DumpDataObj()
548
+
549
+ def _make_mapping_table_content(self: any, tensor_id: str, my_output_dump_path: str, ground_truth_dump_path: str,
550
+ fusion_op: FusionOp) -> list:
551
+ relation = fusion_rule_parser.get_relation_for_fusion(self.fusion_op_list)
552
+ ground_truth_to_my_output_map = fusion_rule_parser.make_right_to_left_multi_map(self.fusion_op_list)
553
+ if relation in (utils_type.FusionRelation.OneToOne, utils_type.FusionRelation.MultiToOne):
554
+ ground_truth_op_str = utils.get_string_from_list(fusion_op.attr.original_op_names)
555
+ if ground_truth_op_str == "":
556
+ ground_truth_op_str = "*"
557
+ my_output_op_str = fusion_op.op_name
558
+ else:
559
+ my_output_op_str, ground_truth_op_str = fusion_rule_parser.make_left_and_right_string(
560
+ ground_truth_to_my_output_map)
561
+ if fusion_op.op_type in [ConstManager.LEFT_TYPE, ConstManager.RIGHT_TYPE]:
562
+ op_type = dump_utils.get_op_type_from_file_name(my_output_dump_path)
563
+ else:
564
+ op_type = fusion_op.op_type
565
+ row_content = [
566
+ str(fusion_op.op_id), op_type, my_output_op_str, ground_truth_op_str,
567
+ tensor_id, my_output_dump_path, ground_truth_dump_path
568
+ ]
569
+ RangeManager.adjust_data(row_content, fusion_op.attr.get_op_sequence())
570
+ return row_content
571
+
572
+ def _make_mapping_by_input(self: any, fusion_op: FusionOp, input_tensor: any,
573
+ my_output_dump_path: str, table_content: list) -> None:
574
+ if not self._check_dequant_op(fusion_op):
575
+ for index, _ in enumerate(input_tensor):
576
+ tensor_id = "%s:%s:%d" % (fusion_op.op_name, ConstManager.INPUT, index)
577
+ ground_truth_dump_path = self._get_ground_truth_dump_path(fusion_op, index, is_input=True)
578
+ table_content.append(self._make_mapping_table_content(
579
+ tensor_id, my_output_dump_path, ground_truth_dump_path, fusion_op))
580
+
581
+ def _make_mapping_by_output(self: any, fusion_op: FusionOp, output_tensor: any,
582
+ my_output_dump_path: str, table_content: list) -> None:
583
+ if fusion_op.op_type != 'AscendQuant':
584
+ for index, _ in enumerate(output_tensor):
585
+ tensor_id = "%s:%s:%d" % (fusion_op.op_name, ConstManager.OUTPUT, index)
586
+ ground_truth_dump_path = self._get_ground_truth_dump_path(fusion_op, index, is_input=False)
587
+ table_content.append(self._make_mapping_table_content(
588
+ tensor_id, my_output_dump_path, ground_truth_dump_path, fusion_op))