mindspore 2.4.10__cp311-cp311-win_amd64.whl → 2.6.0__cp311-cp311-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.cp311-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp311-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 +47 -198
  22. mindspore/_extends/parse/resources.py +1 -5
  23. mindspore/_extends/parse/standard_method.py +229 -99
  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 +480 -372
  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 +5 -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 +975 -1981
  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 +324 -573
  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 +183 -117
  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 +209 -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 +179 -120
  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 +798 -761
  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 +933 -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 +1373 -192
  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 +53 -42
  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 +19 -15
  222. mindspore/nn/optim/adamax.py +8 -7
  223. mindspore/nn/optim/adasum.py +5 -5
  224. mindspore/nn/optim/asgd.py +3 -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 +361 -359
  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 +52 -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 +258 -46
  286. mindspore/ops/auto_generate/gen_extend_func.py +757 -185
  287. mindspore/ops/auto_generate/gen_ops_def.py +4197 -2243
  288. mindspore/ops/auto_generate/gen_ops_prim.py +16976 -6055
  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 +4351 -3813
  334. mindspore/ops/function/nn_func.py +1712 -637
  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 +452 -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 +26 -18
  343. mindspore/ops/functional.py +23 -7
  344. mindspore/ops/functional_overload.py +1548 -0
  345. mindspore/ops/op_info_register.py +32 -244
  346. mindspore/ops/operations/__init__.py +23 -15
  347. mindspore/ops/operations/_custom_ops_utils.py +235 -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 +298 -87
  360. mindspore/ops/operations/debug_ops.py +157 -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 +212 -531
  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 +1895 -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 +296 -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 +159 -40
  426. mindspore/parallel/_cell_wrapper.py +132 -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 +700 -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 +258 -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 -59
  446. mindspore/parallel/transform_safetensors.py +364 -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 +109 -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 +416 -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 +96 -27
  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} +228 -108
  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 +269 -136
  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 +552 -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.0.dist-info}/METADATA +3 -3
  584. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/RECORD +587 -418
  585. {mindspore-2.4.10.dist-info → mindspore-2.6.0.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.0.dist-info}/WHEEL +0 -0
  602. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,376 @@
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 Step Trace Time Viewer"""
16
+ import os
17
+ import re
18
+ from decimal import Decimal
19
+ from enum import Enum
20
+ from typing import List, Any, Tuple, Optional
21
+
22
+ import numpy as np
23
+
24
+ from mindspore import log as logger
25
+ from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
26
+ from mindspore.profiler.common.file_manager import FileManager
27
+ from mindspore.profiler.common.constant import (
28
+ TimelineLayerName,
29
+ OverlapAnalysisTidName,
30
+ ProfilerLevel,
31
+ ProfilerActivity
32
+ )
33
+ from mindspore.profiler.analysis.parser.timeline_event.msprof_event import (
34
+ MsprofCompleteEvent,
35
+ )
36
+ from mindspore.profiler.analysis.parser.timeline_event.timeline_event_pool import (
37
+ TimelineEventPool,
38
+ )
39
+ from mindspore.profiler.analysis.parser.timeline_assembly_factory.trace_view_container import (
40
+ TraceViewContainer,
41
+ )
42
+ from mindspore.profiler.common.log import ProfilerLogger
43
+
44
+
45
+ class StepTraceTimeHeaders(Enum):
46
+ """Step trace time headers"""
47
+ STEP = "Step"
48
+ COMPUTING = "Computing"
49
+ COMMUNICATION_NOT_OVERLAPPED = "Communication(Not Overlapped)"
50
+ OVERLAPPED = "Overlapped"
51
+ COMMUNICATION = "Communication"
52
+ FREE = "Free"
53
+ STAGE = "Stage"
54
+ BUBBLE = "Bubble"
55
+ COMMUNICATION_NOT_OVERLAPPED_EXCLUDE_RECEIVE = "Communication(Not Overlapped and Exclude Receive)"
56
+ PREPARING = "Preparing"
57
+
58
+
59
+ class AscendStepTraceTimeViewer(BaseViewer):
60
+ """Ascend Step Trace Time Viewer"""
61
+
62
+ STEP_TRACE_TIME_FILE_NAME = "step_trace_time.csv"
63
+ STEP_TRACE_TIME_HEADERS = [header.value for header in StepTraceTimeHeaders]
64
+
65
+ # HCCL Send, Recv op pattern
66
+ PP_OP_PATTERN = (
67
+ # eg: hcom_BatchSendRecv__101_0_1
68
+ re.compile(r"^hcom_\w+SendRecv__\d+"),
69
+ # eg: hcom_send__101_0_1
70
+ re.compile(r"hcom_send__\d+"),
71
+ # eg: hcom_receive__101_0_1
72
+ re.compile(r"hcom_receive__\d+"),
73
+ re.compile(r"Receive-op"),
74
+ re.compile(r"Send-op"),
75
+ )
76
+
77
+ # numpy array dtype
78
+ OVERLAP_DTYPE = np.dtype([("ts", object), ("dur", object)])
79
+ HCCL_DTYPE = np.dtype([("name", object), ("ts", object), ("dur", object)])
80
+
81
+ def __init__(self, **kwargs):
82
+ super().__init__()
83
+ self._save_path = os.path.join(
84
+ kwargs.get("ascend_profiler_output_path"), self.STEP_TRACE_TIME_FILE_NAME
85
+ )
86
+ self._profiler_level = kwargs.get("profiler_level")
87
+ self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
88
+ self._activities = kwargs.get("activities")
89
+ ProfilerLogger.init(self._ascend_ms_dir)
90
+ self._logger = ProfilerLogger.get_instance()
91
+ self.step_trace_time_data_list = []
92
+ self.trace_container: TraceViewContainer = None
93
+ self.hccl_pool: TimelineEventPool = None
94
+ self.overlap_pool: TimelineEventPool = None
95
+ # HCCL events
96
+ self.hccl_events: List[MsprofCompleteEvent] = None
97
+ # Overlap analysis events
98
+ self.computing_events: List[MsprofCompleteEvent] = None
99
+ self.communication_events: List[MsprofCompleteEvent] = None
100
+ self.communication_not_overlapped_events: List[MsprofCompleteEvent] = None
101
+ self.free_events: List[MsprofCompleteEvent] = None
102
+ # Overlap analysis numpy array
103
+ self.computing_np: np.ndarray = None
104
+ self.communication_np: np.ndarray = None
105
+ self.communication_not_overlapped_np: np.ndarray = None
106
+ self.free_np: np.ndarray = None
107
+ # HCCL numpy array
108
+ self.hccl_events_np: np.ndarray = None
109
+
110
+ def save(self, data: Any):
111
+ """
112
+ Save step trace time data to csv file
113
+ """
114
+ self._logger.info("AscendStepTraceTimeViewer start")
115
+ if self._profiler_level == ProfilerLevel.LevelNone.value:
116
+ return
117
+ try:
118
+ self._check_input_data(data)
119
+ self._convert_events_to_numpy()
120
+ self._calculate_step_trace_time()
121
+ self._write_data()
122
+ except Exception as e: # pylint: disable=W0703
123
+ self._logger.error("Failed to save step trace time data, error: %s", str(e), exc_info=True)
124
+ self._logger.info("AscendStepTraceTimeViewer end")
125
+
126
+ def _write_data(self):
127
+ """
128
+ Write step trace time data to csv file
129
+ """
130
+ self._logger.info("Write step trace time data start")
131
+ data = [[str(item.get(header, "")) for header in self.STEP_TRACE_TIME_HEADERS]
132
+ for item in self.step_trace_time_data_list]
133
+ FileManager.create_csv_file(
134
+ self._save_path,
135
+ data,
136
+ self.STEP_TRACE_TIME_HEADERS,
137
+ )
138
+ self._logger.info("Write step trace time data done, %d rows saved, save path: %s", len(data), self._save_path)
139
+
140
+ def _check_input_data(self, data: Any):
141
+ """
142
+ Check input data and initialize data
143
+ """
144
+ self.trace_container: TraceViewContainer = data.get(
145
+ "trace_view_container", None
146
+ )
147
+
148
+ if self.trace_container is None:
149
+ raise ValueError("trace is empty")
150
+
151
+ self.overlap_pool: TimelineEventPool = self.trace_container.get_pool_by_name(
152
+ TimelineLayerName.OVERLAP_ANALYSIS.value
153
+ )
154
+ self.hccl_pool: TimelineEventPool = self.trace_container.get_pool_by_name(
155
+ TimelineLayerName.HCCL.value
156
+ )
157
+
158
+ if self.overlap_pool is None:
159
+ raise ValueError("overlap pool is empty")
160
+
161
+ self.computing_events: List[MsprofCompleteEvent] = (
162
+ self.overlap_pool.get_events_by_name(OverlapAnalysisTidName.COMPUTING.value)
163
+ )
164
+ self.communication_events: List[MsprofCompleteEvent] = (
165
+ self.overlap_pool.get_events_by_name(
166
+ OverlapAnalysisTidName.COMMUNICATION.value
167
+ )
168
+ )
169
+ self.communication_not_overlapped_events: List[MsprofCompleteEvent] = (
170
+ self.overlap_pool.get_events_by_name(
171
+ OverlapAnalysisTidName.COMMUNICATION_NOT_OVERLAP.value
172
+ )
173
+ )
174
+ self.free_events: List[MsprofCompleteEvent] = (
175
+ self.overlap_pool.get_events_by_name(OverlapAnalysisTidName.FREE.value)
176
+ )
177
+ if self.hccl_pool is not None:
178
+ self.hccl_events: List[MsprofCompleteEvent] = (
179
+ self.hccl_pool.get_complete_events()
180
+ )
181
+
182
+ def _convert_overlap_events_to_numpy(
183
+ self, events: List[MsprofCompleteEvent], dtype
184
+ ):
185
+ """
186
+ Convert overlap events to numpy array
187
+ """
188
+ return np.array([(event.ts, event.dur) for event in events], dtype=dtype)
189
+
190
+ def _convert_events_to_numpy(self):
191
+ """
192
+ Convert events to numpy array
193
+ """
194
+ self.computing_np = self._convert_overlap_events_to_numpy(
195
+ self.computing_events, self.OVERLAP_DTYPE
196
+ )
197
+ self.communication_np = self._convert_overlap_events_to_numpy(
198
+ self.communication_events, self.OVERLAP_DTYPE
199
+ )
200
+ self.communication_not_overlapped_np = self._convert_overlap_events_to_numpy(
201
+ self.communication_not_overlapped_events, self.OVERLAP_DTYPE
202
+ )
203
+ self.free_np = self._convert_overlap_events_to_numpy(
204
+ self.free_events, self.OVERLAP_DTYPE
205
+ )
206
+ self.computing_np = np.sort(self.computing_np, order="ts")
207
+ self.communication_np = np.sort(self.communication_np, order="ts")
208
+ self.communication_not_overlapped_np = np.sort(
209
+ self.communication_not_overlapped_np, order="ts"
210
+ )
211
+ self.free_np = np.sort(self.free_np, order="ts")
212
+
213
+ if self.hccl_events is not None:
214
+ self.hccl_events_np = np.array(
215
+ [(event.name, event.ts, event.dur) for event in self.hccl_events],
216
+ dtype=self.HCCL_DTYPE,
217
+ )
218
+ self.hccl_events_np = np.sort(self.hccl_events_np, order="ts")
219
+
220
+ def _calculate_step_trace_time(self):
221
+ """
222
+ Calculate step trace time data
223
+ """
224
+ step_id_to_time_dict = self._init_step_dict()
225
+ self.generate_step_trace_time_data(step_id_to_time_dict)
226
+
227
+ def _init_step_dict(self):
228
+ """
229
+ Init step list.
230
+ """
231
+ return self.trace_container.get_step_id_time_dict() or {0: (Decimal('0'), Decimal('Infinity'))}
232
+
233
+ def generate_step_trace_time_data(self, step_id_to_time_dict):
234
+ """
235
+ Generate step trace time data
236
+ """
237
+ for step_id, (start_time, end_time) in step_id_to_time_dict.items():
238
+ # step id、computing time、communication time、communication not overlapped time、free time
239
+ computing_time = self._calculate_event_total_time_by_step(self.computing_np, start_time, end_time)
240
+ communication_time = self._calculate_event_total_time_by_step(self.communication_np, start_time, end_time)
241
+ communication_not_over_lapped_time = self._calculate_event_total_time_by_step(
242
+ self.communication_not_overlapped_np, start_time, end_time)
243
+ free_time = self._calculate_free_event_total_time_by_step(self.free_np, start_time, end_time)
244
+ step_trace_time_data = {StepTraceTimeHeaders.STEP.value: step_id,
245
+ StepTraceTimeHeaders.COMPUTING.value: computing_time,
246
+ StepTraceTimeHeaders.COMMUNICATION.value: communication_time,
247
+ StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED.value:
248
+ communication_not_over_lapped_time,
249
+ StepTraceTimeHeaders.FREE.value: free_time}
250
+ # overlapped time
251
+ step_trace_time_data[StepTraceTimeHeaders.OVERLAPPED.value] = (
252
+ step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION.value]
253
+ - step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED.value]
254
+ )
255
+ # stage time && bubble time
256
+ (
257
+ step_trace_time_data[StepTraceTimeHeaders.STAGE.value],
258
+ step_trace_time_data[StepTraceTimeHeaders.BUBBLE.value],
259
+ ) = self._calculate_stage_bubble(start_time, end_time)
260
+ # communication not overlapped time exclude receive
261
+ step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED_EXCLUDE_RECEIVE.value] = (
262
+ step_trace_time_data[StepTraceTimeHeaders.COMMUNICATION_NOT_OVERLAPPED.value]
263
+ - step_trace_time_data[StepTraceTimeHeaders.BUBBLE.value]
264
+ )
265
+ step_trace_time_data[StepTraceTimeHeaders.PREPARING.value] = self._calculate_prepare_time_by_step(
266
+ self.computing_np, self.communication_np, start_time, step_id
267
+ )
268
+ self.step_trace_time_data_list.append(step_trace_time_data)
269
+
270
+ def _calculate_event_total_time_by_step(self, times: np.ndarray, ts: Decimal, es: Decimal) -> Decimal:
271
+ """
272
+ Calculate event total time by step.
273
+ """
274
+
275
+ ts_values = times['ts']
276
+
277
+ mask = (ts_values >= ts) & (ts_values <= es)
278
+ filtered_times = times[mask]
279
+
280
+ return Decimal(str(filtered_times['dur'].sum())).quantize(Decimal('0.000'))
281
+
282
+ def _calculate_free_event_total_time_by_step(self, times: np.ndarray, ts: Decimal, es: Decimal) -> Decimal:
283
+ """
284
+ Calculate free event total time by step, with clipping of events that exceed the time range.
285
+ """
286
+ start_times = times['ts']
287
+ durations = times['dur']
288
+ end_times = start_times + durations
289
+
290
+ # Clip start times to ts and end times to es
291
+ clipped_start_times = np.maximum(start_times, ts)
292
+ clipped_end_times = np.minimum(end_times, es)
293
+
294
+ # Calculate the clipped durations
295
+ clipped_durations = np.maximum(clipped_end_times - clipped_start_times, Decimal('0.000'))
296
+
297
+ return Decimal(sum(clipped_durations)).quantize(Decimal('0.000'))
298
+
299
+ def _calculate_event_first_time_by_step(self, times: np.ndarray, ts: Decimal) -> Optional[Decimal]:
300
+ """
301
+ Calculate event first time by step.
302
+ """
303
+
304
+ idx = np.searchsorted(times['ts'], ts)
305
+
306
+ if idx >= len(times):
307
+ return None
308
+
309
+ return Decimal(str(times['ts'][idx])).quantize(Decimal('0.000'))
310
+
311
+ def _calculate_prepare_time_by_step(self, computing_np: np.ndarray, communication_np: np.ndarray,
312
+ ts: Decimal, step_id: int) -> Decimal:
313
+ """
314
+ calculate prepare time
315
+ """
316
+
317
+ # No frame work data is collected when no CPU is passed in activities
318
+ if ProfilerActivity.CPU.value not in self._activities:
319
+ return Decimal('0.000')
320
+
321
+ step_computing_first_time = self._calculate_event_first_time_by_step(computing_np, ts)
322
+ step_communication_first_time = self._calculate_event_first_time_by_step(communication_np, ts)
323
+
324
+ if step_computing_first_time and step_communication_first_time:
325
+ step_first_device_task_time = min(step_computing_first_time, step_communication_first_time)
326
+ else:
327
+ step_first_device_task_time = step_computing_first_time or step_communication_first_time
328
+
329
+ if step_first_device_task_time:
330
+ if ts == Decimal("0"): # When Profiler.step() is not used
331
+ fmk_api_events = self.trace_container.get_pool_by_name(
332
+ TimelineLayerName.MINDSPORE.value
333
+ ).get_complete_events()
334
+ step_host_start_time = min(event.ts for event in fmk_api_events)
335
+ else:
336
+ step_host_start_time = ts
337
+ step_prepare_time = step_first_device_task_time - step_host_start_time
338
+ return step_prepare_time.quantize(Decimal('0.000'))
339
+
340
+ logger.warning(f"Failed to find device task in step {step_id}, set prepare time to 0")
341
+ return Decimal('0.000')
342
+
343
+ def _calculate_stage_bubble(self, ts: Decimal, es: Decimal) -> Tuple[Decimal, Decimal]:
344
+ """
345
+ Calculate stage and bubble time
346
+ """
347
+ if self.hccl_events is None:
348
+ logger.info("HCCL events is empty, skip calculate stage and bubble")
349
+ return Decimal(0), Decimal(0)
350
+
351
+ mask = (self.hccl_events_np["ts"] >= ts) & (self.hccl_events_np["ts"] <= es)
352
+ filtered_hccl_events_np = self.hccl_events_np[mask]
353
+
354
+ if filtered_hccl_events_np.size == 0:
355
+ logger.info("No HCCL events in the given time range, skip calculate stage and bubble")
356
+ return Decimal(0), Decimal(0)
357
+
358
+ total_hccl_time = filtered_hccl_events_np["ts"][-1] - filtered_hccl_events_np["ts"][0]
359
+ bubble_time = np.sum(
360
+ filtered_hccl_events_np["dur"][
361
+ np.array(
362
+ [
363
+ self._is_send_recv_op(name)
364
+ for name in filtered_hccl_events_np["name"]
365
+ ]
366
+ )
367
+ ]
368
+ )
369
+ stage_time = total_hccl_time - bubble_time
370
+ return stage_time, bubble_time
371
+
372
+ def _is_send_recv_op(self, op_name: str) -> bool:
373
+ """
374
+ Check if the op is a send or recv op
375
+ """
376
+ return any(pattern.match(op_name) for pattern in self.PP_OP_PATTERN)
@@ -0,0 +1,58 @@
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 timeline viewer"""
16
+ import os
17
+ from typing import List, Dict
18
+
19
+ from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
20
+ from mindspore.profiler.common.file_manager import FileManager
21
+ from mindspore.profiler.common.log import ProfilerLogger
22
+
23
+
24
+ class AscendTimelineViewer(BaseViewer):
25
+ """Ascend Timeline Viewer for analyzing and saving timeline data."""
26
+
27
+ _TRACE_VIEW_FILE_NAME = 'trace_view.json'
28
+
29
+ def __init__(self, **kwargs):
30
+ """Initialize the AscendTimelineViewer."""
31
+ super().__init__()
32
+ self._save_path = os.path.join(
33
+ kwargs.get("ascend_profiler_output_path"),
34
+ self._TRACE_VIEW_FILE_NAME
35
+ )
36
+ self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
37
+ ProfilerLogger.init(self._ascend_ms_dir)
38
+ self._logger = ProfilerLogger.get_instance()
39
+
40
+ def save(self, data: Dict) -> None:
41
+ """Get the input data and save the timeline data."""
42
+ self._logger.info("AscendTimelineViewer start")
43
+ try:
44
+ trace_view_container = data.get("trace_view_container", None)
45
+ if not trace_view_container:
46
+ raise RuntimeError("The trace view container is None, Failed to save trace_view.json.")
47
+ trace_view_data = trace_view_container.get_trace_view()
48
+ self._save_data(trace_view_data)
49
+ self._logger.info("Trace viewer save trace_view.json done")
50
+ except Exception as e: # pylint: disable=W0703
51
+ self._logger.error("Failed to save trace_view.json: %s", e, exc_info=True)
52
+ self._logger.info("AscendTimelineViewer end")
53
+
54
+ def _save_data(self, timeline_data: List[Dict]) -> None:
55
+ """Save the timeline data to a JSON file."""
56
+ self._logger.info("Trace view saved start")
57
+ FileManager.create_json_file(self._save_path, timeline_data)
58
+ self._logger.info("Trace view saved done, save path: %s", self._save_path)
@@ -0,0 +1,26 @@
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
+ """BaseViewer class"""
16
+ from abc import ABC, abstractmethod
17
+ from typing import Any
18
+
19
+
20
+ class BaseViewer(ABC):
21
+ def __init__(self):
22
+ pass
23
+
24
+ @abstractmethod
25
+ def save(self, data: Any):
26
+ raise NotImplementedError("Subclasses should implement this!")
@@ -0,0 +1,96 @@
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
+ """ms dataset viewer"""
16
+ import os
17
+ from collections import defaultdict
18
+ from typing import List, Dict, Any
19
+
20
+ from mindspore import log as logger
21
+ from mindspore.profiler.common.constant import FileConstant
22
+ from mindspore.profiler.common.file_manager import FileManager
23
+ from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
24
+ from mindspore.profiler.analysis.parser.timeline_event.fwk_event import (
25
+ FwkCompleteEvent,
26
+ OpRangeStructField,
27
+ )
28
+ from mindspore.profiler.common.log import ProfilerLogger
29
+
30
+
31
+ class MsDatasetViewer(BaseViewer):
32
+ """Viewer for MindSpore dataset profiling data."""
33
+
34
+ _DATASET_FILE_NAME = 'dataset.csv'
35
+ _DATASET_OP_PREFIX = 'Dataset'
36
+ _COL_NAMES = ['Operation', 'Stage', 'Occurrences', 'Avg. time (us)', 'Custom Info']
37
+
38
+ def __init__(self, **kwargs):
39
+ super().__init__()
40
+ self._save_path = os.path.join(
41
+ kwargs.get("ascend_profiler_output_path"),
42
+ self._DATASET_FILE_NAME
43
+ )
44
+ self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
45
+ ProfilerLogger.init(self._ascend_ms_dir)
46
+ self._logger = ProfilerLogger.get_instance()
47
+
48
+ def save(self, data: Dict[str, Any]) -> None:
49
+ """Process and save dataset profiling data."""
50
+ self._logger.info("MsDatasetViewer start")
51
+ try:
52
+ op_range_list = data.get("mindspore_op_list", [])
53
+ dataset_statistics = self._calculate_data(op_range_list)
54
+ self._save_data(dataset_statistics)
55
+ except Exception as e: # pylint: disable=W0703
56
+ self._logger.error("Failed to save dataset.csv: %s", e, exc_info=True)
57
+ self._logger.info("MsDatasetViewer end")
58
+
59
+ def _save_data(self, dataset_statistics: List[List[Any]]) -> None:
60
+ """Save dataset statistics to a CSV file."""
61
+ if not dataset_statistics:
62
+ return
63
+ self._logger.info("Save dataset statistics start")
64
+ FileManager.create_csv_file(self._save_path, dataset_statistics, self._COL_NAMES)
65
+ self._logger.info("Save dataset statistics done")
66
+
67
+ def _calculate_data(self, fwk_tlv_data: List[Dict]) -> List[List[Any]]:
68
+ """Calculate statistics for dataset operations."""
69
+ dataset_op_data = []
70
+ for data in fwk_tlv_data:
71
+ if (data[FileConstant.FIX_SIZE_DATA][OpRangeStructField.START_TIME_NS.value] <
72
+ data[FileConstant.FIX_SIZE_DATA][OpRangeStructField.END_TIME_NS.value]): # dur > 0
73
+ name = data.get(OpRangeStructField.MODULE_GRAPH.value, "")
74
+ if name == self._DATASET_OP_PREFIX:
75
+ dataset_op_data.append(FwkCompleteEvent(data))
76
+
77
+ dataset_op_stats = defaultdict(list)
78
+ for op_data in dataset_op_data:
79
+ op_name_list = op_data.name.split('::')
80
+ if len(op_name_list) != 3:
81
+ logger.warning(f"Invalid dataset op name: {op_data.name}")
82
+ continue
83
+ _, event, stage = op_data.name.split('::')
84
+ key = f"{event}::{stage}::{op_data.custom_info}"
85
+ dataset_op_stats[key].append(op_data.dur)
86
+
87
+ dataset_statistics = []
88
+ for key, durations in dataset_op_stats.items():
89
+ event, stage, custom_info = key.split('::')
90
+ occurrence_count = len(durations)
91
+ if occurrence_count == 0:
92
+ continue
93
+ average_duration = round(float(sum(durations) / occurrence_count), 2)
94
+ dataset_statistics.append([event, stage, occurrence_count, average_duration, custom_info])
95
+
96
+ return dataset_statistics