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,247 @@
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
+
16
+ """compile custom kernel with ninja"""
17
+
18
+ import os
19
+ import shlex
20
+ import subprocess
21
+ import sysconfig
22
+ import time
23
+ import stat
24
+ from mindspore import log as logger
25
+
26
+
27
+ class VersionManager:
28
+ """version manager"""
29
+
30
+ def __init__(self):
31
+ self.entries = {} # module_name : (version, hash)
32
+
33
+ def _get_version(self, module_name):
34
+ """get version"""
35
+ return self.entries.get(module_name, (None, None))[0]
36
+
37
+ def _update_version_if_changed(self, module_name, sources, build_args, build_dir):
38
+ """update version if changed"""
39
+ hash_value = self._update_hash(0, build_dir)
40
+ hash_value = self._update_sources_hash(hash_value, sources)
41
+ hash_value = self._update_args_hash(hash_value, build_args)
42
+
43
+ entry = self.entries.get(module_name)
44
+ if entry is None:
45
+ self.entries[module_name] = entry = (0, hash_value)
46
+ elif hash_value != entry[1]:
47
+ self.entries[module_name] = entry = (entry[0] + 1, hash_value)
48
+
49
+ return entry[0]
50
+
51
+ def _update_hash(self, seed, value):
52
+ """update hash value"""
53
+ # Good old boost::hash_combine
54
+ return seed ^ (hash(value) + 0x9e3779b9 + (seed << 6) + (seed >> 2))
55
+
56
+ def _update_sources_hash(self, hash_value, sources):
57
+ """hash source files"""
58
+ for filename in sources:
59
+ with open(filename) as file:
60
+ hash_value = self._update_hash(hash_value, file.read())
61
+ return hash_value
62
+
63
+ def _update_args_hash(self, hash_value, build_args):
64
+ """hash build arguments"""
65
+ for group in build_args:
66
+ if group:
67
+ for argument in group:
68
+ hash_value = self._update_hash(hash_value, argument)
69
+ return hash_value
70
+
71
+ def check_version(self, name, sources, cflags, ldflags, include_paths, build_dir):
72
+ """check version"""
73
+ old_version = self._get_version(name)
74
+ version = self._update_version_if_changed(name, sources, [cflags, ldflags, include_paths], build_dir)
75
+ logger.info(f'Build module {name}, version={version}')
76
+ if version > 0:
77
+ if version != old_version:
78
+ logger.info(
79
+ f'The conditions for extension module {name} have changed. '
80
+ f'Updating to version {version} and re-building as {name}_v{version}.'
81
+ )
82
+ name = f'{name}_v{version}'
83
+
84
+ if version != old_version:
85
+ return True
86
+ logger.info(f'No modifications detected for extension module {name}')
87
+ return False
88
+
89
+
90
+ version_manager = VersionManager()
91
+
92
+
93
+ class FileLocker:
94
+ """FileLocker"""
95
+
96
+ def __init__(self, build_dir):
97
+ """FileLocker"""
98
+ self.lock_file_name = os.path.join(build_dir, 'build.lock')
99
+ self.lock_fd = None
100
+
101
+ def try_lock(self):
102
+ """Acquire a file-based lock."""
103
+ try:
104
+ mode = stat.S_IRUSR | stat.S_IWUSR
105
+ self.lock_fd = os.open(self.lock_file_name, os.O_CREAT | os.O_EXCL, mode)
106
+ return True
107
+ except FileExistsError:
108
+ return False
109
+
110
+ def release_lock(self):
111
+ """Release the file-based lock."""
112
+ if self.lock_fd is not None:
113
+ os.close(self.lock_fd)
114
+ self.lock_fd = None
115
+ os.remove(self.lock_file_name)
116
+
117
+ def wait(self):
118
+ """Wait until lock is released."""
119
+ while os.path.exists(self.lock_file_name):
120
+ time.sleep(0.5)
121
+
122
+
123
+ class ExtensionBuilder:
124
+ """ExtensionBuilder"""
125
+
126
+ def __init__(self):
127
+ """ExtensionBuilder"""
128
+
129
+ def _get_build_directory(self, module_name):
130
+ """Get build directory."""
131
+ build_root = os.environ.get('MS_COMPILER_CACHE_PATH')
132
+ if build_root is None:
133
+ build_root = os.path.realpath("./kernel_meta")
134
+ logger.info(f'Using {build_root} as MindSpore extensions root...')
135
+
136
+ build_dir = os.path.join(build_root, module_name)
137
+ if not os.path.exists(build_dir):
138
+ os.makedirs(build_dir, exist_ok=True)
139
+ return build_dir
140
+
141
+ def _compile(self, name, sources, cflags, ldflags, include_paths, build_dir):
142
+ """Compile."""
143
+ if version_manager.check_version(name, sources, cflags, ldflags, include_paths, build_dir):
144
+ locker = FileLocker(build_dir)
145
+ if locker.try_lock():
146
+ try:
147
+ self._write_ninja_file_and_build_library(name, sources, cflags, ldflags, include_paths, build_dir)
148
+ finally:
149
+ locker.release_lock()
150
+ else:
151
+ locker.wait()
152
+ logger.info(f'Loading extension module {name}...')
153
+
154
+ def _verify_ninja_availability(self):
155
+ """Check ninja is available."""
156
+ try:
157
+ subprocess.check_output('ninja --version'.split())
158
+ except Exception:
159
+ raise RuntimeError("Ninja is required to load C++ extensions")
160
+
161
+ def _write_ninja_file_and_build_library(self, module_name, sources, cflags, ldflags, include_paths, build_dir):
162
+ """Write ninja file and build library."""
163
+ self._verify_ninja_availability()
164
+
165
+ ninja_build_file = os.path.join(build_dir, 'build.ninja')
166
+ logger.info(f'Save ninja build file {ninja_build_file}.')
167
+ self._write_ninja_file(ninja_build_file, module_name, sources, cflags, ldflags, include_paths)
168
+
169
+ logger.info(f'Building extension module {module_name}.')
170
+ self._run_ninja_build(build_dir, module_name)
171
+
172
+ def _write_ninja_file(self, fname, name, sources, extra_cflags, extra_ldflags, extra_include_paths):
173
+ """Write ninja file."""
174
+ python_include_path = sysconfig.get_path('include', scheme='posix_prefix')
175
+ python_includes = [python_include_path] if python_include_path is not None else []
176
+ cflags = [f'-DMS_EXTENSION_NAME={name}', "-D_GLIBCXX_USE_CXX11_ABI=0"]
177
+ cflags += [f'-I{shlex.quote(os.path.abspath(include.strip()))}' for include in extra_include_paths]
178
+ cflags += [f'-isystem {shlex.quote(include)}' for include in python_includes]
179
+ cflags += ['-fPIC', '-std=c++17']
180
+ cflags += extra_cflags
181
+ cflags = [flag.strip() for flag in cflags]
182
+
183
+ # '/path/to/file.cpp' -> 'file'
184
+ objs = [os.path.splitext(os.path.basename(src))[0] + ".o" for src in sources]
185
+ sources = [os.path.abspath(file) for file in sources]
186
+ ldflags = ['-shared'] + [flag.strip() for flag in extra_ldflags]
187
+ target = name + '.so'
188
+
189
+ config = ['ninja_required_version = 1.3']
190
+ config.append('cxx = ' + os.environ.get('CXX', 'g++'))
191
+
192
+ flags = [f'cflags = {" ".join(cflags)}']
193
+ flags.append(f'ldflags = {" ".join(ldflags)}')
194
+
195
+ compile_rule = ['rule compile']
196
+ compile_rule.append(' command = $cxx -MMD -MF $out.d $cflags -c $in -o $out')
197
+ compile_rule.append(' depfile = $out.d')
198
+ compile_rule.append(' deps = gcc')
199
+
200
+ build = [f'build {obj.replace(" ", "$ ")}: compile {src.replace(" ", "$ ")}' for src, obj in zip(sources, objs)]
201
+
202
+ link_rule = ['rule link', ' command = $cxx $in $ldflags -o $out']
203
+ link = [f'build {target}: link {" ".join(objs)}']
204
+ default = [f'default {target}']
205
+
206
+ blocks = [config, flags, compile_rule, link_rule, build, link, default]
207
+ content = "\n\n".join("\n".join(b) for b in blocks) + "\n"
208
+
209
+ if os.path.exists(fname):
210
+ with open(fname) as f:
211
+ old_content = f.read()
212
+ if old_content == content:
213
+ return
214
+
215
+ with open(fname, 'w') as source_file:
216
+ source_file.write(content)
217
+
218
+ def _run_ninja_build(self, build_dir, module_name):
219
+ """Run ninja build."""
220
+ cmd = ['ninja', '-v']
221
+ env = os.environ.copy()
222
+
223
+ try:
224
+ subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=build_dir, check=True, env=env)
225
+ # If the build succeeds, do nothing with the output (silent)
226
+ except subprocess.CalledProcessError as e:
227
+ # Capture the error details
228
+ stderr_output = e.stderr.decode() if e.stderr else ""
229
+ stdout_output = e.stdout.decode() if e.stdout else ""
230
+ full_output = stderr_output + stdout_output
231
+
232
+ # Format the error message
233
+ msg = f"Error building extension '{module_name}': {full_output}"
234
+
235
+ # In multi-card situation, only one process build the library.
236
+ # When building failed, the old extension library should be removed.
237
+ so_file = os.path.join(build_dir, f"{module_name}.so")
238
+ if os.path.exists(so_file):
239
+ os.remove(so_file)
240
+ raise RuntimeError(msg) from e
241
+
242
+ def build(self, module_name, sources, extra_cflags=None, extra_ldflags=None, extra_include_paths=None):
243
+ """Build module."""
244
+ src = [sources] if isinstance(sources, str) else sources
245
+ build_dir = self._get_build_directory(module_name)
246
+ self._compile(module_name, src, extra_cflags, extra_ldflags, extra_include_paths, build_dir)
247
+ return os.path.join(build_dir, f"{module_name}.so")
@@ -27,7 +27,7 @@ class UpdateCache(PrimitiveWithCheck):
27
27
  The difference is that UpdateCache will not update when indices < 0 or indices >= max_num.
28
28
 
29
29
  Inputs:
30
- - **input_x** (Parameter) - Parameter which is going to be updated.
30
+ - **input_x** (Union[Parameter, Tensor]) - Parameter or Tensor which is going to be updated.
31
31
  - **indices** (Tensor) - Update indices of input_x.
32
32
  - **updates** (Tensor) - The update values.
33
33
 
@@ -148,7 +148,7 @@ class CacheSwapTable(PrimitiveWithCheck):
148
148
  Delete a hashmap entry,and insert a new key to hashmap, return the key and value of delete entry.
149
149
 
150
150
  Inputs:
151
- - **cache_table** (Parameter) - The cache table which is on device.
151
+ - **cache_table** (Union[Parameter, Tensor]) - The cache table which is on device.
152
152
  - **swap_cache_idx** (Tensor) - The index of table which need to swap. -1 is skipped.
153
153
  - **miss_value** (int) - The values which arg going to swap into cache table.
154
154
 
@@ -227,10 +227,10 @@ class MapCacheIdx(PrimitiveWithCheck):
227
227
 
228
228
  class DynamicAssign(PrimitiveWithCheck):
229
229
  """
230
- Assigns `Parameter` with a value, the `value` can have a dynamic shape.
230
+ Assigns `Parameter` or `Tensor` with a value, the `value` can have a dynamic shape.
231
231
 
232
232
  Inputs:
233
- - **variable** (Parameter) - The `Parameter`.
233
+ - **variable** (Union[Parameter, Tensor]) - The `Parameter` or `Tensor`.
234
234
  - **value** (Tensor) - The value to be assigned.
235
235
 
236
236
  Outputs:
@@ -30,13 +30,13 @@ from mindspore.communication.management import GlobalComm
30
30
  from mindspore.common._utils import is_shape_unknown, is_dim_unknown
31
31
  from ..auto_generate import (AbsGrad, ACosGrad, LogitGrad, AcoshGrad, AsinGrad, AsinhGrad, ReciprocalGrad, RsqrtGrad,
32
32
  SqrtGrad, BatchNormGrad, BatchNormGradGrad, BiasAddGrad, GeLUGrad, FastGeLUGrad,
33
- AvgPoolGrad, MinimumGrad, LogSoftmaxGrad, PReLUGrad, ReluGrad, ReLU6Grad, EluGrad,
33
+ AvgPoolGrad, MinimumGrad, LogSoftmaxGrad, GluGrad, PReLUGrad, ReluGrad, ReLU6Grad, EluGrad,
34
34
  GatherDGradV2, ResizeBilinearGrad, ResizeLinear1DGrad, ResizeNearestNeighborV2Grad,
35
35
  SigmoidGrad, HSwishGrad, NLLLossGrad, AtanGrad, GridSampler3DGrad, GridSampler2DGrad,
36
36
  ResizeBicubicGrad, HSigmoidGrad, CholeskyGrad, ResizeNearestNeighborGrad, LayerNormGrad,
37
37
  HShrinkGrad, LayerNormGradGrad, SiLUGrad, MaximumGrad, MaximumGradGrad, RmsNormGrad,
38
38
  FlashAttentionScoreGrad, UpsampleTrilinear3DGrad, UpsampleNearest3DGrad, MaskedSelectGrad,
39
- BinaryCrossEntropyGrad, SoftShrinkGrad, SeluGrad)
39
+ BinaryCrossEntropyGrad, SoftShrinkGrad, SoftMarginLossGrad, SeluGrad, SmoothL1LossGrad)
40
40
 
41
41
 
42
42
  class SparseFillEmptyRowsGrad(Primitive):
@@ -1639,25 +1639,6 @@ class SliceGrad(PrimitiveWithInfer):
1639
1639
  'value': None}
1640
1640
 
1641
1641
 
1642
- class SmoothL1LossGrad(Primitive):
1643
- """Computes gradient for prediction on SmoothL1Loss."""
1644
-
1645
- @prim_attr_register
1646
- def __init__(self, beta=1.0, reduction='none'):
1647
- self.add_prim_attr('sigma', self.beta)
1648
- self.reduction = validator.check_string(
1649
- reduction, ['none', 'sum', 'mean'], 'reduction', self.name)
1650
-
1651
-
1652
- class SoftMarginLossGrad(Primitive):
1653
- """Computes gradient for prediction on SoftMarginLoss."""
1654
-
1655
- @prim_attr_register
1656
- def __init__(self, reduction="mean"):
1657
- self.init_prim_io_names(inputs=['predict', 'label', "dout"], outputs=['gradient'])
1658
- self.reduction = validator.check_string(reduction, ['none', 'sum', 'mean'], 'reduction', self.name)
1659
-
1660
-
1661
1642
  class StridedSliceGrad(Primitive):
1662
1643
  """
1663
1644
  Performs grad of StridedSlice operation.
@@ -1962,15 +1943,6 @@ class MvlgammaGrad(Primitive):
1962
1943
  self.p = validator.check_value_type('p', p, [int], self.name)
1963
1944
 
1964
1945
 
1965
- class CdistGrad(Primitive):
1966
- """Computes gradient for Cdist."""
1967
-
1968
- @prim_attr_register
1969
- def __init__(self, p=2.0):
1970
- validator.check_value_type("p", p, [float], self.name)
1971
- self.init_prim_io_names(inputs=['grad', 'input_x', 'input_y', 'cdist'], outputs=['output'])
1972
-
1973
-
1974
1946
  class PdistGrad(Primitive):
1975
1947
  """Computes gradient for Pdist operation.
1976
1948
 
@@ -2908,19 +2880,6 @@ class AffineGridGrad(Primitive):
2908
2880
  self.init_prim_io_names(inputs=['y_grad', 'x_size'], outputs=['x_grad'])
2909
2881
 
2910
2882
 
2911
-
2912
- class GluGrad(Primitive):
2913
- """
2914
- Computes grad for Glu operation.
2915
- """
2916
-
2917
- @prim_attr_register
2918
- def __init__(self, axis):
2919
- self.add_prim_attr("cust_aicpu", self.name)
2920
- self.init_prim_io_names(inputs=["grads", "x"], outputs=["y"])
2921
- validator.check_value_type("axis", axis, [int], self.name)
2922
-
2923
-
2924
2883
  class MapTensorGetGrad(Primitive):
2925
2884
  """
2926
2885
  Computes gradients for MapTensorGet operation.
@@ -16,4 +16,5 @@
16
16
  """Operator of infer net"""
17
17
  # pylint: disable=unused-import
18
18
  from ..auto_generate import (QuantV2, DynamicQuantExt, QuantBatchMatmul, WeightQuantBatchMatmul, KVCacheScatterUpdate,
19
- FusedInferAttentionScore, GroupedMatmul, MoeFinalizeRouting, QuantLinearSparse)
19
+ FusedInferAttentionScore, GroupedMatmul, MoeFinalizeRouting, QuantLinearSparse,
20
+ MatmulAllReduceAddRmsNorm, MoeGatingTopKSoftmax)
@@ -21,7 +21,6 @@ import weakref
21
21
  import numpy as np
22
22
 
23
23
  from mindspore.common import Tensor
24
- from mindspore.common._stub_tensor import StubTensor
25
24
  from mindspore.ops import composite as C
26
25
  from mindspore.ops.operations.array_ops import Cast
27
26
  from mindspore.ops.operations._scalar_ops import bit_or, bit_and
@@ -29,15 +28,15 @@ from mindspore.ops import signature as sig
29
28
  from mindspore.ops.operations.math_ops import _infer_shape_reduce
30
29
  from mindspore.ops.primitive import PrimitiveWithCheck, PrimitiveWithInfer, prim_attr_register, Primitive, \
31
30
  _run_op, _check_contains_variable
32
- from mindspore._c_expression import Tensor as Tensor_
31
+ from mindspore._c_expression import TensorPy as Tensor_
33
32
  from mindspore._c_expression import typing, HookType
33
+ from mindspore._c_expression import pyboost_generator
34
34
  from mindspore import _checkparam as validator
35
35
  from mindspore.common import dtype as mstype
36
36
  from mindspore.common.parameter import Parameter
37
+ from mindspore.common._stub_tensor import _convert_stub
37
38
  from mindspore.communication.management import GlobalComm, get_rank, _get_group, get_group_size
38
39
  from mindspore.common.api import _pynative_executor
39
- from mindspore.common._register_for_adapter import ms_adapter_registry
40
- from mindspore import ops
41
40
  from ..auto_generate import TensorCopySlices, SiLU, Cummin, TopKRouter, ExtractImagePatches, DecoderKVCache, \
42
41
  PromptKVCache, ApplyCamePart1, ApplyCamePart2, ApplyCamePart3, ApplyCamePart4
43
42
 
@@ -79,7 +78,7 @@ class Generator(Primitive):
79
78
  def __call__(self, cmd, inputs):
80
79
  if cmd == 0: # step cmd
81
80
  return inputs[0], inputs[1]
82
- return super().__call__(cmd, inputs)
81
+ return _convert_stub(pyboost_generator(self, [cmd, inputs]))
83
82
 
84
83
 
85
84
  class Quant(PrimitiveWithInfer):
@@ -534,7 +533,8 @@ class ConvertToDynamic(PrimitiveWithCheck):
534
533
  >>> dynamic_input = self.convert_to_dynamic(input)
535
534
  >>> reshaped_input = self.reshape(dynamic_input, new_shape)
536
535
  >>>
537
- >>> ms.set_context(mode=ms.GRAPH_MODE, device_target="CPU")
536
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
537
+ >>> ms.set_device(device_target="CPU")
538
538
  >>> input = Tensor(np.array([0, 1, 2, 3])
539
539
  >>> new_shape = (2, 2)
540
540
  >>> net = TestDynamicNet()
@@ -585,7 +585,8 @@ class GpuConvertToDynamicShape(PrimitiveWithCheck):
585
585
  >>> dynamic_shape_input = self.convert_to_dynamic_shape(input)
586
586
  >>> reshaped_input = self.reshape(input, new_shape)
587
587
  >>>
588
- >>> ms.set_context(mode=ms.GRAPH_MODE, device_target="GPU")
588
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
589
+ >>> ms.set_device(device_target="GPU")
589
590
  >>> input = Tensor(np.array([0, 1, 2, 3])
590
591
  >>> new_shape = (2, 2)
591
592
  >>> net = TestDynamicShapeReshapeNet()
@@ -632,7 +633,8 @@ class ErrorOnDynamicShapeInput(PrimitiveWithInfer):
632
633
  >>> dynamic_shape_input = self.convert_to_dynamic_shape(input)
633
634
  >>> self.error_on_dynamic_shape_input(dynamic_shape_input)
634
635
  >>>
635
- >>> ms.set_context(mode=ms.GRAPH_MODE, device_target="GPU")
636
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
637
+ >>> ms.set_device(device_target="GPU")
636
638
  >>> input = Tensor(np.array([0])
637
639
  >>> net = TestDynamicShapeReshapeNet()
638
640
  >>> output = net(input, new_shape)
@@ -663,17 +665,17 @@ class ErrorOnDynamicShapeInput(PrimitiveWithInfer):
663
665
 
664
666
  class SequenceMask(PrimitiveWithCheck):
665
667
  """
666
- Returns a mask tensor representing the first N positions of each cell.
668
+ Returns a mask tensor representing the first N positions of each cell. The internal element data type is bool.
667
669
 
668
670
  If lengths has shape [d_1, d_2, ..., d_n], then the resulting tensor mask has type and shape
669
671
  [d_1, d_2, ..., d_n, maxlen], with mask[i_1, i_2, ..., i_n, j] = (j < lengths[i_1, i_2, ..., i_n])
670
672
 
671
673
  Inputs:
672
- - **lengths** (Tensor) - Tensor to calculate the mask for. All values in this tensor should be
674
+ - **lengths** (Tensor) - The input tensor. All values in this tensor should be
673
675
  less than or equal to `maxlen`. Values greater than `maxlen` will be treated as `maxlen`.
674
676
  Must be type int32 or int64.
675
677
 
676
- - **maxlen** (int) - size of the last dimension of returned tensor. Must be positive and same
678
+ - **maxlen** (int) - Specify the length of the returned tensor. Must be positive and same
677
679
  type as elements in `lengths`.
678
680
 
679
681
  Outputs:
@@ -1407,9 +1409,9 @@ class PsROIPooling(PrimitiveWithInfer):
1407
1409
  >>> group_size=7)
1408
1410
  >>> out, channel_map = psRoIPooling(features, rois)
1409
1411
  >>> print(out.shape)
1410
- [4, 21, 7, 7]
1412
+ [4, 21, 7, 7]
1411
1413
  >>> print(channel_map.shape)
1412
- [4, 21, 7, 7]
1414
+ [4, 21, 7, 7]
1413
1415
  """
1414
1416
 
1415
1417
  @prim_attr_register
@@ -1570,7 +1572,29 @@ class CellBackwardHook(PrimitiveWithInfer):
1570
1572
  # If args is empty, just return.
1571
1573
  if not args:
1572
1574
  return args
1573
- return _run_op(self, self.name, args)
1575
+
1576
+ # Collect the indices and values of arguments that are instances of Tensor
1577
+ tensors_idx = []
1578
+ tensors = []
1579
+ for i, arg in enumerate(args):
1580
+ if isinstance(arg, Tensor):
1581
+ tensors_idx.append(i)
1582
+ tensors.append(arg)
1583
+
1584
+ # If there are no Tensor arguments, return the single argument or the original tuple
1585
+ if not tensors:
1586
+ return args[0] if len(args) == 1 else args
1587
+
1588
+ new_tensors = _run_op(self, self.name, tensors)
1589
+ if not isinstance(new_tensors, tuple):
1590
+ new_tensors = (new_tensors,)
1591
+
1592
+ # Replace the original Tensor arguments with the processed ones
1593
+ arg_list = list(args)
1594
+ for idx, val in zip(tensors_idx, new_tensors):
1595
+ arg_list[idx] = val
1596
+
1597
+ return arg_list[0] if len(arg_list) == 1 else tuple(arg_list)
1574
1598
 
1575
1599
  def infer_shape(self, *inputs_shape):
1576
1600
  if len(inputs_shape) == 1:
@@ -1772,7 +1796,8 @@ class KMeansCentroids(PrimitiveWithInfer):
1772
1796
  >>> import mindspore.nn as nn
1773
1797
  >>> from mindspore import Tensor
1774
1798
  >>> from mindspore.ops import operations as P
1775
- >>> ms.set_context(mode=ms.GRAPH_MODE, device_target="Ascend")
1799
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
1800
+ >>> ms.set_device(device_target="Ascend")
1776
1801
 
1777
1802
  >>> class Net(nn.Cell):
1778
1803
  >>> def __init__(self):
@@ -2039,6 +2064,8 @@ class CheckBprop(PrimitiveWithInfer):
2039
2064
  f"which is:{len(yshapes)} but got {len(xshapes)}.")
2040
2065
 
2041
2066
  def shape_equal(shape1, shape2):
2067
+ if -2 in shape1 or -2 in shape2:
2068
+ return True
2042
2069
  if len(shape1) != len(shape2):
2043
2070
  return False
2044
2071
  for shape_axis1, shape_axis2 in zip(shape1, shape2):
@@ -2226,74 +2253,6 @@ class IsInstance(PrimitiveWithInfer):
2226
2253
  return out
2227
2254
 
2228
2255
 
2229
- class ConvertToAdapterTensor(Primitive):
2230
- """
2231
- Convert a tensor from MindSpore's Tensor type to MSAdapter's Tensor type,
2232
- where MSAdapter's Tensor is a subclass of MindSpore's Tensor.
2233
-
2234
- Inputs:
2235
- - **x** (Tensor) - The input tensor.
2236
-
2237
- Outputs:
2238
- A tensor, whose type is MSAdapter's Tensor.
2239
-
2240
- Supported Platforms:
2241
- ``Ascend`` ``GPU`` ``CPU``
2242
-
2243
- Examples:
2244
- >>> x = Tensor([1, 2 ,3])
2245
- >>> x = ops.ConvertToAdapterTensor()(x)
2246
- >>> print(x)
2247
- [1 2 3]
2248
- """
2249
-
2250
- @prim_attr_register
2251
- def __init__(self):
2252
- """Initialize"""
2253
-
2254
- def __call__(self, x):
2255
- """Run in PyNative mode"""
2256
- return ms_adapter_registry.tensor(x, cast_tensor=True)
2257
-
2258
-
2259
- convert_to_adapter_tensor = ConvertToAdapterTensor()
2260
-
2261
-
2262
- class ConvertToMsTensor(Primitive):
2263
- """
2264
- Convert a tensor from MSAdapter's Tensor type to MindSpore's Tensor type,
2265
- where MSAdapter's Tensor is a subclass of MindSpore's Tensor.
2266
-
2267
- Inputs:
2268
- - **x** (Tensor) - The input tensor.
2269
-
2270
- Outputs:
2271
- A tensor, whose type is MindSpore's Tensor.
2272
-
2273
- Supported Platforms:
2274
- ``Ascend`` ``GPU`` ``CPU``
2275
-
2276
- Examples:
2277
- >>> x = Tensor([1, 2 ,3])
2278
- >>> x = ops.ConvertToMsTensor()(x)
2279
- >>> print(x)
2280
- [1 2 3]
2281
- """
2282
-
2283
- @prim_attr_register
2284
- def __init__(self):
2285
- """Initialize"""
2286
-
2287
- def __call__(self, x):
2288
- """Run in PyNative mode"""
2289
- if isinstance(x, StubTensor):
2290
- return StubTensor(stub=x.stub, tensor=x.tensor)
2291
- return ops.auto_generate.deepcopy(x)
2292
-
2293
-
2294
- convert_to_ms_tensor = ConvertToMsTensor()
2295
-
2296
-
2297
2256
  class GetGrad(Primitive):
2298
2257
  """
2299
2258
  Use the position id or Parameter object to get the gradient from the output
@@ -2445,7 +2404,7 @@ class FFN(Primitive):
2445
2404
  The FFN computation is similar to Feed-Forward Network, it contains matmul + gelu + matmul.
2446
2405
 
2447
2406
  Args:
2448
- activation (string): The activation type, set to 'fastgelu' or 'gelu'.
2407
+ activation (str): The activation type, set to 'fastgelu' or 'gelu'.
2449
2408
  Only support 'fastgelu' for now. Default: "fastgelu".
2450
2409
  inner_precise (int): The precise mode, set to 0 for high precision or 1 for high performance.
2451
2410
  Only support 1 for now. Default: 0.
@@ -496,7 +496,7 @@ def kernel(fn=None, reg_info=None, compile_attrs=None):
496
496
  callable function is equal to the case when `fn` is not None.
497
497
 
498
498
  Supported Platforms:
499
- ``Ascend`` ``GPU`` ``CPU``
499
+ ``GPU`` ``CPU``
500
500
 
501
501
  Examples:
502
502
  >>> import numpy as np
@@ -510,12 +510,12 @@ def kernel(fn=None, reg_info=None, compile_attrs=None):
510
510
  ... "test3": 12,
511
511
  ... }
512
512
  >>> # Create the reg info json string.
513
- >>> op_gpu_info = CustomRegOp() \\
513
+ >>> op_cpu_info = CustomRegOp() \\
514
514
  ... .input(0, "a") \\
515
515
  ... .input(0, "b") \\
516
516
  ... .output(0, "y") \\
517
517
  ... .dtype_format(DataType.F32_None, DataType.F32_None, DataType.F32_None) \\
518
- ... .target("GPU") \\
518
+ ... .target("CPU") \\
519
519
  ... .get_op_info()
520
520
  >>>
521
521
  >>> # Create inputs for the custom op.
@@ -524,7 +524,7 @@ def kernel(fn=None, reg_info=None, compile_attrs=None):
524
524
  ...
525
525
  >>> # Write a Hybrid DSL function through the decorator @kernel.
526
526
  >>> # We can also pass the compile attrs and the reg info through the decorator.
527
- >>> @kernel(reg_info=op_gpu_info, compile_attrs=attrs)
527
+ >>> @kernel(reg_info=op_cpu_info, compile_attrs=attrs)
528
528
  ... def outer_product(a, b):
529
529
  ... c = output_tensor(a.shape, a.dtype)
530
530
  ...
@@ -539,12 +539,6 @@ def kernel(fn=None, reg_info=None, compile_attrs=None):
539
539
  >>> # We can use the function directly as a python function.
540
540
  >>> # In this case, the inputs should be numpy arrays.
541
541
  >>> result = outer_product(input_x, input_y)
542
- ...
543
- >>> # Create a custom op with mode "hybrid" (default value) by the Hybrid DSL function.
544
- >>> # In this case, we will enjoy the automatic dtype/shape infer for free.
545
- >>> # The inputs should be mindspore tensors.
546
- >>> test_op_hybrid = ops.Custom(outer_product)
547
- >>> output = test_op_hybrid(Tensor(input_x), Tensor(input_y))
548
542
  """
549
543
  if compile_attrs is None:
550
544
  compile_attrs = {}
@@ -859,7 +859,7 @@ class TensorsQueueCreate(PrimitiveWithInfer):
859
859
  dtype (mindspore.dtype): the data type in the TensorsQueue.
860
860
  shapes (tuple(tuple(int))): the shape of each tensor in element.
861
861
  size (int): The size of the TensorsQueue.
862
- name (string): the name of this TensorsQueue. Default: "Q".
862
+ name (str): the name of this TensorsQueue. Default: "Q".
863
863
 
864
864
  Inputs:
865
865
  None.
@@ -1,4 +1,4 @@
1
- # Copyright 2023 Huawei Technologies Co., Ltd
1
+ # Copyright 2023-2025 Huawei Technologies Co., Ltd
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -16,7 +16,8 @@
16
16
 
17
17
  from mindspore.ops.primitive import Primitive, prim_attr_register
18
18
  from .manually_defined import ScalarAdd, ScalarBool, ScalarDiv, ScalarMul, ScalarEq, ScalarFloorDiv, ScalarGe, \
19
- ScalarGt, ScalarLe, ScalarLog, ScalarLt, ScalarMod, ScalarPow, ScalarSub, ScalarUadd, ScalarUsub
19
+ ScalarGt, ScalarLe, ScalarLog, ScalarLt, ScalarMod, ScalarPow, ScalarSub, ScalarUadd, ScalarUsub, ScalarMax, \
20
+ ScalarMin
20
21
 
21
22
 
22
23
  class bool_not(Primitive):
@@ -16,7 +16,7 @@
16
16
  from mindspore.ops.primitive import Primitive, PrimitiveWithCheck, prim_attr_register
17
17
  import mindspore._checkparam as validator
18
18
  from mindspore.common import Tensor
19
- from mindspore._c_expression import Tensor as Tensor_
19
+ from mindspore._c_expression import TensorPy as Tensor_
20
20
 
21
21
 
22
22
  class ListAppend(Primitive):