mindspore 2.4.10__cp311-cp311-win_amd64.whl → 2.6.0__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (602) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
  3. mindspore/Newtonsoft.Json.dll +0 -0
  4. mindspore/__init__.py +13 -6
  5. mindspore/_c_dataengine.cp311-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp311-win_amd64.pyd +0 -0
  8. mindspore/_check_jit_forbidden_api.py +3 -0
  9. mindspore/_checkparam.py +3 -38
  10. mindspore/_deprecated/__init__.py +17 -0
  11. mindspore/_deprecated/jit.py +198 -0
  12. mindspore/_extends/builtin_operations.py +1 -1
  13. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  14. mindspore/_extends/parse/__init__.py +6 -7
  15. mindspore/_extends/parse/compile_config.py +83 -0
  16. mindspore/_extends/parse/deprecated/__init__.py +0 -0
  17. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
  18. mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
  19. mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
  20. mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
  21. mindspore/_extends/parse/parser.py +47 -198
  22. mindspore/_extends/parse/resources.py +1 -5
  23. mindspore/_extends/parse/standard_method.py +229 -99
  24. mindspore/_extends/pijit/__init__.py +2 -2
  25. mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
  26. mindspore/_extends/pijit/tensor_func_list.py +27 -0
  27. mindspore/_extends/utils.py +1 -1
  28. mindspore/amp.py +11 -5
  29. mindspore/atlprov.dll +0 -0
  30. mindspore/avcodec-59.dll +0 -0
  31. mindspore/avdevice-59.dll +0 -0
  32. mindspore/avfilter-8.dll +0 -0
  33. mindspore/avformat-59.dll +0 -0
  34. mindspore/avutil-57.dll +0 -0
  35. mindspore/boost/__init__.py +2 -2
  36. mindspore/boost/base.py +3 -7
  37. mindspore/boost/boost_cell_wrapper.py +138 -43
  38. mindspore/c1.dll +0 -0
  39. mindspore/c1xx.dll +0 -0
  40. mindspore/c2.dll +0 -0
  41. mindspore/common/__init__.py +6 -3
  42. mindspore/common/_grad_function.py +56 -0
  43. mindspore/common/_pijit_context.py +14 -5
  44. mindspore/common/_register_for_tensor.py +1 -2
  45. mindspore/common/_stub_tensor.py +30 -14
  46. mindspore/common/_tensor_cpp_method.py +17 -0
  47. mindspore/common/_tensor_docs.py +4760 -0
  48. mindspore/common/api.py +480 -372
  49. mindspore/common/auto_dynamic_shape.py +41 -44
  50. mindspore/common/dtype.py +39 -36
  51. mindspore/common/dump.py +9 -6
  52. mindspore/common/file_system.py +9 -1
  53. mindspore/common/generator.py +5 -0
  54. mindspore/common/hook_handle.py +6 -2
  55. mindspore/common/initializer.py +13 -10
  56. mindspore/common/jit_begin_end.py +94 -0
  57. mindspore/common/jit_config.py +6 -1
  58. mindspore/common/jit_context.py +76 -0
  59. mindspore/common/jit_trace.py +378 -0
  60. mindspore/common/lazy_inline.py +9 -3
  61. mindspore/common/mindir_util.py +10 -2
  62. mindspore/common/mutable.py +5 -4
  63. mindspore/common/parameter.py +135 -52
  64. mindspore/common/seed.py +2 -2
  65. mindspore/common/sparse_tensor.py +23 -17
  66. mindspore/common/tensor.py +975 -1981
  67. mindspore/communication/__init__.py +7 -5
  68. mindspore/communication/_comm_helper.py +52 -2
  69. mindspore/communication/comm_func.py +240 -181
  70. mindspore/communication/management.py +95 -26
  71. mindspore/context.py +324 -573
  72. mindspore/dataset/__init__.py +65 -37
  73. mindspore/dataset/audio/__init__.py +2 -8
  74. mindspore/dataset/audio/transforms.py +3 -17
  75. mindspore/dataset/callback/ds_callback.py +2 -1
  76. mindspore/dataset/core/config.py +87 -6
  77. mindspore/dataset/engine/cache_admin.py +3 -3
  78. mindspore/dataset/engine/cache_client.py +6 -5
  79. mindspore/dataset/engine/datasets.py +292 -267
  80. mindspore/dataset/engine/datasets_audio.py +22 -8
  81. mindspore/dataset/engine/datasets_standard_format.py +46 -27
  82. mindspore/dataset/engine/datasets_text.py +78 -48
  83. mindspore/dataset/engine/datasets_user_defined.py +183 -117
  84. mindspore/dataset/engine/datasets_vision.py +120 -44
  85. mindspore/dataset/engine/iterators.py +283 -63
  86. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  87. mindspore/dataset/engine/obs/util.py +8 -0
  88. mindspore/dataset/engine/queue.py +40 -0
  89. mindspore/dataset/engine/samplers.py +289 -43
  90. mindspore/dataset/engine/serializer_deserializer.py +3 -2
  91. mindspore/dataset/engine/validators.py +53 -11
  92. mindspore/dataset/text/__init__.py +7 -6
  93. mindspore/dataset/text/transforms.py +6 -5
  94. mindspore/dataset/text/utils.py +3 -3
  95. mindspore/dataset/transforms/__init__.py +0 -9
  96. mindspore/dataset/transforms/py_transforms_util.py +17 -0
  97. mindspore/dataset/transforms/transforms.py +31 -14
  98. mindspore/dataset/utils/browse_dataset.py +1 -1
  99. mindspore/dataset/vision/__init__.py +2 -9
  100. mindspore/dataset/vision/transforms.py +202 -158
  101. mindspore/dataset/vision/utils.py +7 -5
  102. mindspore/dataset/vision/validators.py +1 -2
  103. mindspore/device_context/__init__.py +21 -0
  104. mindspore/device_context/ascend/__init__.py +25 -0
  105. mindspore/device_context/ascend/device.py +72 -0
  106. mindspore/device_context/ascend/op_debug.py +153 -0
  107. mindspore/device_context/ascend/op_precision.py +193 -0
  108. mindspore/device_context/ascend/op_tuning.py +123 -0
  109. mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
  110. mindspore/device_context/cpu/device.py +62 -0
  111. mindspore/device_context/cpu/op_tuning.py +43 -0
  112. mindspore/device_context/gpu/__init__.py +21 -0
  113. mindspore/device_context/gpu/device.py +70 -0
  114. mindspore/device_context/gpu/op_precision.py +67 -0
  115. mindspore/device_context/gpu/op_tuning.py +175 -0
  116. mindspore/device_manager.py +170 -0
  117. mindspore/dnnl.dll +0 -0
  118. mindspore/dpcmi.dll +0 -0
  119. mindspore/experimental/es/embedding_service.py +35 -27
  120. mindspore/experimental/llm_boost/__init__.py +1 -0
  121. mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
  122. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +209 -0
  123. mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
  124. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  125. mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
  126. mindspore/experimental/llm_boost/register.py +1 -0
  127. mindspore/experimental/map_parameter.py +4 -4
  128. mindspore/experimental/optim/adadelta.py +6 -6
  129. mindspore/experimental/optim/adagrad.py +4 -4
  130. mindspore/experimental/optim/adam.py +7 -0
  131. mindspore/experimental/optim/adamax.py +4 -4
  132. mindspore/experimental/optim/adamw.py +4 -0
  133. mindspore/experimental/optim/asgd.py +1 -1
  134. mindspore/experimental/optim/lr_scheduler.py +73 -46
  135. mindspore/experimental/optim/radam.py +34 -31
  136. mindspore/experimental/optim/rprop.py +1 -1
  137. mindspore/experimental/optim/sgd.py +1 -1
  138. mindspore/hal/contiguous_tensors_handle.py +6 -10
  139. mindspore/hal/device.py +55 -53
  140. mindspore/hal/event.py +52 -52
  141. mindspore/hal/memory.py +179 -120
  142. mindspore/hal/stream.py +150 -109
  143. mindspore/include/api/context.h +0 -1
  144. mindspore/include/dataset/constants.h +7 -4
  145. mindspore/include/dataset/execute.h +2 -2
  146. mindspore/jpeg62.dll +0 -0
  147. mindspore/log.py +50 -0
  148. mindspore/mindrecord/__init__.py +21 -8
  149. mindspore/mindrecord/config.py +17 -316
  150. mindspore/mindrecord/filereader.py +1 -9
  151. mindspore/mindrecord/filewriter.py +5 -15
  152. mindspore/mindrecord/mindpage.py +1 -9
  153. mindspore/mindspore_backend_common.dll +0 -0
  154. mindspore/mindspore_backend_manager.dll +0 -0
  155. mindspore/mindspore_common.dll +0 -0
  156. mindspore/mindspore_core.dll +0 -0
  157. mindspore/mindspore_dump.dll +0 -0
  158. mindspore/mindspore_frontend.dll +0 -0
  159. mindspore/mindspore_glog.dll +0 -0
  160. mindspore/mindspore_memory_pool.dll +0 -0
  161. mindspore/mindspore_ms_backend.dll +0 -0
  162. mindspore/mindspore_ops.dll +0 -0
  163. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  164. mindspore/mindspore_ops_kernel_common.dll +0 -0
  165. mindspore/mindspore_profiler.dll +0 -0
  166. mindspore/mindspore_pyboost.dll +0 -0
  167. mindspore/mindspore_pynative.dll +0 -0
  168. mindspore/mindspore_res_manager.dll +0 -0
  169. mindspore/mindspore_runtime_pipeline.dll +0 -0
  170. mindspore/mint/__init__.py +798 -761
  171. mindspore/mint/distributed/__init__.py +70 -4
  172. mindspore/mint/distributed/distributed.py +2679 -44
  173. mindspore/mint/linalg/__init__.py +8 -0
  174. mindspore/mint/nn/__init__.py +743 -22
  175. mindspore/mint/nn/functional.py +716 -23
  176. mindspore/mint/nn/layer/__init__.py +21 -4
  177. mindspore/mint/nn/layer/_functions.py +334 -0
  178. mindspore/mint/nn/layer/activation.py +276 -1
  179. mindspore/mint/nn/layer/basic.py +123 -0
  180. mindspore/mint/nn/layer/conv.py +933 -0
  181. mindspore/mint/nn/layer/normalization.py +223 -28
  182. mindspore/mint/nn/layer/padding.py +797 -0
  183. mindspore/mint/nn/layer/pooling.py +235 -0
  184. mindspore/mint/optim/__init__.py +3 -1
  185. mindspore/mint/optim/adam.py +223 -0
  186. mindspore/mint/optim/adamw.py +26 -19
  187. mindspore/mint/optim/sgd.py +171 -0
  188. mindspore/mint/special/__init__.py +2 -1
  189. mindspore/msobj140.dll +0 -0
  190. mindspore/mspdb140.dll +0 -0
  191. mindspore/mspdbcore.dll +0 -0
  192. mindspore/mspdbst.dll +0 -0
  193. mindspore/mspft140.dll +0 -0
  194. mindspore/msvcdis140.dll +0 -0
  195. mindspore/msvcp140_1.dll +0 -0
  196. mindspore/msvcp140_2.dll +0 -0
  197. mindspore/msvcp140_atomic_wait.dll +0 -0
  198. mindspore/msvcp140_codecvt_ids.dll +0 -0
  199. mindspore/multiprocessing/__init__.py +5 -0
  200. mindspore/nn/__init__.py +4 -1
  201. mindspore/nn/cell.py +1373 -192
  202. mindspore/nn/dynamic_lr.py +2 -1
  203. mindspore/nn/layer/activation.py +29 -27
  204. mindspore/nn/layer/basic.py +51 -35
  205. mindspore/nn/layer/channel_shuffle.py +3 -3
  206. mindspore/nn/layer/container.py +1 -1
  207. mindspore/nn/layer/conv.py +53 -42
  208. mindspore/nn/layer/embedding.py +12 -11
  209. mindspore/nn/layer/normalization.py +56 -49
  210. mindspore/nn/layer/padding.py +4 -3
  211. mindspore/nn/layer/pooling.py +120 -42
  212. mindspore/nn/layer/rnn_cells.py +1 -1
  213. mindspore/nn/layer/rnns.py +2 -1
  214. mindspore/nn/layer/timedistributed.py +5 -5
  215. mindspore/nn/layer/transformer.py +59 -36
  216. mindspore/nn/learning_rate_schedule.py +8 -4
  217. mindspore/nn/loss/loss.py +58 -55
  218. mindspore/nn/optim/ada_grad.py +7 -5
  219. mindspore/nn/optim/adadelta.py +11 -9
  220. mindspore/nn/optim/adafactor.py +1 -1
  221. mindspore/nn/optim/adam.py +19 -15
  222. mindspore/nn/optim/adamax.py +8 -7
  223. mindspore/nn/optim/adasum.py +5 -5
  224. mindspore/nn/optim/asgd.py +3 -1
  225. mindspore/nn/optim/ftrl.py +11 -9
  226. mindspore/nn/optim/lamb.py +1 -1
  227. mindspore/nn/optim/lars.py +1 -4
  228. mindspore/nn/optim/lazyadam.py +12 -10
  229. mindspore/nn/optim/momentum.py +7 -6
  230. mindspore/nn/optim/optimizer.py +3 -3
  231. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  232. mindspore/nn/optim/rmsprop.py +13 -12
  233. mindspore/nn/optim/rprop.py +11 -9
  234. mindspore/nn/optim/sgd.py +9 -6
  235. mindspore/nn/optim/tft_wrapper.py +5 -2
  236. mindspore/nn/optim/thor.py +2 -1
  237. mindspore/nn/probability/bijector/bijector.py +17 -11
  238. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  239. mindspore/nn/probability/bijector/invert.py +2 -2
  240. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  241. mindspore/nn/probability/bijector/softplus.py +3 -2
  242. mindspore/nn/probability/distribution/beta.py +3 -3
  243. mindspore/nn/probability/distribution/categorical.py +1 -1
  244. mindspore/nn/probability/distribution/cauchy.py +4 -2
  245. mindspore/nn/probability/distribution/exponential.py +6 -7
  246. mindspore/nn/probability/distribution/gamma.py +2 -2
  247. mindspore/nn/probability/distribution/gumbel.py +2 -2
  248. mindspore/nn/probability/distribution/half_normal.py +5 -3
  249. mindspore/nn/probability/distribution/logistic.py +5 -3
  250. mindspore/nn/probability/distribution/poisson.py +1 -1
  251. mindspore/nn/probability/distribution/uniform.py +5 -3
  252. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  253. mindspore/nn/reinforcement/tensor_array.py +1 -1
  254. mindspore/nn/utils/init.py +13 -11
  255. mindspore/nn/wrap/__init__.py +6 -6
  256. mindspore/nn/wrap/cell_wrapper.py +181 -122
  257. mindspore/nn/wrap/grad_reducer.py +45 -36
  258. mindspore/nn/wrap/loss_scale.py +6 -7
  259. mindspore/numpy/array_creations.py +63 -65
  260. mindspore/numpy/array_ops.py +149 -144
  261. mindspore/numpy/logic_ops.py +41 -42
  262. mindspore/numpy/math_ops.py +361 -359
  263. mindspore/numpy/utils.py +17 -18
  264. mindspore/numpy/utils_const.py +5 -6
  265. mindspore/opencv_core452.dll +0 -0
  266. mindspore/opencv_imgcodecs452.dll +0 -0
  267. mindspore/opencv_imgproc452.dll +0 -0
  268. mindspore/ops/__init__.py +5 -3
  269. mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
  270. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
  271. mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
  272. mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
  273. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  274. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  275. mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
  276. mindspore/ops/_register_for_op.py +0 -11
  277. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  278. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
  279. mindspore/ops/_vmap/vmap_array_ops.py +52 -25
  280. mindspore/ops/_vmap/vmap_base.py +0 -2
  281. mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
  282. mindspore/ops/_vmap/vmap_math_ops.py +15 -16
  283. mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
  284. mindspore/ops/auto_generate/__init__.py +4 -3
  285. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +258 -46
  286. mindspore/ops/auto_generate/gen_extend_func.py +757 -185
  287. mindspore/ops/auto_generate/gen_ops_def.py +4197 -2243
  288. mindspore/ops/auto_generate/gen_ops_prim.py +16976 -6055
  289. mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
  290. mindspore/ops/composite/__init__.py +2 -1
  291. mindspore/ops/composite/base.py +20 -25
  292. mindspore/ops/composite/math_ops.py +6 -16
  293. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  294. mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
  295. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  296. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  297. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  298. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  299. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  300. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  301. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  302. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  303. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  304. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  305. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  306. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  307. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  308. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  309. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  310. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  311. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  312. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  313. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  314. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  315. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  316. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  317. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  318. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  319. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  320. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
  321. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  322. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  323. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  324. mindspore/ops/function/__init__.py +40 -2
  325. mindspore/ops/function/_add_attr_func.py +58 -0
  326. mindspore/ops/function/array_func.py +2089 -2403
  327. mindspore/ops/function/clip_func.py +80 -23
  328. mindspore/ops/function/debug_func.py +57 -57
  329. mindspore/ops/function/grad/__init__.py +1 -0
  330. mindspore/ops/function/grad/grad_func.py +104 -71
  331. mindspore/ops/function/image_func.py +2 -2
  332. mindspore/ops/function/linalg_func.py +47 -78
  333. mindspore/ops/function/math_func.py +4351 -3813
  334. mindspore/ops/function/nn_func.py +1712 -637
  335. mindspore/ops/function/other_func.py +159 -1
  336. mindspore/ops/function/parameter_func.py +18 -84
  337. mindspore/ops/function/random_func.py +452 -387
  338. mindspore/ops/function/reshard_func.py +4 -70
  339. mindspore/ops/function/sparse_func.py +3 -3
  340. mindspore/ops/function/sparse_unary_func.py +6 -6
  341. mindspore/ops/function/spectral_func.py +25 -58
  342. mindspore/ops/function/vmap_func.py +26 -18
  343. mindspore/ops/functional.py +23 -7
  344. mindspore/ops/functional_overload.py +1548 -0
  345. mindspore/ops/op_info_register.py +32 -244
  346. mindspore/ops/operations/__init__.py +23 -15
  347. mindspore/ops/operations/_custom_ops_utils.py +235 -0
  348. mindspore/ops/operations/_embedding_cache_ops.py +4 -4
  349. mindspore/ops/operations/_grad_ops.py +2 -43
  350. mindspore/ops/operations/_infer_ops.py +2 -1
  351. mindspore/ops/operations/_inner_ops.py +43 -84
  352. mindspore/ops/operations/_ms_kernel.py +4 -10
  353. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  354. mindspore/ops/operations/_scalar_ops.py +3 -2
  355. mindspore/ops/operations/_sequence_ops.py +1 -1
  356. mindspore/ops/operations/_tensor_array.py +1 -1
  357. mindspore/ops/operations/array_ops.py +81 -324
  358. mindspore/ops/operations/comm_ops.py +154 -108
  359. mindspore/ops/operations/custom_ops.py +298 -87
  360. mindspore/ops/operations/debug_ops.py +157 -59
  361. mindspore/ops/operations/inner_ops.py +7 -5
  362. mindspore/ops/operations/linalg_ops.py +1 -57
  363. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  364. mindspore/ops/operations/manually_defined/ops_def.py +928 -180
  365. mindspore/ops/operations/math_ops.py +32 -234
  366. mindspore/ops/operations/nn_ops.py +212 -531
  367. mindspore/ops/operations/other_ops.py +62 -9
  368. mindspore/ops/operations/random_ops.py +13 -7
  369. mindspore/ops/operations/reshard_ops.py +1 -1
  370. mindspore/ops/operations/sparse_ops.py +2 -2
  371. mindspore/ops/primitive.py +66 -53
  372. mindspore/ops/tensor_method.py +1895 -0
  373. mindspore/ops_generate/__init__.py +0 -5
  374. mindspore/ops_generate/aclnn/__init__.py +0 -0
  375. mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
  376. mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
  377. mindspore/ops_generate/api/__init__.py +0 -0
  378. mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
  379. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
  380. mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
  381. mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
  382. mindspore/ops_generate/api/functions_cc_generator.py +237 -0
  383. mindspore/ops_generate/api/gen_api.py +103 -0
  384. mindspore/ops_generate/api/op_api_proto.py +235 -0
  385. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
  386. mindspore/ops_generate/common/__init__.py +0 -0
  387. mindspore/ops_generate/common/base_generator.py +11 -0
  388. mindspore/ops_generate/common/gen_constants.py +91 -0
  389. mindspore/ops_generate/common/gen_utils.py +348 -0
  390. mindspore/ops_generate/common/op_proto.py +473 -0
  391. mindspore/ops_generate/common/template.py +523 -0
  392. mindspore/ops_generate/gen_ops.py +22 -1069
  393. mindspore/ops_generate/op_def/__init__.py +0 -0
  394. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  395. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
  396. mindspore/ops_generate/op_def/ops_def_cc_generator.py +296 -0
  397. mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
  398. mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
  399. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  400. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  401. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  402. mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
  403. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
  404. mindspore/ops_generate/pyboost/__init__.py +0 -0
  405. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
  406. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
  407. mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
  408. mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
  409. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
  410. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
  411. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
  412. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
  413. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
  414. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
  415. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
  416. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
  417. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
  418. mindspore/ops_generate/resources/__init__.py +0 -0
  419. mindspore/ops_generate/resources/resource_list.py +30 -0
  420. mindspore/ops_generate/resources/resource_loader.py +36 -0
  421. mindspore/ops_generate/resources/resource_manager.py +64 -0
  422. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  423. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  424. mindspore/parallel/__init__.py +7 -3
  425. mindspore/parallel/_auto_parallel_context.py +159 -40
  426. mindspore/parallel/_cell_wrapper.py +132 -15
  427. mindspore/parallel/_parallel_serialization.py +107 -5
  428. mindspore/parallel/_ps_context.py +1 -1
  429. mindspore/parallel/_recovery_context.py +7 -2
  430. mindspore/parallel/_tensor.py +142 -18
  431. mindspore/parallel/_utils.py +199 -23
  432. mindspore/parallel/algo_parameter_config.py +4 -4
  433. mindspore/parallel/auto_parallel.py +732 -0
  434. mindspore/parallel/checkpoint_convert.py +159 -0
  435. mindspore/parallel/checkpoint_transform.py +700 -35
  436. mindspore/parallel/cluster/process_entity/_api.py +276 -50
  437. mindspore/parallel/cluster/process_entity/_utils.py +41 -6
  438. mindspore/parallel/cluster/run.py +21 -4
  439. mindspore/parallel/function/__init__.py +24 -0
  440. mindspore/parallel/function/reshard_func.py +258 -0
  441. mindspore/parallel/nn/__init__.py +25 -0
  442. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  443. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  444. mindspore/parallel/parameter_broadcast.py +25 -14
  445. mindspore/parallel/shard.py +137 -59
  446. mindspore/parallel/transform_safetensors.py +364 -305
  447. mindspore/pgodb140.dll +0 -0
  448. mindspore/pgort140.dll +0 -0
  449. mindspore/profiler/__init__.py +22 -5
  450. mindspore/profiler/analysis/__init__.py +0 -0
  451. mindspore/profiler/analysis/parser/__init__.py +0 -0
  452. mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
  453. mindspore/profiler/analysis/parser/base_parser.py +158 -0
  454. mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
  455. mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
  456. mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
  457. mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
  458. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
  459. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
  460. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +109 -0
  461. mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
  462. mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
  463. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
  464. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
  465. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
  466. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
  467. mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
  468. mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
  469. mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
  470. mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
  471. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
  472. mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
  473. mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
  474. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
  475. mindspore/profiler/analysis/task_manager.py +131 -0
  476. mindspore/profiler/analysis/time_converter.py +84 -0
  477. mindspore/profiler/analysis/viewer/__init__.py +0 -0
  478. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
  479. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
  480. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
  481. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
  482. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
  483. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
  484. mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
  485. mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
  486. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
  487. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
  488. mindspore/profiler/analysis/work_flow.py +73 -0
  489. mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
  490. mindspore/profiler/common/command_executor.py +90 -0
  491. mindspore/profiler/common/constant.py +186 -3
  492. mindspore/profiler/common/file_manager.py +208 -0
  493. mindspore/profiler/common/log.py +130 -0
  494. mindspore/profiler/common/msprof_cmd_tool.py +221 -0
  495. mindspore/profiler/common/path_manager.py +395 -0
  496. mindspore/profiler/common/process_bar.py +168 -0
  497. mindspore/profiler/common/process_pool.py +9 -3
  498. mindspore/profiler/common/profiler_context.py +500 -0
  499. mindspore/profiler/common/profiler_info.py +304 -0
  500. mindspore/profiler/common/profiler_meta_data.py +74 -0
  501. mindspore/profiler/common/profiler_output_path.py +284 -0
  502. mindspore/profiler/common/profiler_parameters.py +251 -0
  503. mindspore/profiler/common/profiler_path_manager.py +179 -0
  504. mindspore/profiler/common/record_function.py +76 -0
  505. mindspore/profiler/common/tlv_decoder.py +76 -0
  506. mindspore/profiler/common/util.py +75 -2
  507. mindspore/profiler/dynamic_profiler.py +341 -75
  508. mindspore/profiler/envprofiler.py +163 -0
  509. mindspore/profiler/experimental_config.py +197 -0
  510. mindspore/profiler/mstx.py +242 -0
  511. mindspore/profiler/platform/__init__.py +21 -0
  512. mindspore/profiler/platform/base_profiler.py +40 -0
  513. mindspore/profiler/platform/cpu_profiler.py +124 -0
  514. mindspore/profiler/platform/gpu_profiler.py +74 -0
  515. mindspore/profiler/platform/npu_profiler.py +335 -0
  516. mindspore/profiler/profiler.py +1073 -90
  517. mindspore/profiler/profiler_action_controller.py +187 -0
  518. mindspore/profiler/profiler_interface.py +118 -0
  519. mindspore/profiler/schedule.py +243 -0
  520. mindspore/rewrite/api/node.py +15 -13
  521. mindspore/rewrite/api/symbol_tree.py +2 -3
  522. mindspore/run_check/_check_version.py +27 -20
  523. mindspore/run_check/run_check.py +1 -1
  524. mindspore/runtime/__init__.py +37 -0
  525. mindspore/runtime/device.py +27 -0
  526. mindspore/runtime/event.py +209 -0
  527. mindspore/runtime/executor.py +177 -0
  528. mindspore/runtime/memory.py +416 -0
  529. mindspore/runtime/stream.py +460 -0
  530. mindspore/runtime/thread_bind_core.py +401 -0
  531. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  532. mindspore/swresample-4.dll +0 -0
  533. mindspore/swscale-6.dll +0 -0
  534. mindspore/tbbmalloc.dll +0 -0
  535. mindspore/tinyxml2.dll +0 -0
  536. mindspore/train/__init__.py +8 -8
  537. mindspore/train/_utils.py +96 -27
  538. mindspore/train/amp.py +9 -5
  539. mindspore/train/callback/__init__.py +2 -2
  540. mindspore/train/callback/_callback.py +2 -16
  541. mindspore/train/callback/_checkpoint.py +53 -55
  542. mindspore/train/callback/_cluster_monitor.py +14 -18
  543. mindspore/train/callback/_early_stop.py +1 -1
  544. mindspore/train/callback/_flops_collector.py +103 -68
  545. mindspore/train/callback/_history.py +8 -5
  546. mindspore/train/callback/_lambda_callback.py +2 -2
  547. mindspore/train/callback/_landscape.py +0 -3
  548. mindspore/train/callback/_loss_monitor.py +2 -1
  549. mindspore/train/callback/_on_request_exit.py +6 -5
  550. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  551. mindspore/train/callback/_summary_collector.py +52 -19
  552. mindspore/train/callback/_time_monitor.py +2 -1
  553. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +228 -108
  554. mindspore/train/data_sink.py +25 -2
  555. mindspore/train/dataset_helper.py +15 -16
  556. mindspore/train/loss_scale_manager.py +8 -7
  557. mindspore/train/metrics/accuracy.py +3 -3
  558. mindspore/train/metrics/confusion_matrix.py +9 -9
  559. mindspore/train/metrics/error.py +3 -3
  560. mindspore/train/metrics/hausdorff_distance.py +4 -4
  561. mindspore/train/metrics/mean_surface_distance.py +3 -3
  562. mindspore/train/metrics/metric.py +0 -12
  563. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  564. mindspore/train/metrics/precision.py +11 -10
  565. mindspore/train/metrics/recall.py +9 -9
  566. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  567. mindspore/train/mind_ir_pb2.py +174 -46
  568. mindspore/train/model.py +269 -136
  569. mindspore/train/serialization.py +622 -978
  570. mindspore/train/summary/_summary_adapter.py +2 -2
  571. mindspore/train/summary/summary_record.py +2 -3
  572. mindspore/train/train_thor/model_thor.py +1 -1
  573. mindspore/turbojpeg.dll +0 -0
  574. mindspore/utils/__init__.py +6 -3
  575. mindspore/utils/dryrun.py +140 -0
  576. mindspore/utils/hooks.py +81 -0
  577. mindspore/utils/runtime_execution_order_check.py +552 -0
  578. mindspore/utils/utils.py +138 -4
  579. mindspore/vcmeta.dll +0 -0
  580. mindspore/vcruntime140.dll +0 -0
  581. mindspore/vcruntime140_1.dll +0 -0
  582. mindspore/version.py +1 -1
  583. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/METADATA +3 -3
  584. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/RECORD +587 -418
  585. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/entry_points.txt +1 -1
  586. mindspore/_install_custom.py +0 -43
  587. mindspore/common/_register_for_adapter.py +0 -74
  588. mindspore/common/_tensor_overload.py +0 -139
  589. mindspore/mindspore_np_dtype.dll +0 -0
  590. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  591. mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
  592. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  593. mindspore/ops_generate/gen_aclnn_implement.py +0 -263
  594. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  595. mindspore/ops_generate/gen_pyboost_func.py +0 -1052
  596. mindspore/ops_generate/gen_utils.py +0 -209
  597. mindspore/ops_generate/op_proto.py +0 -145
  598. mindspore/ops_generate/template.py +0 -261
  599. mindspore/profiler/envprofiling.py +0 -254
  600. mindspore/profiler/profiling.py +0 -1926
  601. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/WHEEL +0 -0
  602. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,461 @@
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
+ This module defines the PyboostInnerPrimGenerator class, which is responsible for generating Python primitive
17
+ wrappers for Pyboost operations. The generator constructs Python function definitions based on operator prototypes,
18
+ generates necessary import statements, and writes the generated content into Python source files.
19
+
20
+ The primary functionality is to take operator prototypes, extract relevant fields, and create Python function wrappers
21
+ that can be used to call the Pyboost primitive implementations.
22
+ """
23
+
24
+ import os
25
+
26
+ import common.template as template
27
+ import common.gen_constants as K
28
+ from common.template import Template
29
+ from common.gen_utils import save_file
30
+ from common.base_generator import BaseGenerator
31
+ from common.op_proto import OpProto
32
+ from pyboost.op_template_parser import OpTemplateParser
33
+ from pyboost import pyboost_utils
34
+ import api.op_api_proto as op_api_proto
35
+
36
+
37
+ class TensorFuncRegCppGenerator(BaseGenerator):
38
+ """
39
+ Generates C++ tensor function registration code for different backends (Ascend, CPU, GPU).
40
+
41
+ This class is responsible for generating header and implementation files required to register
42
+ tensor functions, including device-specific dispatchers and function definitions.
43
+ """
44
+
45
+ def __init__(self):
46
+ self.TENSOR_FUNC_CC_REG = template.TENSOR_FUNC_CC_REG
47
+ self.TENSOR_FUNC_CALL_BODY = template.TENSOR_FUNC_CALL_BODY
48
+ self.TENSOR_FUNC_OVERLOAD_CALL_BODY = template.TENSOR_FUNC_OVERLOAD_CALL_BODY
49
+ self.TENSOR_API_HEADER = template.TENSOR_API_HEADER
50
+ self.TENSOR_API_SOURCE = template.TENSOR_API_SOURCE
51
+ self.TENSOR_FUNC_UTILS = template.TENSOR_FUNC_UTILS
52
+ self.TENSOR_FUNC_UT_BODY = template.TENSOR_FUNC_UT_BODY
53
+ self.TENSOR_FUNC_UT_OVERLOAD_BODY = template.TENSOR_FUNC_UT_OVERLOAD_BODY
54
+ self.TENSOR_CPP_METHOD = template.TENSOR_CPP_METHOD
55
+
56
+ self.func_def_reg = Template(
57
+ "tensor_class->def(\"${func_name}\", TensorMethod${cpp_func_name});\n")
58
+ self.single_case_template = Template(
59
+ 'case ${case_id}:\n'
60
+ ' ${device_dispatcher}\n'
61
+ ' break;\n'
62
+ )
63
+ self.single_case_in_ut_template = Template(
64
+ 'case ${case_id}:\n'
65
+ ' ${device_dispatcher}\n'
66
+ )
67
+ self.device_dispatcher_template = Template(
68
+ 'if (backend == kAscendDevice || backend == kDavinciDevice) {\n'
69
+ ' ${ascend_dispatcher}\n'
70
+ '} else if (backend == kCPUDevice) {\n'
71
+ ' ${cpu_dispatcher}\n'
72
+ '} else if (backend == kGPUDevice) {\n'
73
+ ' ${gpu_dispatcher}\n'
74
+ '} else {\n'
75
+ ' MS_LOG(ERROR) << "Device target is not supported!";\n'
76
+ ' return py::none();\n'
77
+ '}'
78
+ )
79
+ self.pyboost_return_template = Template(
80
+ '${arg_handler_processor}\n'
81
+ 'MS_LOG(INFO) << "Call Tensor${class_name}";\n'
82
+ 'auto res = mindspore::pynative::'
83
+ '${pyboost_function}(mindspore::prim::kPrim${class_name}, parse_args.src_types_, ${convert_args});\n'
84
+ 'trace::Capture(parse_args.arg_list_, "${class_name}", &res);\n'
85
+ 'return res;\n'
86
+ )
87
+ self.callback_python_template = Template(
88
+ 'MS_LOG(INFO) << "Callback python method: ${py_method}";\n'
89
+ 'py::function fn = python_adapter::GetPyFn(\"mindspore.ops.tensor_method\", \"${py_method}\");\n'
90
+ 'py::object res = fn(self, *py_args, **py_kwargs);\n'
91
+ 'return res;\n'
92
+ )
93
+ self.callback_python_in_ut_template = Template(
94
+ 'MS_LOG(INFO) << "Callback python method in UT: ${py_method}";\n'
95
+ 'fn = python_adapter::GetPyFn(\"mindspore.ops.tensor_method\", \"${py_method}\");\n'
96
+ 'res = fn(self, *py_args, **py_kwargs);\n'
97
+ 'break;\n'
98
+ )
99
+ self.header_func_header_template = Template(
100
+ "py::object TensorMethod${cpp_func_name}"
101
+ "(const py::object &self, const py::args &py_args, const py::kwargs &py_kwargs);\n"
102
+ )
103
+
104
+ def generate(self, work_path, op_protos, func_protos_data, alias_func_mapping):
105
+ """
106
+ Generates C++ header and source files for tensor function registrations.
107
+
108
+ Args:
109
+ work_path (str): The directory where the generated files will be saved.
110
+ op_protos (list): A list of tensor op prototypes.
111
+ func_protos_data (dict): Dictionary mapping function names to lists of TensorFuncProto objects.
112
+ alias_func_mapping (dict): A dictionary mapping function name to its alias function names.
113
+ """
114
+
115
+ all_op_func_data, single_op_func_data, overload_op_func_data, op_class_name_set = \
116
+ op_api_proto.categorize_func_data(func_protos_data)
117
+
118
+ tensor_method_list = self._get_op_enum_name_list(op_protos)
119
+ func_call_body_list = []
120
+ self._create_single_op_source_files(
121
+ single_op_func_data, func_call_body_list)
122
+ self._create_overload_op_source_files(
123
+ overload_op_func_data, func_call_body_list)
124
+ merge_func_call_body = pyboost_utils.merge_strings_by_chunk_size(
125
+ func_call_body_list)
126
+ ops_inc_head_set = set()
127
+ for op_class_name in op_class_name_set:
128
+ ops_inc_head_set.add(template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_class_name[0].lower()))
129
+ for i, func_body_chunk_str in enumerate(merge_func_call_body):
130
+ tensor_api_source = self.TENSOR_API_SOURCE.replace(
131
+ ops_inc=list(sorted(ops_inc_head_set)),
132
+ tenosr_func_call_body=func_body_chunk_str)
133
+ save_file(os.path.join(work_path, K.TENSOR_API_PATH), f"tensor_api_{i}.cc",
134
+ tensor_api_source)
135
+
136
+ func_def_body_list, tensor_cpp_methods_list, tensor_api_declaration_list = self._get_sorted_func_def_body(
137
+ all_op_func_data, alias_func_mapping)
138
+ tensor_api_header = self.TENSOR_API_HEADER.replace(
139
+ tensor_api_declaration_list=tensor_api_declaration_list)
140
+ save_file(os.path.join(work_path, K.TENSOR_API_PATH), f"tensor_api.h",
141
+ tensor_api_header)
142
+ self._generate_func_name_for_stub_tensor(
143
+ work_path, tensor_cpp_methods_list)
144
+ func_cc_reg = self.TENSOR_FUNC_CC_REG.replace(
145
+ func_def_body=func_def_body_list)
146
+ tensor_methods = self.TENSOR_FUNC_UTILS.replace(
147
+ tensor_methods=tensor_method_list)
148
+
149
+ save_file(os.path.join(work_path, K.TENSOR_FUNC_REGISTER_PATH),
150
+ "tensor_func_utils.h", tensor_methods)
151
+ save_file(os.path.join(work_path, K.TENSOR_API_PATH),
152
+ "tensor_func_reg.cc", func_cc_reg)
153
+
154
+ def _get_op_enum_name_list(self, op_protos):
155
+ """
156
+ Extracts operation class names and returns them as a formatted list.
157
+
158
+ Args:
159
+ op_protos (list): A list of operation prototype objects, where each object has an `op_class`
160
+ with a `name` attribute.
161
+
162
+ Returns:
163
+ str: A list of formatted strings, where each string is of the form 'k<name>,\n', where <name>
164
+ is the class name from the `op_class` attribute.
165
+
166
+ """
167
+ tensor_method_list = ""
168
+ for op_proto in op_protos:
169
+ if op_proto.op_dispatch is None or not op_proto.op_dispatch.enable:
170
+ continue
171
+ class_name = op_proto.op_class.name
172
+ tensor_method_list += f"k{class_name}Reg,\n"
173
+ return tensor_method_list
174
+
175
+ def _generate_func_name_for_stub_tensor(self, work_path, tensor_cpp_methods_list):
176
+ """
177
+ Generates a Python file containing tensor C++ function methods list and saves it to the specified path.
178
+
179
+ This function takes a list of C++ tensor methods, formats them into a Python script as a string,
180
+ and writes this script to a file named `_tensor_cpp_method.py` under the provided working path.
181
+
182
+ Args:
183
+ work_path (str): The base directory where the generated file will be saved.
184
+ tensor_cpp_methods_list (list): A list of tensor C++ method definitions to be included in the Python file.
185
+ """
186
+ tensor_cpp_methods_str = self.TENSOR_CPP_METHOD.replace(
187
+ tensor_cpp_methods_list_str=str(tensor_cpp_methods_list))
188
+ save_file(os.path.join(work_path, K.ADD_TENSOR_DOCS_PY_PATH),
189
+ "_tensor_cpp_method.py", tensor_cpp_methods_str)
190
+
191
+ def _get_sorted_func_def_body(self, all_op_func_data, alias_func_mapping):
192
+ """
193
+ Generate sorted function definitions and headers for operations.
194
+
195
+ This function processes a dictionary of operation function data and an alias mapping,
196
+ producing two lists: one containing function definition bodies and another containing
197
+ function header definitions.
198
+
199
+ Args:
200
+ all_op_func_data (dict): A dictionary where keys are function API names (str), and
201
+ values are lists of function prototypes.
202
+ alias_func_mapping (dict): A mapping of function names to a list of their alias names.
203
+
204
+ Returns:
205
+ tuple: A tuple containing two lists:
206
+ - func_def_body_list (list of str): A list of formatted function definition strings.
207
+ - tensor_cpp_methods_list (list of str): A list of formatted function header strings.
208
+ """
209
+ func_def_body_list = []
210
+ tensor_cpp_methods_list = []
211
+ tensor_api_declaration_list = ""
212
+ for func_api_name, func_protos in all_op_func_data.items():
213
+ cpp_func_name = pyboost_utils.format_func_api_name(func_api_name)
214
+ if len(func_protos) == 1:
215
+ func_proto = func_protos[0]
216
+ func_name = func_proto.func_name
217
+ func_def_body_list.append(self.func_def_reg.replace(
218
+ func_name=func_name, cpp_func_name=cpp_func_name))
219
+ tensor_cpp_methods_list.append(func_name)
220
+ tensor_api_declaration_list += self.header_func_header_template.replace(
221
+ cpp_func_name=cpp_func_name)
222
+ if func_name in alias_func_mapping:
223
+ for alias_func_name in alias_func_mapping[func_name]:
224
+ func_def_body_list.append(
225
+ self.func_def_reg.replace(func_name=alias_func_name, cpp_func_name=cpp_func_name))
226
+ tensor_cpp_methods_list.append(alias_func_name)
227
+ elif len(func_protos) > 1:
228
+ func_def_body_list.append(
229
+ self.func_def_reg.replace(func_name=func_api_name, cpp_func_name=cpp_func_name))
230
+ tensor_cpp_methods_list.append(func_api_name)
231
+ tensor_api_declaration_list += self.header_func_header_template.replace(
232
+ cpp_func_name=cpp_func_name)
233
+ if func_api_name in alias_func_mapping:
234
+ for alias_func_name in alias_func_mapping[func_api_name]:
235
+ func_def_body_list.append(self.func_def_reg.replace(func_name=alias_func_name,
236
+ cpp_func_name=cpp_func_name))
237
+ tensor_cpp_methods_list.append(alias_func_name)
238
+ return func_def_body_list, tensor_cpp_methods_list, tensor_api_declaration_list
239
+
240
+ def _create_single_op_source_files(self, single_op_func_data, func_call_body_list):
241
+ """
242
+ Generates the list of call body strings for single operation functions.
243
+
244
+ Args:
245
+ single_op_func_data (dict): Dictionary of tensor function prototypes with only one definition.
246
+
247
+ Returns:
248
+ list: Updated str list for generating C++ function call bodies.
249
+ """
250
+ for func_api_name, func_proto in single_op_func_data.items():
251
+ func_name = func_proto.func_name
252
+ cpp_func_name = pyboost_utils.format_func_api_name(func_api_name)
253
+ device_dispatcher_str = self._get_device_dispatchers_str(
254
+ func_proto)
255
+ signature_str = self._generate_single_signature_str(
256
+ func_proto.op_proto, func_proto.kw_only_args, func_proto.varargs
257
+ )
258
+ op_args = func_proto.op_proto.op_args
259
+ max_size = len(op_args)
260
+ self_index = self._get_input_tensor_index(func_proto)
261
+ ut_body = self.TENSOR_FUNC_UT_BODY.replace(
262
+ py_method=func_proto.py_method)
263
+ tensor_func_single_call_body = self.TENSOR_FUNC_CALL_BODY.replace(cpp_func_name=cpp_func_name,
264
+ func_name=func_name,
265
+ device_dispatcher=device_dispatcher_str,
266
+ signatures=signature_str,
267
+ max_args=max_size,
268
+ self_index=self_index,
269
+ ut_body=ut_body)
270
+ func_call_body_list.append(tensor_func_single_call_body)
271
+
272
+ def _create_overload_op_source_files(self, overload_op_func_data, func_call_body_list):
273
+ """
274
+ Generates the list of call body strings for overloaded operation functions.
275
+
276
+ Args:
277
+ overload_op_func_data (dict): Dictionary of tensor function prototypes with overloaded definitions.
278
+
279
+ Returns:
280
+ list: Updated str list for generating C++ function call bodies.
281
+ """
282
+ for func_api_name, func_protos in overload_op_func_data.items():
283
+ tensor_func_overload_call_body = self._get_overload_func_call_str(
284
+ func_api_name, func_protos)
285
+ func_call_body_list.append(tensor_func_overload_call_body)
286
+
287
+ def _get_overload_func_call_str(self, func_api_name, func_protos):
288
+ """
289
+ Generates C++ call body string for overloaded tensor functions.
290
+
291
+ Args:
292
+ func_api_name (str): Name of the function API.
293
+ func_protos (list): List of TensorFuncProto objects representing the function prototypes.
294
+
295
+ Returns:
296
+ str: Generated call body string for the overloaded functions.
297
+ """
298
+ signatures_str = self._generate_func_signatures_list_str(func_protos)
299
+ dispatch_cases = self._get_dispatch_cases(func_protos)
300
+ ut_dispatch_cases = self._get_ut_dispatch_cases(func_protos)
301
+ ut_overload_body = self.TENSOR_FUNC_UT_OVERLOAD_BODY.replace(
302
+ ut_dispatch_cases=ut_dispatch_cases)
303
+
304
+ max_size = 0
305
+ self_index = 0
306
+ for tensor_proto in func_protos:
307
+ op_proto = tensor_proto.op_proto
308
+ op_args = op_proto.op_args
309
+ max_size = max(len(op_args), max_size)
310
+ self_index = self._get_input_tensor_index(tensor_proto)
311
+ cpp_func_name = pyboost_utils.format_func_api_name(func_api_name)
312
+ overload_func_call_str = self.TENSOR_FUNC_OVERLOAD_CALL_BODY.replace(cpp_func_name=cpp_func_name,
313
+ func_name=func_api_name,
314
+ signatures=signatures_str,
315
+ dispatch_cases=dispatch_cases,
316
+ max_args=max_size,
317
+ self_index=self_index,
318
+ ut_overload_body=ut_overload_body)
319
+ return overload_func_call_str
320
+
321
+ def _generate_func_signatures_list_str(self, func_protos) -> str:
322
+ """
323
+ Generates function signatures as a string from the given prototypes.
324
+
325
+ Args:
326
+ func_protos (list): List of TensorFuncProto objects representing the function prototypes.
327
+
328
+ Returns:
329
+ str: Generated function signatures string.
330
+ """
331
+ sig_str = ''
332
+ first_sig = True
333
+ for tensor_proto in func_protos:
334
+ op_proto = tensor_proto.op_proto
335
+ if not first_sig:
336
+ sig_str += ',\n'
337
+ first_sig = False
338
+ sig_str += self._generate_single_signature_str(
339
+ op_proto, tensor_proto.kw_only_args, tensor_proto.varargs)
340
+ return sig_str
341
+
342
+ def _generate_single_signature_str(self, op_proto: OpProto, kw_only_args, varargs) -> str:
343
+ op_parser = OpTemplateParser(op_proto)
344
+ return op_parser.generate_signature_str(kw_only_args, varargs, is_tensor_api=True)
345
+
346
+ def _get_input_tensor_index(self, func_proto):
347
+ """
348
+ Get index of input.
349
+
350
+ Args:
351
+ func_proto (TensorFuncProto): Function prototype to generate dispatch strings for.
352
+
353
+ Returns:
354
+ int: Index of input.
355
+ """
356
+ op_name = func_proto.op_proto.op_class.name
357
+ op_args = func_proto.op_proto.op_args
358
+ if op_name in K.INPUT_NAME_MAP:
359
+ self_index = [i for i in range(
360
+ len(op_args)) if op_args[i].arg_name == K.INPUT_NAME_MAP[op_name]]
361
+ else:
362
+ self_index = [i for i in range(
363
+ len(op_args)) if op_args[i].arg_name in K.INPUT_ARGS_NAME]
364
+ if len(self_index) != 1:
365
+ raise ValueError(
366
+ f'There must be only one field named \'input\'. But got {len(self_index)} in {op_name}')
367
+ return self_index
368
+
369
+ def _get_dispatch_cases(self, func_protos):
370
+ """
371
+ Generates C++ switch-case statements for dispatching tensor function calls.
372
+
373
+ Args:
374
+ func_protos (list): List of TensorFuncProto objects representing the function prototypes.
375
+
376
+ Returns:
377
+ str: Generated switch-case dispatch statements.
378
+ """
379
+ dispatch_cases_str = ''
380
+ for idx, func_proto in enumerate(func_protos):
381
+ device_dispatcher_str = self._get_device_dispatchers_str(
382
+ func_proto)
383
+ dispatch_cases_str += self.single_case_template.replace(case_id=idx,
384
+ device_dispatcher=device_dispatcher_str)
385
+ dispatch_cases_str += 'default:\n'
386
+ dispatch_cases_str += ' return py::none();'
387
+ return dispatch_cases_str
388
+
389
+ def _get_ut_dispatch_cases(self, func_protos):
390
+ """
391
+ Generates C++ switch-case statements for dispatching tensor function calls.
392
+
393
+ Args:
394
+ func_protos (list): List of TensorFuncProto objects representing the function prototypes.
395
+
396
+ Returns:
397
+ str: Generated switch-case dispatch statements.
398
+ """
399
+ dispatch_cases_str = ''
400
+ for idx, func_proto in enumerate(func_protos):
401
+ device_dispatcher_str = self.callback_python_in_ut_template.replace(
402
+ py_method=func_proto.py_method)
403
+ dispatch_cases_str += self.single_case_in_ut_template.replace(case_id=idx,
404
+ device_dispatcher=device_dispatcher_str)
405
+ dispatch_cases_str += 'default:\n'
406
+ dispatch_cases_str += ' res = py::none();'
407
+ return dispatch_cases_str
408
+
409
+ def _get_device_dispatchers_str(self, func_proto):
410
+ """
411
+ Generates device-specific dispatch strings for the given function prototype.
412
+
413
+ Args:
414
+ func_proto (TensorFuncProto): Function prototype to generate dispatch strings for.
415
+
416
+ Returns:
417
+ str: Generated device-specific dispatch string.
418
+ """
419
+ ascend_dispatcher_str = self._get_single_device_dispatcher_str(
420
+ func_proto, 'ascend')
421
+ cpu_dispatcher_str = self._get_single_device_dispatcher_str(
422
+ func_proto, 'cpu')
423
+ gpu_dispatcher_str = self._get_single_device_dispatcher_str(
424
+ func_proto, 'gpu')
425
+ device_dispatcher_str = self.device_dispatcher_template.replace(ascend_dispatcher=ascend_dispatcher_str,
426
+ cpu_dispatcher=cpu_dispatcher_str,
427
+ gpu_dispatcher=gpu_dispatcher_str)
428
+ return device_dispatcher_str
429
+
430
+ def _get_single_device_dispatcher_str(self, func_proto, device):
431
+ """
432
+ Generates the dispatch string for a specific device.
433
+
434
+ Args:
435
+ func_proto (TensorFuncProto): Function prototype to generate the dispatcher for.
436
+ device (str): Device type ('ascend', 'cpu', 'gpu').
437
+
438
+ Returns:
439
+ str: Generated device dispatcher string.
440
+ """
441
+ func_proto_device = getattr(func_proto, device)
442
+ if func_proto_device == 'pyboost':
443
+ arg_handler_processor_str = self._get_arg_handler_processor(func_proto.func_name, func_proto.op_proto)
444
+ op_parser = OpTemplateParser(func_proto.op_proto)
445
+ op_pyboost_func_name = op_parser.get_pyboost_func_name() + "_OP"
446
+ convert_args_str = op_parser.get_convert_args_str(func_proto.op_proto, is_tensor_api=True)
447
+ self_index = op_parser.get_input_tensor_index(func_proto.op_proto)
448
+ return self.pyboost_return_template.replace(arg_handler_processor=arg_handler_processor_str,
449
+ class_name=func_proto.op_proto.op_class.name,
450
+ pyboost_function=op_pyboost_func_name,
451
+ self_index=self_index,
452
+ convert_args=convert_args_str)
453
+
454
+ if func_proto_device == 'py_method':
455
+ return self.callback_python_template.replace(py_method=func_proto.py_method)
456
+
457
+ raise TypeError("Only support pyboost or python_method.")
458
+
459
+ def _get_arg_handler_processor(self, func_name, op_proto):
460
+ op_parser = OpTemplateParser(op_proto)
461
+ return op_parser.get_arg_handler_processor(func_name, op_proto, is_tensor_api=True)
File without changes
@@ -0,0 +1,11 @@
1
+ """
2
+ Base generator interface for other pyboost file generator classes
3
+ """
4
+
5
+ from abc import ABC, abstractmethod
6
+
7
+
8
+ class BaseGenerator(ABC):
9
+ @abstractmethod
10
+ def generate(self, **kwargs):
11
+ raise NotImplementedError
@@ -0,0 +1,91 @@
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
+ This module contains the constant strings used in generating ops files.
17
+
18
+ Constants:
19
+ PY_LICENSE: License strings used for .py files
20
+ CC_LICENSE: License strings used for .h/.cc files
21
+ ......
22
+ Other constant strings in the module are used for generation paths
23
+ """
24
+
25
+ import os
26
+
27
+
28
+ WORK_DIR = os.path.normpath(os.path.join(
29
+ os.path.dirname(os.path.realpath(__file__)), '../../../../../'))
30
+
31
+ PY_MS_DIR = "mindspore/python/mindspore"
32
+ PY_OPS_GEN_PATH = "mindspore/python/mindspore/ops_generate"
33
+ PY_AUTO_GEN_PATH = "mindspore/python/mindspore/ops/auto_generate"
34
+
35
+ # op_def
36
+ OP_DEF_AUTO_GENERATE_PATH = "op_def/auto_generate"
37
+ MS_OP_DEF_AUTO_GENERATE_PATH = "mindspore/ops/op_def/auto_generate"
38
+ MS_OP_DEF_YAML_PATH = "mindspore/ops/op_def/yaml"
39
+ MS_OP_DEF_FUNC_OP_YAML_PATH = "mindspore/ops/op_def/func_op"
40
+ MS_OP_DEPRECATED_DEF_YAML_PATH = "mindspore/ops/op_def/deprecated"
41
+ MS_OP_API_YAML_PATH = "mindspore/ops/api_def"
42
+ MS_TENSOR_METHOD_DOC_YAML_PATH = "mindspore/ops/api_def/method_doc"
43
+ MS_MINT_FUNC_DOC_YAML_PATH = "mindspore/ops/api_def/function_doc"
44
+ MS_MINT_FUNC_OVERLOAD_PATH = "mindspore/python/mindspore/ops"
45
+ PYBOOST_NATIVE_GRAD_FUNC_GEN_PATH = "mindspore/ccsrc/pynative/grad/function/auto_generate"
46
+ PYBOOST_AUTO_GRAD_FUNC_GEN_PATH = "mindspore/ccsrc/pynative/op_function/auto_generate"
47
+ PIPELINE_PYBOOST_FUNC_GEN_PATH = "mindspore/ccsrc/pynative/op_function/auto_generate"
48
+ FUNCTIONAL_OVERLOAD_GEN_PATH = "mindspore/ccsrc/frontend/operator/composite/auto_generate"
49
+ PYBOOST_GRAD_FUNC_GEN_PATH = "mindspore/ccsrc/pyboost/grad_functions/auto_generate"
50
+ TENSOR_FUNC_REGISTER_PATH = "mindspore/ccsrc/pynative/op_function/auto_generate"
51
+ TENSOR_API_PATH = "mindspore/ccsrc/pybind_api/ir/tensor_api/auto_generate"
52
+ ADD_TENSOR_DOCS_PY_PATH = "mindspore/python/mindspore/common"
53
+ ADD_MINT_DOCS_PY_PATH = "mindspore/python/mindspore/mint"
54
+ TENSOR_PY_CC_PATH = "mindspore/ccsrc/pybind_api/ir/tensor_register/auto_generate"
55
+
56
+ # yaml keys def
57
+ OP_KEYS = {'args', 'args_signature', 'returns', 'function', 'class', 'view', 'graph_view', 'dispatch', 'labels',
58
+ 'bprop_expander'}
59
+ ARG_KEYS = {'dtype', 'default', 'prim_init', 'type_cast', 'arg_handler'}
60
+ RETURN_KEYS = {'dtype', 'inplace', 'type_cast'}
61
+ ARG_SIGNATURE_KEYS = {'rw_write', 'rw_read', 'rw_ref', 'dtype_group'}
62
+ CLASS_KEYS = {'name', 'disable'}
63
+ FUNCTION_KEYS = {'name', 'disable'}
64
+ DISPATCH_KEYS = {'enable', 'is_comm_op', 'Ascend', 'GPU', 'CPU'}
65
+ TENSOR_FUNC_KEYS = {'op_yaml', 'py_method', 'kwonlyargs',
66
+ 'varargs', 'alias', 'Ascend', 'GPU', 'CPU', 'interface'}
67
+
68
+ # func signature parsing
69
+ ARG_HANDLER_MAP = {"to_2d_paddings": "int|tuple[int]|list[int]",
70
+ "dtype_to_type_id": "type",
71
+ "to_kernel_size": "int|tuple[int]|list[int]",
72
+ "to_strides": "int|tuple[int]|list[int]",
73
+ "str_to_enum": "str",
74
+ "to_pair": "int|tuple[int]|list[int]|float",
75
+ "to_dilations": "tuple[int]|list[int]|int",
76
+ "to_output_padding": "int|tuple[int]|list[int]",
77
+ "to_rates": "int|tuple[int]|list[int]"}
78
+ INPUT_ARGS_NAME = {"input", "x", "input_x"}
79
+ INPUT_NAME_MAP = {"DeprecatedExpandAs": "input"}
80
+
81
+ # infer
82
+ MS_OPS_FUNC_IMPL_PATH = "mindspore/ops/infer/ops_func_impl"
83
+
84
+ # view
85
+ MS_OPS_VIEW_PATH = "mindspore/ops/view"
86
+
87
+ # kernel
88
+ MS_OPS_KERNEL_PATH = "mindspore/ops/kernel"
89
+ MS_PYBOOST_FUNCTIONS_AUTO_GEN_PATH = "mindspore/ccsrc/pyboost/functions/auto_generate"
90
+ MS_COMMON_PYBOOST_KERNEL_PATH = os.path.join(MS_OPS_KERNEL_PATH, "common/pyboost")
91
+ MS_PYBOOST_BASE_PATH = "mindspore/ccsrc/pyboost"