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
@@ -22,12 +22,14 @@ function signatures, and generates conversion stubs for PyBoost operations.
22
22
 
23
23
  import re
24
24
 
25
- import pyboost_utils
26
- from pyboost_utils import get_input_dtype, tuple_input_to_cpp_type, get_return_type, \
27
- number_input_to_cpp_type, get_const_number_convert, get_tuple_input_convert, is_optional_param
28
- import gen_constants as K
29
- from template import Template
30
- from op_proto import OpProto
25
+ import common.gen_constants as K
26
+ from common.template import Template
27
+ from common.op_proto import OpProto
28
+
29
+ from . import pyboost_utils
30
+ from .pyboost_utils import get_input_dtype, tuple_input_to_cpp_type, get_return_type, \
31
+ number_input_to_cpp_type, get_const_number_convert, get_tuple_input_convert, is_optional_param, \
32
+ get_input_args_type_str
31
33
 
32
34
 
33
35
  class OpTemplateParser:
@@ -57,7 +59,8 @@ class OpTemplateParser:
57
59
  call_args_types = []
58
60
  for op_arg in op_args:
59
61
  is_optional = is_optional_param(op_arg)
60
- call_args_types.append(get_input_dtype(op_arg.arg_dtype, is_optional))
62
+ call_args_types.append(get_input_dtype(
63
+ op_arg.arg_dtype, is_optional))
61
64
  return call_args_types
62
65
 
63
66
  def parse_call_args_with_types(self):
@@ -95,7 +98,8 @@ class OpTemplateParser:
95
98
  call_args_with_tensor.append(call_arg)
96
99
  elif tuple_input_to_cpp_type(op_arg.arg_dtype) and pyboost_utils.is_tensor_list(op_arg):
97
100
  need_malloc_tensors.append(call_arg + "_vector")
98
- tensor_list_convert.append(get_tuple_input_convert(call_arg, op_arg.arg_dtype))
101
+ tensor_list_convert.append(
102
+ get_tuple_input_convert(call_arg, op_arg.arg_dtype))
99
103
  call_args_with_tensor.append(call_arg + "_vector")
100
104
  else:
101
105
  call_args_with_tensor.append(call_arg)
@@ -139,14 +143,17 @@ class OpTemplateParser:
139
143
  for op_arg, call_arg in zip(self.op_proto.op_args, call_args):
140
144
  if number_input_to_cpp_type(op_arg.arg_dtype):
141
145
  call_args_after_convert.append(call_arg + "_imm")
142
- const_number_convert.append(get_const_number_convert(call_arg, op_arg))
146
+ const_number_convert.append(
147
+ get_const_number_convert(call_arg, op_arg))
143
148
  elif tuple_input_to_cpp_type(op_arg.arg_dtype):
144
149
  call_args_after_convert.append(call_arg + "_vector")
145
- value_tuple_convert.append(get_tuple_input_convert(call_arg, op_arg.arg_dtype))
150
+ value_tuple_convert.append(
151
+ get_tuple_input_convert(call_arg, op_arg.arg_dtype))
146
152
  else:
147
153
  call_args_after_convert.append(call_arg)
148
154
  if const_number_convert:
149
- const_number_convert.insert(0, '// Convert ValuePtr to c++ scalar\n')
155
+ const_number_convert.insert(
156
+ 0, '// Convert ValuePtr to c++ scalar\n')
150
157
  if value_tuple_convert:
151
158
  value_tuple_convert.insert(0, '// ValueTuple to std::vector\n')
152
159
  return call_args_after_convert, value_tuple_convert, const_number_convert
@@ -192,7 +199,8 @@ class OpTemplateParser:
192
199
  args_signature = self.op_proto.op_args_signature
193
200
  if args_signature is not None:
194
201
  dtype_group = args_signature.dtype_group
195
- indexes = {arg.arg_name: index for index, arg in enumerate(self.op_proto.op_args)}
202
+ indexes = {arg.arg_name: index for index,
203
+ arg in enumerate(self.op_proto.op_args)}
196
204
  if dtype_group is not None:
197
205
  match = re.findall(r'\((.*?)\)', dtype_group)
198
206
  for item in match:
@@ -292,7 +300,8 @@ class OpTemplateParser:
292
300
  op_outputs = 'outputs'
293
301
  call_outputs = 'outputs_'
294
302
  else:
295
- raise Exception("Not support return type {}".format(returns_type[0]))
303
+ raise Exception(
304
+ "Not support return type {}".format(returns_type[0]))
296
305
  elif len(returns_type) > 1:
297
306
  outputs_str = ''
298
307
  for i in range(len(returns_type)):
@@ -390,43 +399,62 @@ class OpTemplateParser:
390
399
  str: Generated argument handler processing code.
391
400
  """
392
401
  tensor_arg_handler_prt_template = Template(
393
- "arg_list[${idx}] = "
394
- "(*pynative::${func_str}(\"${func_name}\", \"${op_arg_name}\", arg_list[${idx}]))->value();\n"
402
+ "parse_args.arg_list_[${idx}] = "
403
+ "py::cast((*pynative::${func_str}(\"${func_name}\", \"${op_arg_name}\", \
404
+ parse_args.arg_list_[${idx}]))->value());\n"
405
+ "parse_args.src_types_[${idx}] = ops::OP_DTYPE::DT_BEGIN;\n"
406
+ "parse_args.dst_types_[${idx}] = ${new_type};\n"
395
407
  )
396
408
  function_arg_handler_prt_template = Template(
397
- "arg_list[${idx}] = "
398
- "(*${func_str}(\"${func_name}\", \"${op_arg_name}\", arg_list[${idx}]))->value();\n"
409
+ "parse_args.arg_list_[${idx}] = "
410
+ "py::cast((*${func_str}(\"${func_name}\", \"${op_arg_name}\", parse_args.arg_list_[${idx}]))->value());\n"
411
+ "parse_args.src_types_[${idx}] = ops::OP_DTYPE::DT_BEGIN;\n"
412
+ "parse_args.dst_types_[${idx}] = ${new_type};\n"
399
413
  )
400
414
  arg_handler_prt_template = (
401
415
  tensor_arg_handler_prt_template) if is_tensor_api else function_arg_handler_prt_template
402
416
 
403
417
  arg_handler_template = Template(
404
- "arg_list[${idx}] = "
405
- "pynative::${func_str}(\"${func_name}\", \"${op_arg_name}\", arg_list[${idx}]);\n"
418
+ "parse_args.arg_list_[${idx}] = "
419
+ "py::cast(pynative::${func_str}(\"${func_name}\", \"${op_arg_name}\", parse_args.arg_list_[${idx}]));\n"
420
+ "parse_args.src_types_[${idx}] = ops::OP_DTYPE::DT_BEGIN;\n"
421
+ "parse_args.dst_types_[${idx}] = ${new_type};\n"
406
422
  )
407
423
  arg_handler_optional_template = Template(
408
- 'if (!py::isinstance<py::none>(arg_list[${idx}])) {\n'
424
+ 'if (!py::isinstance<py::none>(parse_args.arg_list_[${idx}])) {\n'
409
425
  ' ${arg_handler_str}\n'
410
426
  '}\n'
411
427
  )
412
-
428
+ arg_handler_type_map = {"to_2d_paddings": "ops::OP_DTYPE::DT_TUPLE_INT",
429
+ "dtype_to_type_id": "ops::OP_DTYPE::DT_INT",
430
+ "to_kernel_size": "ops::OP_DTYPE::DT_TUPLE_INT",
431
+ "to_strides": "ops::OP_DTYPE::DT_TUPLE_INT",
432
+ "str_to_enum": "ops::OP_DTYPE::DT_INT",
433
+ "to_pair": "ops::OP_DTYPE::DT_TUPLE_INT",
434
+ "to_dilations": "ops::OP_DTYPE::DT_TUPLE_INT",
435
+ "to_output_padding": "ops::OP_DTYPE::DT_TUPLE_INT",
436
+ "to_rates": "ops::OP_DTYPE::DT_TUPLE_INT"}
413
437
  arg_handler_processor = []
414
438
  op_args = op_proto.op_args
415
439
  for idx, op_arg in enumerate(op_args):
416
440
  arg_handler = op_arg.arg_handler
417
- func_str = ''.join(word.capitalize() for word in arg_handler.split('_'))
441
+ func_str = ''.join(word.capitalize()
442
+ for word in arg_handler.split('_'))
418
443
  if arg_handler:
419
444
  op_arg_name = op_arg.arg_name
445
+ new_type = arg_handler_type_map[arg_handler]
420
446
  if func_str in ("StrToEnum", "DtypeToTypeId"):
421
447
  arg_handler_str = arg_handler_prt_template.replace(func_str=func_str,
422
448
  func_name=func_name,
423
449
  op_arg_name=op_arg_name,
424
- idx=idx)
450
+ idx=idx,
451
+ new_type=new_type)
425
452
  else:
426
453
  arg_handler_str = arg_handler_template.replace(func_str=func_str,
427
454
  func_name=func_name,
428
455
  op_arg_name=op_arg_name,
429
- idx=idx)
456
+ idx=idx,
457
+ new_type=new_type)
430
458
 
431
459
  if op_arg.default == "None":
432
460
  arg_handler_str = arg_handler_optional_template.replace(idx=idx,
@@ -434,3 +462,56 @@ class OpTemplateParser:
434
462
  arg_handler_processor.append(arg_handler_str)
435
463
 
436
464
  return arg_handler_processor
465
+
466
+ def get_input_tensor_index(self, op_proto):
467
+ """
468
+ Get index of input.
469
+
470
+ Args:
471
+ op_proto (OpProto): Function prototype to generate dispatch strings for.
472
+
473
+ Returns:
474
+ int: Index of input.
475
+ """
476
+ op_name = op_proto.op_class.name
477
+ op_args = op_proto.op_args
478
+ if op_name in K.INPUT_NAME_MAP:
479
+ self_index = [i for i in range(
480
+ len(op_args)) if op_args[i].arg_name == K.INPUT_NAME_MAP[op_name]]
481
+ else:
482
+ self_index = [i for i in range(
483
+ len(op_args)) if op_args[i].arg_name in K.INPUT_ARGS_NAME]
484
+ if len(self_index) != 1:
485
+ raise ValueError(
486
+ f'There must be only one field named \'input\'. But got {len(self_index)} in {op_name}')
487
+ return self_index[0]
488
+
489
+ def get_convert_args_str(self, op_proto, is_tensor_api):
490
+ """
491
+ Generates argument convert processing code for the given function prototype.
492
+
493
+ Args:
494
+ op_proto (OpProto): Operator prototype instance to generate argument processing for.
495
+
496
+ Returns:
497
+ str: Generated argument convert processing code.
498
+ """
499
+ self_index = 0
500
+ if is_tensor_api:
501
+ self_index = self.get_input_tensor_index(op_proto)
502
+ convert_args_str = ""
503
+ for idx, op_arg in enumerate(op_proto.op_args):
504
+ if is_tensor_api:
505
+ if self_index == idx:
506
+ convert_args_str += "input_tensor, "
507
+ continue
508
+ is_optional = is_optional_param(op_arg)
509
+ arg_convert_template = Template("parse_args.ConvertOptional<${des_type}>(${index}), ") if is_optional \
510
+ else Template("parse_args.Convert<${des_type}>(${index}), ")
511
+ if op_arg.is_type_id:
512
+ arg_type_str = get_input_args_type_str('type', False)
513
+ else:
514
+ arg_type_str = get_input_args_type_str(op_arg.arg_dtype, False)
515
+ convert_args_str += arg_convert_template.replace(index=idx,
516
+ des_type=arg_type_str[:-3])
517
+ return convert_args_str[:-2]
@@ -22,15 +22,16 @@ the necessary header files for the generated functions.
22
22
 
23
23
  import os
24
24
 
25
- import pyboost_utils
26
- from pyboost_utils import get_convert_type_str, is_optional_param, is_op_multi_output
27
- import template
28
- from template import Template
29
- import gen_constants as K
30
- from gen_utils import save_file
31
- from op_proto import OpProto
32
- from op_template_parser import OpTemplateParser
33
- from base_generator import BaseGenerator
25
+ import common.template as template
26
+ import common.gen_constants as K
27
+ from common.template import Template
28
+ from common.gen_utils import save_file
29
+ from common.op_proto import OpProto
30
+ from common.base_generator import BaseGenerator
31
+ from pyboost import pyboost_utils
32
+ from pyboost.pyboost_utils import get_convert_type_str, is_optional_param, is_op_multi_output, get_input_args_type_str, is_tensor_list
33
+
34
+ from .op_template_parser import OpTemplateParser
34
35
 
35
36
 
36
37
  class PyboostFunctionsGenerator(BaseGenerator):
@@ -45,7 +46,7 @@ class PyboostFunctionsGenerator(BaseGenerator):
45
46
  def __init__(self):
46
47
  """Initializes the PyboostFunctionsGenerator with the necessary templates."""
47
48
  self.pyboost_func_include_header_template = Template(
48
- f'#include "{K.MS_COMMON_PYBOOST_KERNEL_PATH}/auto_generate/${{operator_name}}.h"\n'
49
+ f'#include "{K.MS_PYBOOST_BASE_PATH}/auto_generate/${{operator_name}}.h"\n'
49
50
  )
50
51
  self.convert_optional_to_value_template = Template(
51
52
  "auto ${output} = PyNativeAlgo::PyBoost::OptionalToValue(${input});\n"
@@ -59,14 +60,17 @@ class PyboostFunctionsGenerator(BaseGenerator):
59
60
  'op_run_info->requires_grad);\n'
60
61
  )
61
62
  self.convert_template = Template("auto $arg_name = converter.${convert_func}(args, $arg_index);\n")
63
+ self.input_args_template = Template(" const ${arg_type}& ${arg_name},")
62
64
  self.PYBOOST_FUNCTION_TEMPLATE = template.PYBOOST_FUNCTION_TEMPLATE
63
65
  self.PYBOOST_COMM_FUNCTION_TEMPLATE = template.PYBOOST_COMM_FUNCTION_TEMPLATE
66
+ self.PYBOOST_FUNCTION_DYNAMIC_OUTPUT_TEMPLATE = template.PYBOOST_FUNCTION_DYNAMIC_OUTPUT_TEMPLATE
64
67
  self.REGISTER_DEFINE_TEMPLATE = template.REGISTER_DEFINE_TEMPLATE
65
68
  self.REGISTER_TEMPLATE = template.REGISTER_TEMPLATE
66
69
  self.PYBOOST_HEADER_TEMPLATE = template.PYBOOST_FUNCTIONS_CC_TEMPLATE
67
70
  self.TENSOR_FUNC_CLASS_REG = template.TENSOR_FUNC_CLASS_REG
71
+ self.OP_DEF_INC_HEAD_TEMPLATE = template.OP_DEF_INC_HEAD_TEMPLATE
68
72
 
69
- def generate(self, work_path, op_protos, tensor_func_protos_data):
73
+ def generate(self, work_path, op_protos):
70
74
  """
71
75
  Generates the C++ PyBoost functions and writes them to the specified files.
72
76
 
@@ -77,7 +81,6 @@ class PyboostFunctionsGenerator(BaseGenerator):
77
81
  Args:
78
82
  work_path (str): The file path where the generated files will be saved.
79
83
  op_protos (list): A list of operator prototypes containing information about the operators to be processed.
80
- tensor_func_protos_data(dict): A dict of tensor prototypes containing device-related information.
81
84
 
82
85
  Returns:
83
86
  None
@@ -85,6 +88,7 @@ class PyboostFunctionsGenerator(BaseGenerator):
85
88
  pyboost_func_str = ''
86
89
  pyboost_func_pybind_def = ''
87
90
  pyboost_func_include_headers_str = ''
91
+ ops_inc_head_set = set()
88
92
  for op_proto in op_protos:
89
93
  if op_proto.op_dispatch is None or not op_proto.op_dispatch.enable:
90
94
  continue
@@ -100,15 +104,16 @@ class PyboostFunctionsGenerator(BaseGenerator):
100
104
  grad_args_str = self._get_grad_args_str(op_proto)
101
105
  cast_args_str = self._get_cast_to_value_str(op_proto)
102
106
  view_arg_str = self._get_first_str(op_proto.op_view, grad_args_str)
107
+ op_input_args_str = self._get_input_args_str(op_proto)
103
108
  view_arg_str = ", " + view_arg_str if view_arg_str else ''
104
109
  multi_ouptut_str = 'Multi' if is_op_multi_output(op_proto.op_returns) else ''
105
- # communication operators have different func template
106
- function_tpl = self.PYBOOST_COMM_FUNCTION_TEMPLATE \
107
- if op_proto.op_dispatch.is_comm_op else self.PYBOOST_FUNCTION_TEMPLATE
110
+ output_num_str = len(op_proto.op_returns)
111
+ function_tpl = self._get_function_tpl(op_proto)
108
112
  pyboost_func_str += function_tpl.replace(func_name=op_pyboost_func_name,
109
113
  op_def_name=op_def_name_str,
110
114
  type_num=type_num,
111
115
  same_type=same_type,
116
+ input_args=op_input_args_str,
112
117
  parser_body=parser_body_str,
113
118
  op_name=op_proto.op_class.name,
114
119
  class_name=op_proto.op_class.name,
@@ -120,6 +125,7 @@ class PyboostFunctionsGenerator(BaseGenerator):
120
125
  cast_args=cast_args_str,
121
126
  view_arg=view_arg_str,
122
127
  is_multi=multi_ouptut_str,
128
+ output_num=output_num_str,
123
129
  operator_name=op_proto.op_name)
124
130
  pyboost_func_str = pyboost_func_str + template.NEW_LINE + template.NEW_LINE
125
131
  pyboost_op_name = op_parser.get_pyboost_name()
@@ -130,9 +136,11 @@ class PyboostFunctionsGenerator(BaseGenerator):
130
136
  class_name=op_proto.op_class.name)
131
137
  pyboost_func_include_headers_str += self.pyboost_func_include_header_template.replace(
132
138
  operator_name=op_proto.op_name)
139
+ ops_inc_head_set.add(self.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_proto.op_class.name[0].lower()))
133
140
  register_func_str = self.REGISTER_TEMPLATE.replace(register_func=pyboost_func_pybind_def)
134
141
  function_class_register = self._get_function_class_register(op_protos)
135
- pyboost_func_file = self.PYBOOST_HEADER_TEMPLATE.replace(include_op_header=pyboost_func_include_headers_str,
142
+ pyboost_func_file = self.PYBOOST_HEADER_TEMPLATE.replace(ops_inc=list(sorted(ops_inc_head_set)),
143
+ include_op_header=pyboost_func_include_headers_str,
136
144
  function_body=pyboost_func_str,
137
145
  register_function_body=register_func_str,
138
146
  function_class_register=function_class_register)
@@ -140,7 +148,6 @@ class PyboostFunctionsGenerator(BaseGenerator):
140
148
  file_name = "pyboost_functions.cc"
141
149
  save_file(save_path, file_name, pyboost_func_file)
142
150
 
143
-
144
151
  def _get_cast_args_with_type_str(self, op_proto, cast_args_str):
145
152
  args_with_type = []
146
153
  for op_arg, cast_args_name in zip(op_proto.op_args, cast_args_str):
@@ -148,7 +155,6 @@ class PyboostFunctionsGenerator(BaseGenerator):
148
155
  args_with_type.append("const " + input_dtype + " &" + cast_args_name)
149
156
  return list(args_with_type)
150
157
 
151
-
152
158
  def _get_function_class_register(self, op_protos) -> str:
153
159
  """
154
160
  Generates a function class registration string for tensor functions.
@@ -189,10 +195,33 @@ class PyboostFunctionsGenerator(BaseGenerator):
189
195
  convert_type_str = get_convert_type_str('type', is_optional)
190
196
  else:
191
197
  convert_type_str = get_convert_type_str(op_arg.arg_dtype, is_optional)
198
+
192
199
  parser_func_str += self.convert_template.replace(arg_name=op_arg.arg_name, convert_func=convert_type_str,
193
200
  arg_index=pyboost_utils.get_index(index))
194
201
  return parser_func_str
195
202
 
203
+
204
+ def _get_input_args_str(self, op_proto: OpProto) -> str:
205
+ """
206
+ Generates the input arguments list for the pyboost operator.
207
+
208
+ Args:
209
+ op_proto (OpProto): The operator prototype containing the argument information.
210
+
211
+ Returns:
212
+ str: The generated input arguments list as a string.
213
+ """
214
+ parser_func_str = ''
215
+ for _, op_arg in enumerate(op_proto.op_args):
216
+ is_optional = is_optional_param(op_arg)
217
+ if op_arg.is_type_id:
218
+ arg_type_str = get_input_args_type_str('type', is_optional)
219
+ else:
220
+ arg_type_str = get_input_args_type_str(op_arg.arg_dtype, is_optional)
221
+ parser_func_str += self.input_args_template.replace(arg_name=op_arg.arg_name, arg_type=arg_type_str)
222
+ return parser_func_str[:-1]
223
+
224
+
196
225
  def _get_convert_stub_str(self, op_proto: OpProto):
197
226
  """
198
227
  Generates the conversion stub code for the operator's arguments.
@@ -368,3 +397,11 @@ class PyboostFunctionsGenerator(BaseGenerator):
368
397
  arg_str = grad_arg
369
398
  break
370
399
  return arg_str
400
+
401
+
402
+ def _get_function_tpl(self, op_proto: OpProto):
403
+ if len(op_proto.op_returns) == 1 and is_tensor_list(op_proto.op_returns[0]):
404
+ # op output size is unknown
405
+ return self.PYBOOST_FUNCTION_DYNAMIC_OUTPUT_TEMPLATE
406
+ return self.PYBOOST_COMM_FUNCTION_TEMPLATE \
407
+ if op_proto.op_dispatch.is_comm_op else self.PYBOOST_FUNCTION_TEMPLATE
@@ -22,13 +22,15 @@ operation's primitive and arguments. The generated file is saved to the specifie
22
22
 
23
23
  import os
24
24
 
25
- import template
25
+ import common.template as template
26
+ import common.gen_constants as K
27
+ from common.template import Template
28
+ from common.gen_utils import save_file
29
+ from common.base_generator import BaseGenerator
30
+ from common.op_proto import OpProto
26
31
 
27
- from template import Template
28
- import gen_constants as K
29
- from gen_utils import save_file
30
- from op_template_parser import OpTemplateParser
31
- from base_generator import BaseGenerator
32
+ from .op_template_parser import OpTemplateParser
33
+ from .pyboost_utils import is_optional_param, get_input_args_type_str
32
34
 
33
35
 
34
36
  class PyboostFunctionsHeaderGenerator(BaseGenerator):
@@ -41,8 +43,13 @@ class PyboostFunctionsHeaderGenerator(BaseGenerator):
41
43
  self.PYBOOST_FUNCTION_HEADER_TEMPLATE = template.PYBOOST_FUNCTION_HEADER_TEMPLATE
42
44
 
43
45
  self.pyboost_func_template = Template(
44
- 'py::object ME_EXPORT ${func_name}_Base(const PrimitivePtr &prim, const py::list &args);'
46
+ 'py::object PYNATIVE_EXPORT ${func_name}_Base(const PrimitivePtr &prim, const py::list &args);'
45
47
  )
48
+ self.pyboost_op_func_template = Template(
49
+ 'py::object ME_EXPORT ${func_name}_OP(const PrimitivePtr &prim, '
50
+ 'const std::vector<ops::OP_DTYPE>& source_type, ${input_args});'
51
+ )
52
+ self.input_args_template = Template(" const ${arg_type}& ${arg_name},")
46
53
 
47
54
  def generate(self, work_path, op_protos):
48
55
  """
@@ -55,14 +62,39 @@ class PyboostFunctionsHeaderGenerator(BaseGenerator):
55
62
  Returns:
56
63
  None: The method writes the generated header file to the specified directory.
57
64
  """
58
- func_list = []
65
+ prim_func_list = []
66
+ op_func_list_str = []
59
67
  for op_proto in op_protos:
60
68
  if op_proto.op_dispatch is None or not op_proto.op_dispatch.enable:
61
69
  continue
62
70
  op_parser = OpTemplateParser(op_proto)
63
71
  op_pyboost_func_name = op_parser.get_pyboost_func_name()
64
- func_list.append(self.pyboost_func_template.replace(func_name=op_pyboost_func_name))
65
- pyboost_func_h_str = self.PYBOOST_FUNCTION_HEADER_TEMPLATE.replace(prim_func_list=func_list)
72
+ op_input_args_str = self._get_input_args_str(op_proto)
73
+ prim_func_list.append(self.pyboost_func_template.replace(func_name=op_pyboost_func_name))
74
+ op_func_list_str.append(self.pyboost_op_func_template.replace(func_name=op_pyboost_func_name,
75
+ input_args=op_input_args_str))
76
+ pyboost_func_h_str = self.PYBOOST_FUNCTION_HEADER_TEMPLATE.replace(prim_func_list=prim_func_list,
77
+ op_func_list=op_func_list_str)
66
78
  save_path = os.path.join(work_path, K.PIPELINE_PYBOOST_FUNC_GEN_PATH)
67
79
  file_name = "pyboost_functions.h"
68
80
  save_file(save_path, file_name, pyboost_func_h_str)
81
+
82
+ def _get_input_args_str(self, op_proto: OpProto) -> str:
83
+ """
84
+ Generates the input arguments list for the pyboost operator.
85
+
86
+ Args:
87
+ op_proto (OpProto): The operator prototype containing the argument information.
88
+
89
+ Returns:
90
+ str: The generated input arguments list as a string.
91
+ """
92
+ parser_func_str = ''
93
+ for _, op_arg in enumerate(op_proto.op_args):
94
+ is_optional = is_optional_param(op_arg)
95
+ if op_arg.is_type_id:
96
+ arg_type_str = get_input_args_type_str('type', is_optional)
97
+ else:
98
+ arg_type_str = get_input_args_type_str(op_arg.arg_dtype, is_optional)
99
+ parser_func_str += self.input_args_template.replace(arg_name=op_arg.arg_name, arg_type=arg_type_str)
100
+ return parser_func_str[:-1]
@@ -22,11 +22,11 @@ argument processing and includes appropriate documentation descriptions.
22
22
 
23
23
  import os
24
24
 
25
- import template
26
- import gen_constants as K
27
- from gen_utils import save_file
28
- from op_proto import OpProto
29
- from base_generator import BaseGenerator
25
+ import common.template as template
26
+ import common.gen_constants as K
27
+ from common.gen_utils import save_file
28
+ from common.op_proto import OpProto
29
+ from common.base_generator import BaseGenerator
30
30
 
31
31
 
32
32
  class PyboostFunctionsPyGenerator(BaseGenerator):
@@ -78,7 +78,7 @@ class PyboostFunctionsPyGenerator(BaseGenerator):
78
78
  func_args=func_args,
79
79
  input_args=input_args,
80
80
  func_impl_name=func_impl_name)
81
- py_header = K.PY_LICENSE + self.IMPORT_PYBOOST_FUNC_HEADER
81
+ py_header = template.PY_LICENSE_STR + self.IMPORT_PYBOOST_FUNC_HEADER
82
82
  save_file(os.path.join(work_path, K.PY_AUTO_GEN_PATH), "gen_extend_func.py", py_header + gen_py)
83
83
 
84
84
  def _get_op_description_dict(self, doc_yaml_data):
@@ -21,14 +21,15 @@ function definitions, includes necessary headers, and generates the registration
21
21
 
22
22
  import os
23
23
 
24
- import template
25
- from template import Template
26
- from gen_utils import save_file
27
- import gen_constants as K
28
- from op_proto import OpProto
29
- from base_generator import BaseGenerator
30
- from op_template_parser import OpTemplateParser
31
- import pyboost_utils
24
+ import common.template as template
25
+ from common.template import Template
26
+ from common.gen_utils import save_file
27
+ import common.gen_constants as K
28
+ from common.op_proto import OpProto
29
+ from common.base_generator import BaseGenerator
30
+ from pyboost import pyboost_utils
31
+
32
+ from .op_template_parser import OpTemplateParser
32
33
 
33
34
 
34
35
  class PyboostGradFunctionsGenerator(BaseGenerator):
@@ -44,7 +45,7 @@ class PyboostGradFunctionsGenerator(BaseGenerator):
44
45
  def __init__(self):
45
46
  super().__init__()
46
47
  self.pyboost_func_include_header_template = Template(
47
- f'#include "{K.MS_COMMON_PYBOOST_KERNEL_PATH}/auto_generate/${{operator_name}}.h"\n')
48
+ f'#include "{K.MS_PYBOOST_BASE_PATH}/auto_generate/${{operator_name}}.h"\n')
48
49
  self.GEN_OPS_DEF_HEADER_TEMPLATE = template.GEN_OPS_DEF_HEADER_TEMPLATE
49
50
  self.contiguous_template = Template(
50
51
  "convert_$arg_name = runtime::ValueConverter::ContiguousTensorValue($device_target, convert_$arg_name);\n")
@@ -101,7 +102,7 @@ class PyboostGradFunctionsGenerator(BaseGenerator):
101
102
  template.PYBOOST_GRAD_HEADER_TEMPLATE.replace(include_op_header=pyboost_func_include_headers_str,
102
103
  function_body=pyboost_func_str,
103
104
  register_function_body=register_func_str)
104
- save_path = os.path.join(work_path, K.RUNTIME_PYBOOST_FUNC_GEN_PATH)
105
+ save_path = os.path.join(work_path, K.PYBOOST_GRAD_FUNC_GEN_PATH)
105
106
  file_name = "pyboost_grad_functions.cc"
106
107
  save_file(save_path, file_name, pyboost_func_file)
107
108
 
@@ -22,13 +22,14 @@ that can be used to call the Pyboost primitive implementations.
22
22
  """
23
23
 
24
24
  import os
25
- import template
26
- import gen_constants as K
27
- from gen_utils import save_file
25
+ import common.template as template
26
+ import common.gen_constants as K
27
+ from common.gen_utils import save_file
28
28
 
29
- from op_proto import OpProto
30
- from op_template_parser import OpTemplateParser
31
- from base_generator import BaseGenerator
29
+ from common.op_proto import OpProto
30
+ from common.base_generator import BaseGenerator
31
+
32
+ from .op_template_parser import OpTemplateParser
32
33
 
33
34
 
34
35
  class PyboostInnerPrimGenerator(BaseGenerator):
@@ -72,7 +73,7 @@ class PyboostInnerPrimGenerator(BaseGenerator):
72
73
  None
73
74
  """
74
75
  gen_py = ''
75
- gen_header = K.PY_LICENSE + self.IMPORT_PYBOOST_PRIM_HEADER
76
+ gen_header = template.PY_LICENSE_STR + self.IMPORT_PYBOOST_PRIM_HEADER
76
77
  for op_proto in op_protos:
77
78
  # only process pyboost enabled scenario
78
79
  if op_proto.op_dispatch is None:
@@ -22,14 +22,14 @@ while the PyboostGradFunctionsHeaderGenerator creates the corresponding function
22
22
 
23
23
  import os
24
24
 
25
- import pyboost_utils
26
- from pyboost_utils import is_optional_param
27
- import template
28
- from template import Template
29
- import gen_constants as K
30
- from gen_utils import save_file
31
- from op_proto import OpProto
32
- from base_generator import BaseGenerator
25
+ from pyboost import pyboost_utils
26
+ from pyboost.pyboost_utils import is_optional_param
27
+ import common.template as template
28
+ from common.template import Template
29
+ import common.gen_constants as K
30
+ from common.gen_utils import save_file
31
+ from common.op_proto import OpProto
32
+ from common.base_generator import BaseGenerator
33
33
 
34
34
 
35
35
  class PyboostGradFunctionsCppGenerator(BaseGenerator):
@@ -55,7 +55,7 @@ class PyboostGradFunctionsCppGenerator(BaseGenerator):
55
55
  self.native_function_multi_output_template = template.MULTI_OUTPUT_TEMPLATE
56
56
  self.native_function_single_output_template = "const auto &output_value = op->outputs()[0];\n"
57
57
  self.native_include_header_template = Template(
58
- f'#include "{K.MS_COMMON_PYBOOST_KERNEL_PATH}/auto_generate/${{operator_name}}.h"\n')
58
+ f'#include "{K.MS_PYBOOST_BASE_PATH}/auto_generate/${{operator_name}}.h"\n')
59
59
  self.convert_template = Template(
60
60
  "auto convert_$arg_name = runtime::ValueConverter::${convert_func}(ConvertNode2Value($arg_name));\n")
61
61
 
@@ -76,6 +76,7 @@ class PyboostGradFunctionsCppGenerator(BaseGenerator):
76
76
  """
77
77
  pyboost_func_str = ''
78
78
  pyboost_func_include_headers_str = ''
79
+ ops_inc_head_set = set()
79
80
  for op_proto in op_protos:
80
81
  if op_proto.op_dispatch is None:
81
82
  continue
@@ -103,9 +104,12 @@ class PyboostGradFunctionsCppGenerator(BaseGenerator):
103
104
  pyboost_func_str = pyboost_func_str + template.NEW_LINE
104
105
  pyboost_func_include_headers_str += (
105
106
  self.native_include_header_template.replace(operator_name=op_proto.op_name))
107
+ ops_inc_head_set.add(
108
+ template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_proto.op_class.name[0].lower()))
106
109
  native_grad_func_file = \
107
110
  self.PYBOOST_NATIVE_GRAD_FUNCTIONS_TEMPLATE.replace(include_op_header=pyboost_func_include_headers_str,
108
- function_body=pyboost_func_str)
111
+ function_body=pyboost_func_str,
112
+ ops_inc=list(sorted(ops_inc_head_set)))
109
113
  save_file(os.path.join(work_path, K.PYBOOST_NATIVE_GRAD_FUNC_GEN_PATH),
110
114
  "pyboost_native_grad_functions.cc", native_grad_func_file)
111
115