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,535 @@
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 vector comparison class definition.
21
+ """
22
+ import copy
23
+ import os
24
+ import sys
25
+ import multiprocessing
26
+ import argparse
27
+ import csv
28
+ import time
29
+ import psutil
30
+
31
+ from msprobe.msaccucmp.dump_parse import dump, mapping
32
+ from msprobe.msaccucmp.vector_cmp.compare_detail import detail
33
+ from msprobe.msaccucmp.algorithm_manager.algorithm_manager import AlgorithmManager
34
+ from msprobe.msaccucmp.vector_cmp.fusion_manager import compare_result
35
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.compare_rule import CompareRule
36
+ from msprobe.msaccucmp.format_manager.format_manager import FormatManager
37
+ from msprobe.msaccucmp.vector_cmp.fusion_manager.compare_fusion_op import FusionOpComparison
38
+ from msprobe.msaccucmp.vector_cmp.compare_detail.compare_detail import DetailComparison
39
+ from msprobe.msaccucmp.vector_cmp.compare_detail.compare_detail import DumpDetailComparison
40
+ from msprobe.msaccucmp.dump_parse.dump import DumpType
41
+ from msprobe.msaccucmp.cmp_utils import log, utils, utils_type, path_check
42
+ from msprobe.msaccucmp.cmp_utils.utils import safe_path_string
43
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
44
+ from msprobe.msaccucmp.vector_cmp.range_manager.range_manager import RangeManager
45
+ from msprobe.msaccucmp.vector_cmp.range_manager.range_mode import RangeMode
46
+ from msprobe.msaccucmp.vector_cmp.range_manager.select_mode import SelectMode
47
+ from msprobe.msaccucmp.overflow.overflow_detection import OverflowDetection
48
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
49
+ from msprobe.msaccucmp.cmp_utils.utils import sanitize_csv_value
50
+
51
+
52
+ class VectorComparison:
53
+ """
54
+ The class for vector compare
55
+ """
56
+
57
+ MULTI_THREAD_RESULT_COUNT = 3
58
+ MULTI_THREAD_RETURN_CODE_INDEX = 0
59
+ MULTI_THREAD_DUMP_MATCH_INDEX = 1
60
+ MULTI_THREAD_COMPARE_RESULT_INDEX = 2
61
+ MULTI_THREAD_MAX_NUM = 16
62
+
63
+ def __init__(self: any, arguments: any = None) -> None:
64
+ self.compare_rule = None
65
+ self.compare_data = None
66
+ self.detail_info = None
67
+ self.format_manager = None
68
+ self.args = {}
69
+ if arguments:
70
+ self._init_by_input_arguments(arguments)
71
+ else:
72
+ self._init_by_input_parse()
73
+
74
+ @staticmethod
75
+ def _parser_cmd(parse: any) -> None:
76
+ parse.add_argument("-l", dest="left_dump_path", type=safe_path_string,
77
+ help="<Required> the left dump path, the data compared with golden data", required=True)
78
+ parse.add_argument("-r", dest="right_dump_path", type=safe_path_string,
79
+ help="<Required> the right dump path, the golden data", required=True)
80
+ parse.add_argument("-o", dest="output_path", help="<Required> output file path", type=safe_path_string,
81
+ required=True)
82
+ parse.add_argument("-f", dest="fusion_json_file_path", default="", type=safe_path_string,
83
+ help="<Optional> fusion json file path")
84
+ parse.add_argument("-q", dest="quant_fusion_rule_file_path", type=safe_path_string,
85
+ default="", help="<Optional> quant fusion rule file path")
86
+ parse.add_argument("-d", dest="op_name", default="", help="<Optional> detail operator name", required=False)
87
+ parse.add_argument("-t", dest="detail_type", default="output", required=False,
88
+ help="<Optional> detail type for operator, input or output, the default is output")
89
+ parse.add_argument("-i", dest="detail_index", default="0",
90
+ help="<Optional> detail index for input or output, the default is 0", required=False)
91
+ parse.add_argument("-csv", dest="csv", action="store_true",
92
+ default=False, help="<Optional> save file as csv format", required=False)
93
+ parse.add_argument("-custom", dest="custom_path", default="", type=safe_path_string,
94
+ help="<Optional> user-defined path, including format conversion", required=False)
95
+ parse.add_argument("-ffts", dest="ffts", action="store_true",
96
+ help="<optional> Enable the comparison between ffts+ and ffts+. "
97
+ "Direct comparison is performed without data combination. ")
98
+
99
+ @staticmethod
100
+ def _process_single_op_max_line_parameters(max_line: int) -> None:
101
+ if max_line < ConstManager.DETAIL_LINE_COUNT_RANGE_MIN or max_line > ConstManager.DETAIL_LINE_COUNT_RANGE_MAX:
102
+ log.print_out_of_range_error(None, '--max_line argument', max_line, '{} - {}'
103
+ .format(ConstManager.DETAIL_LINE_COUNT_RANGE_MIN,
104
+ ConstManager.DETAIL_LINE_COUNT_RANGE_MAX))
105
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PARAM_ERROR)
106
+
107
+ def set_output_path(self: any, output_path: str) -> None:
108
+ """
109
+ Set output path
110
+ :param output_path: the output path
111
+ """
112
+ if os.path.islink(os.path.abspath(output_path)):
113
+ log.print_error_log('The path "%r" is a softlink, not permitted.' % output_path)
114
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
115
+ self.output_path = os.path.realpath(output_path)
116
+
117
+ def check_arguments_valid(self: any) -> None:
118
+ """
119
+ Check arguments valid, if invalid, throw exception
120
+ """
121
+ self.compare_rule.check_arguments_valid()
122
+ exist = False
123
+ path_type = path_check.PathType.File
124
+ if self.detail_info:
125
+ exist = True
126
+ path_type = path_check.PathType.Directory
127
+ self.detail_info.check_arguments_valid()
128
+
129
+ ret = path_check.check_output_path_valid(self.output_path, exist, path_type)
130
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
131
+ raise CompareError(ret)
132
+
133
+ # delete old result
134
+ if os.path.exists(self.output_path) and not self.detail_info:
135
+ os.remove(self.output_path)
136
+ self.compare_data.check_arguments_valid(self.compare_rule.fusion_json_file_path,
137
+ self.compare_rule.quant_fusion_rule_file_path,
138
+ self.compare_rule.close_fusion_rule_file_path)
139
+ self._filter_left_dump_is_npy_overflow()
140
+ self.format_manager.check_arguments_valid()
141
+
142
+ def compare(self: any) -> int:
143
+ """
144
+ Compare for vector or detail
145
+ """
146
+ # 1. check arguments valid
147
+ self.check_arguments_valid()
148
+ # 2. parse json file
149
+ self.compare_rule.parse_fusion_rule(self.compare_data)
150
+ if ConstManager.RANGE_MANAGER_KEY in self.args:
151
+ self.args.get(ConstManager.RANGE_MANAGER_KEY).check_input_valid(
152
+ self.compare_rule.fusion_info.op_list[-1].attr.get_op_sequence())
153
+ self.args["input_nodes"] = self.compare_rule.fusion_info.input_nodes
154
+ # 3. do compare detail
155
+ if self.detail_info:
156
+ return self._compare_detail()
157
+ # 4. do mapping
158
+ if self.args.get("mapping"):
159
+ return self._make_table()
160
+ # 5. do compare vector
161
+ return self._compare_vector()
162
+
163
+ def _init_by_input_arguments(self, arguments) -> None:
164
+ self.compare_rule = CompareRule(arguments.fusion_rule_file,
165
+ arguments.quant_fusion_rule_file,
166
+ arguments.close_fusion_rule_file)
167
+ self.compare_data = dump.CompareData(
168
+ os.path.realpath(arguments.my_dump_path),
169
+ os.path.realpath(arguments.golden_dump_path),
170
+ arguments.dump_version,
171
+ arguments.ffts,
172
+ arguments.fusion_rule_file)
173
+ if arguments.op_name:
174
+ self._process_single_op_parameters(arguments)
175
+ else:
176
+ self._process_output_path_parameter(arguments)
177
+ self.args["csv"] = True
178
+ self.format_manager = FormatManager(arguments.custom_script_path)
179
+ self.args["algorithm_manager"] = AlgorithmManager(arguments.custom_script_path,
180
+ arguments.algorithm, arguments.algorithm_options)
181
+ self.args["mapping"] = arguments.mapping
182
+ self.args["overflow_detection"] = arguments.overflow_detection
183
+ self.args["advisor"] = arguments.advisor
184
+ self.args["input_nodes"] = []
185
+ if arguments.range:
186
+ self.args["range"] = arguments.range
187
+ self.args[ConstManager.RANGE_MANAGER_KEY] = RangeMode(arguments.range)
188
+ elif arguments.select:
189
+ self.args["select"] = arguments.select
190
+ self.args[ConstManager.RANGE_MANAGER_KEY] = SelectMode(arguments.select)
191
+ self.args["my_dump_path"] = arguments.my_dump_path
192
+ self.args["golden_dump_path"] = arguments.golden_dump_path
193
+ self.args["max_cmp_size"] = arguments.max_cmp_size
194
+
195
+ def _init_by_input_parse(self) -> None:
196
+ parse = argparse.ArgumentParser()
197
+ self._parser_cmd(parse)
198
+ args, _ = parse.parse_known_args(sys.argv[1:])
199
+
200
+ self.compare_rule = CompareRule(args.fusion_json_file_path,
201
+ args.quant_fusion_rule_file_path)
202
+
203
+ self.compare_data = dump.CompareData(os.path.realpath(args.left_dump_path),
204
+ os.path.realpath(args.right_dump_path), ConstManager.OLD_DUMP_TYPE,
205
+ args.ffts,
206
+ args.fusion_json_file_path
207
+ )
208
+ if os.path.islink(os.path.abspath(args.output_path)):
209
+ log.print_error_log('The path "%r" is a softlink, not permitted.' % args.output_path)
210
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
211
+ self.output_path = os.path.realpath(args.output_path)
212
+ if args.op_name:
213
+ tensor_id = detail.TensorId(args.op_name, args.detail_type, args.detail_index)
214
+ self.detail_info = detail.DetailInfo(tensor_id, ConstManager.DEFAULT_TOP_N, ignore_result=False,
215
+ max_line=ConstManager.MAX_DETAIL_INFO_LINE_COUNT)
216
+ self.args["csv"] = args.csv
217
+ self.format_manager = FormatManager(args.custom_path)
218
+ self.args["algorithm_manager"] = AlgorithmManager('', 'all', '')
219
+ self.args["mapping"] = False
220
+ self.args["my_dump_path"] = args.left_dump_path
221
+ self.args["golden_dump_path"] = args.right_dump_path
222
+
223
+ def _check_both_dump_data(self: any) -> bool:
224
+ both_dump_data = False
225
+ if DumpType.Offline == self.compare_data.left_dump_info.type \
226
+ and DumpType.Offline == self.compare_data.right_dump_info.type:
227
+ both_dump_data = True
228
+ if self.args.get("overflow_detection"):
229
+ log.print_warn_log('Both compare data are NPU dump data, not support overflow detection.')
230
+ return both_dump_data
231
+
232
+ def _process_output_path_parameter(self: any, arguments: any) -> None:
233
+ if arguments.mapping:
234
+ file_name = 'mapping_%s.csv' % time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
235
+ else:
236
+ file_name = 'result_%s.csv' % time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
237
+ if os.path.islink(os.path.abspath(arguments.output_path)):
238
+ log.print_error_log('The path "%r" is a softlink, not permitted.' % arguments.output_path)
239
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
240
+ self.output_path = os.path.join(os.path.realpath(arguments.output_path), file_name)
241
+
242
+ def _process_single_op_parameters(self: any, arguments: any) -> None:
243
+ tensor_type = ConstManager.OUTPUT
244
+ tensor_index = '0'
245
+ max_line = ConstManager.MAX_DETAIL_INFO_LINE_COUNT
246
+ if arguments.max_line is not None:
247
+ self._process_single_op_max_line_parameters(arguments.max_line)
248
+ max_line = arguments.max_line
249
+ if arguments.input:
250
+ tensor_type = ConstManager.INPUT
251
+ tensor_index = arguments.input
252
+ if arguments.output:
253
+ tensor_type = ConstManager.OUTPUT
254
+ tensor_index = arguments.output
255
+ if os.path.islink(os.path.abspath(arguments.output_path)):
256
+ log.print_error_log('The path "%r" is a softlink, not permitted.' % arguments.output_path)
257
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
258
+ self.output_path = os.path.realpath(arguments.output_path)
259
+ tensor_id = detail.TensorId(arguments.op_name, tensor_type, tensor_index)
260
+ self.detail_info = detail.DetailInfo(tensor_id, arguments.topn, arguments.ignore_single_op_result, max_line)
261
+
262
+ def _filter_left_dump_is_npy_overflow(self) -> None:
263
+ """
264
+ npy doesn't support overflow detection.
265
+ We need turned the parameter 'overflow_detection' to False.
266
+ Different types of dump files have different naming rules.
267
+ The suffix of an npy file is '.npy'. Therefore, you only need to
268
+ check the suffix of the path corresponding to any operator to
269
+ determine whether the file is a npy file.
270
+ If the parameter 'overflow_detection' is set to True, change it to False.
271
+ """
272
+ if self.args.get('overflow_detection') and self.compare_data.left_dump_info.op_name_to_file_map:
273
+ file_path_list = []
274
+ for _, file_path in self.compare_data.left_dump_info.op_name_to_file_map.items():
275
+ file_path_list = file_path
276
+ if file_path_list:
277
+ break
278
+ if file_path_list:
279
+ file_name = file_path_list[0]
280
+ if file_name.endswith('.npy'):
281
+ self.args['overflow_detection'] = False
282
+
283
+ def _compare_fusion_ops(self: any, fusion_op_names: list, lock: any) -> list:
284
+ all_cmp_res = []
285
+
286
+ _ = lock # Bypassing parameter lock is not used
287
+ for op_name in fusion_op_names:
288
+ res = self._compare_by_fusion_op(op_name)
289
+ all_cmp_res.append(res)
290
+ # save result when 1000 operators are compared
291
+ return all_cmp_res
292
+
293
+ def _get_result_list(self, res):
294
+ result = []
295
+ for single_op_result in res[self.MULTI_THREAD_COMPARE_RESULT_INDEX]:
296
+ for item in single_op_result.result_list:
297
+ result.append(item)
298
+ return result
299
+
300
+ def _write_result_to_writer(self: any, result: list, output_file: any) -> None:
301
+ for res in result:
302
+ if len(res) != self.MULTI_THREAD_RESULT_COUNT:
303
+ continue
304
+ item_list = self._get_result_list(res)
305
+ for item in item_list:
306
+ if not item:
307
+ log.print_error_log("result item is empty, please check.")
308
+ raise CompareError(CompareError.MSACCUCMP_INDEX_OUT_OF_BOUNDS_ERROR)
309
+ if self.args.get("csv"):
310
+ writer = csv.writer(output_file)
311
+ sanitized_item = [sanitize_csv_value(cell) for cell in item]
312
+ writer.writerow(sanitized_item)
313
+ else:
314
+ item.pop()
315
+ each_row_str = " ".join(item)
316
+ output_file.write(f"\n{each_row_str}")
317
+
318
+ def _save_cmp_result(self: any, result: list, lock: any) -> None:
319
+ lock.acquire()
320
+ try:
321
+ with os.fdopen(os.open(self.output_path, ConstManager.WRITE_FLAGS,
322
+ ConstManager.WRITE_MODES), 'a+', newline='') as output_file:
323
+ self._write_result_to_writer(result, output_file)
324
+ except IOError as io_error:
325
+ log.print_open_file_error(self.output_path, io_error)
326
+ finally:
327
+ lock.release()
328
+
329
+ def _compare_by_fusion_op(self: any, fusion_op_name: str) -> (int, bool, list):
330
+ comparison = FusionOpComparison(fusion_op_name, self.compare_rule, self.compare_data, self.format_manager,
331
+ self.args)
332
+ return comparison.compare()
333
+
334
+ def _get_max_process_num(self) -> int:
335
+ if self.MULTI_THREAD_MAX_NUM == 1:
336
+ return 1 # Bypassing test code entering `os.listdir`
337
+
338
+ golden_dump_path = self.args.get("golden_dump_path")
339
+ file_sizes = [1] + [os.path.getsize(os.path.join(golden_dump_path, ii)) for ii in os.listdir(golden_dump_path)]
340
+ max_file_size = max(file_sizes)
341
+
342
+ mem = psutil.virtual_memory()
343
+ available_mem = mem.available
344
+ mem_max_process_num = available_mem // max_file_size // 4
345
+
346
+ cpu_max_process_num = int((multiprocessing.cpu_count() + 1) / 2)
347
+ return min(mem_max_process_num, cpu_max_process_num, self.MULTI_THREAD_MAX_NUM)
348
+
349
+ def _handle_multi_process(self: any, func: any, lock: any = None) -> list:
350
+ # 2. compare operator by multi processes
351
+ # 1 ensure multi processes number, which is half of the CPUs
352
+ process_num = self._get_max_process_num()
353
+ # 2 get all operator names
354
+ if ConstManager.RANGE_MANAGER_KEY in self.args:
355
+ all_op_names = self.args.get(ConstManager.RANGE_MANAGER_KEY).get_all_ops(self.compare_rule)
356
+ else:
357
+ all_op_names = self.compare_rule.fusion_info.fusion_op_name_to_op_map.keys()
358
+ # 3 allocate all operator names evenly by multi processes number
359
+ op_names = []
360
+ for _ in range(process_num):
361
+ op_names.append([])
362
+ for i, op_name in enumerate(all_op_names):
363
+ op_names[i % process_num].append(op_name)
364
+ # 4 start multi processes, then waiting subprocess end of running
365
+ all_task = []
366
+ pool = multiprocessing.Pool(process_num)
367
+ for fusion_op_names in op_names:
368
+ if lock:
369
+ task = pool.apply_async(func, args=(fusion_op_names, lock))
370
+ else:
371
+ task = pool.apply_async(func, args=(fusion_op_names,))
372
+ all_task.append(task)
373
+ pool.close()
374
+ pool.join()
375
+ return all_task
376
+
377
+ def _compare_by_multi_process(self: any) -> (int, bool):
378
+ # 1. write header to file
379
+ if not self._write_header_to_file():
380
+ return CompareError.MSACCUCMP_OPEN_FILE_ERROR, False
381
+ # 2. compare operator by multi-processing
382
+ all_task = self._handle_multi_process(self._compare_fusion_ops, multiprocessing.Manager().RLock())
383
+
384
+ # 3. check subprocess return value
385
+ ret = CompareError.MSACCUCMP_NONE_ERROR
386
+ dump_match = False
387
+ all_result = []
388
+ result_mapping = {}
389
+ cmp_res = []
390
+
391
+ for task in all_task:
392
+ all_result.extend(task.get())
393
+ for res in all_result:
394
+ if len(res) != self.MULTI_THREAD_RESULT_COUNT:
395
+ continue
396
+ if not ret:
397
+ ret = res[self.MULTI_THREAD_RETURN_CODE_INDEX]
398
+ if not dump_match:
399
+ dump_match = res[self.MULTI_THREAD_DUMP_MATCH_INDEX]
400
+ for single_op_cmp_res in res[self.MULTI_THREAD_COMPARE_RESULT_INDEX]:
401
+ if single_op_cmp_res.is_ffts and not single_op_cmp_res.npu_vs_npu:
402
+ result_mapping[single_op_cmp_res.op_name] = single_op_cmp_res
403
+
404
+ for i, res in enumerate(all_result):
405
+ for single_op_cmp_res in res[self.MULTI_THREAD_COMPARE_RESULT_INDEX]:
406
+ if single_op_cmp_res.is_ffts and single_op_cmp_res.op_name_origin_output_index_map:
407
+ single_op_cmp_res.find_pre_op(result_mapping)
408
+
409
+ cmp_res.append(res)
410
+ if (i + 1) % 1000 == 0:
411
+ self._save_cmp_result(cmp_res, multiprocessing.Manager().RLock())
412
+ cmp_res.clear()
413
+ self._save_cmp_result(cmp_res, multiprocessing.Manager().RLock())
414
+ return ret, dump_match
415
+
416
+ def _compare_vector(self: any) -> int:
417
+ ret, dump_match = self._compare_by_multi_process()
418
+ utils.sort_result_file_by_index(self.output_path, self.args.get("csv"))
419
+ if not dump_match:
420
+ ret = CompareError.MSACCUCMP_NO_DUMP_FILE_ERROR
421
+ if self.args.get("range"):
422
+ log.print_warn_log('The model in [%s] range does not match the dump data.' % self.args.get('range'))
423
+ elif self.args.get("select"):
424
+ log.print_warn_log('The model in index list [%s] does not match '
425
+ 'the dump data.' % self.args.get('select'))
426
+ else:
427
+ log.print_error_log('The model does not match the dump data, '
428
+ 'please check the model and the dump data again.')
429
+ else:
430
+ if os.path.exists(self.output_path):
431
+ log.print_write_result_info('comparison result', self.output_path)
432
+ if self.args.get("advisor"):
433
+ self._do_advisor()
434
+ return ret
435
+
436
+ def _do_advisor(self):
437
+ try:
438
+ from msprobe.msaccucmp.advisor.compare_advisor import CompareAdvisor
439
+ except ImportError as import_error:
440
+ log.print_warn_log("Unable to import module: %s." % str(import_error))
441
+ log.print_warn_log("Skip compare results Analysis.")
442
+ else:
443
+ out_path = os.path.dirname(self.output_path)
444
+ compare_advisor = CompareAdvisor(self.output_path, self.args.get("input_nodes"), out_path)
445
+ advisor_result = compare_advisor.advisor()
446
+ message_list = advisor_result.print_advisor_log()
447
+ advisor_result.gen_summary_file(out_path, message_list)
448
+
449
+ def _compare_detail(self: any) -> int:
450
+ """
451
+ Compare detail by op name
452
+ :return VectorComparisonErrorCode
453
+ """
454
+ if self.compare_rule.fusion_json_file_path == "" and self.compare_rule.quant_fusion_rule_file_path == "":
455
+ log.print_warn_log('Both the offline fusion rule file path and '
456
+ 'the quant fusion rule file path cannot be empty. '
457
+ 'Please ensure that the data is reasonable.')
458
+ if self.args.get("overflow_detection"):
459
+ log.print_warn_log('Both compare data are NPU dump data, not support overflow detection.')
460
+ comparison = DumpDetailComparison(self.detail_info, self.compare_data, self.output_path)
461
+ return comparison.compare()
462
+ if self.detail_info.tensor_id.op_name not in self.compare_rule.fusion_info.op_name_to_fusion_op_name_map:
463
+ log.print_error_log('There is no "%s" in the fusion rule file.' % self.detail_info.tensor_id.op_name)
464
+ return CompareError.MSACCUCMP_INVALID_PARAM_ERROR
465
+ if self.args.get("overflow_detection") and not self._check_both_dump_data():
466
+ overflow_detection = OverflowDetection(self.compare_data, self.detail_info.tensor_id.op_name)
467
+ overflow_detection.process_op_overflow_detection()
468
+ fusion_op_name = self.compare_rule.fusion_info.op_name_to_fusion_op_name_map.get(
469
+ self.detail_info.tensor_id.op_name)
470
+ fusion_op_comparison = FusionOpComparison(fusion_op_name, self.compare_rule, self.compare_data,
471
+ self.format_manager, self.args)
472
+ comparison = DetailComparison(self.detail_info, fusion_op_comparison, self.output_path)
473
+ return comparison.compare()
474
+
475
+ def _write_header_to_file(self: any) -> bool:
476
+ cur_op_header = self._pre_handle_header()
477
+ try:
478
+ with os.fdopen(os.open(self.output_path, ConstManager.WRITE_FLAGS,
479
+ ConstManager.WRITE_MODES), 'a+', newline='') as output_file:
480
+ header = compare_result.get_result_title(self.args.get('algorithm_manager'), cur_op_header,
481
+ self.args.get('overflow_detection'))
482
+ if self.args.get("csv"):
483
+ writer = csv.writer(output_file)
484
+ sanitized_header = [sanitize_csv_value(cell) for cell in header]
485
+ writer.writerow(sanitized_header)
486
+ else:
487
+ output_file.write(" ".join(header))
488
+ except IOError as io_error:
489
+ log.print_open_file_error(self.output_path, io_error)
490
+ return False
491
+ return True
492
+
493
+ def _make_mapping_table_by_op_name(self: any, fusion_op_names: list) -> list:
494
+ all_cmp_res = []
495
+ for op_name in fusion_op_names:
496
+ res = FusionOpComparison(op_name, self.compare_rule, self.compare_data, self.format_manager,
497
+ self.args).make_gpu_and_npu_mapping_table()
498
+ all_cmp_res += res
499
+ return all_cmp_res
500
+
501
+ def _make_table(self: any) -> int:
502
+ all_task = self._handle_multi_process(self._make_mapping_table_by_op_name)
503
+ origin_list = []
504
+ for task in all_task:
505
+ origin_list += task.get()
506
+ origin_list.sort(key=lambda xx: int(xx[0]))
507
+ try:
508
+ with os.fdopen(os.open(self.output_path, ConstManager.WRITE_FLAGS, ConstManager.WRITE_MODES), 'a+',
509
+ newline='') as out_file:
510
+ writer = csv.writer(out_file)
511
+ header = ConstManager.MAPPING_FILE_HEADER
512
+ RangeManager.adjust_header(header)
513
+ sanitized_header = [sanitize_csv_value(cell) for cell in header]
514
+ writer.writerow(sanitized_header)
515
+ for item in origin_list:
516
+ sanitized_item = [sanitize_csv_value(cell) for cell in item]
517
+ writer.writerow(sanitized_item)
518
+ except IOError as io_error:
519
+ log.print_open_file_error(self.output_path, io_error)
520
+ raise CompareError(CompareError.MSACCUCMP_OPEN_FILE_ERROR) from io_error
521
+ if os.path.exists(self.output_path):
522
+ log.print_write_result_info('mapping table result', self.output_path)
523
+ return CompareError.MSACCUCMP_NONE_ERROR
524
+
525
+ def _pre_handle_header(self: any) -> list:
526
+ op_header = copy.deepcopy(ConstManager.VECTOR_COMPARE_HEADER)
527
+ golden_dump_path = self.args.get("golden_dump_path")
528
+ my_dump_path = self.args.get("my_dump_path")
529
+ address_index = [i for i, x in enumerate(op_header) if x == 'Address']
530
+ if utils.dump_path_contains_npy(golden_dump_path) and len(address_index) > 0:
531
+ op_header.pop(address_index[-1])
532
+ if utils.dump_path_contains_npy(my_dump_path) and len(address_index) > 0:
533
+ op_header.pop(address_index[0])
534
+ return op_header
535
+