mindspore 2.4.10__cp310-cp310-win_amd64.whl → 2.6.0rc1__cp310-cp310-win_amd64.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.

Potentially problematic release.


This version of mindspore might be problematic. Click here for more details.

Files changed (602) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
  3. mindspore/Newtonsoft.Json.dll +0 -0
  4. mindspore/__init__.py +13 -6
  5. mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
  8. mindspore/_check_jit_forbidden_api.py +3 -0
  9. mindspore/_checkparam.py +3 -38
  10. mindspore/_deprecated/__init__.py +17 -0
  11. mindspore/_deprecated/jit.py +198 -0
  12. mindspore/_extends/builtin_operations.py +1 -1
  13. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  14. mindspore/_extends/parse/__init__.py +6 -7
  15. mindspore/_extends/parse/compile_config.py +83 -0
  16. mindspore/_extends/parse/deprecated/__init__.py +0 -0
  17. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
  18. mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
  19. mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
  20. mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
  21. mindspore/_extends/parse/parser.py +46 -197
  22. mindspore/_extends/parse/resources.py +1 -5
  23. mindspore/_extends/parse/standard_method.py +217 -98
  24. mindspore/_extends/pijit/__init__.py +2 -2
  25. mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
  26. mindspore/_extends/pijit/tensor_func_list.py +27 -0
  27. mindspore/_extends/utils.py +1 -1
  28. mindspore/amp.py +11 -5
  29. mindspore/atlprov.dll +0 -0
  30. mindspore/avcodec-59.dll +0 -0
  31. mindspore/avdevice-59.dll +0 -0
  32. mindspore/avfilter-8.dll +0 -0
  33. mindspore/avformat-59.dll +0 -0
  34. mindspore/avutil-57.dll +0 -0
  35. mindspore/boost/__init__.py +2 -2
  36. mindspore/boost/base.py +3 -7
  37. mindspore/boost/boost_cell_wrapper.py +138 -43
  38. mindspore/c1.dll +0 -0
  39. mindspore/c1xx.dll +0 -0
  40. mindspore/c2.dll +0 -0
  41. mindspore/common/__init__.py +6 -3
  42. mindspore/common/_grad_function.py +56 -0
  43. mindspore/common/_pijit_context.py +14 -5
  44. mindspore/common/_register_for_tensor.py +1 -2
  45. mindspore/common/_stub_tensor.py +30 -14
  46. mindspore/common/_tensor_cpp_method.py +17 -0
  47. mindspore/common/_tensor_docs.py +4760 -0
  48. mindspore/common/api.py +435 -371
  49. mindspore/common/auto_dynamic_shape.py +41 -44
  50. mindspore/common/dtype.py +39 -36
  51. mindspore/common/dump.py +9 -6
  52. mindspore/common/file_system.py +9 -1
  53. mindspore/common/generator.py +2 -0
  54. mindspore/common/hook_handle.py +6 -2
  55. mindspore/common/initializer.py +13 -10
  56. mindspore/common/jit_begin_end.py +94 -0
  57. mindspore/common/jit_config.py +6 -1
  58. mindspore/common/jit_context.py +76 -0
  59. mindspore/common/jit_trace.py +378 -0
  60. mindspore/common/lazy_inline.py +9 -3
  61. mindspore/common/mindir_util.py +10 -2
  62. mindspore/common/mutable.py +5 -4
  63. mindspore/common/parameter.py +135 -52
  64. mindspore/common/seed.py +2 -2
  65. mindspore/common/sparse_tensor.py +23 -17
  66. mindspore/common/tensor.py +951 -1992
  67. mindspore/communication/__init__.py +7 -5
  68. mindspore/communication/_comm_helper.py +52 -2
  69. mindspore/communication/comm_func.py +240 -181
  70. mindspore/communication/management.py +95 -26
  71. mindspore/context.py +314 -566
  72. mindspore/dataset/__init__.py +65 -37
  73. mindspore/dataset/audio/__init__.py +2 -8
  74. mindspore/dataset/audio/transforms.py +3 -17
  75. mindspore/dataset/callback/ds_callback.py +2 -1
  76. mindspore/dataset/core/config.py +87 -6
  77. mindspore/dataset/engine/cache_admin.py +3 -3
  78. mindspore/dataset/engine/cache_client.py +6 -5
  79. mindspore/dataset/engine/datasets.py +292 -267
  80. mindspore/dataset/engine/datasets_audio.py +22 -8
  81. mindspore/dataset/engine/datasets_standard_format.py +46 -27
  82. mindspore/dataset/engine/datasets_text.py +78 -48
  83. mindspore/dataset/engine/datasets_user_defined.py +182 -116
  84. mindspore/dataset/engine/datasets_vision.py +120 -44
  85. mindspore/dataset/engine/iterators.py +283 -63
  86. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  87. mindspore/dataset/engine/obs/util.py +8 -0
  88. mindspore/dataset/engine/queue.py +40 -0
  89. mindspore/dataset/engine/samplers.py +289 -43
  90. mindspore/dataset/engine/serializer_deserializer.py +3 -2
  91. mindspore/dataset/engine/validators.py +53 -11
  92. mindspore/dataset/text/__init__.py +7 -6
  93. mindspore/dataset/text/transforms.py +6 -5
  94. mindspore/dataset/text/utils.py +3 -3
  95. mindspore/dataset/transforms/__init__.py +0 -9
  96. mindspore/dataset/transforms/py_transforms_util.py +17 -0
  97. mindspore/dataset/transforms/transforms.py +31 -14
  98. mindspore/dataset/utils/browse_dataset.py +1 -1
  99. mindspore/dataset/vision/__init__.py +2 -9
  100. mindspore/dataset/vision/transforms.py +202 -158
  101. mindspore/dataset/vision/utils.py +7 -5
  102. mindspore/dataset/vision/validators.py +1 -2
  103. mindspore/device_context/__init__.py +21 -0
  104. mindspore/device_context/ascend/__init__.py +25 -0
  105. mindspore/device_context/ascend/device.py +72 -0
  106. mindspore/device_context/ascend/op_debug.py +153 -0
  107. mindspore/device_context/ascend/op_precision.py +193 -0
  108. mindspore/device_context/ascend/op_tuning.py +123 -0
  109. mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
  110. mindspore/device_context/cpu/device.py +62 -0
  111. mindspore/device_context/cpu/op_tuning.py +43 -0
  112. mindspore/device_context/gpu/__init__.py +21 -0
  113. mindspore/device_context/gpu/device.py +70 -0
  114. mindspore/device_context/gpu/op_precision.py +67 -0
  115. mindspore/device_context/gpu/op_tuning.py +175 -0
  116. mindspore/device_manager.py +170 -0
  117. mindspore/dnnl.dll +0 -0
  118. mindspore/dpcmi.dll +0 -0
  119. mindspore/experimental/es/embedding_service.py +35 -27
  120. mindspore/experimental/llm_boost/__init__.py +1 -0
  121. mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
  122. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
  123. mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
  124. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  125. mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
  126. mindspore/experimental/llm_boost/register.py +1 -0
  127. mindspore/experimental/map_parameter.py +4 -4
  128. mindspore/experimental/optim/adadelta.py +6 -6
  129. mindspore/experimental/optim/adagrad.py +4 -4
  130. mindspore/experimental/optim/adam.py +7 -0
  131. mindspore/experimental/optim/adamax.py +4 -4
  132. mindspore/experimental/optim/adamw.py +4 -0
  133. mindspore/experimental/optim/asgd.py +1 -1
  134. mindspore/experimental/optim/lr_scheduler.py +73 -46
  135. mindspore/experimental/optim/radam.py +34 -31
  136. mindspore/experimental/optim/rprop.py +1 -1
  137. mindspore/experimental/optim/sgd.py +1 -1
  138. mindspore/hal/contiguous_tensors_handle.py +6 -10
  139. mindspore/hal/device.py +55 -53
  140. mindspore/hal/event.py +52 -52
  141. mindspore/hal/memory.py +157 -117
  142. mindspore/hal/stream.py +150 -109
  143. mindspore/include/api/context.h +0 -1
  144. mindspore/include/dataset/constants.h +7 -4
  145. mindspore/include/dataset/execute.h +2 -2
  146. mindspore/jpeg62.dll +0 -0
  147. mindspore/log.py +50 -0
  148. mindspore/mindrecord/__init__.py +21 -8
  149. mindspore/mindrecord/config.py +17 -316
  150. mindspore/mindrecord/filereader.py +1 -9
  151. mindspore/mindrecord/filewriter.py +5 -15
  152. mindspore/mindrecord/mindpage.py +1 -9
  153. mindspore/mindspore_backend_common.dll +0 -0
  154. mindspore/mindspore_backend_manager.dll +0 -0
  155. mindspore/mindspore_common.dll +0 -0
  156. mindspore/mindspore_core.dll +0 -0
  157. mindspore/mindspore_dump.dll +0 -0
  158. mindspore/mindspore_frontend.dll +0 -0
  159. mindspore/mindspore_glog.dll +0 -0
  160. mindspore/mindspore_memory_pool.dll +0 -0
  161. mindspore/mindspore_ms_backend.dll +0 -0
  162. mindspore/mindspore_ops.dll +0 -0
  163. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  164. mindspore/mindspore_ops_kernel_common.dll +0 -0
  165. mindspore/mindspore_profiler.dll +0 -0
  166. mindspore/mindspore_pyboost.dll +0 -0
  167. mindspore/mindspore_pynative.dll +0 -0
  168. mindspore/mindspore_res_manager.dll +0 -0
  169. mindspore/mindspore_runtime_pipeline.dll +0 -0
  170. mindspore/mint/__init__.py +796 -759
  171. mindspore/mint/distributed/__init__.py +70 -4
  172. mindspore/mint/distributed/distributed.py +2679 -44
  173. mindspore/mint/linalg/__init__.py +8 -0
  174. mindspore/mint/nn/__init__.py +743 -22
  175. mindspore/mint/nn/functional.py +716 -23
  176. mindspore/mint/nn/layer/__init__.py +21 -4
  177. mindspore/mint/nn/layer/_functions.py +334 -0
  178. mindspore/mint/nn/layer/activation.py +276 -1
  179. mindspore/mint/nn/layer/basic.py +123 -0
  180. mindspore/mint/nn/layer/conv.py +921 -0
  181. mindspore/mint/nn/layer/normalization.py +223 -28
  182. mindspore/mint/nn/layer/padding.py +797 -0
  183. mindspore/mint/nn/layer/pooling.py +235 -0
  184. mindspore/mint/optim/__init__.py +3 -1
  185. mindspore/mint/optim/adam.py +223 -0
  186. mindspore/mint/optim/adamw.py +26 -19
  187. mindspore/mint/optim/sgd.py +171 -0
  188. mindspore/mint/special/__init__.py +2 -1
  189. mindspore/msobj140.dll +0 -0
  190. mindspore/mspdb140.dll +0 -0
  191. mindspore/mspdbcore.dll +0 -0
  192. mindspore/mspdbst.dll +0 -0
  193. mindspore/mspft140.dll +0 -0
  194. mindspore/msvcdis140.dll +0 -0
  195. mindspore/msvcp140_1.dll +0 -0
  196. mindspore/msvcp140_2.dll +0 -0
  197. mindspore/msvcp140_atomic_wait.dll +0 -0
  198. mindspore/msvcp140_codecvt_ids.dll +0 -0
  199. mindspore/multiprocessing/__init__.py +5 -0
  200. mindspore/nn/__init__.py +4 -1
  201. mindspore/nn/cell.py +1370 -189
  202. mindspore/nn/dynamic_lr.py +2 -1
  203. mindspore/nn/layer/activation.py +29 -27
  204. mindspore/nn/layer/basic.py +51 -35
  205. mindspore/nn/layer/channel_shuffle.py +3 -3
  206. mindspore/nn/layer/container.py +1 -1
  207. mindspore/nn/layer/conv.py +22 -17
  208. mindspore/nn/layer/embedding.py +12 -11
  209. mindspore/nn/layer/normalization.py +56 -49
  210. mindspore/nn/layer/padding.py +4 -3
  211. mindspore/nn/layer/pooling.py +120 -42
  212. mindspore/nn/layer/rnn_cells.py +1 -1
  213. mindspore/nn/layer/rnns.py +2 -1
  214. mindspore/nn/layer/timedistributed.py +5 -5
  215. mindspore/nn/layer/transformer.py +59 -36
  216. mindspore/nn/learning_rate_schedule.py +8 -4
  217. mindspore/nn/loss/loss.py +58 -55
  218. mindspore/nn/optim/ada_grad.py +7 -5
  219. mindspore/nn/optim/adadelta.py +11 -9
  220. mindspore/nn/optim/adafactor.py +1 -1
  221. mindspore/nn/optim/adam.py +17 -13
  222. mindspore/nn/optim/adamax.py +8 -7
  223. mindspore/nn/optim/adasum.py +5 -5
  224. mindspore/nn/optim/asgd.py +1 -1
  225. mindspore/nn/optim/ftrl.py +11 -9
  226. mindspore/nn/optim/lamb.py +1 -1
  227. mindspore/nn/optim/lars.py +1 -4
  228. mindspore/nn/optim/lazyadam.py +12 -10
  229. mindspore/nn/optim/momentum.py +7 -6
  230. mindspore/nn/optim/optimizer.py +3 -3
  231. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  232. mindspore/nn/optim/rmsprop.py +13 -12
  233. mindspore/nn/optim/rprop.py +11 -9
  234. mindspore/nn/optim/sgd.py +9 -6
  235. mindspore/nn/optim/tft_wrapper.py +5 -2
  236. mindspore/nn/optim/thor.py +2 -1
  237. mindspore/nn/probability/bijector/bijector.py +17 -11
  238. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  239. mindspore/nn/probability/bijector/invert.py +2 -2
  240. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  241. mindspore/nn/probability/bijector/softplus.py +3 -2
  242. mindspore/nn/probability/distribution/beta.py +3 -3
  243. mindspore/nn/probability/distribution/categorical.py +1 -1
  244. mindspore/nn/probability/distribution/cauchy.py +4 -2
  245. mindspore/nn/probability/distribution/exponential.py +6 -7
  246. mindspore/nn/probability/distribution/gamma.py +2 -2
  247. mindspore/nn/probability/distribution/gumbel.py +2 -2
  248. mindspore/nn/probability/distribution/half_normal.py +5 -3
  249. mindspore/nn/probability/distribution/logistic.py +5 -3
  250. mindspore/nn/probability/distribution/poisson.py +1 -1
  251. mindspore/nn/probability/distribution/uniform.py +5 -3
  252. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  253. mindspore/nn/reinforcement/tensor_array.py +1 -1
  254. mindspore/nn/utils/init.py +13 -11
  255. mindspore/nn/wrap/__init__.py +6 -6
  256. mindspore/nn/wrap/cell_wrapper.py +181 -122
  257. mindspore/nn/wrap/grad_reducer.py +45 -36
  258. mindspore/nn/wrap/loss_scale.py +6 -7
  259. mindspore/numpy/array_creations.py +63 -65
  260. mindspore/numpy/array_ops.py +149 -144
  261. mindspore/numpy/logic_ops.py +41 -42
  262. mindspore/numpy/math_ops.py +365 -363
  263. mindspore/numpy/utils.py +17 -18
  264. mindspore/numpy/utils_const.py +5 -6
  265. mindspore/opencv_core452.dll +0 -0
  266. mindspore/opencv_imgcodecs452.dll +0 -0
  267. mindspore/opencv_imgproc452.dll +0 -0
  268. mindspore/ops/__init__.py +5 -3
  269. mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
  270. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
  271. mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
  272. mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
  273. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  274. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  275. mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
  276. mindspore/ops/_register_for_op.py +0 -11
  277. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  278. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
  279. mindspore/ops/_vmap/vmap_array_ops.py +27 -25
  280. mindspore/ops/_vmap/vmap_base.py +0 -2
  281. mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
  282. mindspore/ops/_vmap/vmap_math_ops.py +15 -16
  283. mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
  284. mindspore/ops/auto_generate/__init__.py +4 -3
  285. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +236 -46
  286. mindspore/ops/auto_generate/gen_extend_func.py +764 -124
  287. mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
  288. mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
  289. mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
  290. mindspore/ops/composite/__init__.py +2 -1
  291. mindspore/ops/composite/base.py +20 -25
  292. mindspore/ops/composite/math_ops.py +6 -16
  293. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  294. mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
  295. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  296. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  297. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  298. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  299. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  300. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  301. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  302. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  303. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  304. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  305. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  306. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  307. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  308. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  309. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  310. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  311. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  312. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  313. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  314. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  315. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  316. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  317. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  318. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  319. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  320. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
  321. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  322. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  323. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  324. mindspore/ops/function/__init__.py +40 -2
  325. mindspore/ops/function/_add_attr_func.py +58 -0
  326. mindspore/ops/function/array_func.py +2089 -2403
  327. mindspore/ops/function/clip_func.py +80 -23
  328. mindspore/ops/function/debug_func.py +57 -57
  329. mindspore/ops/function/grad/__init__.py +1 -0
  330. mindspore/ops/function/grad/grad_func.py +104 -71
  331. mindspore/ops/function/image_func.py +2 -2
  332. mindspore/ops/function/linalg_func.py +47 -78
  333. mindspore/ops/function/math_func.py +4501 -3802
  334. mindspore/ops/function/nn_func.py +1726 -620
  335. mindspore/ops/function/other_func.py +159 -1
  336. mindspore/ops/function/parameter_func.py +18 -84
  337. mindspore/ops/function/random_func.py +440 -387
  338. mindspore/ops/function/reshard_func.py +4 -70
  339. mindspore/ops/function/sparse_func.py +3 -3
  340. mindspore/ops/function/sparse_unary_func.py +6 -6
  341. mindspore/ops/function/spectral_func.py +25 -58
  342. mindspore/ops/function/vmap_func.py +24 -17
  343. mindspore/ops/functional.py +22 -7
  344. mindspore/ops/functional_overload.py +1440 -0
  345. mindspore/ops/op_info_register.py +32 -244
  346. mindspore/ops/operations/__init__.py +13 -7
  347. mindspore/ops/operations/_custom_ops_utils.py +247 -0
  348. mindspore/ops/operations/_embedding_cache_ops.py +4 -4
  349. mindspore/ops/operations/_grad_ops.py +2 -43
  350. mindspore/ops/operations/_infer_ops.py +2 -1
  351. mindspore/ops/operations/_inner_ops.py +43 -84
  352. mindspore/ops/operations/_ms_kernel.py +4 -10
  353. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  354. mindspore/ops/operations/_scalar_ops.py +3 -2
  355. mindspore/ops/operations/_sequence_ops.py +1 -1
  356. mindspore/ops/operations/_tensor_array.py +1 -1
  357. mindspore/ops/operations/array_ops.py +81 -324
  358. mindspore/ops/operations/comm_ops.py +154 -108
  359. mindspore/ops/operations/custom_ops.py +232 -78
  360. mindspore/ops/operations/debug_ops.py +153 -59
  361. mindspore/ops/operations/inner_ops.py +7 -5
  362. mindspore/ops/operations/linalg_ops.py +1 -57
  363. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  364. mindspore/ops/operations/manually_defined/ops_def.py +928 -180
  365. mindspore/ops/operations/math_ops.py +32 -234
  366. mindspore/ops/operations/nn_ops.py +210 -498
  367. mindspore/ops/operations/other_ops.py +62 -9
  368. mindspore/ops/operations/random_ops.py +13 -7
  369. mindspore/ops/operations/reshard_ops.py +1 -1
  370. mindspore/ops/operations/sparse_ops.py +2 -2
  371. mindspore/ops/primitive.py +66 -53
  372. mindspore/ops/tensor_method.py +1888 -0
  373. mindspore/ops_generate/__init__.py +0 -5
  374. mindspore/ops_generate/aclnn/__init__.py +0 -0
  375. mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
  376. mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
  377. mindspore/ops_generate/api/__init__.py +0 -0
  378. mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
  379. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
  380. mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
  381. mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
  382. mindspore/ops_generate/api/functions_cc_generator.py +237 -0
  383. mindspore/ops_generate/api/gen_api.py +103 -0
  384. mindspore/ops_generate/api/op_api_proto.py +235 -0
  385. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
  386. mindspore/ops_generate/common/__init__.py +0 -0
  387. mindspore/ops_generate/common/base_generator.py +11 -0
  388. mindspore/ops_generate/common/gen_constants.py +91 -0
  389. mindspore/ops_generate/common/gen_utils.py +348 -0
  390. mindspore/ops_generate/common/op_proto.py +473 -0
  391. mindspore/ops_generate/common/template.py +523 -0
  392. mindspore/ops_generate/gen_ops.py +22 -1069
  393. mindspore/ops_generate/op_def/__init__.py +0 -0
  394. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  395. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
  396. mindspore/ops_generate/op_def/ops_def_cc_generator.py +299 -0
  397. mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
  398. mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
  399. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  400. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  401. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  402. mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
  403. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
  404. mindspore/ops_generate/pyboost/__init__.py +0 -0
  405. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
  406. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
  407. mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
  408. mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
  409. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
  410. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
  411. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
  412. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
  413. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
  414. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
  415. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
  416. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
  417. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
  418. mindspore/ops_generate/resources/__init__.py +0 -0
  419. mindspore/ops_generate/resources/resource_list.py +30 -0
  420. mindspore/ops_generate/resources/resource_loader.py +36 -0
  421. mindspore/ops_generate/resources/resource_manager.py +64 -0
  422. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  423. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  424. mindspore/parallel/__init__.py +7 -3
  425. mindspore/parallel/_auto_parallel_context.py +152 -34
  426. mindspore/parallel/_cell_wrapper.py +130 -15
  427. mindspore/parallel/_parallel_serialization.py +107 -5
  428. mindspore/parallel/_ps_context.py +1 -1
  429. mindspore/parallel/_recovery_context.py +7 -2
  430. mindspore/parallel/_tensor.py +142 -18
  431. mindspore/parallel/_utils.py +199 -23
  432. mindspore/parallel/algo_parameter_config.py +4 -4
  433. mindspore/parallel/auto_parallel.py +732 -0
  434. mindspore/parallel/checkpoint_convert.py +159 -0
  435. mindspore/parallel/checkpoint_transform.py +698 -35
  436. mindspore/parallel/cluster/process_entity/_api.py +276 -50
  437. mindspore/parallel/cluster/process_entity/_utils.py +41 -6
  438. mindspore/parallel/cluster/run.py +21 -4
  439. mindspore/parallel/function/__init__.py +24 -0
  440. mindspore/parallel/function/reshard_func.py +259 -0
  441. mindspore/parallel/nn/__init__.py +25 -0
  442. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  443. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  444. mindspore/parallel/parameter_broadcast.py +25 -14
  445. mindspore/parallel/shard.py +137 -58
  446. mindspore/parallel/transform_safetensors.py +363 -305
  447. mindspore/pgodb140.dll +0 -0
  448. mindspore/pgort140.dll +0 -0
  449. mindspore/profiler/__init__.py +22 -5
  450. mindspore/profiler/analysis/__init__.py +0 -0
  451. mindspore/profiler/analysis/parser/__init__.py +0 -0
  452. mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
  453. mindspore/profiler/analysis/parser/base_parser.py +158 -0
  454. mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
  455. mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
  456. mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
  457. mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
  458. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
  459. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
  460. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +106 -0
  461. mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
  462. mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
  463. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
  464. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
  465. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
  466. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
  467. mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
  468. mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
  469. mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
  470. mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
  471. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
  472. mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
  473. mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
  474. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
  475. mindspore/profiler/analysis/task_manager.py +131 -0
  476. mindspore/profiler/analysis/time_converter.py +84 -0
  477. mindspore/profiler/analysis/viewer/__init__.py +0 -0
  478. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
  479. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
  480. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
  481. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
  482. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
  483. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
  484. mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
  485. mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
  486. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
  487. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
  488. mindspore/profiler/analysis/work_flow.py +73 -0
  489. mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
  490. mindspore/profiler/common/command_executor.py +90 -0
  491. mindspore/profiler/common/constant.py +186 -3
  492. mindspore/profiler/common/file_manager.py +208 -0
  493. mindspore/profiler/common/log.py +130 -0
  494. mindspore/profiler/common/msprof_cmd_tool.py +221 -0
  495. mindspore/profiler/common/path_manager.py +395 -0
  496. mindspore/profiler/common/process_bar.py +168 -0
  497. mindspore/profiler/common/process_pool.py +9 -3
  498. mindspore/profiler/common/profiler_context.py +500 -0
  499. mindspore/profiler/common/profiler_info.py +304 -0
  500. mindspore/profiler/common/profiler_meta_data.py +74 -0
  501. mindspore/profiler/common/profiler_output_path.py +284 -0
  502. mindspore/profiler/common/profiler_parameters.py +251 -0
  503. mindspore/profiler/common/profiler_path_manager.py +179 -0
  504. mindspore/profiler/common/record_function.py +76 -0
  505. mindspore/profiler/common/tlv_decoder.py +76 -0
  506. mindspore/profiler/common/util.py +75 -2
  507. mindspore/profiler/dynamic_profiler.py +341 -75
  508. mindspore/profiler/envprofiler.py +163 -0
  509. mindspore/profiler/experimental_config.py +197 -0
  510. mindspore/profiler/mstx.py +242 -0
  511. mindspore/profiler/platform/__init__.py +21 -0
  512. mindspore/profiler/platform/base_profiler.py +40 -0
  513. mindspore/profiler/platform/cpu_profiler.py +124 -0
  514. mindspore/profiler/platform/gpu_profiler.py +74 -0
  515. mindspore/profiler/platform/npu_profiler.py +335 -0
  516. mindspore/profiler/profiler.py +1073 -90
  517. mindspore/profiler/profiler_action_controller.py +187 -0
  518. mindspore/profiler/profiler_interface.py +118 -0
  519. mindspore/profiler/schedule.py +243 -0
  520. mindspore/rewrite/api/node.py +15 -13
  521. mindspore/rewrite/api/symbol_tree.py +2 -3
  522. mindspore/run_check/_check_version.py +27 -20
  523. mindspore/run_check/run_check.py +1 -1
  524. mindspore/runtime/__init__.py +37 -0
  525. mindspore/runtime/device.py +27 -0
  526. mindspore/runtime/event.py +209 -0
  527. mindspore/runtime/executor.py +177 -0
  528. mindspore/runtime/memory.py +409 -0
  529. mindspore/runtime/stream.py +460 -0
  530. mindspore/runtime/thread_bind_core.py +401 -0
  531. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  532. mindspore/swresample-4.dll +0 -0
  533. mindspore/swscale-6.dll +0 -0
  534. mindspore/tbbmalloc.dll +0 -0
  535. mindspore/tinyxml2.dll +0 -0
  536. mindspore/train/__init__.py +8 -8
  537. mindspore/train/_utils.py +88 -25
  538. mindspore/train/amp.py +9 -5
  539. mindspore/train/callback/__init__.py +2 -2
  540. mindspore/train/callback/_callback.py +2 -16
  541. mindspore/train/callback/_checkpoint.py +53 -55
  542. mindspore/train/callback/_cluster_monitor.py +14 -18
  543. mindspore/train/callback/_early_stop.py +1 -1
  544. mindspore/train/callback/_flops_collector.py +103 -68
  545. mindspore/train/callback/_history.py +8 -5
  546. mindspore/train/callback/_lambda_callback.py +2 -2
  547. mindspore/train/callback/_landscape.py +0 -3
  548. mindspore/train/callback/_loss_monitor.py +2 -1
  549. mindspore/train/callback/_on_request_exit.py +6 -5
  550. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  551. mindspore/train/callback/_summary_collector.py +52 -19
  552. mindspore/train/callback/_time_monitor.py +2 -1
  553. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -107
  554. mindspore/train/data_sink.py +25 -2
  555. mindspore/train/dataset_helper.py +15 -16
  556. mindspore/train/loss_scale_manager.py +8 -7
  557. mindspore/train/metrics/accuracy.py +3 -3
  558. mindspore/train/metrics/confusion_matrix.py +9 -9
  559. mindspore/train/metrics/error.py +3 -3
  560. mindspore/train/metrics/hausdorff_distance.py +4 -4
  561. mindspore/train/metrics/mean_surface_distance.py +3 -3
  562. mindspore/train/metrics/metric.py +0 -12
  563. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  564. mindspore/train/metrics/precision.py +11 -10
  565. mindspore/train/metrics/recall.py +9 -9
  566. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  567. mindspore/train/mind_ir_pb2.py +174 -46
  568. mindspore/train/model.py +184 -113
  569. mindspore/train/serialization.py +622 -978
  570. mindspore/train/summary/_summary_adapter.py +2 -2
  571. mindspore/train/summary/summary_record.py +2 -3
  572. mindspore/train/train_thor/model_thor.py +1 -1
  573. mindspore/turbojpeg.dll +0 -0
  574. mindspore/utils/__init__.py +6 -3
  575. mindspore/utils/dryrun.py +140 -0
  576. mindspore/utils/hooks.py +81 -0
  577. mindspore/utils/runtime_execution_order_check.py +550 -0
  578. mindspore/utils/utils.py +138 -4
  579. mindspore/vcmeta.dll +0 -0
  580. mindspore/vcruntime140.dll +0 -0
  581. mindspore/vcruntime140_1.dll +0 -0
  582. mindspore/version.py +1 -1
  583. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +3 -3
  584. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +587 -418
  585. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +1 -1
  586. mindspore/_install_custom.py +0 -43
  587. mindspore/common/_register_for_adapter.py +0 -74
  588. mindspore/common/_tensor_overload.py +0 -139
  589. mindspore/mindspore_np_dtype.dll +0 -0
  590. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  591. mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
  592. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  593. mindspore/ops_generate/gen_aclnn_implement.py +0 -263
  594. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  595. mindspore/ops_generate/gen_pyboost_func.py +0 -1052
  596. mindspore/ops_generate/gen_utils.py +0 -209
  597. mindspore/ops_generate/op_proto.py +0 -145
  598. mindspore/ops_generate/template.py +0 -261
  599. mindspore/profiler/envprofiling.py +0 -254
  600. mindspore/profiler/profiling.py +0 -1926
  601. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
  602. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,372 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Ascend communication viewer"""
16
+ import os
17
+ import re
18
+ from collections import defaultdict
19
+
20
+ from typing import Dict
21
+ from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
22
+ from mindspore.profiler.common.file_manager import FileManager
23
+ from mindspore.profiler.common.log import ProfilerLogger
24
+
25
+ from mindspore import log as logger
26
+ from mindspore.profiler.common.constant import JitLevel
27
+
28
+
29
+ class AscendCommunicationViewer(BaseViewer):
30
+ """Ascend communication viewer"""
31
+
32
+ COMMUNICATION_TIME_INFO = "Communication Time Info"
33
+ START_TIMESTAMP = "Start Timestamp(us)"
34
+ COMMUNICATION_BANDWIDTH_INFO = "Communication Bandwidth Info"
35
+ HCOM_SEND = "Send"
36
+ HCOM_RECEIVE = "Receive"
37
+ TOTAL = "Total"
38
+ SYNCHRONIZATION_TIME_RATIO = "Synchronization Time Ratio"
39
+ SYNCHRONIZATION_TIME_MS = "Synchronization Time(ms)"
40
+ WAIT_TIME_RATIO = "Wait Time Ratio"
41
+ TRANSIT_TIME_MS = "Transit Time(ms)"
42
+ TRANSIT_SIZE_MB = "Transit Size(MB)"
43
+ SIZE_DISTRIBUTION = "Size Distribution"
44
+ WAIT_TIME_MS = "Wait Time(ms)"
45
+ BANDWIDTH_GB_S = "Bandwidth(GB/s)"
46
+ COMMUNICATION = "communication.json"
47
+ COMMUNICATION_MATRIX = "communication_matrix.json"
48
+ P2P = "p2p"
49
+ COLLECTIVE = "collective"
50
+ TRANSPORT_TYPE = "Transport Type"
51
+ PATTERN1 = re.compile(r"receive|send")
52
+ PATTERN2 = re.compile(r"invalid|broadcast|allreduce|reduce|"
53
+ r"allgather|reducescatter|scatter|alltoall|alltoallv|alltoallvc")
54
+
55
+ def __init__(self, **kwargs):
56
+ super().__init__()
57
+ self.step_list = []
58
+ self.output_communication = {}
59
+ self.output_matrix_data = {}
60
+ self._output_path = kwargs.get("ascend_profiler_output_path")
61
+ self._msprof_analyze_output_path = kwargs.get("msprof_analyze_output_path")
62
+ self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
63
+ self._is_set_schedule = kwargs.get("is_set_schedule")
64
+ self._jit_level = kwargs.get("jit_level")
65
+ ProfilerLogger.init(self._ascend_ms_dir)
66
+ self._logger = ProfilerLogger.get_instance()
67
+ self._communication_input_path = os.path.join(
68
+ self._msprof_analyze_output_path,
69
+ self.COMMUNICATION
70
+ )
71
+ self._communication_matrix_input_path = os.path.join(
72
+ self._msprof_analyze_output_path,
73
+ self.COMMUNICATION_MATRIX
74
+ )
75
+ self._communication_output_path = os.path.join(
76
+ self._output_path,
77
+ self.COMMUNICATION
78
+ )
79
+ self._communication_matrix_output_path = os.path.join(
80
+ self._output_path,
81
+ self.COMMUNICATION_MATRIX
82
+ )
83
+
84
+ def save(self, data=None):
85
+ """
86
+ Save ascend integrate data.
87
+ """
88
+ self._logger.info("AscendCommunicationViewer start")
89
+ try:
90
+ self._init_step_list(data)
91
+ self._generate_communication()
92
+ self._generate_matrix()
93
+ self._save_analyze_data()
94
+ except Exception as e: # pylint: disable=W0703
95
+ self._logger.error("Failed to save ascend communication data, error: %s", e, exc_info=True)
96
+ self._logger.info("AscendCommunicationViewer end")
97
+
98
+ def _init_step_list(self, data):
99
+ """
100
+ Init step list.
101
+ """
102
+ trace_container = data.get("trace_view_container", None)
103
+ if trace_container is None:
104
+ raise ValueError("trace view container is None")
105
+ step_id_to_time_dict = trace_container.get_step_id_time_dict()
106
+
107
+ if not self._is_set_schedule or self._jit_level == JitLevel.GRAPH_LEVEL or not step_id_to_time_dict:
108
+ self._update_default_step_list()
109
+ else:
110
+ self._update_step_list(step_id_to_time_dict)
111
+
112
+ def _update_default_step_list(self):
113
+ """
114
+ When the step dict is empty, it is set to the default value.
115
+ """
116
+ self.step_list = [{"step_id": "0", "start_ts": 0, "end_ts": float('inf'), "comm_ops": {}}]
117
+
118
+ def _update_step_list(self, step_id_to_time_dict: Dict):
119
+ """
120
+ When the step dict is not empty, set a value that contains the step id.
121
+ """
122
+ for step_id, (start_time, end_time) in step_id_to_time_dict.items():
123
+ step_dict = {
124
+ "step_id": step_id,
125
+ "start_ts": start_time,
126
+ "end_ts": end_time,
127
+ "comm_ops": {}
128
+ }
129
+ self.step_list.append(step_dict)
130
+
131
+ def _save_analyze_data(self):
132
+ """
133
+ Save analyse data
134
+ """
135
+ self._logger.info("Save ascend communication data start")
136
+ if not self.output_communication:
137
+ return
138
+ FileManager.create_json_file(self._communication_output_path, self.output_communication)
139
+ self._logger.info("Save ascend communication data done")
140
+ if not self.output_matrix_data:
141
+ return
142
+ FileManager.create_json_file(self._communication_matrix_output_path, self.output_matrix_data)
143
+ self._logger.info("Save ascend communication matrix data done")
144
+
145
+ @staticmethod
146
+ def _combine_size_distribution(op_dict: dict, total_dict: dict):
147
+ """combine size distribution"""
148
+ for size, size_info in op_dict.items():
149
+ total_dict[size][0] += size_info[0]
150
+ total_dict[size][1] += size_info[1]
151
+
152
+ @staticmethod
153
+ def _compute_ratio(dividend: float, divisor: float):
154
+ """compute ratio"""
155
+ if abs(divisor) < 1e-15:
156
+ return 0
157
+ return round(dividend / divisor, 4)
158
+
159
+ def _generate_communication(self):
160
+ """
161
+ generate communication.json
162
+ """
163
+ if not os.path.exists(self._communication_input_path):
164
+ return
165
+ communication_data = FileManager.read_json_file(self._communication_input_path)
166
+ if not communication_data:
167
+ return
168
+ self._split_comm_op_by_step(communication_data)
169
+
170
+ for step_info in self.step_list:
171
+ step = "step" + step_info.get("step_id") if step_info.get("step_id") else "step"
172
+ self.output_communication[step] = self._get_communication_ops_dict(step_info.get("comm_ops"))
173
+
174
+ def _generate_matrix(self):
175
+ """generate matrix"""
176
+ if not os.path.exists(self._communication_matrix_input_path):
177
+ return
178
+ matrix_data = FileManager.read_json_file(self._communication_matrix_input_path)
179
+ if not matrix_data:
180
+ return
181
+ matrix_data_by_step = self._split_matrix_by_step(matrix_data)
182
+
183
+ for step, comm_matrix_data in matrix_data_by_step.items():
184
+ self.output_matrix_data[step] = self._get_matrix_ops_dict(comm_matrix_data)
185
+
186
+ def _split_comm_op_by_step(self, communication_data: dict):
187
+ """split comm op by step"""
188
+ if len(self.step_list) == 1:
189
+ self.step_list[0]["comm_ops"] = communication_data
190
+ for communication_op, communication_op_info in communication_data.items():
191
+ start_time = communication_op_info.get(self.COMMUNICATION_TIME_INFO, {}).get(self.START_TIMESTAMP)
192
+ for step_info in self.step_list:
193
+ if step_info.get("start_ts", -1) <= start_time <= step_info.get("end_ts", -1):
194
+ step_info.get("comm_ops", {})[communication_op] = communication_op_info
195
+ break
196
+
197
+ def _split_communication_p2p_ops(self, op_data: dict):
198
+ """
199
+ split communicate
200
+ """
201
+ comm_op_dict = {self.P2P: {}, self.COLLECTIVE: {}}
202
+ for communication_op, communication_info in op_data.items():
203
+ if communication_op.find(self.HCOM_SEND) != -1 or communication_op.find(self.HCOM_RECEIVE) != -1:
204
+ comm_op_dict[self.P2P][communication_op] = communication_info
205
+ elif communication_op.startswith(self.TOTAL):
206
+ continue
207
+ else:
208
+ comm_op_dict[self.COLLECTIVE][communication_op] = communication_info
209
+ return comm_op_dict
210
+
211
+ def _split_matrix_by_step(self, matrix_data: dict) -> dict:
212
+ """
213
+ split matrix by step
214
+ """
215
+ matrix_data_by_step = {}
216
+ if self._is_step_list_empty():
217
+ matrix_data_by_step["step"] = matrix_data
218
+ return matrix_data_by_step
219
+
220
+ for comm_op in matrix_data:
221
+ for step_info in self.step_list:
222
+ if comm_op in step_info.get("comm_ops", {}):
223
+ step = "step" + step_info.get("step_id") if step_info.get("step_id") else "step"
224
+ matrix_data_by_step.setdefault(step, {})[comm_op] = matrix_data.get(comm_op)
225
+ break
226
+ return matrix_data_by_step
227
+
228
+ def _get_communication_ops_dict(self, op_data: dict) -> dict:
229
+ """get communication ops dict"""
230
+ comm_op_dict = self._split_communication_p2p_ops(op_data)
231
+ self._compute_total_info(comm_op_dict[self.P2P])
232
+ self._compute_total_info(comm_op_dict[self.COLLECTIVE])
233
+ return comm_op_dict
234
+
235
+ def _integrate_matrix_data(self, comm_op_dict_simple):
236
+ """integrate the matrix data"""
237
+ comm_op_dict = defaultdict(dict)
238
+ for new_comm_op_name, data in comm_op_dict_simple.items():
239
+ data.sort(key=lambda x: x[self.BANDWIDTH_GB_S], reverse=True)
240
+ t_type = data[0].get(self.TRANSPORT_TYPE, '')
241
+ t_size = sum(x.get(self.TRANSIT_SIZE_MB, 0) for x in data)
242
+ t_time = sum(x.get(self.TRANSIT_TIME_MS, 0) for x in data)
243
+ bandwidth = self._compute_ratio(t_size, t_time)
244
+
245
+ link = new_comm_op_name[2]
246
+
247
+ comm_op_dict[f'{new_comm_op_name[0]}-top1@{new_comm_op_name[1]}'].update({link: data[0]})
248
+ comm_op_dict[f'{new_comm_op_name[0]}-middle@{new_comm_op_name[1]}'].update({link: data[len(data) // 2]})
249
+ comm_op_dict[f'{new_comm_op_name[0]}-bottom1@{new_comm_op_name[1]}'].update({link: data[-1]})
250
+ index2 = -2
251
+ index3 = -3
252
+ if len(data) == 1:
253
+ index2 = -1
254
+ index3 = -1
255
+ elif len(data) == 2:
256
+ index3 = -2
257
+ comm_op_dict[f'{new_comm_op_name[0]}-bottom2@{new_comm_op_name[1]}'].update({link: data[index2]})
258
+ comm_op_dict[f'{new_comm_op_name[0]}-bottom3@{new_comm_op_name[1]}'].update({link: data[index3]})
259
+ comm_op_dict[f'{new_comm_op_name[0]}-total@{new_comm_op_name[1]}'].update({link: {
260
+ self.TRANSPORT_TYPE: t_type,
261
+ self.TRANSIT_SIZE_MB: t_size,
262
+ self.TRANSIT_TIME_MS: t_time,
263
+ self.BANDWIDTH_GB_S: bandwidth
264
+ }})
265
+ return comm_op_dict
266
+
267
+ def _get_matrix_ops_dict(self, op_data: dict) -> dict:
268
+ """parse matrix data"""
269
+ comm_op_dict_simple_p2p = defaultdict(list)
270
+ comm_op_dict_simple_collective = defaultdict(list)
271
+
272
+ for communication_op, communication_info in op_data.items():
273
+ if communication_op.find(self.HCOM_SEND) != -1 or communication_op.find(self.HCOM_RECEIVE) != -1:
274
+
275
+ match_obj = self.PATTERN1.search(communication_op.lower())
276
+ comm_op_type = match_obj.group()
277
+ for link, data in communication_info.items():
278
+ new_comm_op_name = (comm_op_type, communication_op.split("@")[-1], link)
279
+ data['op_name'] = communication_op.split("@")[0]
280
+ comm_op_dict_simple_p2p[new_comm_op_name].append(data)
281
+
282
+ elif communication_op.startswith(self.TOTAL):
283
+ continue
284
+ else:
285
+ match_obj = self.PATTERN2.search(communication_op.lower())
286
+ if not match_obj:
287
+ comm_op_type = communication_op.lower().split('/')[-1].split('-op')[0]
288
+ logger.warning(
289
+ "Communication operator type not found communication_op: %s, use comm_op_type: %s",
290
+ communication_op, comm_op_type)
291
+ else:
292
+ comm_op_type = match_obj.group()
293
+ for link, data in communication_info.items():
294
+ new_comm_op_name = (comm_op_type, communication_op.split("@")[-1], link)
295
+ data['op_name'] = communication_op.split("@")[0]
296
+ comm_op_dict_simple_collective[new_comm_op_name].append(data)
297
+
298
+ comm_op_dict = {self.P2P: self._integrate_matrix_data(comm_op_dict_simple_p2p),
299
+ self.COLLECTIVE: self._integrate_matrix_data(comm_op_dict_simple_collective)}
300
+
301
+ return comm_op_dict
302
+
303
+ def _is_step_list_empty(self):
304
+ """is step list empty"""
305
+ for step_info in self.step_list:
306
+ if step_info.get("comm_ops"):
307
+ return False
308
+ return True
309
+
310
+ def _compute_total_info(self, comm_ops: dict):
311
+ """
312
+ compute total info
313
+ """
314
+ if not comm_ops:
315
+ return
316
+ total_time_info_dict = defaultdict(float)
317
+ total_bandwidth_info_dict = {}
318
+ for _, communication_op_info in comm_ops.items():
319
+ for com_info, com_info_dict in communication_op_info.items():
320
+ if com_info == self.COMMUNICATION_TIME_INFO:
321
+ self._combine_time_info(com_info_dict, total_time_info_dict)
322
+ if com_info == self.COMMUNICATION_BANDWIDTH_INFO:
323
+ self._combine_bandwidth_info(com_info_dict, total_bandwidth_info_dict)
324
+ self._compute_time_ratio(total_time_info_dict)
325
+ self._compute_bandwidth_ratio(total_bandwidth_info_dict)
326
+ comm_ops['Total Op Info'] = {
327
+ self.COMMUNICATION_TIME_INFO: total_time_info_dict,
328
+ self.COMMUNICATION_BANDWIDTH_INFO: total_bandwidth_info_dict
329
+ }
330
+
331
+ def _combine_time_info(self, com_info_dict: dict, total_time_info_dict: dict):
332
+ """combine time info"""
333
+ ratio_list = [self.WAIT_TIME_RATIO, self.SYNCHRONIZATION_TIME_RATIO]
334
+ for time_info in com_info_dict:
335
+ if time_info not in ratio_list and time_info != self.START_TIMESTAMP:
336
+ total_time_info_dict[time_info] += com_info_dict.get(time_info)
337
+
338
+ def _combine_bandwidth_info(self, com_info_dict: dict, total_bandwidth_info_dict: dict):
339
+ """
340
+ combine bandwidth info
341
+ """
342
+ add_list = [self.TRANSIT_TIME_MS, self.TRANSIT_SIZE_MB]
343
+ dict_list = [self.SIZE_DISTRIBUTION]
344
+ for transport_type, part_transport_dict in com_info_dict.items():
345
+ if transport_type not in total_bandwidth_info_dict:
346
+ total_bandwidth_info_dict[transport_type] = {
347
+ self.TRANSIT_TIME_MS: 0,
348
+ self.TRANSIT_SIZE_MB: 0,
349
+ self.SIZE_DISTRIBUTION: defaultdict(lambda: [0, 0])
350
+ }
351
+ for bandwidth_msg, value in part_transport_dict.items():
352
+ if bandwidth_msg in add_list:
353
+ total_bandwidth_info_dict[transport_type][bandwidth_msg] += value
354
+ if bandwidth_msg in dict_list:
355
+ self._combine_size_distribution(value, total_bandwidth_info_dict[transport_type][bandwidth_msg])
356
+
357
+ def _compute_time_ratio(self, total_time_info_dict: dict):
358
+ """compute time ratio"""
359
+ total_time_info_dict[self.WAIT_TIME_RATIO] = \
360
+ self._compute_ratio(total_time_info_dict.get(self.WAIT_TIME_MS, 0),
361
+ total_time_info_dict.get(self.WAIT_TIME_MS, 0) +
362
+ total_time_info_dict.get(self.TRANSIT_TIME_MS, 0))
363
+ total_time_info_dict[self.SYNCHRONIZATION_TIME_RATIO] = \
364
+ self._compute_ratio(total_time_info_dict.get(self.SYNCHRONIZATION_TIME_MS, 0),
365
+ total_time_info_dict.get(self.TRANSIT_TIME_MS, 0) +
366
+ total_time_info_dict.get(self.SYNCHRONIZATION_TIME_MS, 0))
367
+
368
+ def _compute_bandwidth_ratio(self, total_bandwidth_info_dict: dict):
369
+ """compute bandwidth ratio"""
370
+ for _, bandwidth_dict in total_bandwidth_info_dict.items():
371
+ self._compute_ratio(bandwidth_dict.get(self.TRANSIT_SIZE_MB, 0),
372
+ bandwidth_dict.get(self.TRANSIT_TIME_MS, 0))
@@ -0,0 +1,87 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """Ascend integrate viewer"""
16
+ import os
17
+ import glob
18
+ from typing import List
19
+
20
+ from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
21
+ from mindspore.profiler.common.file_manager import FileManager
22
+ from mindspore.profiler.common.log import ProfilerLogger
23
+
24
+
25
+ class AscendIntegrateViewer(BaseViewer):
26
+ """Ascend integrate viewer"""
27
+
28
+ CSV_PREFIX_NAME = ["l2_cache", "api_statistic", "op_statistic", "static_op_mem"]
29
+ AI_CPU_CSV_PATTERN = "aicpu_[0-9]*.csv"
30
+
31
+ def __init__(self, **kwargs):
32
+ super().__init__()
33
+ self._output_path = kwargs.get("ascend_profiler_output_path")
34
+ self._framework_path = kwargs.get("framework_path")
35
+ self._analyze_json_path = kwargs.get("analyze_json_path")
36
+ self._msprof_profile_output_path = kwargs.get("msprof_profile_output_path")
37
+ self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
38
+ ProfilerLogger.init(self._ascend_ms_dir)
39
+ self._logger = ProfilerLogger.get_instance()
40
+
41
+ def save(self, data=None):
42
+ """
43
+ Save ascend integrate data.
44
+ """
45
+ self._logger.info("AscendIntegrateViewer start")
46
+ try:
47
+ self._copy_msprof_csv_files()
48
+ self._copy_ai_cpu_csv_file()
49
+ except Exception as e: # pylint: disable=W0703
50
+ self._logger.error("Failed to save ascend integrate data, error: %s", e, exc_info=True)
51
+ self._logger.info("AscendIntegrateViewer end")
52
+
53
+ def _copy_csv_files(self, csv_names: List[str], source_path: str):
54
+ """
55
+ Copy CSV files from source path to output path.
56
+ Args:
57
+ csv_names (List[str]): List of CSV file name prefixes
58
+ source_path (str): Source directory path
59
+ """
60
+ self._logger.info("Copy csv files start")
61
+ for csv_name in csv_names:
62
+ src_file = os.path.join(source_path, csv_name + "_*")
63
+ src_file_list = glob.glob(src_file)
64
+ if src_file_list:
65
+ dst_file = os.path.join(self._output_path, csv_name + ".csv")
66
+ FileManager.copy_file(src_file_list[0], dst_file)
67
+ self._logger.info("Copy csv file %s to %s", src_file_list[0], dst_file)
68
+ self._logger.info("Copy csv files done")
69
+
70
+ def _copy_ai_cpu_csv_file(self):
71
+ """
72
+ Copy ai cpu csv files from source path to output path.
73
+ """
74
+ src_file = os.path.join(self._msprof_profile_output_path, self.AI_CPU_CSV_PATTERN)
75
+ src_file_list = glob.glob(src_file)
76
+ if src_file_list:
77
+ dst_file = os.path.join(self._output_path, "data_preprocess.csv")
78
+ FileManager.copy_file(src_file_list[0], dst_file)
79
+ self._logger.info("Copy aicpu file %s to %s", src_file_list[0], dst_file)
80
+ self._logger.info("Copy aicpu csv files done")
81
+
82
+ def _copy_msprof_csv_files(self):
83
+ """
84
+ Copy msprof csv files from source path to output path.
85
+ """
86
+ self._copy_csv_files(self.CSV_PREFIX_NAME, self._msprof_profile_output_path)
87
+ self._logger.info("Copy msprof csv files done")