mindstudio-probe 1.0.3__py3-none-any.whl → 1.1.0__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 (278) hide show
  1. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/LICENSE +201 -201
  2. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/METADATA +36 -34
  3. mindstudio_probe-1.1.0.dist-info/RECORD +287 -0
  4. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/WHEEL +1 -1
  5. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/entry_points.txt +1 -0
  6. msprobe/README.md +131 -237
  7. msprobe/__init__.py +16 -1
  8. msprobe/{config/config.json → config.json} +47 -49
  9. msprobe/core/advisor/advisor.py +124 -124
  10. msprobe/core/advisor/advisor_const.py +58 -59
  11. msprobe/core/advisor/advisor_result.py +58 -58
  12. msprobe/core/common/const.py +402 -318
  13. msprobe/core/common/exceptions.py +99 -99
  14. msprobe/core/common/{file_check.py → file_utils.py} +523 -283
  15. msprobe/core/common/inplace_op_checker.py +38 -0
  16. msprobe/core/common/inplace_ops.yaml +251 -0
  17. msprobe/core/common/log.py +86 -69
  18. msprobe/core/common/utils.py +371 -616
  19. msprobe/core/common_config.py +78 -71
  20. msprobe/core/compare/acc_compare.py +472 -298
  21. msprobe/core/compare/check.py +180 -95
  22. msprobe/core/compare/compare_cli.py +69 -49
  23. msprobe/core/compare/highlight.py +259 -222
  24. msprobe/core/compare/multiprocessing_compute.py +174 -149
  25. msprobe/core/compare/npy_compare.py +310 -295
  26. msprobe/core/compare/utils.py +464 -429
  27. msprobe/core/data_dump/data_collector.py +153 -144
  28. msprobe/core/data_dump/data_processor/base.py +337 -293
  29. msprobe/core/data_dump/data_processor/factory.py +76 -59
  30. msprobe/core/data_dump/data_processor/mindspore_processor.py +192 -198
  31. msprobe/core/data_dump/data_processor/pytorch_processor.py +383 -389
  32. msprobe/core/data_dump/json_writer.py +117 -116
  33. msprobe/core/data_dump/scope.py +194 -178
  34. msprobe/core/grad_probe/constant.py +74 -70
  35. msprobe/core/grad_probe/grad_compare.py +170 -175
  36. msprobe/core/grad_probe/utils.py +77 -52
  37. msprobe/docs/01.installation.md +99 -0
  38. msprobe/docs/02.config_introduction.md +137 -0
  39. msprobe/docs/03.config_examples.md +237 -0
  40. msprobe/docs/04.acl_config_examples.md +78 -0
  41. msprobe/docs/05.data_dump_PyTorch.md +326 -0
  42. msprobe/docs/06.data_dump_MindSpore.md +285 -0
  43. msprobe/docs/07.accuracy_checker_PyTorch.md +297 -0
  44. msprobe/docs/08.accuracy_checker_online_PyTorch.md +238 -0
  45. msprobe/docs/09.accuracy_checker_MindSpore.md +68 -0
  46. msprobe/docs/10.accuracy_compare_PyTorch.md +327 -0
  47. msprobe/docs/11.accuracy_compare_MindSpore.md +333 -0
  48. msprobe/docs/12.overflow_check_PyTorch.md +79 -0
  49. msprobe/docs/13.overflow_check_MindSpore.md +31 -0
  50. msprobe/{pytorch/doc/parse_tool.md → docs/14.data_parse_PyTorch.md} +283 -286
  51. msprobe/docs/15.free_benchmarking_PyTorch.md +170 -0
  52. msprobe/docs/16.free_benchmarking_MindSpore.md +140 -0
  53. msprobe/{doc/grad_probe/grad_probe.md → docs/17.grad_probe.md} +205 -207
  54. msprobe/{pytorch/doc//321/205/320/254/320/270/321/207/342/225/221/342/224/220/321/207/342/226/223/342/225/233/321/205/342/225/221/320/266/321/206/320/277/320/244/321/205/320/277/342/225/243.md → docs/18.online_dispatch.md} +89 -90
  55. msprobe/docs/FAQ.md +189 -0
  56. msprobe/docs/S02.report_free_benchmarking_validation_performance_baseline.md +146 -0
  57. msprobe/docs/img/free_benchmark_framework.png +0 -0
  58. msprobe/docs/img/ms_dump.png +0 -0
  59. msprobe/docs/img/ms_layer.png +0 -0
  60. msprobe/docs/img/pt_dump.png +0 -0
  61. msprobe/mindspore/__init__.py +2 -1
  62. msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +278 -245
  63. msprobe/mindspore/api_accuracy_checker/api_info.py +76 -69
  64. msprobe/mindspore/api_accuracy_checker/api_runner.py +155 -151
  65. msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +196 -196
  66. msprobe/mindspore/api_accuracy_checker/cmd_parser.py +6 -0
  67. msprobe/mindspore/api_accuracy_checker/compute_element.py +238 -223
  68. msprobe/mindspore/api_accuracy_checker/main.py +8 -15
  69. msprobe/mindspore/api_accuracy_checker/type_mapping.py +113 -113
  70. msprobe/mindspore/api_accuracy_checker/utils.py +79 -62
  71. msprobe/mindspore/cell_processor.py +58 -34
  72. msprobe/mindspore/common/const.py +108 -87
  73. msprobe/mindspore/common/log.py +37 -37
  74. msprobe/mindspore/common/utils.py +97 -57
  75. msprobe/mindspore/compare/distributed_compare.py +62 -75
  76. msprobe/mindspore/compare/layer_mapping.py +146 -0
  77. msprobe/mindspore/compare/modify_mapping.py +107 -0
  78. msprobe/mindspore/compare/ms_compare.py +357 -117
  79. msprobe/mindspore/compare/ms_graph_compare.py +364 -317
  80. msprobe/mindspore/compare/ms_to_pt_api.yaml +399 -399
  81. msprobe/mindspore/debugger/debugger_config.py +69 -74
  82. msprobe/mindspore/debugger/precision_debugger.py +150 -107
  83. msprobe/mindspore/dump/dump_tool_factory.py +50 -35
  84. msprobe/mindspore/dump/hook_cell/api_registry.py +128 -104
  85. msprobe/mindspore/dump/hook_cell/hook_cell.py +55 -53
  86. msprobe/mindspore/dump/hook_cell/primitive_hooks.py +206 -0
  87. msprobe/mindspore/dump/hook_cell/support_wrap_ops.yaml +994 -925
  88. msprobe/mindspore/dump/hook_cell/wrap_api.py +121 -0
  89. msprobe/mindspore/dump/jit_dump.py +96 -56
  90. msprobe/mindspore/dump/kernel_graph_dump.py +75 -60
  91. msprobe/mindspore/dump/kernel_kbyk_dump.py +79 -65
  92. msprobe/mindspore/free_benchmark/api_pynative_self_check.py +131 -116
  93. msprobe/mindspore/free_benchmark/common/config.py +27 -12
  94. msprobe/mindspore/free_benchmark/common/handler_params.py +32 -17
  95. msprobe/mindspore/free_benchmark/common/utils.py +85 -71
  96. msprobe/mindspore/free_benchmark/data/support_wrap_ops.yaml +842 -842
  97. msprobe/mindspore/free_benchmark/decorator/dec_forward.py +57 -42
  98. msprobe/mindspore/free_benchmark/decorator/decorator_factory.py +122 -107
  99. msprobe/mindspore/free_benchmark/handler/base_handler.py +105 -90
  100. msprobe/mindspore/free_benchmark/handler/check_handler.py +56 -41
  101. msprobe/mindspore/free_benchmark/handler/fix_handler.py +51 -36
  102. msprobe/mindspore/free_benchmark/handler/handler_factory.py +36 -21
  103. msprobe/mindspore/free_benchmark/perturbation/add_noise.py +82 -67
  104. msprobe/mindspore/free_benchmark/perturbation/base_perturbation.py +36 -21
  105. msprobe/mindspore/free_benchmark/perturbation/bit_noise.py +78 -63
  106. msprobe/mindspore/free_benchmark/perturbation/exchange_value.py +77 -0
  107. msprobe/mindspore/free_benchmark/perturbation/improve_precision.py +49 -34
  108. msprobe/mindspore/free_benchmark/perturbation/no_change.py +27 -12
  109. msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +44 -27
  110. msprobe/mindspore/free_benchmark/self_check_tool_factory.py +48 -33
  111. msprobe/mindspore/grad_probe/global_context.py +100 -91
  112. msprobe/mindspore/grad_probe/grad_analyzer.py +231 -231
  113. msprobe/mindspore/grad_probe/grad_monitor.py +27 -27
  114. msprobe/mindspore/grad_probe/grad_stat_csv.py +131 -131
  115. msprobe/mindspore/grad_probe/hook.py +94 -92
  116. msprobe/mindspore/grad_probe/utils.py +29 -28
  117. msprobe/mindspore/ms_config.py +128 -126
  118. msprobe/mindspore/overflow_check/kernel_graph_overflow_check.py +60 -45
  119. msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +49 -34
  120. msprobe/mindspore/runtime.py +4 -4
  121. msprobe/mindspore/service.py +297 -354
  122. msprobe/mindspore/task_handler_factory.py +24 -24
  123. msprobe/msprobe.py +105 -107
  124. msprobe/pytorch/__init__.py +23 -4
  125. msprobe/pytorch/api_accuracy_checker/common/config.py +70 -55
  126. msprobe/pytorch/api_accuracy_checker/common/utils.py +246 -165
  127. msprobe/pytorch/api_accuracy_checker/compare/algorithm.py +230 -213
  128. msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +632 -581
  129. msprobe/pytorch/api_accuracy_checker/compare/api_precision_standard.yaml +132 -132
  130. msprobe/pytorch/api_accuracy_checker/compare/api_precision_threshold.yaml +390 -390
  131. msprobe/pytorch/api_accuracy_checker/compare/compare.py +416 -381
  132. msprobe/pytorch/api_accuracy_checker/compare/compare_column.py +90 -73
  133. msprobe/pytorch/api_accuracy_checker/compare/compare_utils.py +265 -244
  134. msprobe/pytorch/api_accuracy_checker/config.yaml +10 -10
  135. msprobe/pytorch/api_accuracy_checker/run_ut/data_generate.py +370 -332
  136. msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +221 -199
  137. msprobe/pytorch/api_accuracy_checker/run_ut/run_overflow_check.py +150 -134
  138. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +518 -581
  139. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut_utils.py +213 -74
  140. msprobe/pytorch/api_accuracy_checker/run_ut/torch_ut_setting.json +7 -4
  141. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/attl.py +218 -202
  142. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/client.py +370 -324
  143. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +227 -204
  144. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/dump_dispatch.py +110 -0
  145. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/server.py +244 -218
  146. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/torch_ops_config.yaml +63 -0
  147. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/utils.py +44 -0
  148. msprobe/pytorch/bench_functions/__init__.py +30 -15
  149. msprobe/pytorch/bench_functions/apply_adam_w.py +43 -28
  150. msprobe/pytorch/bench_functions/confusion_transpose.py +34 -19
  151. msprobe/pytorch/bench_functions/fast_gelu.py +70 -55
  152. msprobe/pytorch/bench_functions/layer_norm_eval.py +21 -6
  153. msprobe/pytorch/bench_functions/linear.py +27 -12
  154. msprobe/pytorch/bench_functions/matmul_backward.py +63 -48
  155. msprobe/pytorch/bench_functions/npu_fusion_attention.py +538 -421
  156. msprobe/pytorch/bench_functions/rms_norm.py +30 -15
  157. msprobe/pytorch/bench_functions/rotary_mul.py +71 -52
  158. msprobe/pytorch/bench_functions/scaled_mask_softmax.py +41 -26
  159. msprobe/pytorch/bench_functions/swiglu.py +70 -55
  160. msprobe/pytorch/common/__init__.py +17 -2
  161. msprobe/pytorch/common/compare_script.template +14 -14
  162. msprobe/pytorch/common/log.py +33 -32
  163. msprobe/pytorch/common/parse_json.py +54 -39
  164. msprobe/pytorch/common/utils.py +310 -300
  165. msprobe/pytorch/compare/distributed_compare.py +66 -66
  166. msprobe/pytorch/compare/mapping.yaml +607 -607
  167. msprobe/pytorch/compare/match.py +49 -33
  168. msprobe/pytorch/compare/pt_compare.py +82 -40
  169. msprobe/pytorch/debugger/debugger_config.py +108 -95
  170. msprobe/pytorch/debugger/precision_debugger.py +173 -125
  171. msprobe/pytorch/free_benchmark/__init__.py +23 -8
  172. msprobe/pytorch/free_benchmark/common/constant.py +70 -70
  173. msprobe/pytorch/free_benchmark/common/counter.py +71 -71
  174. msprobe/pytorch/free_benchmark/common/enums.py +65 -37
  175. msprobe/pytorch/free_benchmark/common/params.py +144 -129
  176. msprobe/pytorch/free_benchmark/common/utils.py +118 -102
  177. msprobe/pytorch/free_benchmark/compare/grad_saver.py +200 -179
  178. msprobe/pytorch/free_benchmark/compare/single_benchmark.py +119 -104
  179. msprobe/pytorch/free_benchmark/main.py +120 -105
  180. msprobe/pytorch/free_benchmark/perturbed_layers/base_layer.py +28 -13
  181. msprobe/pytorch/free_benchmark/perturbed_layers/layer_factory.py +56 -41
  182. msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +105 -90
  183. msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +119 -104
  184. msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +87 -63
  185. msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +83 -68
  186. msprobe/pytorch/free_benchmark/perturbed_layers/npu/no_change.py +43 -28
  187. msprobe/pytorch/free_benchmark/perturbed_layers/npu/npu_base_layser.py +60 -45
  188. msprobe/pytorch/free_benchmark/perturbed_layers/run_cpu.py +34 -19
  189. msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +256 -217
  190. msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +54 -39
  191. msprobe/pytorch/free_benchmark/result_handlers/fix_handler.py +38 -23
  192. msprobe/pytorch/free_benchmark/result_handlers/handler_factory.py +45 -30
  193. msprobe/pytorch/free_benchmark/result_handlers/preheat_handler.py +185 -170
  194. msprobe/pytorch/function_factory.py +91 -75
  195. msprobe/pytorch/functional/module_dump.py +84 -0
  196. msprobe/pytorch/grad_probe/grad_monitor.py +91 -90
  197. msprobe/pytorch/grad_probe/grad_stat_csv.py +128 -128
  198. msprobe/pytorch/hook_module/__init__.py +16 -1
  199. msprobe/pytorch/hook_module/api_registry.py +166 -161
  200. msprobe/pytorch/hook_module/hook_module.py +118 -120
  201. msprobe/pytorch/hook_module/support_wrap_ops.yaml +1879 -1877
  202. msprobe/pytorch/hook_module/utils.py +28 -29
  203. msprobe/pytorch/hook_module/wrap_aten.py +111 -110
  204. msprobe/pytorch/hook_module/wrap_distributed.py +77 -78
  205. msprobe/pytorch/hook_module/wrap_functional.py +104 -105
  206. msprobe/pytorch/hook_module/wrap_npu_custom.py +85 -84
  207. msprobe/pytorch/hook_module/wrap_tensor.py +69 -71
  208. msprobe/pytorch/hook_module/wrap_torch.py +84 -86
  209. msprobe/pytorch/hook_module/wrap_vf.py +60 -62
  210. msprobe/pytorch/module_processer.py +153 -138
  211. msprobe/pytorch/online_dispatch/__init__.py +20 -20
  212. msprobe/pytorch/online_dispatch/compare.py +235 -236
  213. msprobe/pytorch/online_dispatch/dispatch.py +271 -271
  214. msprobe/pytorch/online_dispatch/dump_compare.py +155 -156
  215. msprobe/pytorch/online_dispatch/single_compare.py +391 -391
  216. msprobe/pytorch/online_dispatch/torch_ops_config.yaml +57 -49
  217. msprobe/pytorch/online_dispatch/utils.py +127 -146
  218. msprobe/pytorch/parse.py +19 -4
  219. msprobe/pytorch/parse_tool/cli.py +31 -32
  220. msprobe/pytorch/parse_tool/lib/compare.py +259 -271
  221. msprobe/pytorch/parse_tool/lib/config.py +52 -52
  222. msprobe/pytorch/parse_tool/lib/file_desc.py +31 -31
  223. msprobe/pytorch/parse_tool/lib/interactive_cli.py +102 -102
  224. msprobe/pytorch/parse_tool/lib/parse_exception.py +54 -54
  225. msprobe/pytorch/parse_tool/lib/parse_tool.py +161 -158
  226. msprobe/pytorch/parse_tool/lib/utils.py +320 -321
  227. msprobe/pytorch/parse_tool/lib/visualization.py +85 -91
  228. msprobe/pytorch/pt_config.py +317 -187
  229. msprobe/pytorch/service.py +311 -252
  230. mindstudio_probe-1.0.3.dist-info/RECORD +0 -272
  231. msprobe/config/README.md +0 -539
  232. msprobe/mindspore/doc/compare.md +0 -58
  233. msprobe/mindspore/doc/dump.md +0 -217
  234. msprobe/mindspore/dump/hook_cell/wrap_functional.py +0 -91
  235. msprobe/mindspore/dump/hook_cell/wrap_tensor.py +0 -63
  236. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/ssl_config.py +0 -10
  237. msprobe/pytorch/doc/FAQ.md +0 -193
  238. msprobe/pytorch/doc/api_accuracy_checker.md +0 -313
  239. msprobe/pytorch/doc/api_accuracy_checker_online.md +0 -187
  240. msprobe/pytorch/doc/dump.md +0 -260
  241. msprobe/pytorch/doc/msprobe/321/207/342/226/223/342/225/233/321/205/342/225/221/320/266/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/206/320/245/342/226/221/321/206/320/235/320/276dump/321/206/320/260/320/227/321/205/320/227/320/226/321/206/320/220/320/267/321/210/320/223/342/225/234/321/205/320/257/342/225/221/321/207/342/225/221/342/224/220/321/206/320/232/320/265/321/205/320/241/320/232.md +0 -182
  242. msprobe/pytorch/doc/ptdbg_ascend_compare.md +0 -240
  243. msprobe/pytorch/doc/ptdbg_ascend_overview.md +0 -68
  244. msprobe/pytorch/doc/ptdbg_ascend_quickstart.md +0 -381
  245. msprobe/pytorch/doc/run_overflow_check.md +0 -25
  246. msprobe/pytorch/doc//321/206/320/247/320/260/321/206/320/260/320/227/321/206/320/255/320/226/321/205/342/225/226/320/265/321/205/320/225/342/225/226/321/205/320/254/342/225/221/321/206/320/251/320/277/321/211/320/272/320/234/321/210/320/277/320/221/321/205/320/242/320/234/321/206/320/220/320/267/321/210/320/223/342/225/234/321/205/320/257/342/225/221/321/207/342/225/221/342/224/220/321/206/320/232/320/265/321/205/320/241/320/232.md +0 -151
  247. msprobe/pytorch/functional/data_processor.py +0 -0
  248. msprobe/pytorch/functional/dump_module.py +0 -39
  249. {mindstudio_probe-1.0.3.dist-info → mindstudio_probe-1.1.0.dist-info}/top_level.txt +0 -0
  250. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_1.png +0 -0
  251. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_2.png +0 -0
  252. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_3.png +0 -0
  253. /msprobe/{pytorch/doc → docs}/img/BLOOM-7B_4.png +0 -0
  254. /msprobe/{pytorch/doc → docs}/img/GPT-3_1.png +0 -0
  255. /msprobe/{pytorch/doc → docs}/img/GPT-3_2.png +0 -0
  256. /msprobe/{pytorch/doc → docs}/img/GPT-3_3.png +0 -0
  257. /msprobe/{pytorch/doc → docs}/img/GPT-3_4.png +0 -0
  258. /msprobe/{pytorch/doc → docs}/img/GPT-3_5.png +0 -0
  259. /msprobe/{pytorch/doc → docs}/img/GPT-3_6.png +0 -0
  260. /msprobe/{pytorch/doc → docs}/img/GPT-3_7.png +0 -0
  261. /msprobe/{pytorch/doc → docs}/img/GPT-3_8.png +0 -0
  262. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_1.png +0 -0
  263. /msprobe/{pytorch/doc → docs}/img/YOLOV5S_2.png +0 -0
  264. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_details.png +0 -0
  265. /msprobe/{pytorch/doc → docs}/img/accuracy_checking_result.png +0 -0
  266. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_details.png +0 -0
  267. /msprobe/{pytorch/doc → docs}/img/api_precision_compare_result.png +0 -0
  268. /msprobe/{pytorch/doc → docs}/img/auto_analyze_log.png +0 -0
  269. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl.png +0 -0
  270. /msprobe/{pytorch/doc → docs}/img/compare_result_pkl_md5.png.png +0 -0
  271. /msprobe/{pytorch/doc → docs}/img/cpu_info.png +0 -0
  272. /msprobe/{config → docs}/img/free_benchmark.png +0 -0
  273. /msprobe/{doc/grad_probe/img/image-1.png → docs/img/grad_probe_image-1.png} +0 -0
  274. /msprobe/{doc/grad_probe/img/image-2.png → docs/img/grad_probe_image-2.png} +0 -0
  275. /msprobe/{doc/grad_probe/img/image-3.png → docs/img/grad_probe_image-3.png} +0 -0
  276. /msprobe/{doc/grad_probe/img/image-4.png → docs/img/grad_probe_image-4.png} +0 -0
  277. /msprobe/{doc/grad_probe/img/image.png → docs/img/grad_probe_image.png} +0 -0
  278. /msprobe/{pytorch/doc → docs}/img/module_compare.png +0 -0
@@ -0,0 +1,121 @@
1
+ # Copyright (c) 2024-2024, Huawei Technologies Co., Ltd.
2
+ # All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ import os
17
+
18
+ from mindspore import Tensor, mint, ops
19
+ from mindspore.common._stub_tensor import StubTensor
20
+ from mindspore.communication import comm_func
21
+ from mindspore.mint.nn import functional
22
+
23
+ from msprobe.core.common.const import Const
24
+ from msprobe.core.common.file_utils import load_yaml
25
+ from msprobe.mindspore.common.const import Const as MsConst
26
+ from msprobe.mindspore.dump.hook_cell.hook_cell import HOOKCell
27
+
28
+ cur_path = os.path.dirname(os.path.realpath(__file__))
29
+ yaml_path = os.path.join(cur_path, MsConst.SUPPORTED_API_LIST_FILE)
30
+
31
+
32
+ class HOOKTensor(object):
33
+ pass
34
+
35
+
36
+ class HOOKStubTensor(object):
37
+ pass
38
+
39
+
40
+ class HOOKFunctionalOP(object):
41
+ pass
42
+
43
+
44
+ class HOOKMintOP(object):
45
+ pass
46
+
47
+
48
+ class HOOKMintNNFunctionalOP(object):
49
+ pass
50
+
51
+
52
+ class HOOKDistributedOP(object):
53
+ pass
54
+
55
+
56
+ class ApiTemplate(HOOKCell):
57
+ def __init__(self, api_name, api_dict, prefix, hook):
58
+ self.api_name = api_name
59
+ self.api_func = api_dict[api_name]
60
+ self.prefix_api_name = prefix + str(api_name.split(Const.SEP)[-1]) + Const.SEP
61
+ super().__init__(hook)
62
+
63
+ def construct(self, *args, **kwargs):
64
+ if self.api_name.startswith(MsConst.DROPOUT_API_NAME_PREFIX):
65
+ return args[0] if args else kwargs.get(Const.INPUT)
66
+ return self.api_func(*args, **kwargs)
67
+
68
+
69
+ class WrapApiName:
70
+ def __init__(self, tensor_api_names, stub_tensor_api_names, ops_api_names, mint_api_names, mint_nn_func_api_names,
71
+ distributed_api_names):
72
+ self.tensor_api_names = tensor_api_names
73
+ self.stub_tensor_api_names = stub_tensor_api_names
74
+ self.ops_api_names = ops_api_names
75
+ self.mint_api_names = mint_api_names
76
+ self.mint_nn_func_api_names = mint_nn_func_api_names
77
+ self.distributed_api_names = distributed_api_names
78
+
79
+
80
+ def get_wrap_api_list():
81
+ api_list = load_yaml(yaml_path)
82
+ tensor_api = api_list.get(MsConst.SUPPORTED_TENSOR_LIST_KEY)
83
+ ops_api = api_list.get(MsConst.SUPPORTED_OPS_LIST_KEY)
84
+ mint_api = api_list.get(MsConst.SUPPORTED_MINT_LIST_KEY)
85
+ mint_nn_func_api = api_list.get(MsConst.SUPPORTED__MINT_NN_FUNC_LIST_KEY)
86
+ distributed_api = api_list.get(MsConst.SUPPORTED_COMM_LIST_KEY)
87
+ wrap_api_name = WrapApiName(set(tensor_api) & set(dir(Tensor)),
88
+ set(tensor_api) & set(dir(StubTensor)),
89
+ set(ops_api) & set(dir(ops)),
90
+ set(mint_api) & set(dir(mint)),
91
+ set(mint_nn_func_api) & set(dir(functional)),
92
+ set(distributed_api) & set(dir(comm_func)))
93
+ return wrap_api_name
94
+
95
+
96
+ def wrap_api_func(api_name, api_dict, prefix, hook):
97
+ def api_function(*args, **kwargs):
98
+ return ApiTemplate(api_name, api_dict, prefix, hook)(*args, **kwargs)
99
+ return api_function
100
+
101
+
102
+ def wrap_api_func_and_bind(api_list, api_dict, prefix, hook, hook_class):
103
+ for api_name in api_list:
104
+ if callable(api_dict[api_name]):
105
+ setattr(hook_class, Const.ATTR_NAME_PREFIX + api_name, wrap_api_func(api_name, api_dict, prefix, hook))
106
+
107
+
108
+ def setup_hooks(hook):
109
+ wrap_api_name = get_wrap_api_list()
110
+ wrap_api_func_and_bind(wrap_api_name.tensor_api_names, {f: getattr(Tensor, f) for f in dir(Tensor)},
111
+ MsConst.TENSOR_DATA_PREFIX, hook, HOOKTensor)
112
+ wrap_api_func_and_bind(wrap_api_name.stub_tensor_api_names, {f: getattr(StubTensor, f) for f in dir(StubTensor)},
113
+ MsConst.STUB_TENSOR_DATA_PREFIX, hook, HOOKStubTensor)
114
+ wrap_api_func_and_bind(wrap_api_name.ops_api_names, {f: getattr(ops, f) for f in dir(ops)},
115
+ MsConst.OPS_DATA_PREFIX, hook, HOOKFunctionalOP)
116
+ wrap_api_func_and_bind(wrap_api_name.mint_api_names, {f: getattr(mint, f) for f in dir(mint)},
117
+ MsConst.MINT_DATA_PREFIX, hook, HOOKMintOP)
118
+ wrap_api_func_and_bind(wrap_api_name.mint_nn_func_api_names, {f: getattr(functional, f) for f in dir(functional)},
119
+ MsConst.MINT_NN_FUNC_DATA_PREFIX, hook, HOOKMintNNFunctionalOP)
120
+ wrap_api_func_and_bind(wrap_api_name.distributed_api_names, {f: getattr(comm_func, f) for f in dir(comm_func)},
121
+ MsConst.DISTRIBUTED_DATA_PREFIX, hook, HOOKDistributedOP)
@@ -1,56 +1,96 @@
1
- import os
2
- from mindspore.common.api import _MindsporeFunctionExecutor
3
- from mindspore._c_expression import PyNativeExecutor_
4
- from msprobe.mindspore.dump.hook_cell.api_registry import api_register
5
- from msprobe.core.data_dump.data_processor.base import ModuleForwardInputsOutputs
6
-
7
-
8
- def dump_jit(name, in_feat, out_feat, is_forward):
9
- pid = os.getpid()
10
- ori_args = str(name)
11
- index = ori_args.find("<")
12
- if index != 0 and index != -1:
13
- result = ori_args[0:index]
14
- else:
15
- result = "JitFunction"
16
- if is_forward:
17
- name_template = "Jit." + result + ".forward"
18
- else:
19
- name_template = "Jit." + result + ".backward"
20
- JitDump.data_collector.visit_and_clear_overflow_status(name_template)
21
- if JitDump.data_collector:
22
- module_input_output = ModuleForwardInputsOutputs(args=in_feat, kwargs={}, output=out_feat)
23
- JitDump.data_collector.forward_data_collect(name_template, {}, pid, module_input_output)
24
-
25
-
26
- class JitDump(_MindsporeFunctionExecutor):
27
- dump_config = None
28
- jit_enable = False
29
- def __init__(self, *args, **kwargs):
30
- super().__init__(*args, **kwargs)
31
- self._executor = PyNativeExecutor_.get_instance()
32
-
33
- def __call__(self, *args, **kwargs):
34
- api_register.api_set_ori_func()
35
- out = super().__call__(*args, **kwargs)
36
- dump_jit(args[0], args[1], out, True)
37
- JitDump.jit_enable = True
38
- api_register.api_set_hook_func()
39
- return out
40
-
41
- @classmethod
42
- def set_config(cls, value):
43
- cls.dump_config = value
44
-
45
- @classmethod
46
- def set_data_collector(cls, value):
47
- cls.data_collector = value
48
-
49
- def grad(self, obj, grad, weights, grad_position, *args, **kwargs):
50
- if JitDump.jit_enable:
51
- api_register.api_set_ori_func()
52
- output = self._executor.grad(grad, obj, weights, grad_position, *args, *(kwargs.values()))
53
- if JitDump.jit_enable:
54
- dump_jit(obj, args, output, False)
55
- api_register.api_set_hook_func()
56
- return output
1
+ # Copyright (c) 2024-2024, Huawei Technologies Co., Ltd.
2
+ # All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ import os
17
+ from collections import defaultdict
18
+
19
+ from mindspore import Tensor
20
+ from mindspore._c_expression import PyNativeExecutor_
21
+ from mindspore.common.api import _MindsporeFunctionExecutor
22
+
23
+ from msprobe.mindspore.dump.hook_cell.api_registry import api_register
24
+ from msprobe.core.data_dump.data_processor.base import ModuleForwardInputsOutputs, ModuleBackwardInputsOutputs
25
+ from msprobe.core.common.const import Const
26
+ from msprobe.core.data_dump.data_processor.base import ModuleForwardInputsOutputs
27
+ from msprobe.mindspore.dump.hook_cell.api_registry import api_register
28
+
29
+
30
+ def dump_jit(name, in_feat, out_feat, is_forward):
31
+ pid = os.getpid()
32
+ ori_args = str(name)
33
+ index = ori_args.find("<")
34
+ if index != 0 and index != -1:
35
+ result = ori_args[0:index]
36
+ else:
37
+ result = "JitFunction"
38
+ if JitDump.need_dump():
39
+ if is_forward:
40
+ JitDump.jit_count[result] += 1
41
+ name_template = Const.JIT + Const.SEP + result + Const.SEP + str(JitDump.jit_count[result]) + Const.SEP + \
42
+ Const.FORWARD
43
+ JitDump.data_collector.update_api_or_module_name(name_template)
44
+ module_input_output = ModuleForwardInputsOutputs(args=in_feat, kwargs={}, output=out_feat)
45
+ JitDump.data_collector.forward_data_collect(name_template, None, pid, module_input_output)
46
+ else:
47
+ name_template = Const.JIT + Const.SEP + result + Const.SEP + str(JitDump.jit_count[result]) + Const.SEP + \
48
+ Const.BACKWARD
49
+ JitDump.data_collector.update_api_or_module_name(name_template)
50
+ module_input_output = ModuleBackwardInputsOutputs(grad_input=in_feat ,grad_output=out_feat)
51
+ JitDump.data_collector.backward_data_collect(name_template, None, pid, module_input_output)
52
+
53
+
54
+ class JitDump(_MindsporeFunctionExecutor):
55
+ dump_config = None
56
+ jit_enable = False
57
+ jit_dump_switch = True
58
+ jit_count = defaultdict(int)
59
+
60
+ def __init__(self, *args, **kwargs):
61
+ super().__init__(*args, **kwargs)
62
+ self._executor = PyNativeExecutor_.get_instance()
63
+
64
+ def __call__(self, *args, **kwargs):
65
+ api_register.api_set_ori_func()
66
+ out = super().__call__(*args, **kwargs)
67
+ if JitDump.jit_dump_switch and len(args) > 0:
68
+ dump_jit(args[0], args, out, True)
69
+ JitDump.jit_enable = True
70
+ api_register.api_set_hook_func()
71
+ return out
72
+
73
+ @classmethod
74
+ def set_config(cls, value):
75
+ cls.dump_config = value
76
+
77
+ @classmethod
78
+ def set_data_collector(cls, value):
79
+ cls.data_collector = value
80
+
81
+ @classmethod
82
+ def need_dump(cls):
83
+ if cls.dump_config.task != Const.TENSOR and cls.dump_config.task != Const.STATISTICS:
84
+ return False
85
+ if not cls.data_collector or cls.data_collector.data_processor.is_terminated:
86
+ return False
87
+ return True
88
+
89
+ def grad(self, obj, grad, weights, grad_position, *args, **kwargs):
90
+ if JitDump.jit_dump_switch and JitDump.jit_enable:
91
+ api_register.api_set_ori_func()
92
+ output = self._executor.grad(grad, obj, weights, grad_position, *args, *(kwargs.values()))
93
+ if JitDump.jit_dump_switch and JitDump.jit_enable:
94
+ dump_jit(obj, args, None, False)
95
+ api_register.api_set_hook_func()
96
+ return output
@@ -1,60 +1,75 @@
1
- import os
2
- import json
3
- from msprobe.core.common.utils import make_dump_path_if_not_exists
4
- from msprobe.mindspore.debugger.debugger_config import DebuggerConfig
5
- from msprobe.core.common.log import logger
6
- from msprobe.core.common.file_check import FileOpen
7
-
8
-
9
- class KernelGraphDump:
10
- def __init__(self, config: DebuggerConfig):
11
- self.dump_json = dict()
12
- self.dump_json["common_dump_settings"] = dict()
13
- self.dump_json["common_dump_settings"]["dump_mode"] = 0
14
- self.dump_json["common_dump_settings"]["path"] = ""
15
- self.dump_json["common_dump_settings"]["net_name"] = "Net"
16
- self.dump_json["common_dump_settings"]["iteration"] = "all"
17
- self.dump_json["common_dump_settings"]["saved_data"] = "statistic"
18
- self.dump_json["common_dump_settings"]["input_output"] = 0
19
- self.dump_json["common_dump_settings"]["kernels"] = []
20
- self.dump_json["common_dump_settings"]["support_device"] = [0, 1, 2, 3, 4, 5, 6, 7]
21
- self.dump_json["common_dump_settings"]["op_debug_mode"] = 0
22
- self.dump_json["common_dump_settings"]["file_format"] = "npy"
23
-
24
- if len(config.list) > 0:
25
- self.dump_json["common_dump_settings"]["dump_mode"] = 1
26
- self.dump_json["common_dump_settings"]["kernels"] = config.list
27
- self.dump_json["common_dump_settings"]["path"] = config.dump_path
28
- if len(config.step) > 0:
29
- step_str = ""
30
- for s in config.step:
31
- step_str += (str(s) + '|')
32
- self.dump_json["common_dump_settings"]["iteration"] = step_str[:-1]
33
- if len(config.rank) > 0:
34
- self.dump_json["common_dump_settings"]["support_device"] = config.rank
35
- if config.task == "tensor":
36
- self.dump_json["common_dump_settings"]["saved_data"] = "tensor"
37
- self.dump_json["common_dump_settings"]["file_format"] = config.file_format
38
- if len(config.data_mode) == 1:
39
- if config.data_mode[0] == "input":
40
- self.dump_json["common_dump_settings"]["input_output"] = 1
41
- if config.data_mode[0] == "output":
42
- self.dump_json["common_dump_settings"]["input_output"] = 2
43
-
44
- def handle(self):
45
- if os.getenv("GRAPH_OP_RUN") == "1":
46
- raise Exception("Must run in graph mode, not kbk mode")
47
- json_path = self.dump_json["common_dump_settings"]["path"]
48
- make_dump_path_if_not_exists(json_path)
49
- json_path = os.path.join(json_path, "kernel_graph_dump.json")
50
- with FileOpen(json_path, 'w') as f:
51
- json.dump(self.dump_json, f)
52
- logger.info(json_path + " has been created.")
53
- os.environ["MINDSPORE_DUMP_CONFIG"] = json_path
54
- if self.dump_json["common_dump_settings"]["dump_mode"] == 0:
55
- if self.dump_json["common_dump_settings"]["iteration"] != "all" or \
56
- len(self.dump_json["common_dump_settings"]["kernels"]) == 0:
57
- os.environ["MS_ACL_DUMP_CFG_PATH"] = json_path
58
- else:
59
- if "MS_ACL_DUMP_CFG_PATH" in os.environ:
60
- del os.environ["MS_ACL_DUMP_CFG_PATH"]
1
+ # Copyright (c) 2024-2024, Huawei Technologies Co., Ltd.
2
+ # All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ import json
17
+ import os
18
+
19
+ from msprobe.core.common.file_utils import FileOpen, create_directory
20
+ from msprobe.mindspore.common.log import logger
21
+ from msprobe.mindspore.debugger.debugger_config import DebuggerConfig
22
+
23
+
24
+ class KernelGraphDump:
25
+ def __init__(self, config: DebuggerConfig):
26
+ self.dump_json = dict()
27
+ self.dump_json["common_dump_settings"] = dict()
28
+ self.dump_json["common_dump_settings"]["dump_mode"] = 0
29
+ self.dump_json["common_dump_settings"]["path"] = ""
30
+ self.dump_json["common_dump_settings"]["net_name"] = "Net"
31
+ self.dump_json["common_dump_settings"]["iteration"] = "all"
32
+ self.dump_json["common_dump_settings"]["saved_data"] = "statistic"
33
+ self.dump_json["common_dump_settings"]["input_output"] = 0
34
+ self.dump_json["common_dump_settings"]["kernels"] = []
35
+ self.dump_json["common_dump_settings"]["support_device"] = [0, 1, 2, 3, 4, 5, 6, 7]
36
+ self.dump_json["common_dump_settings"]["op_debug_mode"] = 0
37
+ self.dump_json["common_dump_settings"]["file_format"] = "npy"
38
+
39
+ if len(config.list) > 0:
40
+ self.dump_json["common_dump_settings"]["dump_mode"] = 1
41
+ self.dump_json["common_dump_settings"]["kernels"] = config.list
42
+ self.dump_json["common_dump_settings"]["path"] = config.dump_path
43
+ if len(config.step) > 0:
44
+ step_str = ""
45
+ for s in config.step:
46
+ step_str += (str(s) + '|')
47
+ self.dump_json["common_dump_settings"]["iteration"] = step_str[:-1]
48
+ if len(config.rank) > 0:
49
+ self.dump_json["common_dump_settings"]["support_device"] = config.rank
50
+ if config.task == "tensor":
51
+ self.dump_json["common_dump_settings"]["saved_data"] = "tensor"
52
+ self.dump_json["common_dump_settings"]["file_format"] = config.file_format
53
+ if len(config.data_mode) == 1:
54
+ if config.data_mode[0] == "input":
55
+ self.dump_json["common_dump_settings"]["input_output"] = 1
56
+ if config.data_mode[0] == "output":
57
+ self.dump_json["common_dump_settings"]["input_output"] = 2
58
+
59
+ def handle(self):
60
+ if os.getenv("GRAPH_OP_RUN") == "1":
61
+ raise Exception("Must run in graph mode, not kbk mode")
62
+ json_path = self.dump_json["common_dump_settings"]["path"]
63
+ create_directory(json_path)
64
+ json_path = os.path.join(json_path, "kernel_graph_dump.json")
65
+ with FileOpen(json_path, 'w') as f:
66
+ json.dump(self.dump_json, f)
67
+ logger.info(json_path + " has been created.")
68
+ os.environ["MINDSPORE_DUMP_CONFIG"] = json_path
69
+ if self.dump_json["common_dump_settings"]["dump_mode"] == 0:
70
+ if self.dump_json["common_dump_settings"]["iteration"] != "all" or \
71
+ len(self.dump_json["common_dump_settings"]["kernels"]) == 0:
72
+ os.environ["MS_ACL_DUMP_CFG_PATH"] = json_path
73
+ else:
74
+ if "MS_ACL_DUMP_CFG_PATH" in os.environ:
75
+ del os.environ["MS_ACL_DUMP_CFG_PATH"]
@@ -1,65 +1,79 @@
1
- import os
2
- import json
3
-
4
- from msprobe.core.common.utils import make_dump_path_if_not_exists
5
- from msprobe.mindspore.debugger.debugger_config import DebuggerConfig
6
- from msprobe.core.common.log import logger
7
- from msprobe.core.common.file_check import FileOpen
8
- from msprobe.core.common.const import Const
9
-
10
-
11
- class KernelKbykDump:
12
- COMMON_SETTINGS = "common_dump_settings"
13
- E2E_SETTINGS = "e2e_dump_settings"
14
-
15
- def __init__(self, config: DebuggerConfig):
16
- self.dump_json = dict()
17
- common_set = dict()
18
- e2e_set = dict()
19
-
20
- common_set = dict()
21
- common_set["dump_mode"] = 0
22
- common_set["path"] = ""
23
- common_set["net_name"] = "Net"
24
- common_set["iteration"] = "all"
25
- common_set["saved_data"] = "statistic"
26
- common_set["input_output"] = 0
27
- common_set["kernels"] = []
28
- common_set["support_device"] = [0, 1, 2, 3, 4, 5, 6, 7]
29
- e2e_set = dict()
30
- e2e_set["enable"] = True
31
- e2e_set["trans_flag"] = True
32
-
33
- if config.list:
34
- common_set["dump_mode"] = 1
35
- common_set["kernels"] = config.list
36
- common_set["path"] = config.dump_path
37
- if config.step:
38
- step_str = ""
39
- for s in config.step:
40
- step_str += (str(s) + '|')
41
- common_set["iteration"] = step_str[:-1]
42
- if config.rank:
43
- common_set["support_device"] = config.rank
44
- if config.task == Const.TENSOR:
45
- common_set["saved_data"] = Const.TENSOR
46
- if len(config.data_mode) == 1:
47
- if config.data_mode[0] == Const.INPUT:
48
- common_set["input_output"] = 1
49
- if config.data_mode[0] == Const.OUTPUT:
50
- common_set["input_output"] = 2
51
-
52
- self.dump_json[KernelKbykDump.COMMON_SETTINGS] = common_set
53
- self.dump_json[KernelKbykDump.E2E_SETTINGS] = e2e_set
54
-
55
- def handle(self):
56
- json_path = self.dump_json[KernelKbykDump.COMMON_SETTINGS]["path"]
57
- make_dump_path_if_not_exists(json_path)
58
- json_path = os.path.join(json_path, "kernel_kbyk_dump.json")
59
- with FileOpen(json_path, 'w') as f:
60
- json.dump(self.dump_json, f)
61
- logger.info(json_path + " has been created.")
62
-
63
- os.environ["MINDSPORE_DUMP_CONFIG"] = json_path
64
- if "MS_ACL_DUMP_CFG_PATH" in os.environ:
65
- del os.environ["MS_ACL_DUMP_CFG_PATH"]
1
+ # Copyright (c) 2024-2024, Huawei Technologies Co., Ltd.
2
+ # All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ import json
17
+ import os
18
+
19
+ from msprobe.core.common.const import Const
20
+ from msprobe.core.common.file_utils import FileOpen, create_directory
21
+ from msprobe.mindspore.common.log import logger
22
+ from msprobe.mindspore.debugger.debugger_config import DebuggerConfig
23
+
24
+
25
+ class KernelKbykDump:
26
+ COMMON_SETTINGS = "common_dump_settings"
27
+ E2E_SETTINGS = "e2e_dump_settings"
28
+
29
+ def __init__(self, config: DebuggerConfig):
30
+ self.dump_json = dict()
31
+ common_set = dict()
32
+ e2e_set = dict()
33
+
34
+ common_set = dict()
35
+ common_set["dump_mode"] = 0
36
+ common_set["path"] = ""
37
+ common_set["net_name"] = "Net"
38
+ common_set["iteration"] = "all"
39
+ common_set["saved_data"] = "statistic"
40
+ common_set["input_output"] = 0
41
+ common_set["kernels"] = []
42
+ common_set["support_device"] = [0, 1, 2, 3, 4, 5, 6, 7]
43
+ e2e_set = dict()
44
+ e2e_set["enable"] = True
45
+ e2e_set["trans_flag"] = True
46
+
47
+ if config.list:
48
+ common_set["dump_mode"] = 1
49
+ common_set["kernels"] = config.list
50
+ common_set["path"] = config.dump_path
51
+ if config.step:
52
+ step_str = ""
53
+ for s in config.step:
54
+ step_str += (str(s) + '|')
55
+ common_set["iteration"] = step_str[:-1]
56
+ if config.rank:
57
+ common_set["support_device"] = config.rank
58
+ if config.task == Const.TENSOR:
59
+ common_set["saved_data"] = Const.TENSOR
60
+ if len(config.data_mode) == 1:
61
+ if config.data_mode[0] == Const.INPUT:
62
+ common_set["input_output"] = 1
63
+ if config.data_mode[0] == Const.OUTPUT:
64
+ common_set["input_output"] = 2
65
+
66
+ self.dump_json[KernelKbykDump.COMMON_SETTINGS] = common_set
67
+ self.dump_json[KernelKbykDump.E2E_SETTINGS] = e2e_set
68
+
69
+ def handle(self):
70
+ json_path = self.dump_json[KernelKbykDump.COMMON_SETTINGS]["path"]
71
+ create_directory(json_path)
72
+ json_path = os.path.join(json_path, "kernel_kbyk_dump.json")
73
+ with FileOpen(json_path, 'w') as f:
74
+ json.dump(self.dump_json, f)
75
+ logger.info(json_path + " has been created.")
76
+
77
+ os.environ["MINDSPORE_DUMP_CONFIG"] = json_path
78
+ if "MS_ACL_DUMP_CFG_PATH" in os.environ:
79
+ del os.environ["MS_ACL_DUMP_CFG_PATH"]