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,274 @@
1
+ # coding=utf-8
2
+ # -------------------------------------------------------------------------
3
+ # This file is part of the MindStudio project.
4
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
5
+ #
6
+ # MindStudio is licensed under Mulan PSL v2.
7
+ # You can use this software according to the terms and conditions of the Mulan PSL v2.
8
+ # You may obtain a copy of Mulan PSL v2 at:
9
+ #
10
+ # http://license.coscl.org.cn/MulanPSL2
11
+ #
12
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
13
+ # EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
14
+ # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
15
+ # See the Mulan PSL v2 for more details.
16
+ # -------------------------------------------------------------------------
17
+
18
+ """
19
+ Function:
20
+ This file mainly involves the path check function.
21
+ """
22
+ import os
23
+ import re
24
+ import stat
25
+ from enum import Enum
26
+
27
+ from msprobe.msaccucmp.cmp_utils import log
28
+ from msprobe.msaccucmp.cmp_utils import utils
29
+ from msprobe.msaccucmp.cmp_utils.reg_manager import RegManager
30
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
31
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
32
+
33
+
34
+ class PathType(Enum):
35
+ """
36
+ The enum for path type
37
+ """
38
+ All = 0
39
+ File = 1
40
+ Directory = 2
41
+
42
+
43
+ def _check_path_file_or_directory(path: str, path_type: PathType) -> int:
44
+ ret = CompareError.MSACCUCMP_NONE_ERROR
45
+ if path_type == PathType.File:
46
+ if os.path.exists(path) and not os.path.isfile(path):
47
+ log.print_error_log('The path "%r" is not a file. Please check the path.' % path)
48
+ ret = CompareError.MSACCUCMP_INVALID_PATH_ERROR
49
+ elif path_type == PathType.Directory:
50
+ if not os.path.isdir(path):
51
+ log.print_error_log('The path "%r" is not a directory. Please check the path.' % path)
52
+ ret = CompareError.MSACCUCMP_INVALID_PATH_ERROR
53
+ return ret
54
+
55
+
56
+ def get_path_list_for_str(path_str: str) -> list:
57
+ """
58
+ Get path list for string
59
+ :param path_str: the user input string
60
+ :return: the path list
61
+ """
62
+ if ',' not in path_str:
63
+ new_path = os.path.realpath(path_str)
64
+ ret = check_path_valid(new_path, True, False)
65
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
66
+ raise CompareError(ret)
67
+ return [new_path]
68
+ input_path_list = []
69
+ for input_path in path_str.split(','):
70
+ new_path = os.path.realpath(input_path.strip())
71
+ ret = check_path_valid(new_path, True, False)
72
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
73
+ continue
74
+ input_path_list.append(new_path)
75
+ if not input_path_list:
76
+ log.print_error_log(
77
+ 'There is no valid file in "%r". Please check the path.' % path_str)
78
+ raise CompareError(CompareError.MSACCUCMP_INVALID_PATH_ERROR)
79
+ return input_path_list
80
+
81
+
82
+ def check_output_path_valid(path: str, exist: bool, path_type: PathType = PathType.Directory) -> int:
83
+ """
84
+ Check output path valid
85
+ :param path: the path to check
86
+ :param exist: the path exist
87
+ :param path_type: the path type
88
+ :return: VectorComparisonErrorCode
89
+ """
90
+ if os.path.islink(os.path.abspath(path)):
91
+ log.print_error_log('The path "%r" is a softlink, not permitted.' % path)
92
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
93
+ output_path = os.path.realpath(path)
94
+ if path_type == PathType.File:
95
+ output_path = os.path.dirname(output_path)
96
+ if not os.path.exists(output_path):
97
+ try:
98
+ os.makedirs(output_path, mode=0o700)
99
+ except OSError as ex:
100
+ log.print_error_log('Failed to create "%r". %s' % (output_path, str(ex)))
101
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
102
+ finally:
103
+ pass
104
+ return check_path_valid(path, exist, True, path_type)
105
+
106
+
107
+ def check_exec_file_valid(exist_path: str) -> int:
108
+ """
109
+ Check exec path valid
110
+ :param path: the path to check
111
+ :return: VectorComparisonErrorCode
112
+ """
113
+ file_stat = os.stat(exist_path)
114
+ if file_stat.st_uid != 0 and file_stat.st_uid != os.getuid():
115
+ log.print_error_log('You are not the owner of the path "%r".' % exist_path)
116
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
117
+
118
+ if file_stat.st_gid != 0 and file_stat.st_gid not in os.getgroups():
119
+ log.print_error_log('You are not in the group of the path "%r".' % exist_path)
120
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
121
+
122
+ ret = check_others_permission(exist_path)
123
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
124
+ raise CompareError(ret)
125
+
126
+ return check_path_valid(exist_path, True, False, PathType.File)
127
+
128
+
129
+ def check_path_all_file_exec_valid(custom_path):
130
+ # all file and dir in custom path check safe
131
+ file_count = 0
132
+ for up_dir, dirs, files in os.walk(custom_path):
133
+ if len(up_dir.split(os.path.sep)) > ConstManager.MAX_WALK_DIR_DEEP_NUM:
134
+ raise CompareError(f"custom path is deep then {ConstManager.MAX_WALK_DIR_DEEP_NUM}")
135
+
136
+ for name in files:
137
+ sub_file_path = os.path.join(up_dir, name)
138
+ ret = check_exec_file_valid(sub_file_path)
139
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
140
+ raise CompareError(ret)
141
+ utils.check_file_size(sub_file_path, ConstManager.ONE_MB, is_raise=True)
142
+ file_count = file_count + 1
143
+ if file_count > ConstManager.MAX_WALK_FILE_NUM:
144
+ raise CompareError(f"file count in custom path is more then {ConstManager.MAX_WALK_FILE_NUM}")
145
+
146
+ for name in dirs:
147
+ sub_dir_path = os.path.join(up_dir, name)
148
+ ret = check_path_valid(sub_dir_path, True, False, PathType.Directory)
149
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
150
+ raise CompareError(ret)
151
+
152
+
153
+ def check_name_valid(name: str) -> int:
154
+ """
155
+ Check name valid
156
+ :param name: the name to check
157
+ :return: VectorComparisonErrorCode
158
+ """
159
+ if name == "":
160
+ log.print_error_log("The parameter is null.")
161
+ return CompareError.MSACCUCMP_INVALID_PARAM_ERROR
162
+ name_pattern = re.compile(RegManager.SUPPORT_PATH_PATTERN)
163
+ match = name_pattern.match(name)
164
+ if match is None:
165
+ log.print_only_support_error('name', name, '"A-Za-z0-9_\\./:()=-"')
166
+ return CompareError.MSACCUCMP_INVALID_PARAM_ERROR
167
+ return CompareError.MSACCUCMP_NONE_ERROR
168
+
169
+
170
+ def is_same_owner(path) -> bool:
171
+ file_stat = os.stat(path)
172
+ if os.getuid() != 0 and file_stat.st_uid != os.getuid():
173
+ return False
174
+ return True
175
+
176
+
177
+ def is_group_and_others_writable(path) -> bool:
178
+ file_stat = os.stat(path)
179
+ file_mode = file_stat.st_mode
180
+ if bool(file_mode & stat.S_IWGRP) or bool(file_mode & stat.S_IWOTH):
181
+ return True
182
+ return False
183
+
184
+
185
+ def is_parent_dir_has_right_permission(path) -> bool:
186
+ if not is_same_owner(path) or is_group_and_others_writable(path):
187
+ return False
188
+ return True
189
+
190
+
191
+ def check_path_valid(path: str, exist: bool, have_write_permission: bool = False,
192
+ path_type: PathType = PathType.All) -> int:
193
+ """
194
+ Check path valid
195
+ :param path: the path to check
196
+ :param exist: the path exist
197
+ :param have_write_permission: have write permission
198
+ :param path_type: the path type
199
+ :return: VectorComparisonErrorCode
200
+ """
201
+ if path == "":
202
+ log.print_error_log("The path is null.")
203
+ return CompareError.MSACCUCMP_INVALID_PARAM_ERROR
204
+
205
+ ret = check_name_valid(path)
206
+ if ret != CompareError.MSACCUCMP_NONE_ERROR:
207
+ return ret
208
+ if os.path.islink(os.path.abspath(path)):
209
+ log.print_error_log('The path "%r" is a softlink, not permitted.' % path)
210
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
211
+
212
+ exist_path = os.path.realpath(path)
213
+ if not exist:
214
+ exist_path = os.path.dirname(exist_path)
215
+
216
+ if not os.path.exists(exist_path):
217
+ log.print_error_log('The path "%r" does not exist.' % exist_path)
218
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
219
+
220
+ if not os.access(exist_path, os.R_OK):
221
+ log.print_error_log('You do not have permission to read the path "%r".' % exist_path)
222
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
223
+
224
+ if have_write_permission and not os.access(exist_path, os.W_OK):
225
+ log.print_error_log('You do not have permission to write the path "%r".' % exist_path)
226
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
227
+
228
+ file_stat = os.stat(exist_path)
229
+ if os.getuid() != 0 and file_stat.st_uid != os.getuid() and file_stat.st_gid not in os.getgroups():
230
+ log.print_error_log('You are neither the owner nor in the group of the path "%r".' % exist_path)
231
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
232
+
233
+ if bool(file_stat.st_mode & stat.S_IWGRP):
234
+ log.print_warn_log(f"The file path is writable by group: {exist_path}.")
235
+
236
+ if bool(file_stat.st_mode & stat.S_IWOTH):
237
+ log.print_error_log(f"The file must not allow write access to others. File path: {exist_path}.")
238
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
239
+
240
+
241
+ parent_directory = os.path.dirname(os.path.abspath(path))
242
+ if not have_write_permission and not is_parent_dir_has_right_permission(parent_directory):
243
+ log.print_warn_log('The permissions of the parent directory of the current file are incorrect.')
244
+
245
+ return _check_path_file_or_directory(path, path_type)
246
+
247
+
248
+ def check_write_path_secure(path: str):
249
+ if os.path.islink(path):
250
+ os.unlink(path)
251
+ if os.path.exists(path):
252
+ os.remove(path)
253
+
254
+
255
+ def check_others_permission(exist_path: str) -> int:
256
+ """
257
+ Check others permission
258
+ :param path: the path to check
259
+ :return: VectorComparisonErrorCode
260
+ """
261
+ file_stat = os.stat(exist_path)
262
+ file_mode = file_stat.st_mode
263
+ # 判断others或group权限是否有写权限
264
+ if file_stat.st_gid != 0 and bool(file_mode & stat.S_IWGRP):
265
+ log.print_error_log(f"File {exist_path} is not safe. Groups have writing permission to this file.")
266
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
267
+
268
+ if bool(file_mode & stat.S_IWOTH):
269
+ log.print_error_log("File %r is dangerous. Others have writing "
270
+ "permission to this file. Please use chmod to dismiss the writing permission." % exist_path)
271
+ return CompareError.MSACCUCMP_INVALID_PATH_ERROR
272
+
273
+ return CompareError.MSACCUCMP_NONE_ERROR
274
+
@@ -0,0 +1,98 @@
1
+ # coding=utf-8
2
+ # -------------------------------------------------------------------------
3
+ # This file is part of the MindStudio project.
4
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
5
+ #
6
+ # MindStudio is licensed under Mulan PSL v2.
7
+ # You can use this software according to the terms and conditions of the Mulan PSL v2.
8
+ # You may obtain a copy of Mulan PSL v2 at:
9
+ #
10
+ # http://license.coscl.org.cn/MulanPSL2
11
+ #
12
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
13
+ # EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
14
+ # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
15
+ # See the Mulan PSL v2 for more details.
16
+ # -------------------------------------------------------------------------
17
+
18
+ """
19
+ Function:
20
+ This file mainly involves the reg const.
21
+ """
22
+
23
+ import re
24
+
25
+ from msprobe.msaccucmp.cmp_utils.constant.const_manager import ConstManager
26
+
27
+
28
+ class RegManager:
29
+ """
30
+ The class for reg manager
31
+ """
32
+ NUMBER_PATTERN = r"^[0-9]+$"
33
+
34
+ # mapping of built in algorithms to numbers, the indexes correspond one-to-one to the list above
35
+ BUILTIN_ALGORITHM_INDEX_PATTERN = r"^([0-" + str(len(ConstManager.BUILT_IN_ALGORITHM) - 1) + "])$"
36
+
37
+ # Standard
38
+ STANDARD_DUMP_PATTERN = r"^([A-Za-z0-9_-]+\.[0-9]+)\.[0-9]{1,255}\.pb$"
39
+
40
+ # Qunat
41
+ QUANT_DUMP_PATTERN = r"^([A-Za-z0-9_-]+\.[0-9]+)\.[0-9]{1,255}\.quant$"
42
+
43
+ # Offline
44
+ OFFLINE_DUMP_PATTERN = r"^[A-Za-z0-9_-]+\.([A-Za-z0-9_-]+)\.[0-9]+" \
45
+ r"(\.[0-9]+)?\.[0-9]{1,255}(\.[0-9]+\.[0-9]+\.[0-9]+)?(\.[0-9]+)?"
46
+ OFFLINE_NUMPY_PATTERN = r"^([A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[0-9]+" \
47
+ r"\.[0-9]{1,255})\.[0-9]+\.\b(npy|data|bin|txt)\b$"
48
+ OFFLINE_FFTS_DUMP_PATTERN = r"^[A-Za-z0-9_-]+\.([A-Za-z0-9_-]+)\.[0-9]+" \
49
+ r"(\.[0-9]+)?\.[0-9]{1,255}\.[0-9]+\.[0-9]+\.[0-9]+"
50
+
51
+ # Standard
52
+ NUMPY_DUMP_PATTERN = r"^([\.A-Za-z0-9_-]+\.[0-9]+)\.[0-9]{1,255}\.npy$"
53
+
54
+ STANDARD_NUMPY_PATTERN = r"^([\.A-Za-z0-9_-]+\.[0-9]+\.[0-9]{1,255})\.npy$"
55
+
56
+ SUPPORT_SHAPE_PATTERN = r"^([0-9]+,)+[0-9]+$"
57
+
58
+ # matching `convert_xxx_to_yyy.py`, the `{1,128}` is used for limiting string length, bypassing ReDoS attack.
59
+ FORMAT_CONVERT_FILE_NAME_PATTERN = r"^(convert_[A-Za-z0-9_]{1,128}_to_[A-Za-z0-9_]{1,128})\.py[c]?$"
60
+
61
+ SUPPORT_PATH_PATTERN = r"^[A-Za-z0-9_\./:()=\\-]+$"
62
+
63
+ FFTS_MANUAL_FIELD_PATTERN = r"lxslice[0-9]+"
64
+
65
+ LXSLICE_PATTERN = r"_lxslice[0-9]+"
66
+
67
+ SGT_FLIED_PATTERN = r"sgt_graph_[0-9]+"
68
+
69
+ @staticmethod
70
+ def match_pattern(pattern: str, value: any) -> bool:
71
+ """
72
+ The value match pattern or not
73
+ :param pattern: the pattern
74
+ :param value: the value to match
75
+ :return bool
76
+ """
77
+ re_pattern = re.compile(pattern)
78
+ match = re_pattern.match(value)
79
+ return match is not None
80
+
81
+ @staticmethod
82
+ def match_group(pattern: str, value: any) -> (bool, any):
83
+ """
84
+ The value match pattern or not
85
+ :param pattern: the pattern
86
+ :param value: the value to match
87
+ :return bool, match
88
+ """
89
+ re_pattern = re.compile(pattern)
90
+ match = re_pattern.match(value)
91
+ if match is not None:
92
+ return True, match
93
+ return False, match
94
+
95
+ @staticmethod
96
+ def get_matchs(pattern: str, value: any) -> list:
97
+ re_pattern = re.compile(pattern)
98
+ return [match for match in re.finditer(re_pattern, value)]
@@ -0,0 +1,279 @@
1
+ # coding=utf-8
2
+ # -------------------------------------------------------------------------
3
+ # This file is part of the MindStudio project.
4
+ # Copyright (c) 2025 Huawei Technologies Co.,Ltd.
5
+ #
6
+ # MindStudio is licensed under Mulan PSL v2.
7
+ # You can use this software according to the terms and conditions of the Mulan PSL v2.
8
+ # You may obtain a copy of Mulan PSL v2 at:
9
+ #
10
+ # http://license.coscl.org.cn/MulanPSL2
11
+ #
12
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
13
+ # EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
14
+ # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
15
+ # See the Mulan PSL v2 for more details.
16
+ # -------------------------------------------------------------------------
17
+
18
+ """
19
+ Function:
20
+ This file mainly involves the tlv info parse function.
21
+
22
+ How to use:
23
+
24
+ 1、Tag map:
25
+
26
+ TLV_CONFIG_TAB = [
27
+ {'Name': 'data_type', 'TLV_Type': 'ATOM', 'Ele_Type': 'INT32'},
28
+ {'Name': 'data_id', 'TLV_Type': 'ATOM', 'Ele_Type': 'INT32'},
29
+ {'Name': 'shape_dims', 'TLV_Type': 'TLNV', 'Ele_Type': 'UINT64', 'Tag': 1}
30
+ ]
31
+
32
+ 2、parse an bytes:
33
+ from msprobe.msaccucmp.cmp_utils.tlv_parse import TLV
34
+
35
+ class ParseInfo:
36
+ def __init__(self):
37
+ self.data_type = 0
38
+ self.data_id = 0
39
+ self.shape_dims = []
40
+
41
+ aux = b'0x5a\0x5a\0x5a\0x5a' + \
42
+ b'0x11\0x11\0x11\0x11' + \
43
+ b'0x01\0x00\0x00\0x00' + \
44
+ b'0x10\0x00\0x00\0x00' + \
45
+ b'0x0a\0x0a\0x0a\0x0b\0x0b\0x0b\0x0b\0x0b' + \
46
+ b'0x0b\0x0b\0x0b\0x0b\0x0b\0x0b\0x0b\0x0b'
47
+
48
+ input = ParseInfo()
49
+ tlv = TLV(TLV_CONFIG_TAB)
50
+ aux, input = tlv.parse_tlv_by_cfg_tab(aux, input)
51
+
52
+ """
53
+ import struct
54
+
55
+ from msprobe.msaccucmp.cmp_utils import log
56
+ from msprobe.msaccucmp.cmp_utils.constant.compare_error import CompareError
57
+
58
+ CHAR_SIZE = 1
59
+ INT16_SIZE = 2
60
+ UINT16_SIZE = 2
61
+ INT32_SIZE = 4
62
+ UINT32_SIZE = 4
63
+ INT64_SIZE = 8
64
+ UINT64_SIZE = 8
65
+
66
+ _UNPACK_FORMAT = {
67
+ 'CHAR': {'FMT': 's', 'SIZE': 1},
68
+ 'UINT16': {'FMT': 'H', 'SIZE': 2},
69
+ 'INT16': {'FMT': 'h', 'SIZE': 2},
70
+ 'UINT32': {'FMT': 'I', 'SIZE': 4},
71
+ 'INT32': {'FMT': 'i', 'SIZE': 4},
72
+ 'UINT64': {'FMT': 'Q', 'SIZE': 8},
73
+ 'INT64': {'FMT': 'q', 'SIZE': 8},
74
+ }
75
+
76
+ TLV_TYPE = ['ATOM', 'TLV', 'TLNV', 'NV']
77
+
78
+
79
+ class NestedObj:
80
+ pass
81
+
82
+
83
+ class TLV:
84
+ def __init__(self, tlv_tab, tag_type="UINT32", len_type="UINT32") -> None:
85
+ self.tlv_tab = tlv_tab
86
+ self.tag_type = tag_type
87
+ self.len_type = len_type
88
+
89
+ @staticmethod
90
+ def _unpack_single_element(aux: bytes, ele_type) -> (bytes, any):
91
+ type_para = _UNPACK_FORMAT.get(ele_type)
92
+ ele_fmt, ele_size = type_para.get('FMT'), type_para.get('SIZE')
93
+
94
+ if len(aux) < ele_size:
95
+ raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
96
+ try:
97
+ value = struct.unpack(ele_fmt, aux[:ele_size])[0]
98
+ except struct.error as error:
99
+ raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR) from error
100
+
101
+ if ele_type == 'CHAR' and isinstance(value, bytes):
102
+ value = value.decode(encoding="utf-8")
103
+
104
+ return aux[ele_size:], value
105
+
106
+ @staticmethod
107
+ def _check_tl(tag, length, tlv_cfg):
108
+ tag_in_cfg, ele_type = tlv_cfg.get("Tag"), tlv_cfg.get('Ele_Type')
109
+
110
+ if tag_in_cfg != tag:
111
+ log.print_error_log(
112
+ 'Failed to parse of tag_in_cfg: %s, tag_in_stream: %s.' % (tag_in_cfg, tag))
113
+ raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
114
+
115
+ if not isinstance(ele_type, list):
116
+ ele_size = _UNPACK_FORMAT.get(ele_type).get('SIZE')
117
+ if length < ele_size:
118
+ log.print_error_log(
119
+ 'Failed to parse of tag: %s. length:%d < single ele_size:%d' % (tag_in_cfg, length, ele_size))
120
+ raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
121
+
122
+ def parse_tlv_by_cfg_tab(self, content: bytes, x: object) -> (bytes, object):
123
+ aux = content
124
+ self._check_cfg_tab(self.tlv_tab)
125
+
126
+ for tlv_cfg in self.tlv_tab:
127
+ tlv_type = tlv_cfg.get('TLV_Type')
128
+ if tlv_type == 'ATOM':
129
+ aux, x = self._unpack_atom_value(aux, tlv_cfg, x)
130
+ elif tlv_type == 'TLV':
131
+ aux, x = self._unpack_tlv_value(aux, tlv_cfg, x)
132
+ elif tlv_type == 'TLNV':
133
+ aux, x = self._unpack_tlnv_value(aux, tlv_cfg, x)
134
+ elif tlv_type == 'NV':
135
+ num_attr_name = tlv_cfg.get('N')
136
+ num = getattr(x, num_attr_name)
137
+ aux, x = self._unpack_nv_value(aux, tlv_cfg, x, num)
138
+ return aux, x
139
+
140
+ def _check_cfg_tab(self, tlv_tab):
141
+ for tlv_cfg in tlv_tab:
142
+ tlv_type, ele_type = tlv_cfg.get('TLV_Type'), tlv_cfg.get('Ele_Type')
143
+ if tlv_type not in TLV_TYPE:
144
+ log.print_error_log('%s invalid tlv_type: %s.' % (tlv_cfg.get('Name'), tlv_type))
145
+ raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
146
+
147
+ # Nested tlv
148
+ if isinstance(ele_type, list):
149
+ self._check_cfg_tab(ele_type)
150
+ elif _UNPACK_FORMAT.get(ele_type) is None:
151
+ log.print_error_log('invalid ele_type: %s.' % ele_type)
152
+ raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
153
+
154
+ if tlv_type == 'NV':
155
+ num_attr_name = tlv_cfg.get('N')
156
+ if num_attr_name is None:
157
+ log.print_error_log("is tlv_tpye is NV, 'N' must be given!")
158
+ raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR)
159
+ return
160
+
161
+ def _unpack_atom_value(self, aux: bytes, tlv_cfg, x: object) -> (bytes, object):
162
+ ele_type, ele_name = tlv_cfg.get('Ele_Type'), tlv_cfg.get('Name')
163
+
164
+ if isinstance(ele_type, list):
165
+ # parse Nested tlv value
166
+ sub_tlv_tab = ele_type
167
+ sub_tlv = TLV(sub_tlv_tab)
168
+ nested_obj = NestedObj()
169
+ aux, value = sub_tlv.parse_tlv_by_cfg_tab(aux, nested_obj)
170
+ else:
171
+ try:
172
+ # parse single element
173
+ aux, value = self._unpack_single_element(aux, ele_type)
174
+ except CompareError as error:
175
+ log.print_error_log('Failed to parse of ele name: %s, value_type: %s, '
176
+ 'Please check the dump file:%s.' % (tlv_cfg.get('Name'), ele_type, str(error)))
177
+ raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR) from error
178
+
179
+ setattr(x, ele_name, value)
180
+ return aux, x
181
+
182
+ def _parse_tag_len(self, aux: bytes) -> (bytes, any, any):
183
+ aux, tag = self._unpack_single_element(aux, self.tag_type)
184
+ aux, length = self._unpack_single_element(aux, self.len_type)
185
+ return aux, tag, length
186
+
187
+ def _unpack_tlv_value(self, aux: bytes, tlv_cfg, x: object) -> (bytes, object):
188
+ ele_type, ele_name = tlv_cfg.get('Ele_Type'), tlv_cfg.get('Name')
189
+
190
+ # tag, len
191
+ try:
192
+ aux_try, tag, length = self._parse_tag_len(aux)
193
+ except CompareError:
194
+ setattr(x, ele_name, None)
195
+ log.print_info_log('Failed to parse of ele name: %s, ele_type: %s' % (ele_name, ele_type))
196
+ return aux, x
197
+ try:
198
+ self._check_tl(tag, length, tlv_cfg)
199
+ except CompareError:
200
+ log.print_info_log('Failed to parse of ele name: %s, ele_type: %s' % (ele_name, ele_type))
201
+ setattr(x, ele_name, None)
202
+ return aux, x
203
+
204
+ new_aux, new_x = self._unpack_atom_value(aux_try, tlv_cfg, x)
205
+ return new_aux, new_x
206
+
207
+ def _unpack_tlnv_value(self, aux: bytes, tlv_cfg, x: object) -> (bytes, object):
208
+ tag_in_cfg, ele_type, ele_name = tlv_cfg.get("Tag"), tlv_cfg.get('Ele_Type'), tlv_cfg.get('Name')
209
+
210
+ # tag, len
211
+ try:
212
+ aux_try, tag, length = self._parse_tag_len(aux)
213
+ except CompareError:
214
+ setattr(x, ele_name, None)
215
+ log.print_info_log('skip to parse tlv of ele name: %s, ele_type: %s' % (ele_name, ele_type))
216
+ return aux, x
217
+ try:
218
+ self._check_tl(tag, length, tlv_cfg)
219
+ except CompareError:
220
+ log.print_info_log('skip to parse tlv of ele name: %s, ele_type: %s' % (ele_name, ele_type))
221
+ setattr(x, ele_name, None)
222
+ return aux, x
223
+
224
+ aux = aux_try
225
+
226
+ # get list num of value
227
+ if _UNPACK_FORMAT.get(ele_type) is not None:
228
+ ele_size = _UNPACK_FORMAT.get(ele_type).get('SIZE')
229
+ ele_num = int(length / ele_size)
230
+
231
+ try:
232
+ aux, x = self._unpack_nv_value(aux, tlv_cfg, x, ele_num)
233
+ except CompareError as error:
234
+ log.print_error_log('Failed to parse of ele name: %s, value_type: %s, '
235
+ 'Please check the dump file:%s.' % (tlv_cfg.get('Name'), ele_type, str(error)))
236
+ raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR) from error
237
+
238
+ elif isinstance(ele_type, list):
239
+ value = []
240
+ sub_aux = aux[:length]
241
+
242
+ while (len(sub_aux) > 0):
243
+ # Nested tlv
244
+ sub_tlv_tab = ele_type
245
+ sub_tlv, nested_obj = TLV(sub_tlv_tab), NestedObj()
246
+ sub_aux, single_value = sub_tlv.parse_tlv_by_cfg_tab(sub_aux, nested_obj)
247
+ value.append(single_value)
248
+
249
+ setattr(x, tlv_cfg.get('Name'), value)
250
+ aux = aux[length:]
251
+ return aux, x
252
+
253
+ def _unpack_nv_value(self, aux: bytes, tlv_cfg, x: object, ele_num) -> (bytes, object):
254
+ ele_type, ele_name = tlv_cfg.get('Ele_Type'), tlv_cfg.get('Name')
255
+ value = []
256
+
257
+ for _ in range(ele_num):
258
+ if isinstance(ele_type, list):
259
+ # Nested tlv
260
+ sub_tlv_tab = ele_type
261
+ sub_tlv, nested_obj = TLV(sub_tlv_tab), NestedObj()
262
+ aux, single_value = sub_tlv.parse_tlv_by_cfg_tab(aux, nested_obj)
263
+ value.append(single_value)
264
+ else:
265
+ try:
266
+ # single element
267
+ aux, single_value = self._unpack_single_element(aux, ele_type)
268
+ except CompareError as error:
269
+ log.print_error_log('Failed to parse of ele name: %s, value_type: %s, '
270
+ 'Please check the dump file:%s.' % (tlv_cfg.get('Name'), ele_type, str(error)))
271
+ raise CompareError(CompareError.MSACCUCMP_PARSE_NANO_DUMP_FILE_ERROR) from error
272
+ value.append(single_value)
273
+
274
+ if ele_type == 'CHAR' and isinstance(value, list):
275
+ value_str = "".join(value)
276
+ setattr(x, tlv_cfg.get('Name'), value_str)
277
+ else:
278
+ setattr(x, tlv_cfg.get('Name'), value)
279
+ return aux, x