mindspore 2.4.10__cp39-cp39-win_amd64.whl → 2.6.0rc1__cp39-cp39-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 (577) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +13 -6
  3. mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
  4. mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
  5. mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
  6. mindspore/_check_jit_forbidden_api.py +3 -0
  7. mindspore/_checkparam.py +3 -38
  8. mindspore/_deprecated/__init__.py +17 -0
  9. mindspore/_deprecated/jit.py +198 -0
  10. mindspore/_extends/builtin_operations.py +1 -1
  11. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  12. mindspore/_extends/parse/__init__.py +6 -7
  13. mindspore/_extends/parse/compile_config.py +83 -0
  14. mindspore/_extends/parse/deprecated/__init__.py +0 -0
  15. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
  16. mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
  17. mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
  18. mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
  19. mindspore/_extends/parse/parser.py +46 -197
  20. mindspore/_extends/parse/resources.py +1 -5
  21. mindspore/_extends/parse/standard_method.py +217 -98
  22. mindspore/_extends/pijit/__init__.py +2 -2
  23. mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
  24. mindspore/_extends/pijit/tensor_func_list.py +27 -0
  25. mindspore/_extends/utils.py +1 -1
  26. mindspore/amp.py +11 -5
  27. mindspore/avcodec-59.dll +0 -0
  28. mindspore/avdevice-59.dll +0 -0
  29. mindspore/avfilter-8.dll +0 -0
  30. mindspore/avformat-59.dll +0 -0
  31. mindspore/avutil-57.dll +0 -0
  32. mindspore/boost/__init__.py +2 -2
  33. mindspore/boost/base.py +3 -7
  34. mindspore/boost/boost_cell_wrapper.py +138 -43
  35. mindspore/common/__init__.py +6 -3
  36. mindspore/common/_grad_function.py +56 -0
  37. mindspore/common/_pijit_context.py +14 -5
  38. mindspore/common/_register_for_tensor.py +1 -2
  39. mindspore/common/_stub_tensor.py +30 -14
  40. mindspore/common/_tensor_cpp_method.py +17 -0
  41. mindspore/common/_tensor_docs.py +4760 -0
  42. mindspore/common/api.py +435 -371
  43. mindspore/common/auto_dynamic_shape.py +41 -44
  44. mindspore/common/dtype.py +39 -36
  45. mindspore/common/dump.py +9 -6
  46. mindspore/common/file_system.py +9 -1
  47. mindspore/common/generator.py +2 -0
  48. mindspore/common/hook_handle.py +6 -2
  49. mindspore/common/initializer.py +13 -10
  50. mindspore/common/jit_begin_end.py +94 -0
  51. mindspore/common/jit_config.py +6 -1
  52. mindspore/common/jit_context.py +76 -0
  53. mindspore/common/jit_trace.py +378 -0
  54. mindspore/common/lazy_inline.py +9 -3
  55. mindspore/common/mindir_util.py +10 -2
  56. mindspore/common/mutable.py +5 -4
  57. mindspore/common/parameter.py +135 -52
  58. mindspore/common/seed.py +2 -2
  59. mindspore/common/sparse_tensor.py +23 -17
  60. mindspore/common/tensor.py +951 -1992
  61. mindspore/communication/__init__.py +7 -5
  62. mindspore/communication/_comm_helper.py +52 -2
  63. mindspore/communication/comm_func.py +240 -181
  64. mindspore/communication/management.py +95 -26
  65. mindspore/context.py +314 -566
  66. mindspore/dataset/__init__.py +65 -37
  67. mindspore/dataset/audio/__init__.py +2 -8
  68. mindspore/dataset/audio/transforms.py +3 -17
  69. mindspore/dataset/callback/ds_callback.py +2 -1
  70. mindspore/dataset/core/config.py +87 -6
  71. mindspore/dataset/engine/cache_admin.py +3 -3
  72. mindspore/dataset/engine/cache_client.py +6 -5
  73. mindspore/dataset/engine/datasets.py +292 -267
  74. mindspore/dataset/engine/datasets_audio.py +22 -8
  75. mindspore/dataset/engine/datasets_standard_format.py +46 -27
  76. mindspore/dataset/engine/datasets_text.py +78 -48
  77. mindspore/dataset/engine/datasets_user_defined.py +182 -116
  78. mindspore/dataset/engine/datasets_vision.py +120 -44
  79. mindspore/dataset/engine/iterators.py +283 -63
  80. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  81. mindspore/dataset/engine/obs/util.py +8 -0
  82. mindspore/dataset/engine/queue.py +40 -0
  83. mindspore/dataset/engine/samplers.py +289 -43
  84. mindspore/dataset/engine/serializer_deserializer.py +3 -2
  85. mindspore/dataset/engine/validators.py +53 -11
  86. mindspore/dataset/text/__init__.py +7 -6
  87. mindspore/dataset/text/transforms.py +6 -5
  88. mindspore/dataset/text/utils.py +3 -3
  89. mindspore/dataset/transforms/__init__.py +0 -9
  90. mindspore/dataset/transforms/py_transforms_util.py +17 -0
  91. mindspore/dataset/transforms/transforms.py +31 -14
  92. mindspore/dataset/utils/browse_dataset.py +1 -1
  93. mindspore/dataset/vision/__init__.py +2 -9
  94. mindspore/dataset/vision/transforms.py +202 -158
  95. mindspore/dataset/vision/utils.py +7 -5
  96. mindspore/dataset/vision/validators.py +1 -2
  97. mindspore/device_context/__init__.py +21 -0
  98. mindspore/device_context/ascend/__init__.py +25 -0
  99. mindspore/device_context/ascend/device.py +72 -0
  100. mindspore/device_context/ascend/op_debug.py +153 -0
  101. mindspore/device_context/ascend/op_precision.py +193 -0
  102. mindspore/device_context/ascend/op_tuning.py +123 -0
  103. mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
  104. mindspore/device_context/cpu/device.py +62 -0
  105. mindspore/device_context/cpu/op_tuning.py +43 -0
  106. mindspore/device_context/gpu/__init__.py +21 -0
  107. mindspore/device_context/gpu/device.py +70 -0
  108. mindspore/device_context/gpu/op_precision.py +67 -0
  109. mindspore/device_context/gpu/op_tuning.py +175 -0
  110. mindspore/device_manager.py +170 -0
  111. mindspore/experimental/es/embedding_service.py +35 -27
  112. mindspore/experimental/llm_boost/__init__.py +1 -0
  113. mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
  114. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
  115. mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
  116. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  117. mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
  118. mindspore/experimental/llm_boost/register.py +1 -0
  119. mindspore/experimental/map_parameter.py +4 -4
  120. mindspore/experimental/optim/adadelta.py +6 -6
  121. mindspore/experimental/optim/adagrad.py +4 -4
  122. mindspore/experimental/optim/adam.py +7 -0
  123. mindspore/experimental/optim/adamax.py +4 -4
  124. mindspore/experimental/optim/adamw.py +4 -0
  125. mindspore/experimental/optim/asgd.py +1 -1
  126. mindspore/experimental/optim/lr_scheduler.py +73 -46
  127. mindspore/experimental/optim/radam.py +34 -31
  128. mindspore/experimental/optim/rprop.py +1 -1
  129. mindspore/experimental/optim/sgd.py +1 -1
  130. mindspore/hal/contiguous_tensors_handle.py +6 -10
  131. mindspore/hal/device.py +55 -53
  132. mindspore/hal/event.py +52 -52
  133. mindspore/hal/memory.py +157 -117
  134. mindspore/hal/stream.py +150 -109
  135. mindspore/include/api/context.h +0 -1
  136. mindspore/include/dataset/constants.h +7 -4
  137. mindspore/include/dataset/execute.h +2 -2
  138. mindspore/jpeg62.dll +0 -0
  139. mindspore/log.py +50 -0
  140. mindspore/mindrecord/__init__.py +21 -8
  141. mindspore/mindrecord/config.py +17 -316
  142. mindspore/mindrecord/filereader.py +1 -9
  143. mindspore/mindrecord/filewriter.py +5 -15
  144. mindspore/mindrecord/mindpage.py +1 -9
  145. mindspore/mindspore_backend_common.dll +0 -0
  146. mindspore/mindspore_backend_manager.dll +0 -0
  147. mindspore/mindspore_common.dll +0 -0
  148. mindspore/mindspore_core.dll +0 -0
  149. mindspore/mindspore_dump.dll +0 -0
  150. mindspore/mindspore_frontend.dll +0 -0
  151. mindspore/mindspore_memory_pool.dll +0 -0
  152. mindspore/mindspore_ms_backend.dll +0 -0
  153. mindspore/mindspore_ops.dll +0 -0
  154. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  155. mindspore/mindspore_ops_kernel_common.dll +0 -0
  156. mindspore/mindspore_profiler.dll +0 -0
  157. mindspore/mindspore_pyboost.dll +0 -0
  158. mindspore/mindspore_pynative.dll +0 -0
  159. mindspore/mindspore_res_manager.dll +0 -0
  160. mindspore/mindspore_runtime_pipeline.dll +0 -0
  161. mindspore/mint/__init__.py +796 -759
  162. mindspore/mint/distributed/__init__.py +70 -4
  163. mindspore/mint/distributed/distributed.py +2679 -44
  164. mindspore/mint/linalg/__init__.py +8 -0
  165. mindspore/mint/nn/__init__.py +743 -22
  166. mindspore/mint/nn/functional.py +716 -23
  167. mindspore/mint/nn/layer/__init__.py +21 -4
  168. mindspore/mint/nn/layer/_functions.py +334 -0
  169. mindspore/mint/nn/layer/activation.py +276 -1
  170. mindspore/mint/nn/layer/basic.py +123 -0
  171. mindspore/mint/nn/layer/conv.py +921 -0
  172. mindspore/mint/nn/layer/normalization.py +223 -28
  173. mindspore/mint/nn/layer/padding.py +797 -0
  174. mindspore/mint/nn/layer/pooling.py +235 -0
  175. mindspore/mint/optim/__init__.py +3 -1
  176. mindspore/mint/optim/adam.py +223 -0
  177. mindspore/mint/optim/adamw.py +26 -19
  178. mindspore/mint/optim/sgd.py +171 -0
  179. mindspore/mint/special/__init__.py +2 -1
  180. mindspore/multiprocessing/__init__.py +5 -0
  181. mindspore/nn/__init__.py +4 -1
  182. mindspore/nn/cell.py +1370 -189
  183. mindspore/nn/dynamic_lr.py +2 -1
  184. mindspore/nn/layer/activation.py +29 -27
  185. mindspore/nn/layer/basic.py +51 -35
  186. mindspore/nn/layer/channel_shuffle.py +3 -3
  187. mindspore/nn/layer/container.py +1 -1
  188. mindspore/nn/layer/conv.py +22 -17
  189. mindspore/nn/layer/embedding.py +12 -11
  190. mindspore/nn/layer/normalization.py +56 -49
  191. mindspore/nn/layer/padding.py +4 -3
  192. mindspore/nn/layer/pooling.py +120 -42
  193. mindspore/nn/layer/rnn_cells.py +1 -1
  194. mindspore/nn/layer/rnns.py +2 -1
  195. mindspore/nn/layer/timedistributed.py +5 -5
  196. mindspore/nn/layer/transformer.py +59 -36
  197. mindspore/nn/learning_rate_schedule.py +8 -4
  198. mindspore/nn/loss/loss.py +58 -55
  199. mindspore/nn/optim/ada_grad.py +7 -5
  200. mindspore/nn/optim/adadelta.py +11 -9
  201. mindspore/nn/optim/adafactor.py +1 -1
  202. mindspore/nn/optim/adam.py +17 -13
  203. mindspore/nn/optim/adamax.py +8 -7
  204. mindspore/nn/optim/adasum.py +5 -5
  205. mindspore/nn/optim/asgd.py +1 -1
  206. mindspore/nn/optim/ftrl.py +11 -9
  207. mindspore/nn/optim/lamb.py +1 -1
  208. mindspore/nn/optim/lars.py +1 -4
  209. mindspore/nn/optim/lazyadam.py +12 -10
  210. mindspore/nn/optim/momentum.py +7 -6
  211. mindspore/nn/optim/optimizer.py +3 -3
  212. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  213. mindspore/nn/optim/rmsprop.py +13 -12
  214. mindspore/nn/optim/rprop.py +11 -9
  215. mindspore/nn/optim/sgd.py +9 -6
  216. mindspore/nn/optim/tft_wrapper.py +5 -2
  217. mindspore/nn/optim/thor.py +2 -1
  218. mindspore/nn/probability/bijector/bijector.py +17 -11
  219. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  220. mindspore/nn/probability/bijector/invert.py +2 -2
  221. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  222. mindspore/nn/probability/bijector/softplus.py +3 -2
  223. mindspore/nn/probability/distribution/beta.py +3 -3
  224. mindspore/nn/probability/distribution/categorical.py +1 -1
  225. mindspore/nn/probability/distribution/cauchy.py +4 -2
  226. mindspore/nn/probability/distribution/exponential.py +6 -7
  227. mindspore/nn/probability/distribution/gamma.py +2 -2
  228. mindspore/nn/probability/distribution/gumbel.py +2 -2
  229. mindspore/nn/probability/distribution/half_normal.py +5 -3
  230. mindspore/nn/probability/distribution/logistic.py +5 -3
  231. mindspore/nn/probability/distribution/poisson.py +1 -1
  232. mindspore/nn/probability/distribution/uniform.py +5 -3
  233. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  234. mindspore/nn/reinforcement/tensor_array.py +1 -1
  235. mindspore/nn/utils/init.py +13 -11
  236. mindspore/nn/wrap/__init__.py +6 -6
  237. mindspore/nn/wrap/cell_wrapper.py +181 -122
  238. mindspore/nn/wrap/grad_reducer.py +45 -36
  239. mindspore/nn/wrap/loss_scale.py +6 -7
  240. mindspore/numpy/array_creations.py +63 -65
  241. mindspore/numpy/array_ops.py +149 -144
  242. mindspore/numpy/logic_ops.py +41 -42
  243. mindspore/numpy/math_ops.py +365 -363
  244. mindspore/numpy/utils.py +17 -18
  245. mindspore/numpy/utils_const.py +5 -6
  246. mindspore/opencv_core452.dll +0 -0
  247. mindspore/opencv_imgcodecs452.dll +0 -0
  248. mindspore/opencv_imgproc452.dll +0 -0
  249. mindspore/ops/__init__.py +5 -3
  250. mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
  251. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
  252. mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
  253. mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
  254. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  255. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  256. mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
  257. mindspore/ops/_register_for_op.py +0 -11
  258. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  259. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
  260. mindspore/ops/_vmap/vmap_array_ops.py +27 -25
  261. mindspore/ops/_vmap/vmap_base.py +0 -2
  262. mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
  263. mindspore/ops/_vmap/vmap_math_ops.py +15 -16
  264. mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
  265. mindspore/ops/auto_generate/__init__.py +4 -3
  266. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +236 -46
  267. mindspore/ops/auto_generate/gen_extend_func.py +764 -124
  268. mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
  269. mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
  270. mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
  271. mindspore/ops/composite/__init__.py +2 -1
  272. mindspore/ops/composite/base.py +20 -25
  273. mindspore/ops/composite/math_ops.py +6 -16
  274. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  275. mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
  276. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  277. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  278. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  279. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  280. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  281. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  282. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  283. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  284. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  285. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  286. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  287. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  288. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  289. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  290. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  291. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  292. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  293. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  294. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  295. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  296. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  297. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  298. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  299. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  300. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  301. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
  302. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  303. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  304. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  305. mindspore/ops/function/__init__.py +40 -2
  306. mindspore/ops/function/_add_attr_func.py +58 -0
  307. mindspore/ops/function/array_func.py +2089 -2403
  308. mindspore/ops/function/clip_func.py +80 -23
  309. mindspore/ops/function/debug_func.py +57 -57
  310. mindspore/ops/function/grad/__init__.py +1 -0
  311. mindspore/ops/function/grad/grad_func.py +104 -71
  312. mindspore/ops/function/image_func.py +2 -2
  313. mindspore/ops/function/linalg_func.py +47 -78
  314. mindspore/ops/function/math_func.py +4501 -3802
  315. mindspore/ops/function/nn_func.py +1726 -620
  316. mindspore/ops/function/other_func.py +159 -1
  317. mindspore/ops/function/parameter_func.py +18 -84
  318. mindspore/ops/function/random_func.py +440 -387
  319. mindspore/ops/function/reshard_func.py +4 -70
  320. mindspore/ops/function/sparse_func.py +3 -3
  321. mindspore/ops/function/sparse_unary_func.py +6 -6
  322. mindspore/ops/function/spectral_func.py +25 -58
  323. mindspore/ops/function/vmap_func.py +24 -17
  324. mindspore/ops/functional.py +22 -7
  325. mindspore/ops/functional_overload.py +1440 -0
  326. mindspore/ops/op_info_register.py +32 -244
  327. mindspore/ops/operations/__init__.py +13 -7
  328. mindspore/ops/operations/_custom_ops_utils.py +247 -0
  329. mindspore/ops/operations/_embedding_cache_ops.py +4 -4
  330. mindspore/ops/operations/_grad_ops.py +2 -43
  331. mindspore/ops/operations/_infer_ops.py +2 -1
  332. mindspore/ops/operations/_inner_ops.py +43 -84
  333. mindspore/ops/operations/_ms_kernel.py +4 -10
  334. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  335. mindspore/ops/operations/_scalar_ops.py +3 -2
  336. mindspore/ops/operations/_sequence_ops.py +1 -1
  337. mindspore/ops/operations/_tensor_array.py +1 -1
  338. mindspore/ops/operations/array_ops.py +81 -324
  339. mindspore/ops/operations/comm_ops.py +154 -108
  340. mindspore/ops/operations/custom_ops.py +232 -78
  341. mindspore/ops/operations/debug_ops.py +153 -59
  342. mindspore/ops/operations/inner_ops.py +7 -5
  343. mindspore/ops/operations/linalg_ops.py +1 -57
  344. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  345. mindspore/ops/operations/manually_defined/ops_def.py +928 -180
  346. mindspore/ops/operations/math_ops.py +32 -234
  347. mindspore/ops/operations/nn_ops.py +210 -498
  348. mindspore/ops/operations/other_ops.py +62 -9
  349. mindspore/ops/operations/random_ops.py +13 -7
  350. mindspore/ops/operations/reshard_ops.py +1 -1
  351. mindspore/ops/operations/sparse_ops.py +2 -2
  352. mindspore/ops/primitive.py +66 -53
  353. mindspore/ops/tensor_method.py +1888 -0
  354. mindspore/ops_generate/__init__.py +0 -5
  355. mindspore/ops_generate/aclnn/__init__.py +0 -0
  356. mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
  357. mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
  358. mindspore/ops_generate/api/__init__.py +0 -0
  359. mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
  360. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
  361. mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
  362. mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
  363. mindspore/ops_generate/api/functions_cc_generator.py +237 -0
  364. mindspore/ops_generate/api/gen_api.py +103 -0
  365. mindspore/ops_generate/api/op_api_proto.py +235 -0
  366. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
  367. mindspore/ops_generate/common/__init__.py +0 -0
  368. mindspore/ops_generate/common/base_generator.py +11 -0
  369. mindspore/ops_generate/common/gen_constants.py +91 -0
  370. mindspore/ops_generate/common/gen_utils.py +348 -0
  371. mindspore/ops_generate/common/op_proto.py +473 -0
  372. mindspore/ops_generate/common/template.py +523 -0
  373. mindspore/ops_generate/gen_ops.py +22 -1069
  374. mindspore/ops_generate/op_def/__init__.py +0 -0
  375. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  376. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
  377. mindspore/ops_generate/op_def/ops_def_cc_generator.py +299 -0
  378. mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
  379. mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
  380. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  381. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  382. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  383. mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
  384. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
  385. mindspore/ops_generate/pyboost/__init__.py +0 -0
  386. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
  387. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
  388. mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
  389. mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
  390. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
  391. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
  392. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
  393. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
  394. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
  395. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
  396. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
  397. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
  398. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
  399. mindspore/ops_generate/resources/__init__.py +0 -0
  400. mindspore/ops_generate/resources/resource_list.py +30 -0
  401. mindspore/ops_generate/resources/resource_loader.py +36 -0
  402. mindspore/ops_generate/resources/resource_manager.py +64 -0
  403. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  404. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  405. mindspore/parallel/__init__.py +7 -3
  406. mindspore/parallel/_auto_parallel_context.py +152 -34
  407. mindspore/parallel/_cell_wrapper.py +130 -15
  408. mindspore/parallel/_parallel_serialization.py +107 -5
  409. mindspore/parallel/_ps_context.py +1 -1
  410. mindspore/parallel/_recovery_context.py +7 -2
  411. mindspore/parallel/_tensor.py +142 -18
  412. mindspore/parallel/_utils.py +199 -23
  413. mindspore/parallel/algo_parameter_config.py +4 -4
  414. mindspore/parallel/auto_parallel.py +732 -0
  415. mindspore/parallel/checkpoint_convert.py +159 -0
  416. mindspore/parallel/checkpoint_transform.py +698 -35
  417. mindspore/parallel/cluster/process_entity/_api.py +276 -50
  418. mindspore/parallel/cluster/process_entity/_utils.py +41 -6
  419. mindspore/parallel/cluster/run.py +21 -4
  420. mindspore/parallel/function/__init__.py +24 -0
  421. mindspore/parallel/function/reshard_func.py +259 -0
  422. mindspore/parallel/nn/__init__.py +25 -0
  423. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  424. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  425. mindspore/parallel/parameter_broadcast.py +25 -14
  426. mindspore/parallel/shard.py +137 -58
  427. mindspore/parallel/transform_safetensors.py +363 -305
  428. mindspore/profiler/__init__.py +22 -5
  429. mindspore/profiler/analysis/__init__.py +0 -0
  430. mindspore/profiler/analysis/parser/__init__.py +0 -0
  431. mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
  432. mindspore/profiler/analysis/parser/base_parser.py +158 -0
  433. mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
  434. mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
  435. mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
  436. mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
  437. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
  438. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
  439. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +106 -0
  440. mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
  441. mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
  442. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
  443. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
  444. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
  445. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
  446. mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
  447. mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
  448. mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
  449. mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
  450. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
  451. mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
  452. mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
  453. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
  454. mindspore/profiler/analysis/task_manager.py +131 -0
  455. mindspore/profiler/analysis/time_converter.py +84 -0
  456. mindspore/profiler/analysis/viewer/__init__.py +0 -0
  457. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
  458. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
  459. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
  460. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
  461. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
  462. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
  463. mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
  464. mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
  465. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
  466. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
  467. mindspore/profiler/analysis/work_flow.py +73 -0
  468. mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
  469. mindspore/profiler/common/command_executor.py +90 -0
  470. mindspore/profiler/common/constant.py +186 -3
  471. mindspore/profiler/common/file_manager.py +208 -0
  472. mindspore/profiler/common/log.py +130 -0
  473. mindspore/profiler/common/msprof_cmd_tool.py +221 -0
  474. mindspore/profiler/common/path_manager.py +395 -0
  475. mindspore/profiler/common/process_bar.py +168 -0
  476. mindspore/profiler/common/process_pool.py +9 -3
  477. mindspore/profiler/common/profiler_context.py +500 -0
  478. mindspore/profiler/common/profiler_info.py +304 -0
  479. mindspore/profiler/common/profiler_meta_data.py +74 -0
  480. mindspore/profiler/common/profiler_output_path.py +284 -0
  481. mindspore/profiler/common/profiler_parameters.py +251 -0
  482. mindspore/profiler/common/profiler_path_manager.py +179 -0
  483. mindspore/profiler/common/record_function.py +76 -0
  484. mindspore/profiler/common/tlv_decoder.py +76 -0
  485. mindspore/profiler/common/util.py +75 -2
  486. mindspore/profiler/dynamic_profiler.py +341 -75
  487. mindspore/profiler/envprofiler.py +163 -0
  488. mindspore/profiler/experimental_config.py +197 -0
  489. mindspore/profiler/mstx.py +242 -0
  490. mindspore/profiler/platform/__init__.py +21 -0
  491. mindspore/profiler/platform/base_profiler.py +40 -0
  492. mindspore/profiler/platform/cpu_profiler.py +124 -0
  493. mindspore/profiler/platform/gpu_profiler.py +74 -0
  494. mindspore/profiler/platform/npu_profiler.py +335 -0
  495. mindspore/profiler/profiler.py +1073 -90
  496. mindspore/profiler/profiler_action_controller.py +187 -0
  497. mindspore/profiler/profiler_interface.py +118 -0
  498. mindspore/profiler/schedule.py +243 -0
  499. mindspore/rewrite/api/node.py +15 -13
  500. mindspore/rewrite/api/symbol_tree.py +2 -3
  501. mindspore/run_check/_check_version.py +27 -20
  502. mindspore/run_check/run_check.py +1 -1
  503. mindspore/runtime/__init__.py +37 -0
  504. mindspore/runtime/device.py +27 -0
  505. mindspore/runtime/event.py +209 -0
  506. mindspore/runtime/executor.py +177 -0
  507. mindspore/runtime/memory.py +409 -0
  508. mindspore/runtime/stream.py +460 -0
  509. mindspore/runtime/thread_bind_core.py +401 -0
  510. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  511. mindspore/swresample-4.dll +0 -0
  512. mindspore/swscale-6.dll +0 -0
  513. mindspore/tinyxml2.dll +0 -0
  514. mindspore/train/__init__.py +8 -8
  515. mindspore/train/_utils.py +88 -25
  516. mindspore/train/amp.py +9 -5
  517. mindspore/train/callback/__init__.py +2 -2
  518. mindspore/train/callback/_callback.py +2 -16
  519. mindspore/train/callback/_checkpoint.py +53 -55
  520. mindspore/train/callback/_cluster_monitor.py +14 -18
  521. mindspore/train/callback/_early_stop.py +1 -1
  522. mindspore/train/callback/_flops_collector.py +103 -68
  523. mindspore/train/callback/_history.py +8 -5
  524. mindspore/train/callback/_lambda_callback.py +2 -2
  525. mindspore/train/callback/_landscape.py +0 -3
  526. mindspore/train/callback/_loss_monitor.py +2 -1
  527. mindspore/train/callback/_on_request_exit.py +6 -5
  528. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  529. mindspore/train/callback/_summary_collector.py +52 -19
  530. mindspore/train/callback/_time_monitor.py +2 -1
  531. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -107
  532. mindspore/train/data_sink.py +25 -2
  533. mindspore/train/dataset_helper.py +15 -16
  534. mindspore/train/loss_scale_manager.py +8 -7
  535. mindspore/train/metrics/accuracy.py +3 -3
  536. mindspore/train/metrics/confusion_matrix.py +9 -9
  537. mindspore/train/metrics/error.py +3 -3
  538. mindspore/train/metrics/hausdorff_distance.py +4 -4
  539. mindspore/train/metrics/mean_surface_distance.py +3 -3
  540. mindspore/train/metrics/metric.py +0 -12
  541. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  542. mindspore/train/metrics/precision.py +11 -10
  543. mindspore/train/metrics/recall.py +9 -9
  544. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  545. mindspore/train/mind_ir_pb2.py +174 -46
  546. mindspore/train/model.py +184 -113
  547. mindspore/train/serialization.py +622 -978
  548. mindspore/train/summary/_summary_adapter.py +2 -2
  549. mindspore/train/summary/summary_record.py +2 -3
  550. mindspore/train/train_thor/model_thor.py +1 -1
  551. mindspore/turbojpeg.dll +0 -0
  552. mindspore/utils/__init__.py +6 -3
  553. mindspore/utils/dryrun.py +140 -0
  554. mindspore/utils/hooks.py +81 -0
  555. mindspore/utils/runtime_execution_order_check.py +550 -0
  556. mindspore/utils/utils.py +138 -4
  557. mindspore/version.py +1 -1
  558. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +3 -3
  559. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +562 -393
  560. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +1 -1
  561. mindspore/_install_custom.py +0 -43
  562. mindspore/common/_register_for_adapter.py +0 -74
  563. mindspore/common/_tensor_overload.py +0 -139
  564. mindspore/mindspore_np_dtype.dll +0 -0
  565. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  566. mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
  567. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  568. mindspore/ops_generate/gen_aclnn_implement.py +0 -263
  569. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  570. mindspore/ops_generate/gen_pyboost_func.py +0 -1052
  571. mindspore/ops_generate/gen_utils.py +0 -209
  572. mindspore/ops_generate/op_proto.py +0 -145
  573. mindspore/ops_generate/template.py +0 -261
  574. mindspore/profiler/envprofiling.py +0 -254
  575. mindspore/profiler/profiling.py +0 -1926
  576. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
  577. {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