mindspore 2.5.0__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 (491) 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 +6 -4
  5. mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
  8. mindspore/_check_jit_forbidden_api.py +3 -0
  9. mindspore/_checkparam.py +3 -33
  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/parse/__init__.py +6 -7
  14. mindspore/_extends/parse/compile_config.py +19 -0
  15. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +22 -3
  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 +24 -193
  20. mindspore/_extends/parse/resources.py +1 -5
  21. mindspore/_extends/parse/standard_method.py +97 -74
  22. mindspore/_extends/pijit/__init__.py +2 -2
  23. mindspore/_extends/pijit/pijit_func_white_list.py +16 -11
  24. mindspore/_extends/pijit/tensor_func_list.py +27 -0
  25. mindspore/_extends/utils.py +1 -1
  26. mindspore/amp.py +4 -4
  27. mindspore/atlprov.dll +0 -0
  28. mindspore/avcodec-59.dll +0 -0
  29. mindspore/avdevice-59.dll +0 -0
  30. mindspore/avfilter-8.dll +0 -0
  31. mindspore/avformat-59.dll +0 -0
  32. mindspore/avutil-57.dll +0 -0
  33. mindspore/boost/__init__.py +2 -2
  34. mindspore/boost/base.py +3 -7
  35. mindspore/boost/boost_cell_wrapper.py +2 -2
  36. mindspore/c1.dll +0 -0
  37. mindspore/c1xx.dll +0 -0
  38. mindspore/c2.dll +0 -0
  39. mindspore/common/__init__.py +4 -3
  40. mindspore/common/_grad_function.py +56 -0
  41. mindspore/common/_pijit_context.py +14 -5
  42. mindspore/common/_register_for_tensor.py +1 -1
  43. mindspore/common/_stub_tensor.py +5 -10
  44. mindspore/common/_tensor_cpp_method.py +1 -1
  45. mindspore/common/_tensor_docs.py +1915 -3287
  46. mindspore/common/api.py +341 -354
  47. mindspore/common/auto_dynamic_shape.py +41 -44
  48. mindspore/common/dtype.py +5 -2
  49. mindspore/common/dump.py +7 -5
  50. mindspore/common/file_system.py +3 -0
  51. mindspore/common/hook_handle.py +5 -3
  52. mindspore/common/initializer.py +10 -6
  53. mindspore/common/jit_begin_end.py +94 -0
  54. mindspore/common/jit_config.py +6 -1
  55. mindspore/common/jit_context.py +76 -0
  56. mindspore/common/jit_trace.py +378 -0
  57. mindspore/common/lazy_inline.py +2 -2
  58. mindspore/common/mutable.py +5 -4
  59. mindspore/common/parameter.py +106 -39
  60. mindspore/common/seed.py +2 -2
  61. mindspore/common/sparse_tensor.py +23 -17
  62. mindspore/common/tensor.py +297 -714
  63. mindspore/communication/__init__.py +7 -5
  64. mindspore/communication/_comm_helper.py +47 -2
  65. mindspore/communication/comm_func.py +70 -53
  66. mindspore/communication/management.py +83 -17
  67. mindspore/context.py +214 -560
  68. mindspore/dataset/__init__.py +44 -20
  69. mindspore/dataset/audio/__init__.py +2 -8
  70. mindspore/dataset/audio/transforms.py +3 -17
  71. mindspore/dataset/core/config.py +3 -3
  72. mindspore/dataset/engine/cache_client.py +1 -1
  73. mindspore/dataset/engine/datasets.py +102 -120
  74. mindspore/dataset/engine/datasets_audio.py +22 -22
  75. mindspore/dataset/engine/datasets_standard_format.py +43 -24
  76. mindspore/dataset/engine/datasets_text.py +78 -85
  77. mindspore/dataset/engine/datasets_user_defined.py +108 -76
  78. mindspore/dataset/engine/datasets_vision.py +111 -108
  79. mindspore/dataset/engine/iterators.py +5 -3
  80. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  81. mindspore/dataset/engine/samplers.py +279 -57
  82. mindspore/dataset/engine/serializer_deserializer.py +2 -1
  83. mindspore/dataset/engine/validators.py +10 -0
  84. mindspore/dataset/text/__init__.py +7 -6
  85. mindspore/dataset/text/transforms.py +6 -5
  86. mindspore/dataset/text/utils.py +3 -3
  87. mindspore/dataset/transforms/__init__.py +0 -9
  88. mindspore/dataset/transforms/transforms.py +3 -3
  89. mindspore/dataset/utils/browse_dataset.py +1 -1
  90. mindspore/dataset/vision/__init__.py +2 -9
  91. mindspore/dataset/vision/transforms.py +202 -158
  92. mindspore/dataset/vision/utils.py +7 -5
  93. mindspore/device_context/ascend/op_debug.py +60 -1
  94. mindspore/device_context/ascend/op_tuning.py +0 -4
  95. mindspore/device_manager.py +39 -3
  96. mindspore/dnnl.dll +0 -0
  97. mindspore/dpcmi.dll +0 -0
  98. mindspore/experimental/es/embedding_service.py +35 -27
  99. mindspore/experimental/map_parameter.py +4 -4
  100. mindspore/experimental/optim/adadelta.py +22 -26
  101. mindspore/experimental/optim/adagrad.py +4 -4
  102. mindspore/experimental/optim/adam.py +4 -0
  103. mindspore/experimental/optim/adamax.py +4 -4
  104. mindspore/experimental/optim/adamw.py +4 -0
  105. mindspore/experimental/optim/asgd.py +1 -1
  106. mindspore/experimental/optim/lr_scheduler.py +40 -22
  107. mindspore/experimental/optim/radam.py +5 -5
  108. mindspore/experimental/optim/rprop.py +1 -1
  109. mindspore/experimental/optim/sgd.py +1 -1
  110. mindspore/hal/contiguous_tensors_handle.py +6 -10
  111. mindspore/hal/device.py +55 -81
  112. mindspore/hal/event.py +38 -55
  113. mindspore/hal/memory.py +93 -144
  114. mindspore/hal/stream.py +81 -125
  115. mindspore/include/dataset/constants.h +7 -4
  116. mindspore/include/dataset/execute.h +2 -2
  117. mindspore/jpeg62.dll +0 -0
  118. mindspore/log.py +40 -2
  119. mindspore/mindrecord/__init__.py +20 -7
  120. mindspore/mindspore_backend_common.dll +0 -0
  121. mindspore/mindspore_backend_manager.dll +0 -0
  122. mindspore/mindspore_common.dll +0 -0
  123. mindspore/mindspore_core.dll +0 -0
  124. mindspore/mindspore_dump.dll +0 -0
  125. mindspore/mindspore_frontend.dll +0 -0
  126. mindspore/mindspore_glog.dll +0 -0
  127. mindspore/mindspore_memory_pool.dll +0 -0
  128. mindspore/mindspore_ms_backend.dll +0 -0
  129. mindspore/mindspore_ops.dll +0 -0
  130. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  131. mindspore/mindspore_ops_kernel_common.dll +0 -0
  132. mindspore/mindspore_profiler.dll +0 -0
  133. mindspore/mindspore_pyboost.dll +0 -0
  134. mindspore/mindspore_pynative.dll +0 -0
  135. mindspore/mindspore_res_manager.dll +0 -0
  136. mindspore/mindspore_runtime_pipeline.dll +0 -0
  137. mindspore/mint/__init__.py +131 -700
  138. mindspore/mint/distributed/__init__.py +5 -1
  139. mindspore/mint/distributed/distributed.py +194 -109
  140. mindspore/mint/linalg/__init__.py +2 -0
  141. mindspore/mint/nn/__init__.py +280 -18
  142. mindspore/mint/nn/functional.py +282 -64
  143. mindspore/mint/nn/layer/__init__.py +4 -0
  144. mindspore/mint/nn/layer/_functions.py +7 -3
  145. mindspore/mint/nn/layer/activation.py +120 -13
  146. mindspore/mint/nn/layer/conv.py +218 -24
  147. mindspore/mint/nn/layer/normalization.py +15 -16
  148. mindspore/mint/nn/layer/padding.py +1 -1
  149. mindspore/mint/nn/layer/pooling.py +66 -1
  150. mindspore/mint/optim/__init__.py +2 -1
  151. mindspore/mint/optim/sgd.py +171 -0
  152. mindspore/msobj140.dll +0 -0
  153. mindspore/mspdb140.dll +0 -0
  154. mindspore/mspdbcore.dll +0 -0
  155. mindspore/mspdbst.dll +0 -0
  156. mindspore/mspft140.dll +0 -0
  157. mindspore/msvcdis140.dll +0 -0
  158. mindspore/msvcp140_1.dll +0 -0
  159. mindspore/msvcp140_2.dll +0 -0
  160. mindspore/msvcp140_atomic_wait.dll +0 -0
  161. mindspore/msvcp140_codecvt_ids.dll +0 -0
  162. mindspore/nn/__init__.py +4 -1
  163. mindspore/nn/cell.py +1250 -176
  164. mindspore/nn/layer/activation.py +23 -21
  165. mindspore/nn/layer/basic.py +22 -16
  166. mindspore/nn/layer/container.py +1 -1
  167. mindspore/nn/layer/conv.py +22 -17
  168. mindspore/nn/layer/embedding.py +9 -8
  169. mindspore/nn/layer/normalization.py +48 -42
  170. mindspore/nn/layer/pooling.py +75 -31
  171. mindspore/nn/layer/transformer.py +11 -10
  172. mindspore/nn/learning_rate_schedule.py +4 -2
  173. mindspore/nn/loss/loss.py +27 -19
  174. mindspore/nn/optim/ada_grad.py +6 -5
  175. mindspore/nn/optim/adadelta.py +9 -7
  176. mindspore/nn/optim/adafactor.py +1 -1
  177. mindspore/nn/optim/adam.py +16 -12
  178. mindspore/nn/optim/adamax.py +8 -7
  179. mindspore/nn/optim/adasum.py +5 -5
  180. mindspore/nn/optim/asgd.py +1 -1
  181. mindspore/nn/optim/ftrl.py +11 -9
  182. mindspore/nn/optim/lamb.py +1 -1
  183. mindspore/nn/optim/lazyadam.py +12 -10
  184. mindspore/nn/optim/momentum.py +7 -6
  185. mindspore/nn/optim/optimizer.py +2 -2
  186. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  187. mindspore/nn/optim/rmsprop.py +13 -12
  188. mindspore/nn/optim/rprop.py +9 -7
  189. mindspore/nn/optim/sgd.py +9 -6
  190. mindspore/nn/optim/tft_wrapper.py +5 -2
  191. mindspore/nn/probability/bijector/bijector.py +17 -11
  192. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  193. mindspore/nn/probability/bijector/invert.py +2 -2
  194. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  195. mindspore/nn/probability/bijector/softplus.py +3 -2
  196. mindspore/nn/probability/distribution/beta.py +3 -3
  197. mindspore/nn/probability/distribution/categorical.py +1 -1
  198. mindspore/nn/probability/distribution/cauchy.py +4 -2
  199. mindspore/nn/probability/distribution/exponential.py +6 -7
  200. mindspore/nn/probability/distribution/gamma.py +2 -2
  201. mindspore/nn/probability/distribution/gumbel.py +2 -2
  202. mindspore/nn/probability/distribution/half_normal.py +5 -3
  203. mindspore/nn/probability/distribution/logistic.py +5 -3
  204. mindspore/nn/probability/distribution/poisson.py +1 -1
  205. mindspore/nn/probability/distribution/uniform.py +5 -3
  206. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  207. mindspore/nn/reinforcement/tensor_array.py +1 -1
  208. mindspore/nn/wrap/__init__.py +6 -6
  209. mindspore/nn/wrap/cell_wrapper.py +178 -117
  210. mindspore/nn/wrap/grad_reducer.py +45 -36
  211. mindspore/nn/wrap/loss_scale.py +3 -3
  212. mindspore/numpy/array_creations.py +3 -3
  213. mindspore/numpy/array_ops.py +1 -1
  214. mindspore/numpy/math_ops.py +4 -4
  215. mindspore/numpy/utils.py +1 -2
  216. mindspore/numpy/utils_const.py +1 -2
  217. mindspore/opencv_core452.dll +0 -0
  218. mindspore/opencv_imgcodecs452.dll +0 -0
  219. mindspore/opencv_imgproc452.dll +0 -0
  220. mindspore/ops/__init__.py +3 -2
  221. mindspore/ops/_grad_experimental/grad_comm_ops.py +18 -3
  222. mindspore/ops/_grad_experimental/grad_debug_ops.py +8 -1
  223. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  224. mindspore/ops/_register_for_op.py +0 -11
  225. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  226. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -4
  227. mindspore/ops/_vmap/vmap_array_ops.py +7 -6
  228. mindspore/ops/_vmap/vmap_grad_nn_ops.py +2 -1
  229. mindspore/ops/_vmap/vmap_math_ops.py +4 -7
  230. mindspore/ops/_vmap/vmap_nn_ops.py +9 -8
  231. mindspore/ops/auto_generate/__init__.py +4 -3
  232. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +102 -49
  233. mindspore/ops/auto_generate/gen_extend_func.py +281 -135
  234. mindspore/ops/auto_generate/gen_ops_def.py +2574 -2326
  235. mindspore/ops/auto_generate/gen_ops_prim.py +8566 -2755
  236. mindspore/ops/auto_generate/pyboost_inner_prim.py +106 -76
  237. mindspore/ops/composite/__init__.py +2 -1
  238. mindspore/ops/composite/base.py +19 -24
  239. mindspore/ops/composite/math_ops.py +6 -16
  240. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  241. mindspore/ops/composite/multitype_ops/_compile_utils.py +2 -3
  242. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  243. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  244. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  245. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  246. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  247. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  248. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  249. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  250. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  251. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  252. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  253. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  254. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  255. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  256. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  257. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  258. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  259. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  260. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  261. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  262. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  263. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  264. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  265. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  266. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  267. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -1
  268. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  269. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  270. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  271. mindspore/ops/function/__init__.py +28 -2
  272. mindspore/ops/function/_add_attr_func.py +58 -0
  273. mindspore/ops/function/array_func.py +1629 -2345
  274. mindspore/ops/function/clip_func.py +38 -45
  275. mindspore/ops/function/debug_func.py +36 -44
  276. mindspore/ops/function/grad/__init__.py +1 -0
  277. mindspore/ops/function/grad/grad_func.py +104 -71
  278. mindspore/ops/function/image_func.py +1 -1
  279. mindspore/ops/function/linalg_func.py +46 -78
  280. mindspore/ops/function/math_func.py +3035 -3705
  281. mindspore/ops/function/nn_func.py +676 -241
  282. mindspore/ops/function/other_func.py +159 -1
  283. mindspore/ops/function/parameter_func.py +17 -30
  284. mindspore/ops/function/random_func.py +204 -361
  285. mindspore/ops/function/reshard_func.py +4 -70
  286. mindspore/ops/function/sparse_func.py +3 -3
  287. mindspore/ops/function/sparse_unary_func.py +5 -5
  288. mindspore/ops/function/spectral_func.py +25 -58
  289. mindspore/ops/function/vmap_func.py +24 -17
  290. mindspore/ops/functional.py +6 -4
  291. mindspore/ops/functional_overload.py +547 -4
  292. mindspore/ops/op_info_register.py +32 -244
  293. mindspore/ops/operations/__init__.py +10 -5
  294. mindspore/ops/operations/_custom_ops_utils.py +247 -0
  295. mindspore/ops/operations/_grad_ops.py +1 -10
  296. mindspore/ops/operations/_inner_ops.py +5 -76
  297. mindspore/ops/operations/_ms_kernel.py +4 -10
  298. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  299. mindspore/ops/operations/_scalar_ops.py +3 -2
  300. mindspore/ops/operations/_sequence_ops.py +1 -1
  301. mindspore/ops/operations/_tensor_array.py +1 -1
  302. mindspore/ops/operations/array_ops.py +37 -22
  303. mindspore/ops/operations/comm_ops.py +150 -107
  304. mindspore/ops/operations/custom_ops.py +221 -23
  305. mindspore/ops/operations/debug_ops.py +115 -16
  306. mindspore/ops/operations/inner_ops.py +1 -1
  307. mindspore/ops/operations/linalg_ops.py +1 -58
  308. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  309. mindspore/ops/operations/manually_defined/ops_def.py +746 -79
  310. mindspore/ops/operations/math_ops.py +21 -18
  311. mindspore/ops/operations/nn_ops.py +65 -191
  312. mindspore/ops/operations/other_ops.py +62 -9
  313. mindspore/ops/operations/random_ops.py +13 -7
  314. mindspore/ops/operations/reshard_ops.py +1 -1
  315. mindspore/ops/operations/sparse_ops.py +2 -2
  316. mindspore/ops/primitive.py +43 -32
  317. mindspore/ops/tensor_method.py +232 -13
  318. mindspore/ops_generate/__init__.py +0 -5
  319. mindspore/ops_generate/aclnn/__init__.py +0 -0
  320. mindspore/ops_generate/{aclnn_kernel_register_auto_cc_generator.py → aclnn/aclnn_kernel_register_auto_cc_generator.py} +43 -18
  321. mindspore/ops_generate/{gen_aclnn_implement.py → aclnn/gen_aclnn_implement.py} +49 -51
  322. mindspore/ops_generate/api/__init__.py +0 -0
  323. mindspore/ops_generate/{add_tensor_docs_generator.py → api/add_tensor_docs_generator.py} +9 -7
  324. mindspore/ops_generate/{cpp_create_prim_instance_helper_generator.py → api/cpp_create_prim_instance_helper_generator.py} +6 -9
  325. mindspore/ops_generate/{functional_map_cpp_generator.py → api/functional_map_cpp_generator.py} +25 -12
  326. mindspore/ops_generate/{functional_overload_py_generator.py → api/functional_overload_py_generator.py} +8 -6
  327. mindspore/ops_generate/{functions_cc_generator.py → api/functions_cc_generator.py} +14 -10
  328. mindspore/ops_generate/api/gen_api.py +103 -0
  329. mindspore/ops_generate/{op_api_proto.py → api/op_api_proto.py} +98 -69
  330. mindspore/ops_generate/{tensor_func_reg_cpp_generator.py → api/tensor_func_reg_cpp_generator.py} +82 -43
  331. mindspore/ops_generate/common/__init__.py +0 -0
  332. mindspore/ops_generate/common/gen_constants.py +91 -0
  333. mindspore/ops_generate/{gen_utils.py → common/gen_utils.py} +72 -19
  334. mindspore/ops_generate/{op_proto.py → common/op_proto.py} +64 -1
  335. mindspore/ops_generate/{template.py → common/template.py} +96 -84
  336. mindspore/ops_generate/gen_ops.py +23 -325
  337. mindspore/ops_generate/op_def/__init__.py +0 -0
  338. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  339. mindspore/ops_generate/{lite_ops_cpp_generator.py → op_def/lite_ops_cpp_generator.py} +47 -11
  340. mindspore/ops_generate/{ops_def_cc_generator.py → op_def/ops_def_cc_generator.py} +18 -7
  341. mindspore/ops_generate/{ops_def_h_generator.py → op_def/ops_def_h_generator.py} +5 -5
  342. mindspore/ops_generate/{ops_name_h_generator.py → op_def/ops_name_h_generator.py} +30 -15
  343. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  344. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  345. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  346. mindspore/ops_generate/{op_def_py_generator.py → op_def_py/op_def_py_generator.py} +6 -5
  347. mindspore/ops_generate/{op_prim_py_generator.py → op_def_py/op_prim_py_generator.py} +24 -15
  348. mindspore/ops_generate/pyboost/__init__.py +0 -0
  349. mindspore/ops_generate/{auto_grad_impl_cc_generator.py → pyboost/auto_grad_impl_cc_generator.py} +11 -7
  350. mindspore/ops_generate/{auto_grad_reg_cc_generator.py → pyboost/auto_grad_reg_cc_generator.py} +7 -7
  351. mindspore/ops_generate/{gen_pyboost_func.py → pyboost/gen_pyboost_func.py} +40 -16
  352. mindspore/ops_generate/{op_template_parser.py → pyboost/op_template_parser.py} +105 -24
  353. mindspore/ops_generate/{pyboost_functions_cpp_generator.py → pyboost/pyboost_functions_cpp_generator.py} +55 -18
  354. mindspore/ops_generate/{pyboost_functions_h_generator.py → pyboost/pyboost_functions_h_generator.py} +42 -10
  355. mindspore/ops_generate/{pyboost_functions_py_generator.py → pyboost/pyboost_functions_py_generator.py} +6 -6
  356. mindspore/ops_generate/{pyboost_grad_function_cpp_generator.py → pyboost/pyboost_grad_function_cpp_generator.py} +11 -10
  357. mindspore/ops_generate/{pyboost_inner_prim_generator.py → pyboost/pyboost_inner_prim_generator.py} +8 -7
  358. mindspore/ops_generate/{pyboost_native_grad_functions_generator.py → pyboost/pyboost_native_grad_functions_generator.py} +14 -10
  359. mindspore/ops_generate/{pyboost_op_cpp_code_generator.py → pyboost/pyboost_op_cpp_code_generator.py} +140 -53
  360. mindspore/ops_generate/{pyboost_overload_functions_cpp_generator.py → pyboost/pyboost_overload_functions_cpp_generator.py} +28 -15
  361. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +88 -4
  362. mindspore/ops_generate/resources/__init__.py +0 -0
  363. mindspore/ops_generate/resources/resource_list.py +30 -0
  364. mindspore/ops_generate/resources/resource_loader.py +36 -0
  365. mindspore/ops_generate/resources/resource_manager.py +64 -0
  366. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  367. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  368. mindspore/parallel/__init__.py +6 -2
  369. mindspore/parallel/_auto_parallel_context.py +133 -6
  370. mindspore/parallel/_cell_wrapper.py +130 -15
  371. mindspore/parallel/_parallel_serialization.py +95 -4
  372. mindspore/parallel/_ps_context.py +1 -1
  373. mindspore/parallel/_recovery_context.py +7 -2
  374. mindspore/parallel/_tensor.py +142 -18
  375. mindspore/parallel/_utils.py +198 -25
  376. mindspore/parallel/algo_parameter_config.py +3 -3
  377. mindspore/parallel/auto_parallel.py +732 -0
  378. mindspore/parallel/checkpoint_convert.py +159 -0
  379. mindspore/parallel/checkpoint_transform.py +656 -37
  380. mindspore/parallel/cluster/process_entity/_api.py +151 -19
  381. mindspore/parallel/cluster/run.py +1 -1
  382. mindspore/parallel/function/__init__.py +24 -0
  383. mindspore/parallel/function/reshard_func.py +259 -0
  384. mindspore/parallel/nn/__init__.py +25 -0
  385. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  386. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  387. mindspore/parallel/parameter_broadcast.py +24 -13
  388. mindspore/parallel/shard.py +137 -61
  389. mindspore/parallel/transform_safetensors.py +287 -95
  390. mindspore/pgodb140.dll +0 -0
  391. mindspore/pgort140.dll +0 -0
  392. mindspore/profiler/__init__.py +9 -5
  393. mindspore/profiler/analysis/parser/ascend_cann_parser.py +6 -2
  394. mindspore/profiler/analysis/parser/ms_framework_parser.py +4 -4
  395. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -4
  396. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +22 -0
  397. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
  398. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +241 -86
  399. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +41 -2
  400. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +33 -35
  401. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +7 -0
  402. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +8 -3
  403. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +141 -30
  404. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +5 -6
  405. mindspore/profiler/common/ascend_msprof_exporter.py +5 -4
  406. mindspore/profiler/common/constant.py +12 -0
  407. mindspore/profiler/common/msprof_cmd_tool.py +42 -23
  408. mindspore/profiler/common/path_manager.py +24 -0
  409. mindspore/profiler/common/profiler_context.py +26 -2
  410. mindspore/profiler/common/profiler_meta_data.py +74 -0
  411. mindspore/profiler/common/profiler_parameters.py +59 -18
  412. mindspore/profiler/common/profiler_path_manager.py +66 -7
  413. mindspore/profiler/dynamic_profiler.py +112 -79
  414. mindspore/profiler/envprofiler.py +26 -1
  415. mindspore/profiler/experimental_config.py +197 -0
  416. mindspore/profiler/mstx.py +57 -14
  417. mindspore/profiler/platform/npu_profiler.py +33 -7
  418. mindspore/profiler/profiler.py +541 -45
  419. mindspore/profiler/profiler_action_controller.py +1 -1
  420. mindspore/profiler/profiler_interface.py +4 -0
  421. mindspore/profiler/schedule.py +57 -22
  422. mindspore/rewrite/api/node.py +15 -13
  423. mindspore/rewrite/api/symbol_tree.py +1 -1
  424. mindspore/run_check/_check_version.py +25 -14
  425. mindspore/run_check/run_check.py +1 -1
  426. mindspore/runtime/__init__.py +2 -2
  427. mindspore/runtime/executor.py +40 -11
  428. mindspore/runtime/memory.py +25 -8
  429. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  430. mindspore/swresample-4.dll +0 -0
  431. mindspore/swscale-6.dll +0 -0
  432. mindspore/tbbmalloc.dll +0 -0
  433. mindspore/tinyxml2.dll +0 -0
  434. mindspore/train/__init__.py +8 -8
  435. mindspore/train/_utils.py +35 -7
  436. mindspore/train/amp.py +1 -1
  437. mindspore/train/callback/__init__.py +2 -2
  438. mindspore/train/callback/_callback.py +2 -16
  439. mindspore/train/callback/_checkpoint.py +24 -40
  440. mindspore/train/callback/_cluster_monitor.py +14 -18
  441. mindspore/train/callback/_flops_collector.py +2 -3
  442. mindspore/train/callback/_history.py +7 -4
  443. mindspore/train/callback/_lambda_callback.py +2 -2
  444. mindspore/train/callback/_landscape.py +0 -3
  445. mindspore/train/callback/_loss_monitor.py +2 -1
  446. mindspore/train/callback/_on_request_exit.py +6 -5
  447. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  448. mindspore/train/callback/_summary_collector.py +8 -13
  449. mindspore/train/callback/_time_monitor.py +2 -1
  450. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +179 -103
  451. mindspore/train/data_sink.py +25 -2
  452. mindspore/train/dataset_helper.py +4 -5
  453. mindspore/train/loss_scale_manager.py +8 -7
  454. mindspore/train/metrics/accuracy.py +3 -3
  455. mindspore/train/metrics/confusion_matrix.py +9 -9
  456. mindspore/train/metrics/error.py +3 -3
  457. mindspore/train/metrics/hausdorff_distance.py +4 -4
  458. mindspore/train/metrics/mean_surface_distance.py +3 -3
  459. mindspore/train/metrics/metric.py +0 -12
  460. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  461. mindspore/train/metrics/precision.py +8 -6
  462. mindspore/train/metrics/recall.py +9 -9
  463. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  464. mindspore/train/mind_ir_pb2.py +19 -12
  465. mindspore/train/model.py +176 -103
  466. mindspore/train/serialization.py +246 -988
  467. mindspore/train/summary/_summary_adapter.py +2 -2
  468. mindspore/train/summary/summary_record.py +1 -1
  469. mindspore/turbojpeg.dll +0 -0
  470. mindspore/utils/__init__.py +3 -2
  471. mindspore/utils/dryrun.py +4 -2
  472. mindspore/utils/hooks.py +81 -0
  473. mindspore/utils/utils.py +138 -4
  474. mindspore/vcmeta.dll +0 -0
  475. mindspore/vcruntime140.dll +0 -0
  476. mindspore/vcruntime140_1.dll +0 -0
  477. mindspore/version.py +1 -1
  478. {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +2 -1
  479. {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +483 -438
  480. mindspore/_install_custom.py +0 -43
  481. mindspore/common/_register_for_adapter.py +0 -74
  482. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  483. mindspore/ops/auto_generate/gen_arg_handler.py +0 -136
  484. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  485. mindspore/ops_generate/gen_constants.py +0 -190
  486. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  487. mindspore/ops_generate/ops_primitive_h_generator.py +0 -81
  488. /mindspore/ops_generate/{base_generator.py → common/base_generator.py} +0 -0
  489. {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
  490. {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +0 -0
  491. {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
@@ -17,7 +17,11 @@
17
17
  import ast
18
18
  import os
19
19
  from collections import defaultdict
20
- import gen_constants as K
20
+
21
+ import common.gen_constants as K
22
+ from common.gen_utils import safe_load_yaml_from_dir
23
+ from resources.resource_loader import ResourceLoader
24
+ from resources.resource_list import ResourceType
21
25
 
22
26
 
23
27
  class OpApiProto:
@@ -50,7 +54,8 @@ def get_tensor_method_ast_dict():
50
54
  for all functions defined in the 'tensor_method.py' file.
51
55
  """
52
56
  tensor_method_ast_dict = dict()
53
- tensor_method_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), '../ops/tensor_method.py')
57
+ tensor_method_file = os.path.join(
58
+ K.WORK_DIR, K.PY_MS_DIR, 'ops/tensor_method.py')
54
59
  with open(tensor_method_file, "r", encoding="utf-8") as file:
55
60
  tree = ast.parse(file.read(), filename=tensor_method_file)
56
61
  for node in ast.walk(tree):
@@ -59,72 +64,91 @@ def get_tensor_method_ast_dict():
59
64
  return tensor_method_ast_dict
60
65
 
61
66
 
62
- def load_api_protos_from_yaml(tensor_func_yaml_data, op_protos, deprecated_op_protos):
67
+ class OpApiProtoLoader(ResourceLoader):
63
68
  """
64
- Loads tensor function prototypes from YAML data and returns them as a dictionary.
69
+ Loads api related proto data.
65
70
  """
66
- op_protos_dict = {}
67
- for op_proto in op_protos:
68
- op_protos_dict[op_proto.op_name] = op_proto
69
- for deprecated_op_proto in deprecated_op_protos:
70
- op_protos_dict[deprecated_op_proto.op_name] = deprecated_op_proto
71
- tensor_method_protos = defaultdict(list)
72
- mint_func_protos = defaultdict(list)
73
- alias_api_mapping = defaultdict(list)
74
- tensor_method_def_ast_dict = get_tensor_method_ast_dict()
75
- for func_name, tensor_func_data in tensor_func_yaml_data.items():
76
- func_data_list = [tensor_func_data] if isinstance(tensor_func_data, dict) else tensor_func_data
77
- for func_data in func_data_list:
78
- func_keys = func_data.keys()
79
- check_op_api_yaml_keys(func_name, set(func_keys), K.TENSOR_FUNC_KEYS)
80
- if 'alias' in func_data:
81
- alias_api_mapping[func_data['alias']].append(func_name)
82
- continue
83
- op_name = _get_op_name_from_op_yaml(func_name, func_data)
84
- op_proto = op_protos_dict.get(op_name, None)
85
- if op_proto is None:
86
- raise TypeError(
87
- f"For generating tensor functions, op_proto should not be empty. Func name is {func_name}")
88
- py_method = func_data.get('py_method', '')
89
- if py_method == '':
90
- raise TypeError(
91
- f'For generating tensor functions, py method should not be empty. Func name is {func_name}')
92
- if py_method not in tensor_method_def_ast_dict:
93
- raise TypeError(f"{py_method} is not defined in tensor_method.py.")
94
- kw_only_args = func_data.get('kwonlyargs', None)
95
- if kw_only_args:
96
- kw_only_args = [item.strip() for item in kw_only_args.split(',')]
97
- check_kwonlyargs(func_data, kw_only_args, op_name, op_proto, py_method, tensor_method_def_ast_dict)
98
- varargs = func_data.get('varargs', None)
99
- if varargs:
100
- varargs = [item.strip() for item in varargs.split(',')]
101
- check_varargs(varargs, op_name)
102
- ascend = func_data.get('Ascend', 'aclnn')
103
- gpu = func_data.get('GPU', 'aclnn')
104
- cpu = func_data.get('CPU', 'aclnn')
105
- interface = func_data.get('interface')
106
- if interface is None:
107
- raise ValueError(
108
- f"For generating tensor or functional interfaces, field interface must exist. "
109
- f"Op name is {func_name}")
110
-
111
- interface = ', '.join(part.strip() for part in interface.split(','))
112
-
113
- if interface not in {'tensor', 'function', 'tensor, function', 'function, tensor'}:
114
- raise ValueError(
115
- f"The value of field 'interface' must be one of 'tensor', 'function', "
116
- f"'tensor, function', or 'function, tensor'. File name is {func_name}.yaml"
117
- )
118
-
119
- proto = OpApiProto(func_name=func_name, op_proto=op_proto, py_method=py_method,
120
- kw_only_args=kw_only_args, varargs=varargs, ascend=ascend, gpu=gpu, cpu=cpu)
121
-
122
- if 'tensor' in interface:
123
- tensor_method_protos[func_name].append(proto)
124
- if 'function' in interface:
125
- mint_func_protos[func_name].append(proto)
126
-
127
- return tensor_method_protos, mint_func_protos, alias_api_mapping
71
+ def __init__(self, op_protos, deprecated_op_protos, func_op_protos):
72
+ self.op_api_data = safe_load_yaml_from_dir(os.path.join(K.WORK_DIR, K.MS_OP_API_YAML_PATH))
73
+ self.op_protos = op_protos + func_op_protos
74
+ self.deprecated_op_protos = deprecated_op_protos
75
+
76
+ def load(self):
77
+ """
78
+ Loads tensor function prototypes from YAML data and returns them as a dictionary.
79
+ """
80
+ op_protos_dict = {}
81
+ for op_proto in self.op_protos:
82
+ op_protos_dict[op_proto.op_name] = op_proto
83
+ for deprecated_op_proto in self.deprecated_op_protos:
84
+ op_protos_dict[deprecated_op_proto.op_name] = deprecated_op_proto
85
+ tensor_method_protos = defaultdict(list)
86
+ mint_func_protos = defaultdict(list)
87
+ alias_api_mapping = defaultdict(list)
88
+ tensor_method_def_ast_dict = get_tensor_method_ast_dict()
89
+ for func_name, tensor_func_data in self.op_api_data.items():
90
+ func_data_list = [tensor_func_data] if isinstance(
91
+ tensor_func_data, dict) else tensor_func_data
92
+ for func_data in func_data_list:
93
+ func_keys = func_data.keys()
94
+ check_op_api_yaml_keys(func_name, set(
95
+ func_keys), K.TENSOR_FUNC_KEYS)
96
+ if 'alias' in func_data:
97
+ alias_api_mapping[func_data['alias']].append(func_name)
98
+ continue
99
+ op_name = _get_op_name_from_op_yaml(func_name, func_data)
100
+ op_proto = op_protos_dict.get(op_name, None)
101
+ if op_proto is None:
102
+ raise TypeError(
103
+ f"For generating tensor functions, op_proto should not be empty. Func name is {func_name}")
104
+ py_method = func_data.get('py_method', '')
105
+ if py_method == '':
106
+ raise TypeError(
107
+ f'For generating tensor functions, py method should not be empty. Func name is {func_name}')
108
+ if py_method not in tensor_method_def_ast_dict:
109
+ raise TypeError(
110
+ f"{py_method} is not defined in tensor_method.py.")
111
+ kw_only_args = func_data.get('kwonlyargs', None)
112
+ if kw_only_args:
113
+ kw_only_args = [item.strip()
114
+ for item in kw_only_args.split(',')]
115
+ check_kwonlyargs(func_data, kw_only_args, op_name,
116
+ op_proto, py_method, tensor_method_def_ast_dict)
117
+ varargs = func_data.get('varargs', None)
118
+ if varargs:
119
+ varargs = [item.strip() for item in varargs.split(',')]
120
+ check_varargs(varargs, op_name)
121
+ ascend = func_data.get('Ascend', 'aclnn')
122
+ gpu = func_data.get('GPU', 'aclnn')
123
+ cpu = func_data.get('CPU', 'aclnn')
124
+ interface = func_data.get('interface')
125
+ if interface is None:
126
+ raise ValueError(
127
+ f"For generating tensor or functional interfaces, field interface must exist. "
128
+ f"Op name is {func_name}")
129
+
130
+ interface = ', '.join(part.strip()
131
+ for part in interface.split(','))
132
+
133
+ if interface not in {'tensor', 'function', 'tensor, function', 'function, tensor'}:
134
+ raise ValueError(
135
+ f"The value of field 'interface' must be one of 'tensor', 'function', "
136
+ f"'tensor, function', or 'function, tensor'. File name is {func_name}.yaml"
137
+ )
138
+
139
+ proto = OpApiProto(func_name=func_name, op_proto=op_proto, py_method=py_method,
140
+ kw_only_args=kw_only_args, varargs=varargs, ascend=ascend, gpu=gpu, cpu=cpu)
141
+
142
+ if 'tensor' in interface:
143
+ tensor_method_protos[func_name].append(proto)
144
+ if 'function' in interface:
145
+ mint_func_protos[func_name].append(proto)
146
+
147
+ return {ResourceType.TENSOR_METHOD_PROTOS: tensor_method_protos,
148
+ ResourceType.MINT_FUNC_PROTOS: mint_func_protos,
149
+ ResourceType.ALIAS_API_MAPPING: alias_api_mapping}
150
+
151
+
128
152
 
129
153
 
130
154
  def check_kwonlyargs(func_data, kw_only_args, op_name, op_proto, py_method, tensor_method_def_ast_dict):
@@ -160,13 +184,15 @@ def _get_op_name_from_op_yaml(func_name: str, func_data: dict) -> str:
160
184
  """Extracts the operation name from the given YAML function data."""
161
185
  op_yaml = func_data.get('op_yaml', '')
162
186
  if op_yaml == '':
163
- raise TypeError(f'For generating tensor functions, op yaml should not be empty, func name is {func_name}')
187
+ raise TypeError(
188
+ f'For generating tensor functions, op yaml should not be empty, func name is {func_name}')
164
189
  if 'deprecated' in op_yaml:
165
190
  op_name = op_yaml.replace('/', '_').replace('_method.yaml', '')
166
191
  else:
167
192
  op_name = op_yaml.replace('_op.yaml', '')
168
193
  if op_name == '':
169
- raise TypeError(f'For generating tensor functions, op name should not be empty, func name is {func_name}')
194
+ raise TypeError(
195
+ f'For generating tensor functions, op name should not be empty, func name is {func_name}')
170
196
  return op_name
171
197
 
172
198
 
@@ -193,6 +219,7 @@ def categorize_func_data(func_protos_data):
193
219
  single_op_func_data = {}
194
220
  overload_op_func_data = {}
195
221
  all_op_func_data = {}
222
+ op_class_name_set = set()
196
223
  for func_api_name, func_protos in func_protos_data.items():
197
224
  if len(func_protos) == 1:
198
225
  func_name = func_protos[0].func_name
@@ -202,5 +229,7 @@ def categorize_func_data(func_protos_data):
202
229
  elif len(func_protos) > 1:
203
230
  overload_op_func_data[func_api_name] = func_protos
204
231
  all_op_func_data[func_api_name] = func_protos
232
+ for func_proto in func_protos:
233
+ op_class_name_set.add(func_proto.op_proto.op_class.name)
205
234
 
206
- return all_op_func_data, single_op_func_data, overload_op_func_data
235
+ return all_op_func_data, single_op_func_data, overload_op_func_data, op_class_name_set
@@ -23,15 +23,15 @@ that can be used to call the Pyboost primitive implementations.
23
23
 
24
24
  import os
25
25
 
26
- import template
27
- from template import Template
28
- import gen_constants as K
29
- import pyboost_utils
30
- import op_api_proto
31
- from gen_utils import save_file
32
- from base_generator import BaseGenerator
33
- from op_proto import OpProto
34
- from op_template_parser import OpTemplateParser
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
35
 
36
36
 
37
37
  class TensorFuncRegCppGenerator(BaseGenerator):
@@ -53,7 +53,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
53
53
  self.TENSOR_FUNC_UT_OVERLOAD_BODY = template.TENSOR_FUNC_UT_OVERLOAD_BODY
54
54
  self.TENSOR_CPP_METHOD = template.TENSOR_CPP_METHOD
55
55
 
56
- self.func_def_reg = Template("tensor_class->def(\"${func_name}\", TensorMethod${cpp_func_name});\n")
56
+ self.func_def_reg = Template(
57
+ "tensor_class->def(\"${func_name}\", TensorMethod${cpp_func_name});\n")
57
58
  self.single_case_template = Template(
58
59
  'case ${case_id}:\n'
59
60
  ' ${device_dispatcher}\n'
@@ -78,8 +79,10 @@ class TensorFuncRegCppGenerator(BaseGenerator):
78
79
  self.pyboost_return_template = Template(
79
80
  '${arg_handler_processor}\n'
80
81
  'MS_LOG(INFO) << "Call Tensor${class_name}";\n'
81
- 'return ToPython(TensorPyboostMethodRegister::'
82
- 'GetOp(tensor::TensorPyboostMethod::k${class_name}Reg)(arg_list));\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'
83
86
  )
84
87
  self.callback_python_template = Template(
85
88
  'MS_LOG(INFO) << "Callback python method: ${py_method}";\n'
@@ -109,31 +112,44 @@ class TensorFuncRegCppGenerator(BaseGenerator):
109
112
  alias_func_mapping (dict): A dictionary mapping function name to its alias function names.
110
113
  """
111
114
 
112
- all_op_func_data, single_op_func_data, overload_op_func_data = op_api_proto.categorize_func_data(
113
- func_protos_data)
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)
114
117
 
115
118
  tensor_method_list = self._get_op_enum_name_list(op_protos)
116
119
  func_call_body_list = []
117
- self._create_single_op_source_files(single_op_func_data, func_call_body_list)
118
- self._create_overload_op_source_files(overload_op_func_data, func_call_body_list)
119
- merge_func_call_body = pyboost_utils.merge_strings_by_chunk_size(func_call_body_list)
120
-
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()))
121
129
  for i, func_body_chunk_str in enumerate(merge_func_call_body):
122
- tensor_api_source = self.TENSOR_API_SOURCE.replace(tenosr_func_call_body=func_body_chunk_str)
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)
123
133
  save_file(os.path.join(work_path, K.TENSOR_API_PATH), f"tensor_api_{i}.cc",
124
134
  tensor_api_source)
125
135
 
126
136
  func_def_body_list, tensor_cpp_methods_list, tensor_api_declaration_list = self._get_sorted_func_def_body(
127
137
  all_op_func_data, alias_func_mapping)
128
- tensor_api_header = self.TENSOR_API_HEADER.replace(tensor_api_declaration_list=tensor_api_declaration_list)
138
+ tensor_api_header = self.TENSOR_API_HEADER.replace(
139
+ tensor_api_declaration_list=tensor_api_declaration_list)
129
140
  save_file(os.path.join(work_path, K.TENSOR_API_PATH), f"tensor_api.h",
130
141
  tensor_api_header)
131
- self._generate_func_name_for_stub_tensor(work_path, tensor_cpp_methods_list)
132
- func_cc_reg = self.TENSOR_FUNC_CC_REG.replace(func_def_body=func_def_body_list)
133
- tensor_methods = self.TENSOR_FUNC_UTILS.replace(tensor_methods=tensor_method_list)
134
-
135
- save_file(os.path.join(work_path, K.TENSOR_FUNC_REGISTER_PATH), "tensor_func_utils.h", tensor_methods)
136
- save_file(os.path.join(work_path, K.TENSOR_FUNC_REGISTER_PATH), "tensor_func_reg.cc", func_cc_reg)
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)
137
153
 
138
154
  def _get_op_enum_name_list(self, op_protos):
139
155
  """
@@ -169,7 +185,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
169
185
  """
170
186
  tensor_cpp_methods_str = self.TENSOR_CPP_METHOD.replace(
171
187
  tensor_cpp_methods_list_str=str(tensor_cpp_methods_list))
172
- save_file(os.path.join(work_path, K.ADD_TENSOR_DOCS_PY_PATH), "_tensor_cpp_method.py", tensor_cpp_methods_str)
188
+ save_file(os.path.join(work_path, K.ADD_TENSOR_DOCS_PY_PATH),
189
+ "_tensor_cpp_method.py", tensor_cpp_methods_str)
173
190
 
174
191
  def _get_sorted_func_def_body(self, all_op_func_data, alias_func_mapping):
175
192
  """
@@ -197,9 +214,11 @@ class TensorFuncRegCppGenerator(BaseGenerator):
197
214
  if len(func_protos) == 1:
198
215
  func_proto = func_protos[0]
199
216
  func_name = func_proto.func_name
200
- func_def_body_list.append(self.func_def_reg.replace(func_name=func_name, cpp_func_name=cpp_func_name))
217
+ func_def_body_list.append(self.func_def_reg.replace(
218
+ func_name=func_name, cpp_func_name=cpp_func_name))
201
219
  tensor_cpp_methods_list.append(func_name)
202
- tensor_api_declaration_list += self.header_func_header_template.replace(cpp_func_name=cpp_func_name)
220
+ tensor_api_declaration_list += self.header_func_header_template.replace(
221
+ cpp_func_name=cpp_func_name)
203
222
  if func_name in alias_func_mapping:
204
223
  for alias_func_name in alias_func_mapping[func_name]:
205
224
  func_def_body_list.append(
@@ -209,7 +228,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
209
228
  func_def_body_list.append(
210
229
  self.func_def_reg.replace(func_name=func_api_name, cpp_func_name=cpp_func_name))
211
230
  tensor_cpp_methods_list.append(func_api_name)
212
- tensor_api_declaration_list += self.header_func_header_template.replace(cpp_func_name=cpp_func_name)
231
+ tensor_api_declaration_list += self.header_func_header_template.replace(
232
+ cpp_func_name=cpp_func_name)
213
233
  if func_api_name in alias_func_mapping:
214
234
  for alias_func_name in alias_func_mapping[func_api_name]:
215
235
  func_def_body_list.append(self.func_def_reg.replace(func_name=alias_func_name,
@@ -230,14 +250,16 @@ class TensorFuncRegCppGenerator(BaseGenerator):
230
250
  for func_api_name, func_proto in single_op_func_data.items():
231
251
  func_name = func_proto.func_name
232
252
  cpp_func_name = pyboost_utils.format_func_api_name(func_api_name)
233
- device_dispatcher_str = self._get_device_dispatchers_str(func_proto)
253
+ device_dispatcher_str = self._get_device_dispatchers_str(
254
+ func_proto)
234
255
  signature_str = self._generate_single_signature_str(
235
256
  func_proto.op_proto, func_proto.kw_only_args, func_proto.varargs
236
257
  )
237
258
  op_args = func_proto.op_proto.op_args
238
259
  max_size = len(op_args)
239
260
  self_index = self._get_input_tensor_index(func_proto)
240
- ut_body = self.TENSOR_FUNC_UT_BODY.replace(py_method=func_proto.py_method)
261
+ ut_body = self.TENSOR_FUNC_UT_BODY.replace(
262
+ py_method=func_proto.py_method)
241
263
  tensor_func_single_call_body = self.TENSOR_FUNC_CALL_BODY.replace(cpp_func_name=cpp_func_name,
242
264
  func_name=func_name,
243
265
  device_dispatcher=device_dispatcher_str,
@@ -258,7 +280,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
258
280
  list: Updated str list for generating C++ function call bodies.
259
281
  """
260
282
  for func_api_name, func_protos in overload_op_func_data.items():
261
- tensor_func_overload_call_body = self._get_overload_func_call_str(func_api_name, func_protos)
283
+ tensor_func_overload_call_body = self._get_overload_func_call_str(
284
+ func_api_name, func_protos)
262
285
  func_call_body_list.append(tensor_func_overload_call_body)
263
286
 
264
287
  def _get_overload_func_call_str(self, func_api_name, func_protos):
@@ -275,7 +298,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
275
298
  signatures_str = self._generate_func_signatures_list_str(func_protos)
276
299
  dispatch_cases = self._get_dispatch_cases(func_protos)
277
300
  ut_dispatch_cases = self._get_ut_dispatch_cases(func_protos)
278
- ut_overload_body = self.TENSOR_FUNC_UT_OVERLOAD_BODY.replace(ut_dispatch_cases=ut_dispatch_cases)
301
+ ut_overload_body = self.TENSOR_FUNC_UT_OVERLOAD_BODY.replace(
302
+ ut_dispatch_cases=ut_dispatch_cases)
279
303
 
280
304
  max_size = 0
281
305
  self_index = 0
@@ -311,7 +335,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
311
335
  if not first_sig:
312
336
  sig_str += ',\n'
313
337
  first_sig = False
314
- sig_str += self._generate_single_signature_str(op_proto, tensor_proto.kw_only_args, tensor_proto.varargs)
338
+ sig_str += self._generate_single_signature_str(
339
+ op_proto, tensor_proto.kw_only_args, tensor_proto.varargs)
315
340
  return sig_str
316
341
 
317
342
  def _generate_single_signature_str(self, op_proto: OpProto, kw_only_args, varargs) -> str:
@@ -331,9 +356,11 @@ class TensorFuncRegCppGenerator(BaseGenerator):
331
356
  op_name = func_proto.op_proto.op_class.name
332
357
  op_args = func_proto.op_proto.op_args
333
358
  if op_name in K.INPUT_NAME_MAP:
334
- self_index = [i for i in range(len(op_args)) if op_args[i].arg_name == K.INPUT_NAME_MAP[op_name]]
359
+ self_index = [i for i in range(
360
+ len(op_args)) if op_args[i].arg_name == K.INPUT_NAME_MAP[op_name]]
335
361
  else:
336
- self_index = [i for i in range(len(op_args)) if op_args[i].arg_name in K.INPUT_ARGS_NAME]
362
+ self_index = [i for i in range(
363
+ len(op_args)) if op_args[i].arg_name in K.INPUT_ARGS_NAME]
337
364
  if len(self_index) != 1:
338
365
  raise ValueError(
339
366
  f'There must be only one field named \'input\'. But got {len(self_index)} in {op_name}')
@@ -351,7 +378,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
351
378
  """
352
379
  dispatch_cases_str = ''
353
380
  for idx, func_proto in enumerate(func_protos):
354
- device_dispatcher_str = self._get_device_dispatchers_str(func_proto)
381
+ device_dispatcher_str = self._get_device_dispatchers_str(
382
+ func_proto)
355
383
  dispatch_cases_str += self.single_case_template.replace(case_id=idx,
356
384
  device_dispatcher=device_dispatcher_str)
357
385
  dispatch_cases_str += 'default:\n'
@@ -370,7 +398,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
370
398
  """
371
399
  dispatch_cases_str = ''
372
400
  for idx, func_proto in enumerate(func_protos):
373
- device_dispatcher_str = self.callback_python_in_ut_template.replace(py_method=func_proto.py_method)
401
+ device_dispatcher_str = self.callback_python_in_ut_template.replace(
402
+ py_method=func_proto.py_method)
374
403
  dispatch_cases_str += self.single_case_in_ut_template.replace(case_id=idx,
375
404
  device_dispatcher=device_dispatcher_str)
376
405
  dispatch_cases_str += 'default:\n'
@@ -387,9 +416,12 @@ class TensorFuncRegCppGenerator(BaseGenerator):
387
416
  Returns:
388
417
  str: Generated device-specific dispatch string.
389
418
  """
390
- ascend_dispatcher_str = self._get_single_device_dispatcher_str(func_proto, 'ascend')
391
- cpu_dispatcher_str = self._get_single_device_dispatcher_str(func_proto, 'cpu')
392
- gpu_dispatcher_str = self._get_single_device_dispatcher_str(func_proto, 'gpu')
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')
393
425
  device_dispatcher_str = self.device_dispatcher_template.replace(ascend_dispatcher=ascend_dispatcher_str,
394
426
  cpu_dispatcher=cpu_dispatcher_str,
395
427
  gpu_dispatcher=gpu_dispatcher_str)
@@ -409,8 +441,15 @@ class TensorFuncRegCppGenerator(BaseGenerator):
409
441
  func_proto_device = getattr(func_proto, device)
410
442
  if func_proto_device == 'pyboost':
411
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)
412
448
  return self.pyboost_return_template.replace(arg_handler_processor=arg_handler_processor_str,
413
- class_name=func_proto.op_proto.op_class.name)
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)
414
453
 
415
454
  if func_proto_device == 'py_method':
416
455
  return self.callback_python_template.replace(py_method=func_proto.py_method)
File without changes
@@ -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',
58
+ 'class', 'view', 'dispatch', 'labels', '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"