mindspore 2.4.10__cp311-cp311-win_amd64.whl → 2.6.0rc1__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 +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,145 @@
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
+ """mind data parser"""
16
+ import os
17
+ from typing import Dict, Tuple, Optional, Any, List
18
+ from mindspore import log as logger
19
+ from mindspore.profiler.analysis.parser.base_parser import BaseParser
20
+ from mindspore.profiler.common.file_manager import FileManager
21
+ from mindspore.profiler.common.constant import ProfilerActivity
22
+ from mindspore.profiler.common.exceptions.exceptions import (
23
+ ProfilerPathErrorException,
24
+ ProfilerRawFileException
25
+ )
26
+ from mindspore.profiler.common.log import ProfilerLogger
27
+
28
+
29
+ class MindDataParser(BaseParser):
30
+ """
31
+ Parser for MindData profiling information.
32
+ """
33
+ _FILE_NAMES = {
34
+ 'pipeline': 'pipeline_profiling_{}.json',
35
+ 'cpu_utilization': 'minddata_cpu_utilization_{}.json',
36
+ 'device_queue': 'device_queue_profiling_{}.txt',
37
+ 'device_iterator': 'dataset_iterator_profiling_{}.txt'
38
+ }
39
+
40
+ def __init__(self, next_parser: Optional[BaseParser] = None, **kwargs):
41
+ super().__init__(next_parser)
42
+ self._device_id = kwargs.get("rank_id") if (ProfilerActivity.NPU.value in
43
+ kwargs.get("activities")) else kwargs.get("device_id")
44
+ self._output_path = kwargs.get("framework_path")
45
+ self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
46
+ ProfilerLogger.init(self._ascend_ms_dir)
47
+ self._logger = ProfilerLogger.get_instance()
48
+ self._file_paths = self._setup_file_paths()
49
+
50
+ def _setup_file_paths(self) -> Dict[str, str]:
51
+ return {
52
+ key: os.path.join(self._output_path, file_name.format(self._device_id))
53
+ for key, file_name in self._FILE_NAMES.items()
54
+ }
55
+
56
+ def _parse(self, data=None) -> Dict[str, Any]:
57
+ if data is None:
58
+ data = {}
59
+ if not os.path.exists(self._file_paths['pipeline']):
60
+ logger.info(
61
+ "pipeline profiling file %s does not exist. Please check whether minddata profiling data should exist.",
62
+ self._file_paths['pipeline'])
63
+ return data
64
+ op_id_info, sample_interval = self._parse_pipeline_info_dict()
65
+ cpu_util_info = self._parse_cpu_util_info()
66
+ device_trace_info = self._parse_device_trace()
67
+ self._logger.info("MindDataParser parse done")
68
+ data.update({
69
+ "pipeline_info": (op_id_info, sample_interval),
70
+ "cpu_util_info": cpu_util_info,
71
+ "device_trace_info": device_trace_info,
72
+ "device_queue_file_found": self._device_queue_file_found
73
+ })
74
+ return data
75
+
76
+ def _parse_pipeline_info_dict(self) -> Tuple[Dict[str, Any], float]:
77
+ """
78
+ Parse the pipeline information into a dictionary.
79
+ Returns:
80
+ Tuple[Dict[str, Any], float]: A tuple containing the parsed op_info dictionary
81
+ and sampling interval.
82
+ Raises:
83
+ ProfilerRawFileException: If the format of the pipeline raw file is incorrect.
84
+ """
85
+ pipeline_info = FileManager.read_json_file(self._file_paths['pipeline'])
86
+ if not pipeline_info:
87
+ raise ProfilerRawFileException('The minddata pipeline file is empty.')
88
+
89
+ sample_interval = pipeline_info.get('sampling_interval')
90
+ op_info = pipeline_info.get('op_info')
91
+
92
+ if sample_interval is None or not op_info:
93
+ raise ProfilerRawFileException('The format of minddata pipeline raw file is wrong.')
94
+
95
+ dict_op_id_info = {
96
+ item['op_id']: item for item in op_info if item
97
+ }
98
+
99
+ if len(dict_op_id_info) != len(op_info):
100
+ raise ProfilerRawFileException('The content of minddata pipeline raw file is wrong.')
101
+
102
+ return dict_op_id_info, sample_interval
103
+
104
+ def _parse_cpu_util_info(self) -> Dict[str, Any]:
105
+ try:
106
+ cpu_util_info = FileManager.read_json_file(self._file_paths['cpu_utilization'])
107
+ if not cpu_util_info:
108
+ msg = f'The MindData CPU utilization file {self._file_paths["cpu_utilization"]} is empty.'
109
+ raise RuntimeError(msg)
110
+ except RuntimeError as err:
111
+ cpu_util_info = {}
112
+ logger.warning(f'Failed to read the MindData CPU utilization data. ERROR:{err}')
113
+ return cpu_util_info
114
+
115
+ def _parse_device_trace(self) -> List[Any]:
116
+ """parse the device trace data"""
117
+ try:
118
+ self._device_trace_path, self._device_queue_file_found = self._setup_device_trace()
119
+ device_trace = FileManager.read_txt_file(self._device_trace_path)
120
+ if not device_trace:
121
+ msg = f"The MindData trace profiling file {self._device_trace_path} is empty."
122
+ raise RuntimeError(msg)
123
+ except RuntimeError as err:
124
+ device_trace = []
125
+ logger.warning(f'Failed to read the MindData device trace data. ERROR:{err}')
126
+ return device_trace
127
+
128
+ def _setup_device_trace(self) -> Tuple[str, bool]:
129
+ """
130
+ Set up the device trace file path.
131
+ Returns:
132
+ Tuple[str, bool]: A tuple containing the device trace file path and a boolean
133
+ indicating whether the device queue file was found.
134
+ Raises:
135
+ ProfilerPathErrorException: If no device trace file is found.
136
+ """
137
+ queue_path = self._file_paths['device_queue']
138
+ iterator_path = self._file_paths['device_iterator']
139
+
140
+ if os.path.exists(queue_path):
141
+ return queue_path, True
142
+ if os.path.exists(iterator_path):
143
+ return iterator_path, False
144
+
145
+ raise ProfilerPathErrorException('A MindData device trace profiling file cannot be found.')
@@ -0,0 +1,264 @@
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
+ """Timeline assembler for Ascend device."""
16
+ from typing import List, Dict, Any
17
+ from decimal import Decimal
18
+ from collections import defaultdict
19
+
20
+ from mindspore import context
21
+ from mindspore import log as logger
22
+ from mindspore.profiler.common.constant import EventConstant, TimelineLayerName, ProfilerLevel, JitLevel
23
+ from mindspore.profiler.analysis.parser.timeline_event.base_event import BaseEvent
24
+ from mindspore.profiler.analysis.parser.timeline_event.timeline_event_pool import TimelineEventPool
25
+ from mindspore.profiler.analysis.parser.timeline_event.flow_event import FlowStartEvent, FlowEndEvent
26
+ from mindspore.profiler.analysis.parser.timeline_creator.fwk_timeline_creator import FwkTimelineCreator
27
+ from mindspore.profiler.analysis.parser.timeline_creator.cpu_op_timeline_creator import CpuOpTimelineCreator
28
+ from mindspore.profiler.analysis.parser.timeline_creator.msprof_timeline_creator import MsprofTimelineCreator
29
+ from mindspore.profiler.analysis.parser.timeline_assembly_factory.base_timeline_assembler import BaseTimelineAssembler
30
+ from mindspore.profiler.analysis.parser.timeline_creator.scope_layer_timeline_creator import (
31
+ ScopeLayerTimelineCreator,
32
+ is_scope_data
33
+ )
34
+
35
+
36
+ class AscendTimelineAssembler(BaseTimelineAssembler):
37
+ """Assembler for Ascend device timeline."""
38
+
39
+ def __init__(self, **kwargs):
40
+ super().__init__()
41
+ self._profiler_level = kwargs.get("profiler_level")
42
+ self._context_mode = kwargs.get("context_mode")
43
+ self._jit_level = kwargs.get("jit_level")
44
+ self._init_creators()
45
+
46
+ def _init_creators(self):
47
+ """Initialize trace creators."""
48
+ self._fwk_creator = FwkTimelineCreator()
49
+ self._cpu_op_creator = CpuOpTimelineCreator()
50
+ self._msprof_creator = MsprofTimelineCreator()
51
+ self._scope_layer_creator = ScopeLayerTimelineCreator()
52
+
53
+ def assemble(self, data: Dict[str, Any]) -> None:
54
+ """Assemble Ascend timeline from input data."""
55
+ self._assemble_basic_events(data)
56
+ self._assemble_flow_events()
57
+ self._assemble_scope_layer_events()
58
+
59
+ def _assemble_basic_events(self, data: Dict[str, Any]) -> None:
60
+ """Create and add basic events from input data."""
61
+ self._assemble_events(self._fwk_creator, data.get("mindspore_op_list", []))
62
+ self._assemble_events(self._cpu_op_creator, data.get("cpu_op_lines", []))
63
+ self._assemble_events(self._msprof_creator, data.get("msprof_timeline", []))
64
+
65
+ def _assemble_scope_layer_events(self) -> None:
66
+ """Create scope layer events."""
67
+ scope_data = []
68
+
69
+ # Get CPU OP scope data if available
70
+ cpu_op_pool = self.trace_view_container.get_pool_by_name(TimelineLayerName.CPU_OP.value)
71
+ if cpu_op_pool:
72
+ for event in cpu_op_pool.get_complete_events():
73
+ if is_scope_data(event):
74
+ scope_data.append(event)
75
+
76
+ # Get Ascend Hardware scope data
77
+ hardware_pool = self.trace_view_container.get_pool_by_name(TimelineLayerName.ASCEND_HARDWARE.value)
78
+ if hardware_pool:
79
+ for event in hardware_pool.get_complete_events():
80
+ if is_scope_data(event) or is_scope_data(event.parent):
81
+ scope_data.append(event)
82
+
83
+ if scope_data:
84
+ self._assemble_events(self._scope_layer_creator, scope_data)
85
+
86
+ def _assemble_events(self, creator, data) -> None:
87
+ """Create events using creator and add to container."""
88
+ creator.create(data)
89
+ for pool in creator.get_event_pools().values():
90
+ self.trace_view_container.add_event_pool(pool)
91
+ self.trace_view_container.add_trace_events(creator.get_chrome_trace_data())
92
+
93
+ def _assemble_flow_events(self) -> None:
94
+ """Create and add flow events between timelines."""
95
+ fwk_pool = self.trace_view_container.get_pool_by_name(TimelineLayerName.MINDSPORE.value)
96
+ if not fwk_pool:
97
+ return
98
+
99
+ # Create and add fwk to fwk flows
100
+ fwk_to_fwk_flows = self._create_fwk_to_fwk_flow(fwk_pool)
101
+ self.trace_view_container.add_trace_events(fwk_to_fwk_flows)
102
+
103
+ # Create and add fwk to mstx flows
104
+ for mstx_name in TimelineLayerName.MSTX.value:
105
+ mstx_pool = self.trace_view_container.get_pool_by_name(mstx_name)
106
+ if mstx_pool:
107
+ fwk_to_mstx_flows = self._create_fwk_to_mstx_flow(mstx_pool, fwk_pool)
108
+ self.trace_view_container.add_trace_events(fwk_to_mstx_flows)
109
+
110
+ if self._profiler_level == ProfilerLevel.LevelNone.value:
111
+ return
112
+
113
+ hardware_pool = self.trace_view_container.get_pool_by_name(TimelineLayerName.ASCEND_HARDWARE.value)
114
+ cann_pool = self.trace_view_container.get_pool_by_name(TimelineLayerName.CANN.value)
115
+ if not hardware_pool or not cann_pool:
116
+ return
117
+
118
+ # Collect kernel launch events
119
+ for event in fwk_pool.get_complete_events():
120
+ if any(keyword in event.name for keyword in EventConstant.KERNEL_LAUNCH_KEYWORDS):
121
+ self.trace_view_container.kernel_launch_op_event[event.tid].append(event)
122
+
123
+ # Create and add fwk to hardware flows
124
+ fwk_to_hardware_flows = self._create_fwk_to_hardware_flow()
125
+ self.trace_view_container.add_trace_events(fwk_to_hardware_flows)
126
+
127
+ def _create_fwk_to_hardware_flow(self) -> List[Dict]:
128
+ """Create flow events between framework and hardware events."""
129
+ acl_to_npu_flow_dict = self._msprof_creator.get_acl_to_npu_flow_dict()
130
+ fwk_launch_op_list = self.trace_view_container.kernel_launch_op_event
131
+ # The graph mode O2 does not have the flow from CANN to hardware at each step
132
+ if not acl_to_npu_flow_dict and self._jit_level != JitLevel.GRAPH_LEVEL:
133
+ logger.error("Cannot find connection between CANN layer and Ascend Hardware layer.")
134
+ return []
135
+ # The graph model O2 does not have "KernelLaunch" or "LaunchTask" keywords
136
+ if not fwk_launch_op_list and self._jit_level != JitLevel.GRAPH_LEVEL:
137
+ logger.warning("Cannot find launch op in MindSpore framework.")
138
+ return []
139
+ if (set(acl_to_npu_flow_dict.keys()) != set(fwk_launch_op_list.keys()) and
140
+ self._context_mode == context.PYNATIVE_MODE):
141
+ logger.warning(
142
+ "The number of launch op threads in MindSpore framework is inconsistent with the CANN layer.")
143
+
144
+ fwk_to_npu_flows = []
145
+ for tid, cann_to_npu_events in acl_to_npu_flow_dict.items():
146
+ fwk_launch_op_sorted = sorted(fwk_launch_op_list.get(tid, []), key=lambda x: x.ts)
147
+ acl_to_npu_events_sorted = sorted(cann_to_npu_events.items(), key=lambda x: Decimal(x[0]))
148
+
149
+ index = 0
150
+ for acl_start_time, device_data_list in acl_to_npu_events_sorted:
151
+ acl_start_time = Decimal(acl_start_time)
152
+ while index < len(fwk_launch_op_sorted):
153
+ fwk_launch_op = fwk_launch_op_sorted[index]
154
+ if fwk_launch_op.ts > acl_start_time:
155
+ break
156
+ if acl_start_time <= fwk_launch_op.te:
157
+ for hardware_event in device_data_list:
158
+ hardware_event.parent = fwk_launch_op
159
+ fwk_launch_op.children.append(hardware_event)
160
+ self.trace_view_container.hardware_op_event[hardware_event.tid].append(hardware_event)
161
+ fwk_to_npu_flows.extend(
162
+ self._create_flow_events(
163
+ fwk_launch_op,
164
+ hardware_event,
165
+ EventConstant.MINDSPORE_NPU_FLOW_NAME,
166
+ EventConstant.MINDSPORE_NPU_FLOW_CAT
167
+ )
168
+ )
169
+ break
170
+ index += 1
171
+
172
+ return fwk_to_npu_flows
173
+
174
+ def _create_fwk_to_fwk_flow(self, framework_pool: TimelineEventPool) -> List[Dict]:
175
+ """Create flow events between framework events."""
176
+ fwk_to_fwk_flows = []
177
+ for flow_id, flow_pair in framework_pool.get_start_to_end_flow_pairs().items():
178
+ if len(flow_pair["start"]) != 1 or len(flow_pair["end"]) != 1:
179
+ logger.info(
180
+ f"Mindspore op flow expected exactly one start and one end event with flow id {flow_id}, "
181
+ f"but got {len(flow_pair['start'])} start and {len(flow_pair['end'])} end events"
182
+ )
183
+ continue
184
+
185
+ start_event = flow_pair["start"][0]
186
+ end_event = flow_pair["end"][0]
187
+ end_event.parent = start_event
188
+ start_event.children.append(end_event)
189
+
190
+ fwk_to_fwk_flows.extend(
191
+ self._create_flow_events(
192
+ start_event,
193
+ end_event,
194
+ EventConstant.MINDSPORE_SELF_FLOW_NAME,
195
+ EventConstant.MINDSPORE_SELF_FLOW_CAT,
196
+ flow_id
197
+ )
198
+ )
199
+
200
+ return fwk_to_fwk_flows
201
+
202
+ def _create_fwk_to_mstx_flow(self, mstx_pool: TimelineEventPool, fwk_pool: TimelineEventPool) -> List[Dict]:
203
+ """Create flow events between framework and mstx events."""
204
+ fwk_mstx_api_event_group_by_tid = defaultdict(list)
205
+ for event in fwk_pool.get_complete_events():
206
+ if EventConstant.MSTX_KEYWORD in event.name:
207
+ fwk_mstx_api_event_group_by_tid[event.tid].append(event)
208
+
209
+ fwk_to_mstx_flows = []
210
+ mstx_event_group_by_tid = mstx_pool.complete_event
211
+
212
+ for tid, mstx_event_list in mstx_event_group_by_tid.items():
213
+ sorted_fwk_mstx_api_events = sorted(fwk_mstx_api_event_group_by_tid.get(tid, []), key=lambda x: x.ts)
214
+ sorted_mstx_events = sorted(mstx_event_list, key=lambda x: x.ts)
215
+
216
+ index = 0
217
+ for mstx_event in sorted_mstx_events:
218
+ while index < len(sorted_fwk_mstx_api_events):
219
+ fwk_event = sorted_fwk_mstx_api_events[index]
220
+ if mstx_event.ts < fwk_event.ts:
221
+ break
222
+ if mstx_event.ts <= fwk_event.te:
223
+ mstx_event.parent = fwk_event
224
+ fwk_event.children.append(mstx_event)
225
+ fwk_to_mstx_flows.extend(
226
+ self._create_flow_events(
227
+ fwk_event,
228
+ mstx_event,
229
+ EventConstant.MSTX_FLOW_NAME,
230
+ EventConstant.MSTX_FLOW_CAT,
231
+ )
232
+ )
233
+ index += 1
234
+ break
235
+ index += 1
236
+
237
+ return fwk_to_mstx_flows
238
+
239
+ @staticmethod
240
+ def _create_flow_events(start_event: BaseEvent, end_event: BaseEvent,
241
+ name: str, cat: str, flow_id: str = None) -> List[Dict]:
242
+ """Create flow start and end events pair."""
243
+ if flow_id is None:
244
+ flow_id = str(end_event.ts)
245
+
246
+ flow_start = FlowStartEvent({
247
+ "name": name,
248
+ "cat": cat,
249
+ "pid": start_event.pid,
250
+ "tid": start_event.tid,
251
+ "ts": start_event.ts,
252
+ "id": flow_id,
253
+ "bp": "e"
254
+ })
255
+ flow_end = FlowEndEvent({
256
+ "name": name,
257
+ "cat": cat,
258
+ "pid": end_event.pid,
259
+ "tid": end_event.tid,
260
+ "ts": end_event.ts,
261
+ "id": flow_id,
262
+ "bp": "e"
263
+ })
264
+ return [flow_start.to_trace_format(), flow_end.to_trace_format()]
@@ -0,0 +1,40 @@
1
+ # you may not use this file except in compliance with the License.
2
+ # You may obtain a copy of the License at
3
+ #
4
+ # http://www.apache.org/licenses/LICENSE-2.0
5
+ #
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ # ============================================================================
12
+ """Base class for timeline assembly process."""
13
+ from abc import ABC, abstractmethod
14
+ from typing import Dict, Any
15
+
16
+ from mindspore.profiler.analysis.parser.timeline_assembly_factory.trace_view_container import TraceViewContainer
17
+
18
+
19
+ class BaseTimelineAssembler(ABC):
20
+ """Base class for timeline assembly.
21
+
22
+ This class defines the basic interface for timeline assembly process. It coordinates
23
+ different trace event pools and manages the assembly of the final timeline view.
24
+ """
25
+
26
+ def __init__(self):
27
+ """Initialize timeline assembler."""
28
+ self.trace_view_container = TraceViewContainer()
29
+
30
+ @abstractmethod
31
+ def assemble(self, data: Dict[str, Any]) -> None:
32
+ """Assemble timeline from input data.
33
+
34
+ Args:
35
+ data (Dict[str, Any]): Input data containing various timeline information.
36
+ """
37
+
38
+ def get_trace_view_container(self) -> TraceViewContainer:
39
+ """Get the trace container object."""
40
+ return self.trace_view_container
@@ -0,0 +1,106 @@
1
+ # you may not use this file except in compliance with the License.
2
+ # You may obtain a copy of the License at
3
+ #
4
+ # http://www.apache.org/licenses/LICENSE-2.0
5
+ #
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ # ============================================================================
12
+ """Container for managing trace view data and event pools."""
13
+ from typing import Dict, List, Optional
14
+ from collections import defaultdict
15
+
16
+ from mindspore.profiler.analysis.parser.timeline_event.timeline_event_pool import TimelineEventPool
17
+ from mindspore.profiler.analysis.parser.timeline_event.base_event import BaseEvent
18
+ from mindspore.profiler.common.constant import ProfilerStepNameConstant, TimelineLayerName
19
+
20
+
21
+ class TraceViewContainer:
22
+ """Container for trace view data and event pools.
23
+
24
+ This class is responsible for:
25
+ 1. Storing and managing trace event pools by process ID
26
+ 2. Maintaining process name mappings
27
+ 3. Collecting and managing trace view events
28
+ 4. Providing access to stored pools and events
29
+ """
30
+
31
+ def __init__(self):
32
+ self.event_pools: Dict[int, TimelineEventPool] = {}
33
+ self.name_to_pid: Dict[str, int] = {}
34
+ self.pid_to_name: Dict[int, str] = {}
35
+ self.trace_view: List[Dict] = []
36
+ self._kernel_launch_op_dict: Dict[int, List[BaseEvent]] = defaultdict(list)
37
+ self._hardware_op_event_dict: Dict[int, List[BaseEvent]] = defaultdict(list)
38
+
39
+ @property
40
+ def kernel_launch_op_event(self) -> Dict[int, List[BaseEvent]]:
41
+ """Get all kernel launch events."""
42
+ return self._kernel_launch_op_dict
43
+
44
+ @property
45
+ def hardware_op_event(self) -> Dict[int, List[BaseEvent]]:
46
+ """Get all hardware events."""
47
+ return self._hardware_op_event_dict
48
+
49
+ @kernel_launch_op_event.setter
50
+ def kernel_launch_op_event(self, value):
51
+ self._kernel_launch_op_dict = value
52
+
53
+ @hardware_op_event.setter
54
+ def hardware_op_event(self, value):
55
+ self._hardware_op_event_dict = value
56
+
57
+ def add_event_pool(self, pool: TimelineEventPool) -> None:
58
+ """Add event pool to container."""
59
+ if pool.name and pool.name in self.name_to_pid:
60
+ raise ValueError(f"Process name '{pool.name}' already exists.")
61
+ self.event_pools[pool.pid] = pool
62
+ if pool.name:
63
+ self.name_to_pid[pool.name] = pool.pid
64
+ self.pid_to_name[pool.pid] = pool.name
65
+
66
+ def add_trace_events(self, events: List[Dict]) -> None:
67
+ """Add trace view events."""
68
+ self.trace_view.extend(events)
69
+
70
+ def get_pool_by_pid(self, pid: int) -> Optional[TimelineEventPool]:
71
+ """Get event pool by process ID."""
72
+ return self.event_pools.get(pid)
73
+
74
+ def get_pool_by_name(self, name: str) -> Optional[TimelineEventPool]:
75
+ """Get event pool by process name."""
76
+ pid = self.name_to_pid.get(name)
77
+ return self.event_pools.get(pid) if pid is not None else None
78
+
79
+ def get_trace_view(self) -> List[Dict]:
80
+ """Get all trace view events."""
81
+ return self.trace_view
82
+
83
+ def get_all_pools(self) -> List[TimelineEventPool]:
84
+ """Get all event pools."""
85
+ return list(self.event_pools.values())
86
+
87
+ def get_step_id_time_dict(self) -> Dict:
88
+ """Get step id to time dict."""
89
+ # Retrieve all events from the trace container for the Mindspore timeline layer
90
+
91
+ mindspore_pool = self.get_pool_by_name(TimelineLayerName.MINDSPORE.value)
92
+ if not mindspore_pool:
93
+ return {}
94
+
95
+ events = mindspore_pool.get_all_events()
96
+
97
+ # Filter events that contain "ProfilerStep" and create a dictionary mapping (start_ts, end_ts) to step ID
98
+ step_id_to_time_dict = dict(sorted(
99
+ (
100
+ event.name.split("#")[-1], (event.ts, event.dur + event.ts)
101
+ )
102
+ for event in events
103
+ if ProfilerStepNameConstant.PROFILER_STEP in event.name
104
+ ))
105
+
106
+ return step_id_to_time_dict
@@ -0,0 +1,44 @@
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
+ """Base class for timeline event creators."""
16
+ from abc import ABC, abstractmethod
17
+ from typing import List, Dict, Any
18
+
19
+ from mindspore.profiler.analysis.parser.timeline_event.timeline_event_pool import TimelineEventPool
20
+
21
+
22
+ class BaseTimelineCreator(ABC):
23
+ """Base class for creating timeline event pools."""
24
+
25
+ def __init__(self):
26
+ self.event_pools: Dict[int, TimelineEventPool] = {}
27
+
28
+ @abstractmethod
29
+ def create(self, data: Any) -> None:
30
+ """Create timeline event pools from input data."""
31
+
32
+ def get_chrome_trace_data(self) -> List[Dict]:
33
+ """Get all events in chrome trace format."""
34
+ if not self.event_pools:
35
+ return []
36
+ chrome_trace_data = []
37
+ for pool in self.event_pools.values():
38
+ if pool:
39
+ chrome_trace_data.extend(pool.get_all_events_with_trace_format())
40
+ return chrome_trace_data
41
+
42
+ def get_event_pools(self) -> Dict[int, TimelineEventPool]:
43
+ """Get all timeline event pools."""
44
+ return self.event_pools