mindspore 2.4.10__cp39-cp39-win_amd64.whl → 2.6.0rc1__cp39-cp39-win_amd64.whl

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

Potentially problematic release.


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

Files changed (577) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +13 -6
  3. mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
  4. mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
  5. mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
  6. mindspore/_check_jit_forbidden_api.py +3 -0
  7. mindspore/_checkparam.py +3 -38
  8. mindspore/_deprecated/__init__.py +17 -0
  9. mindspore/_deprecated/jit.py +198 -0
  10. mindspore/_extends/builtin_operations.py +1 -1
  11. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  12. mindspore/_extends/parse/__init__.py +6 -7
  13. mindspore/_extends/parse/compile_config.py +83 -0
  14. mindspore/_extends/parse/deprecated/__init__.py +0 -0
  15. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
  16. mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
  17. mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
  18. mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
  19. mindspore/_extends/parse/parser.py +46 -197
  20. mindspore/_extends/parse/resources.py +1 -5
  21. mindspore/_extends/parse/standard_method.py +217 -98
  22. mindspore/_extends/pijit/__init__.py +2 -2
  23. mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
  24. mindspore/_extends/pijit/tensor_func_list.py +27 -0
  25. mindspore/_extends/utils.py +1 -1
  26. mindspore/amp.py +11 -5
  27. mindspore/avcodec-59.dll +0 -0
  28. mindspore/avdevice-59.dll +0 -0
  29. mindspore/avfilter-8.dll +0 -0
  30. mindspore/avformat-59.dll +0 -0
  31. mindspore/avutil-57.dll +0 -0
  32. mindspore/boost/__init__.py +2 -2
  33. mindspore/boost/base.py +3 -7
  34. mindspore/boost/boost_cell_wrapper.py +138 -43
  35. mindspore/common/__init__.py +6 -3
  36. mindspore/common/_grad_function.py +56 -0
  37. mindspore/common/_pijit_context.py +14 -5
  38. mindspore/common/_register_for_tensor.py +1 -2
  39. mindspore/common/_stub_tensor.py +30 -14
  40. mindspore/common/_tensor_cpp_method.py +17 -0
  41. mindspore/common/_tensor_docs.py +4760 -0
  42. mindspore/common/api.py +435 -371
  43. mindspore/common/auto_dynamic_shape.py +41 -44
  44. mindspore/common/dtype.py +39 -36
  45. mindspore/common/dump.py +9 -6
  46. mindspore/common/file_system.py +9 -1
  47. mindspore/common/generator.py +2 -0
  48. mindspore/common/hook_handle.py +6 -2
  49. mindspore/common/initializer.py +13 -10
  50. mindspore/common/jit_begin_end.py +94 -0
  51. mindspore/common/jit_config.py +6 -1
  52. mindspore/common/jit_context.py +76 -0
  53. mindspore/common/jit_trace.py +378 -0
  54. mindspore/common/lazy_inline.py +9 -3
  55. mindspore/common/mindir_util.py +10 -2
  56. mindspore/common/mutable.py +5 -4
  57. mindspore/common/parameter.py +135 -52
  58. mindspore/common/seed.py +2 -2
  59. mindspore/common/sparse_tensor.py +23 -17
  60. mindspore/common/tensor.py +951 -1992
  61. mindspore/communication/__init__.py +7 -5
  62. mindspore/communication/_comm_helper.py +52 -2
  63. mindspore/communication/comm_func.py +240 -181
  64. mindspore/communication/management.py +95 -26
  65. mindspore/context.py +314 -566
  66. mindspore/dataset/__init__.py +65 -37
  67. mindspore/dataset/audio/__init__.py +2 -8
  68. mindspore/dataset/audio/transforms.py +3 -17
  69. mindspore/dataset/callback/ds_callback.py +2 -1
  70. mindspore/dataset/core/config.py +87 -6
  71. mindspore/dataset/engine/cache_admin.py +3 -3
  72. mindspore/dataset/engine/cache_client.py +6 -5
  73. mindspore/dataset/engine/datasets.py +292 -267
  74. mindspore/dataset/engine/datasets_audio.py +22 -8
  75. mindspore/dataset/engine/datasets_standard_format.py +46 -27
  76. mindspore/dataset/engine/datasets_text.py +78 -48
  77. mindspore/dataset/engine/datasets_user_defined.py +182 -116
  78. mindspore/dataset/engine/datasets_vision.py +120 -44
  79. mindspore/dataset/engine/iterators.py +283 -63
  80. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  81. mindspore/dataset/engine/obs/util.py +8 -0
  82. mindspore/dataset/engine/queue.py +40 -0
  83. mindspore/dataset/engine/samplers.py +289 -43
  84. mindspore/dataset/engine/serializer_deserializer.py +3 -2
  85. mindspore/dataset/engine/validators.py +53 -11
  86. mindspore/dataset/text/__init__.py +7 -6
  87. mindspore/dataset/text/transforms.py +6 -5
  88. mindspore/dataset/text/utils.py +3 -3
  89. mindspore/dataset/transforms/__init__.py +0 -9
  90. mindspore/dataset/transforms/py_transforms_util.py +17 -0
  91. mindspore/dataset/transforms/transforms.py +31 -14
  92. mindspore/dataset/utils/browse_dataset.py +1 -1
  93. mindspore/dataset/vision/__init__.py +2 -9
  94. mindspore/dataset/vision/transforms.py +202 -158
  95. mindspore/dataset/vision/utils.py +7 -5
  96. mindspore/dataset/vision/validators.py +1 -2
  97. mindspore/device_context/__init__.py +21 -0
  98. mindspore/device_context/ascend/__init__.py +25 -0
  99. mindspore/device_context/ascend/device.py +72 -0
  100. mindspore/device_context/ascend/op_debug.py +153 -0
  101. mindspore/device_context/ascend/op_precision.py +193 -0
  102. mindspore/device_context/ascend/op_tuning.py +123 -0
  103. mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
  104. mindspore/device_context/cpu/device.py +62 -0
  105. mindspore/device_context/cpu/op_tuning.py +43 -0
  106. mindspore/device_context/gpu/__init__.py +21 -0
  107. mindspore/device_context/gpu/device.py +70 -0
  108. mindspore/device_context/gpu/op_precision.py +67 -0
  109. mindspore/device_context/gpu/op_tuning.py +175 -0
  110. mindspore/device_manager.py +170 -0
  111. mindspore/experimental/es/embedding_service.py +35 -27
  112. mindspore/experimental/llm_boost/__init__.py +1 -0
  113. mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
  114. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
  115. mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
  116. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  117. mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
  118. mindspore/experimental/llm_boost/register.py +1 -0
  119. mindspore/experimental/map_parameter.py +4 -4
  120. mindspore/experimental/optim/adadelta.py +6 -6
  121. mindspore/experimental/optim/adagrad.py +4 -4
  122. mindspore/experimental/optim/adam.py +7 -0
  123. mindspore/experimental/optim/adamax.py +4 -4
  124. mindspore/experimental/optim/adamw.py +4 -0
  125. mindspore/experimental/optim/asgd.py +1 -1
  126. mindspore/experimental/optim/lr_scheduler.py +73 -46
  127. mindspore/experimental/optim/radam.py +34 -31
  128. mindspore/experimental/optim/rprop.py +1 -1
  129. mindspore/experimental/optim/sgd.py +1 -1
  130. mindspore/hal/contiguous_tensors_handle.py +6 -10
  131. mindspore/hal/device.py +55 -53
  132. mindspore/hal/event.py +52 -52
  133. mindspore/hal/memory.py +157 -117
  134. mindspore/hal/stream.py +150 -109
  135. mindspore/include/api/context.h +0 -1
  136. mindspore/include/dataset/constants.h +7 -4
  137. mindspore/include/dataset/execute.h +2 -2
  138. mindspore/jpeg62.dll +0 -0
  139. mindspore/log.py +50 -0
  140. mindspore/mindrecord/__init__.py +21 -8
  141. mindspore/mindrecord/config.py +17 -316
  142. mindspore/mindrecord/filereader.py +1 -9
  143. mindspore/mindrecord/filewriter.py +5 -15
  144. mindspore/mindrecord/mindpage.py +1 -9
  145. mindspore/mindspore_backend_common.dll +0 -0
  146. mindspore/mindspore_backend_manager.dll +0 -0
  147. mindspore/mindspore_common.dll +0 -0
  148. mindspore/mindspore_core.dll +0 -0
  149. mindspore/mindspore_dump.dll +0 -0
  150. mindspore/mindspore_frontend.dll +0 -0
  151. mindspore/mindspore_memory_pool.dll +0 -0
  152. mindspore/mindspore_ms_backend.dll +0 -0
  153. mindspore/mindspore_ops.dll +0 -0
  154. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  155. mindspore/mindspore_ops_kernel_common.dll +0 -0
  156. mindspore/mindspore_profiler.dll +0 -0
  157. mindspore/mindspore_pyboost.dll +0 -0
  158. mindspore/mindspore_pynative.dll +0 -0
  159. mindspore/mindspore_res_manager.dll +0 -0
  160. mindspore/mindspore_runtime_pipeline.dll +0 -0
  161. mindspore/mint/__init__.py +796 -759
  162. mindspore/mint/distributed/__init__.py +70 -4
  163. mindspore/mint/distributed/distributed.py +2679 -44
  164. mindspore/mint/linalg/__init__.py +8 -0
  165. mindspore/mint/nn/__init__.py +743 -22
  166. mindspore/mint/nn/functional.py +716 -23
  167. mindspore/mint/nn/layer/__init__.py +21 -4
  168. mindspore/mint/nn/layer/_functions.py +334 -0
  169. mindspore/mint/nn/layer/activation.py +276 -1
  170. mindspore/mint/nn/layer/basic.py +123 -0
  171. mindspore/mint/nn/layer/conv.py +921 -0
  172. mindspore/mint/nn/layer/normalization.py +223 -28
  173. mindspore/mint/nn/layer/padding.py +797 -0
  174. mindspore/mint/nn/layer/pooling.py +235 -0
  175. mindspore/mint/optim/__init__.py +3 -1
  176. mindspore/mint/optim/adam.py +223 -0
  177. mindspore/mint/optim/adamw.py +26 -19
  178. mindspore/mint/optim/sgd.py +171 -0
  179. mindspore/mint/special/__init__.py +2 -1
  180. mindspore/multiprocessing/__init__.py +5 -0
  181. mindspore/nn/__init__.py +4 -1
  182. mindspore/nn/cell.py +1370 -189
  183. mindspore/nn/dynamic_lr.py +2 -1
  184. mindspore/nn/layer/activation.py +29 -27
  185. mindspore/nn/layer/basic.py +51 -35
  186. mindspore/nn/layer/channel_shuffle.py +3 -3
  187. mindspore/nn/layer/container.py +1 -1
  188. mindspore/nn/layer/conv.py +22 -17
  189. mindspore/nn/layer/embedding.py +12 -11
  190. mindspore/nn/layer/normalization.py +56 -49
  191. mindspore/nn/layer/padding.py +4 -3
  192. mindspore/nn/layer/pooling.py +120 -42
  193. mindspore/nn/layer/rnn_cells.py +1 -1
  194. mindspore/nn/layer/rnns.py +2 -1
  195. mindspore/nn/layer/timedistributed.py +5 -5
  196. mindspore/nn/layer/transformer.py +59 -36
  197. mindspore/nn/learning_rate_schedule.py +8 -4
  198. mindspore/nn/loss/loss.py +58 -55
  199. mindspore/nn/optim/ada_grad.py +7 -5
  200. mindspore/nn/optim/adadelta.py +11 -9
  201. mindspore/nn/optim/adafactor.py +1 -1
  202. mindspore/nn/optim/adam.py +17 -13
  203. mindspore/nn/optim/adamax.py +8 -7
  204. mindspore/nn/optim/adasum.py +5 -5
  205. mindspore/nn/optim/asgd.py +1 -1
  206. mindspore/nn/optim/ftrl.py +11 -9
  207. mindspore/nn/optim/lamb.py +1 -1
  208. mindspore/nn/optim/lars.py +1 -4
  209. mindspore/nn/optim/lazyadam.py +12 -10
  210. mindspore/nn/optim/momentum.py +7 -6
  211. mindspore/nn/optim/optimizer.py +3 -3
  212. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  213. mindspore/nn/optim/rmsprop.py +13 -12
  214. mindspore/nn/optim/rprop.py +11 -9
  215. mindspore/nn/optim/sgd.py +9 -6
  216. mindspore/nn/optim/tft_wrapper.py +5 -2
  217. mindspore/nn/optim/thor.py +2 -1
  218. mindspore/nn/probability/bijector/bijector.py +17 -11
  219. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  220. mindspore/nn/probability/bijector/invert.py +2 -2
  221. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  222. mindspore/nn/probability/bijector/softplus.py +3 -2
  223. mindspore/nn/probability/distribution/beta.py +3 -3
  224. mindspore/nn/probability/distribution/categorical.py +1 -1
  225. mindspore/nn/probability/distribution/cauchy.py +4 -2
  226. mindspore/nn/probability/distribution/exponential.py +6 -7
  227. mindspore/nn/probability/distribution/gamma.py +2 -2
  228. mindspore/nn/probability/distribution/gumbel.py +2 -2
  229. mindspore/nn/probability/distribution/half_normal.py +5 -3
  230. mindspore/nn/probability/distribution/logistic.py +5 -3
  231. mindspore/nn/probability/distribution/poisson.py +1 -1
  232. mindspore/nn/probability/distribution/uniform.py +5 -3
  233. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  234. mindspore/nn/reinforcement/tensor_array.py +1 -1
  235. mindspore/nn/utils/init.py +13 -11
  236. mindspore/nn/wrap/__init__.py +6 -6
  237. mindspore/nn/wrap/cell_wrapper.py +181 -122
  238. mindspore/nn/wrap/grad_reducer.py +45 -36
  239. mindspore/nn/wrap/loss_scale.py +6 -7
  240. mindspore/numpy/array_creations.py +63 -65
  241. mindspore/numpy/array_ops.py +149 -144
  242. mindspore/numpy/logic_ops.py +41 -42
  243. mindspore/numpy/math_ops.py +365 -363
  244. mindspore/numpy/utils.py +17 -18
  245. mindspore/numpy/utils_const.py +5 -6
  246. mindspore/opencv_core452.dll +0 -0
  247. mindspore/opencv_imgcodecs452.dll +0 -0
  248. mindspore/opencv_imgproc452.dll +0 -0
  249. mindspore/ops/__init__.py +5 -3
  250. mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
  251. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
  252. mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
  253. mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
  254. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  255. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  256. mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
  257. mindspore/ops/_register_for_op.py +0 -11
  258. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  259. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
  260. mindspore/ops/_vmap/vmap_array_ops.py +27 -25
  261. mindspore/ops/_vmap/vmap_base.py +0 -2
  262. mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
  263. mindspore/ops/_vmap/vmap_math_ops.py +15 -16
  264. mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
  265. mindspore/ops/auto_generate/__init__.py +4 -3
  266. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +236 -46
  267. mindspore/ops/auto_generate/gen_extend_func.py +764 -124
  268. mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
  269. mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
  270. mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
  271. mindspore/ops/composite/__init__.py +2 -1
  272. mindspore/ops/composite/base.py +20 -25
  273. mindspore/ops/composite/math_ops.py +6 -16
  274. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  275. mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
  276. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  277. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  278. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  279. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  280. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  281. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  282. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  283. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  284. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  285. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  286. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  287. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  288. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  289. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  290. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  291. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  292. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  293. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  294. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  295. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  296. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  297. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  298. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  299. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  300. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  301. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
  302. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  303. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  304. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  305. mindspore/ops/function/__init__.py +40 -2
  306. mindspore/ops/function/_add_attr_func.py +58 -0
  307. mindspore/ops/function/array_func.py +2089 -2403
  308. mindspore/ops/function/clip_func.py +80 -23
  309. mindspore/ops/function/debug_func.py +57 -57
  310. mindspore/ops/function/grad/__init__.py +1 -0
  311. mindspore/ops/function/grad/grad_func.py +104 -71
  312. mindspore/ops/function/image_func.py +2 -2
  313. mindspore/ops/function/linalg_func.py +47 -78
  314. mindspore/ops/function/math_func.py +4501 -3802
  315. mindspore/ops/function/nn_func.py +1726 -620
  316. mindspore/ops/function/other_func.py +159 -1
  317. mindspore/ops/function/parameter_func.py +18 -84
  318. mindspore/ops/function/random_func.py +440 -387
  319. mindspore/ops/function/reshard_func.py +4 -70
  320. mindspore/ops/function/sparse_func.py +3 -3
  321. mindspore/ops/function/sparse_unary_func.py +6 -6
  322. mindspore/ops/function/spectral_func.py +25 -58
  323. mindspore/ops/function/vmap_func.py +24 -17
  324. mindspore/ops/functional.py +22 -7
  325. mindspore/ops/functional_overload.py +1440 -0
  326. mindspore/ops/op_info_register.py +32 -244
  327. mindspore/ops/operations/__init__.py +13 -7
  328. mindspore/ops/operations/_custom_ops_utils.py +247 -0
  329. mindspore/ops/operations/_embedding_cache_ops.py +4 -4
  330. mindspore/ops/operations/_grad_ops.py +2 -43
  331. mindspore/ops/operations/_infer_ops.py +2 -1
  332. mindspore/ops/operations/_inner_ops.py +43 -84
  333. mindspore/ops/operations/_ms_kernel.py +4 -10
  334. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  335. mindspore/ops/operations/_scalar_ops.py +3 -2
  336. mindspore/ops/operations/_sequence_ops.py +1 -1
  337. mindspore/ops/operations/_tensor_array.py +1 -1
  338. mindspore/ops/operations/array_ops.py +81 -324
  339. mindspore/ops/operations/comm_ops.py +154 -108
  340. mindspore/ops/operations/custom_ops.py +232 -78
  341. mindspore/ops/operations/debug_ops.py +153 -59
  342. mindspore/ops/operations/inner_ops.py +7 -5
  343. mindspore/ops/operations/linalg_ops.py +1 -57
  344. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  345. mindspore/ops/operations/manually_defined/ops_def.py +928 -180
  346. mindspore/ops/operations/math_ops.py +32 -234
  347. mindspore/ops/operations/nn_ops.py +210 -498
  348. mindspore/ops/operations/other_ops.py +62 -9
  349. mindspore/ops/operations/random_ops.py +13 -7
  350. mindspore/ops/operations/reshard_ops.py +1 -1
  351. mindspore/ops/operations/sparse_ops.py +2 -2
  352. mindspore/ops/primitive.py +66 -53
  353. mindspore/ops/tensor_method.py +1888 -0
  354. mindspore/ops_generate/__init__.py +0 -5
  355. mindspore/ops_generate/aclnn/__init__.py +0 -0
  356. mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
  357. mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
  358. mindspore/ops_generate/api/__init__.py +0 -0
  359. mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
  360. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
  361. mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
  362. mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
  363. mindspore/ops_generate/api/functions_cc_generator.py +237 -0
  364. mindspore/ops_generate/api/gen_api.py +103 -0
  365. mindspore/ops_generate/api/op_api_proto.py +235 -0
  366. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
  367. mindspore/ops_generate/common/__init__.py +0 -0
  368. mindspore/ops_generate/common/base_generator.py +11 -0
  369. mindspore/ops_generate/common/gen_constants.py +91 -0
  370. mindspore/ops_generate/common/gen_utils.py +348 -0
  371. mindspore/ops_generate/common/op_proto.py +473 -0
  372. mindspore/ops_generate/common/template.py +523 -0
  373. mindspore/ops_generate/gen_ops.py +22 -1069
  374. mindspore/ops_generate/op_def/__init__.py +0 -0
  375. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  376. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
  377. mindspore/ops_generate/op_def/ops_def_cc_generator.py +299 -0
  378. mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
  379. mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
  380. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  381. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  382. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  383. mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
  384. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
  385. mindspore/ops_generate/pyboost/__init__.py +0 -0
  386. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
  387. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
  388. mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
  389. mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
  390. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
  391. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
  392. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
  393. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
  394. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
  395. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
  396. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
  397. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
  398. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
  399. mindspore/ops_generate/resources/__init__.py +0 -0
  400. mindspore/ops_generate/resources/resource_list.py +30 -0
  401. mindspore/ops_generate/resources/resource_loader.py +36 -0
  402. mindspore/ops_generate/resources/resource_manager.py +64 -0
  403. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  404. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  405. mindspore/parallel/__init__.py +7 -3
  406. mindspore/parallel/_auto_parallel_context.py +152 -34
  407. mindspore/parallel/_cell_wrapper.py +130 -15
  408. mindspore/parallel/_parallel_serialization.py +107 -5
  409. mindspore/parallel/_ps_context.py +1 -1
  410. mindspore/parallel/_recovery_context.py +7 -2
  411. mindspore/parallel/_tensor.py +142 -18
  412. mindspore/parallel/_utils.py +199 -23
  413. mindspore/parallel/algo_parameter_config.py +4 -4
  414. mindspore/parallel/auto_parallel.py +732 -0
  415. mindspore/parallel/checkpoint_convert.py +159 -0
  416. mindspore/parallel/checkpoint_transform.py +698 -35
  417. mindspore/parallel/cluster/process_entity/_api.py +276 -50
  418. mindspore/parallel/cluster/process_entity/_utils.py +41 -6
  419. mindspore/parallel/cluster/run.py +21 -4
  420. mindspore/parallel/function/__init__.py +24 -0
  421. mindspore/parallel/function/reshard_func.py +259 -0
  422. mindspore/parallel/nn/__init__.py +25 -0
  423. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  424. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  425. mindspore/parallel/parameter_broadcast.py +25 -14
  426. mindspore/parallel/shard.py +137 -58
  427. mindspore/parallel/transform_safetensors.py +363 -305
  428. mindspore/profiler/__init__.py +22 -5
  429. mindspore/profiler/analysis/__init__.py +0 -0
  430. mindspore/profiler/analysis/parser/__init__.py +0 -0
  431. mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
  432. mindspore/profiler/analysis/parser/base_parser.py +158 -0
  433. mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
  434. mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
  435. mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
  436. mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
  437. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
  438. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
  439. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +106 -0
  440. mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
  441. mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
  442. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
  443. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
  444. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
  445. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
  446. mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
  447. mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
  448. mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
  449. mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
  450. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
  451. mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
  452. mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
  453. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
  454. mindspore/profiler/analysis/task_manager.py +131 -0
  455. mindspore/profiler/analysis/time_converter.py +84 -0
  456. mindspore/profiler/analysis/viewer/__init__.py +0 -0
  457. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
  458. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
  459. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
  460. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
  461. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
  462. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
  463. mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
  464. mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
  465. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
  466. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
  467. mindspore/profiler/analysis/work_flow.py +73 -0
  468. mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
  469. mindspore/profiler/common/command_executor.py +90 -0
  470. mindspore/profiler/common/constant.py +186 -3
  471. mindspore/profiler/common/file_manager.py +208 -0
  472. mindspore/profiler/common/log.py +130 -0
  473. mindspore/profiler/common/msprof_cmd_tool.py +221 -0
  474. mindspore/profiler/common/path_manager.py +395 -0
  475. mindspore/profiler/common/process_bar.py +168 -0
  476. mindspore/profiler/common/process_pool.py +9 -3
  477. mindspore/profiler/common/profiler_context.py +500 -0
  478. mindspore/profiler/common/profiler_info.py +304 -0
  479. mindspore/profiler/common/profiler_meta_data.py +74 -0
  480. mindspore/profiler/common/profiler_output_path.py +284 -0
  481. mindspore/profiler/common/profiler_parameters.py +251 -0
  482. mindspore/profiler/common/profiler_path_manager.py +179 -0
  483. mindspore/profiler/common/record_function.py +76 -0
  484. mindspore/profiler/common/tlv_decoder.py +76 -0
  485. mindspore/profiler/common/util.py +75 -2
  486. mindspore/profiler/dynamic_profiler.py +341 -75
  487. mindspore/profiler/envprofiler.py +163 -0
  488. mindspore/profiler/experimental_config.py +197 -0
  489. mindspore/profiler/mstx.py +242 -0
  490. mindspore/profiler/platform/__init__.py +21 -0
  491. mindspore/profiler/platform/base_profiler.py +40 -0
  492. mindspore/profiler/platform/cpu_profiler.py +124 -0
  493. mindspore/profiler/platform/gpu_profiler.py +74 -0
  494. mindspore/profiler/platform/npu_profiler.py +335 -0
  495. mindspore/profiler/profiler.py +1073 -90
  496. mindspore/profiler/profiler_action_controller.py +187 -0
  497. mindspore/profiler/profiler_interface.py +118 -0
  498. mindspore/profiler/schedule.py +243 -0
  499. mindspore/rewrite/api/node.py +15 -13
  500. mindspore/rewrite/api/symbol_tree.py +2 -3
  501. mindspore/run_check/_check_version.py +27 -20
  502. mindspore/run_check/run_check.py +1 -1
  503. mindspore/runtime/__init__.py +37 -0
  504. mindspore/runtime/device.py +27 -0
  505. mindspore/runtime/event.py +209 -0
  506. mindspore/runtime/executor.py +177 -0
  507. mindspore/runtime/memory.py +409 -0
  508. mindspore/runtime/stream.py +460 -0
  509. mindspore/runtime/thread_bind_core.py +401 -0
  510. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  511. mindspore/swresample-4.dll +0 -0
  512. mindspore/swscale-6.dll +0 -0
  513. mindspore/tinyxml2.dll +0 -0
  514. mindspore/train/__init__.py +8 -8
  515. mindspore/train/_utils.py +88 -25
  516. mindspore/train/amp.py +9 -5
  517. mindspore/train/callback/__init__.py +2 -2
  518. mindspore/train/callback/_callback.py +2 -16
  519. mindspore/train/callback/_checkpoint.py +53 -55
  520. mindspore/train/callback/_cluster_monitor.py +14 -18
  521. mindspore/train/callback/_early_stop.py +1 -1
  522. mindspore/train/callback/_flops_collector.py +103 -68
  523. mindspore/train/callback/_history.py +8 -5
  524. mindspore/train/callback/_lambda_callback.py +2 -2
  525. mindspore/train/callback/_landscape.py +0 -3
  526. mindspore/train/callback/_loss_monitor.py +2 -1
  527. mindspore/train/callback/_on_request_exit.py +6 -5
  528. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  529. mindspore/train/callback/_summary_collector.py +52 -19
  530. mindspore/train/callback/_time_monitor.py +2 -1
  531. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -107
  532. mindspore/train/data_sink.py +25 -2
  533. mindspore/train/dataset_helper.py +15 -16
  534. mindspore/train/loss_scale_manager.py +8 -7
  535. mindspore/train/metrics/accuracy.py +3 -3
  536. mindspore/train/metrics/confusion_matrix.py +9 -9
  537. mindspore/train/metrics/error.py +3 -3
  538. mindspore/train/metrics/hausdorff_distance.py +4 -4
  539. mindspore/train/metrics/mean_surface_distance.py +3 -3
  540. mindspore/train/metrics/metric.py +0 -12
  541. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  542. mindspore/train/metrics/precision.py +11 -10
  543. mindspore/train/metrics/recall.py +9 -9
  544. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  545. mindspore/train/mind_ir_pb2.py +174 -46
  546. mindspore/train/model.py +184 -113
  547. mindspore/train/serialization.py +622 -978
  548. mindspore/train/summary/_summary_adapter.py +2 -2
  549. mindspore/train/summary/summary_record.py +2 -3
  550. mindspore/train/train_thor/model_thor.py +1 -1
  551. mindspore/turbojpeg.dll +0 -0
  552. mindspore/utils/__init__.py +6 -3
  553. mindspore/utils/dryrun.py +140 -0
  554. mindspore/utils/hooks.py +81 -0
  555. mindspore/utils/runtime_execution_order_check.py +550 -0
  556. mindspore/utils/utils.py +138 -4
  557. mindspore/version.py +1 -1
  558. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +3 -3
  559. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +562 -393
  560. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +1 -1
  561. mindspore/_install_custom.py +0 -43
  562. mindspore/common/_register_for_adapter.py +0 -74
  563. mindspore/common/_tensor_overload.py +0 -139
  564. mindspore/mindspore_np_dtype.dll +0 -0
  565. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  566. mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
  567. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  568. mindspore/ops_generate/gen_aclnn_implement.py +0 -263
  569. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  570. mindspore/ops_generate/gen_pyboost_func.py +0 -1052
  571. mindspore/ops_generate/gen_utils.py +0 -209
  572. mindspore/ops_generate/op_proto.py +0 -145
  573. mindspore/ops_generate/template.py +0 -261
  574. mindspore/profiler/envprofiling.py +0 -254
  575. mindspore/profiler/profiling.py +0 -1926
  576. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
  577. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
@@ -19,9 +19,4 @@ Primitive operator classes and operator functional.
19
19
  A collection of operators to build neural networks or to compute functions.
20
20
  """
21
21
 
22
- from . import (arg_dtype_cast, arg_handler)
23
-
24
- from .arg_dtype_cast import *
25
- from .arg_handler import *
26
-
27
22
  __all__ = []
File without changes
@@ -0,0 +1,135 @@
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
+ Generates C++ registration code for ACL NN kernels based on operator prototypes.
17
+ """
18
+
19
+ import os
20
+ import logging
21
+ import re
22
+
23
+ import common.gen_constants as K
24
+ import common.gen_utils as gen_utils
25
+ import common.template as template
26
+ from common.base_generator import BaseGenerator
27
+ from pyboost import pyboost_utils
28
+ from aclnn.gen_aclnn_implement import gen_aclnn_kernel
29
+ from resources.resource_list import ResourceType
30
+
31
+
32
+ ACLNN_REG_CODE = """
33
+ #include "$ops_gen_kernel_path/ascend/opapi/aclnn_kernel_mod.h"
34
+
35
+ namespace mindspore {
36
+ namespace kernel {
37
+
38
+ $aclnn_reg_code
39
+ } // namespace kernel
40
+ } // namespace mindspore
41
+ """
42
+
43
+
44
+ class AclnnKernelRegisterAutoCcGenerator(BaseGenerator):
45
+ """Generates ACL NN kernel registration code for Ascend devices."""
46
+
47
+ def __init__(self):
48
+ self.aclnn_reg_code_template = template.Template(ACLNN_REG_CODE)
49
+
50
+ def generate(self, work_path, op_protos):
51
+ """
52
+ Generates registration code for ACL NN kernels and saves it to a file.
53
+
54
+ Args:
55
+ work_path (str): The directory to save the generated file.
56
+ op_protos (list): List of operator prototypes.
57
+
58
+ Returns:
59
+ None
60
+ """
61
+ aclnn_reg_code = []
62
+ for op_proto in op_protos:
63
+ if not op_proto.op_dispatch or not op_proto.op_dispatch.enable:
64
+ continue
65
+ # KernelMod is provided by yaml, don't auto generate it.
66
+ if op_proto.op_dispatch.ascend != 'default':
67
+ continue
68
+ if check_op_registed(op_proto.op_name, True):
69
+ logging.warning(
70
+ "Kernel {%s} is already registered.", op_proto.op_name)
71
+ continue
72
+ _, _, none_tensor_exist = pyboost_utils.get_dtypes(op_proto)
73
+ if none_tensor_exist:
74
+ # gen operator aclnn kernel c++ files
75
+ gen_aclnn_kernel(op_proto, auto=True)
76
+ continue
77
+
78
+ class_name = op_proto.op_class.name
79
+ inputs_outputs_num = len(op_proto.op_args) + \
80
+ len(op_proto.op_returns)
81
+ aclnn_name = pyboost_utils.AclnnUtils.get_aclnn_interface(
82
+ class_name)
83
+ aclnn_reg_code.append(
84
+ f"MS_ACLNN_COMMON_KERNEL_FACTORY_REG({class_name}, {aclnn_name}, {inputs_outputs_num});\n")
85
+
86
+ reg_code = self.aclnn_reg_code_template.replace(ops_gen_kernel_path=K.MS_OPS_KERNEL_PATH,
87
+ aclnn_reg_code=aclnn_reg_code)
88
+ res_str = template.CC_LICENSE_STR + reg_code
89
+
90
+ save_path = os.path.join(
91
+ work_path, f"{K.MS_OPS_KERNEL_PATH}/ascend/opapi/auto_generate")
92
+ file_name = "aclnn_kernel_register_auto.cc"
93
+ gen_utils.save_file(save_path, file_name, res_str)
94
+
95
+
96
+ def get_registed_ops(file_path=f'{K.MS_OPS_KERNEL_PATH}/ascend/opapi/'):
97
+ '''get registered ops by search files'''
98
+ # default search in 'ops/kernel/ascend/opapi/'
99
+ search_path = os.path.join(K.WORK_DIR, file_path)
100
+ ret = []
101
+ try:
102
+ for root_path, _, files in os.walk(search_path):
103
+ for file_name in files:
104
+ if file_name == 'aclnn_kernel_register_auto.cc':
105
+ continue
106
+ with open(os.path.join(root_path, file_name), "r") as f:
107
+ file_context = f.read()
108
+ search_re = re.search(
109
+ r"(?<=KERNEL_FACTORY_REG\()\w+(?=,)", file_context)
110
+ if search_re:
111
+ ret.append(search_re.group())
112
+ except OSError:
113
+ logging.warning("Something wrong in check op registered.")
114
+ return ret
115
+ return ret
116
+
117
+
118
+ registed_ops = get_registed_ops()
119
+ manual_registed_ops = get_registed_ops(
120
+ f'{K.MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn/')
121
+
122
+
123
+ def check_op_registed(op_name, manual=False):
124
+ '''if op already registered return true'''
125
+ class_name = ''.join(word.capitalize() for word in op_name.split('_'))
126
+ return (class_name in manual_registed_ops) if manual else (class_name in registed_ops)
127
+
128
+
129
+ def generate_aclnn_reg_file(resource_mgr):
130
+ """
131
+ Generate nnacl kernelmod register
132
+ """
133
+ op_protos = resource_mgr.get_resource(ResourceType.OP_PROTO)
134
+ generator = AclnnKernelRegisterAutoCcGenerator()
135
+ generator.generate(K.WORK_DIR, op_protos)
@@ -0,0 +1,257 @@
1
+ # Copyright 2023 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
+ Generate aclnn kernelmod or call func by input name in ops.yaml
17
+ """
18
+ import argparse
19
+ import os
20
+ import re
21
+ import pathlib
22
+ import logging
23
+ import common.gen_utils as gen_utils
24
+ import common.template as template
25
+ import common.gen_constants as K
26
+ from common.op_proto import OpProto
27
+ from common.gen_constants import MS_OPS_KERNEL_PATH
28
+ from pyboost.pyboost_utils import AclnnUtils, get_dtypes
29
+
30
+ auto_gen = ''
31
+
32
+
33
+ def gen_h(kernelmod_name, aclnn_name, op_proto, kernelmod_h_path, need_update_shape):
34
+ """generate h files"""
35
+ op_name = op_proto.op_name
36
+ update_shape = template.UPDATE_OUTPUT_SHAPE_AND_SIZE
37
+ if not need_update_shape:
38
+ update_shape = "\n "
39
+
40
+ file_path = kernelmod_h_path + ".h"
41
+ aclnn_kernel_h_str = template.ACLNN_KERNEL_H_TEMPLATE.replace(aclnn_name=aclnn_name,
42
+ op_name=op_name.upper(),
43
+ auto_gen=auto_gen.upper(),
44
+ kernelmod_name=kernelmod_name,
45
+ update_shape=update_shape,
46
+ ops_kernel_path=MS_OPS_KERNEL_PATH)
47
+ gen_utils.save_file(os.path.dirname(file_path), os.path.basename(file_path), aclnn_kernel_h_str)
48
+
49
+
50
+ def gen_cc(kernelmod_name, aclnn_name, op_proto, kernelmod_cc_path, need_update_shape):
51
+ """generate cc files"""
52
+ op_name = op_proto.op_name
53
+ tuple_tensor_not_supported = template.TUPLE_TENSOR_NOT_SUPPORTED.replace(
54
+ op_name=op_name)
55
+ input_templete = '\n '
56
+ inputs = ''
57
+ input_dtypes, output_dtypes, _ = get_dtypes(op_proto)
58
+ for idx, n in enumerate(input_dtypes):
59
+ input_name = "inputs[kIndex" + str(idx) + "], "
60
+ dtype = input_dtypes.get(n)
61
+ if dtype != 'tensor':
62
+ if dtype == 'int':
63
+ dtype = 'int64_t'
64
+ input_templete += " auto {} = device::ascend::ConvertKernelTensor<{}>(inputs[kIndex{}]);\n".format(
65
+ n.arg_name, dtype, idx)
66
+ input_name = n.arg_name + ", "
67
+ if dtype == 'tuple[tensor]' and auto_gen == "_auto_gen":
68
+ raise NotImplementedError(tuple_tensor_not_supported)
69
+ inputs += input_name
70
+ input_templete = '' if input_templete == '\n ' else input_templete
71
+ for idx, n in enumerate(output_dtypes):
72
+ output_name = "outputs[kIndex" + str(idx) + "], "
73
+ dtype = output_dtypes.get(n)
74
+ if dtype != 'tensor':
75
+ if dtype == 'int':
76
+ dtype = 'int64_t'
77
+ input_templete += " auto {} = device::ascend::ConvertKernelTensor<{}>(outputs[kIndex{}]);\n".format(
78
+ n.arg_name, dtype, idx)
79
+ output_name = n.arg_name + ", "
80
+ if dtype == 'tuple[tensor]' and auto_gen == "_auto_gen":
81
+ raise NotImplementedError(tuple_tensor_not_supported)
82
+ inputs += output_name
83
+ inputs = inputs[:-2]
84
+
85
+ update_shape = template.update_output_shape_and_size_template.replace(
86
+ kernelmod_name=kernelmod_name)
87
+ if not need_update_shape:
88
+ update_shape = ""
89
+
90
+ file_path = kernelmod_cc_path + ".cc"
91
+ aclnn_kernel_cc_str = template.ACLNN_KERNEL_CC_TEMPLATE.replace(kernelmod_name=kernelmod_name,
92
+ input_templete=input_templete,
93
+ inputs=inputs,
94
+ update_shape=update_shape,
95
+ class_name=aclnn_name,
96
+ auto_gen_path=MS_OPS_KERNEL_PATH,
97
+ op_name=op_name,
98
+ auto_gen=auto_gen) + " "
99
+ gen_utils.save_file(os.path.dirname(file_path), os.path.basename(file_path), aclnn_kernel_cc_str)
100
+
101
+
102
+ def generate(kernelmod_name, class_name, op_proto, h_and_cc, need_update_shape):
103
+ """generate cc and h files"""
104
+ aclnn_name = AclnnUtils.get_aclnn_interface(class_name)
105
+ gen_h(kernelmod_name, aclnn_name, op_proto, h_and_cc, need_update_shape)
106
+ gen_cc(kernelmod_name, class_name, op_proto, h_and_cc, need_update_shape)
107
+
108
+
109
+ def gen_aclnn_kernel(op_proto: OpProto, need_update_shape=False, auto=False):
110
+ """gen_aclnn_kernel function"""
111
+ op_name = op_proto.op_name
112
+ skip_aclnn_list = {"slice", "expand_dims", "squeeze", "split", "generator"}
113
+ if op_name in skip_aclnn_list:
114
+ logging.warning(
115
+ "Operator {%s} has no aclnn interface, no aclnn kernel will be generated.", op_name)
116
+ return
117
+ if check_op_registed(op_proto.op_name) and not auto:
118
+ logging.warning("Kernel {%s} is already registered.", op_name)
119
+ return
120
+
121
+ aclnn_path = f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn/'
122
+ # merge inner ops
123
+ dispatch = op_proto.op_dispatch
124
+ aclnn_name = ''.join(word.capitalize() for word in op_name.split('_'))
125
+ kernelmod_name = op_proto.op_dispatch.ascend
126
+ if not dispatch or not op_proto.op_dispatch.enable:
127
+ raise ValueError(
128
+ "Op {} is not enabled dispatch, please check.".format(op_name))
129
+ global auto_gen
130
+ if auto:
131
+ auto_gen = "_auto_gen"
132
+ kernelmod_name = aclnn_name + "Ascend"
133
+ aclnn_path = f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn_auto_gen/'
134
+ pathlib.Path(os.path.join(K.WORK_DIR, aclnn_path)
135
+ ).mkdir(parents=True, exist_ok=True)
136
+ if dispatch.ascend is None:
137
+ raise ValueError("KernelMod {} is auto generated. If need achieve it, "
138
+ "please provide the KernelMod name in dispatch.".format(op_name))
139
+ op_class = op_proto.op_class
140
+ if op_class is not None and op_class.name is not None:
141
+ aclnn_name = op_class.name
142
+ kernelmod_h_and_cc_path = os.path.join(
143
+ K.WORK_DIR, aclnn_path + '{}_aclnn_kernel'.format(op_name))
144
+ generate(kernelmod_name, aclnn_name, op_proto,
145
+ kernelmod_h_and_cc_path, need_update_shape)
146
+
147
+
148
+ def get_registed_ops(file_path=f'{MS_OPS_KERNEL_PATH}/ascend/opapi/'):
149
+ '''get registered ops by search files'''
150
+ # default search in 'ops/kernel/ascend/opapi/'
151
+ search_path = os.path.join(K.WORK_DIR, file_path)
152
+ ret = []
153
+ try:
154
+ for root_path, _, files in os.walk(search_path):
155
+ for file_name in files:
156
+ with open(os.path.join(root_path, file_name), "r") as f:
157
+ file_context = f.read()
158
+ search_re = re.search(
159
+ r"(?<=KERNEL_FACTORY_REG\()\w+(?=,)", file_context)
160
+ if search_re:
161
+ ret.append(search_re.group())
162
+ except OSError:
163
+ logging.warning("Something wrong in check op registered.")
164
+ return ret
165
+ return ret
166
+
167
+
168
+ registed_ops = get_registed_ops()
169
+ manual_registed_ops = get_registed_ops(
170
+ f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn/')
171
+
172
+
173
+ def check_op_registed(op_name, manual=False):
174
+ '''if op already registered return true'''
175
+ class_name = ''.join(word.capitalize() for word in op_name.split('_'))
176
+ return (class_name in manual_registed_ops) if manual else (class_name in registed_ops)
177
+
178
+
179
+ def generate_aclnn_reg_code(yaml_data):
180
+ """generate aclnn register code"""
181
+ ops_yaml_path = os.path.join(K.WORK_DIR, K.PY_OPS_GEN_PATH, "ops.yaml")
182
+ yaml_str = gen_utils.safe_load_yaml(ops_yaml_path)
183
+
184
+ reg_code = f"""
185
+ #include "{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn_kernel_mod.h"
186
+
187
+ namespace mindspore {{
188
+ namespace kernel {{
189
+ """
190
+ for operator_name, operator_data in yaml_data.items():
191
+ dispatch = operator_data.get("dispatch")
192
+ if not dispatch or not dispatch.get("enable"):
193
+ continue
194
+ Ascend = dispatch.get("Ascend")
195
+ if Ascend is not None: # KernelMod is provided by yaml, don't auto generate it.
196
+ continue
197
+ if check_op_registed(operator_name):
198
+ logging.warning(
199
+ "Kernel {%s} is already registered.", operator_name)
200
+ continue
201
+ _, _, none_tensor_exist = get_dtypes(operator_data)
202
+ if none_tensor_exist:
203
+ gen_aclnn_kernel(operator_name, yaml_str, auto=True)
204
+ continue
205
+ class_name = ''.join(word.capitalize()
206
+ for word in operator_name.split('_'))
207
+ op_class = operator_data.get("class")
208
+ if op_class and op_class.get("name") is not None:
209
+ class_name = op_class.get("name")
210
+ inputs_outputs_num = len(operator_data.get(
211
+ "args")) + len(operator_data.get("returns"))
212
+ aclnn_name = AclnnUtils.get_aclnn_interface(class_name)
213
+ reg_code += f"""
214
+ MS_ACLNN_COMMON_KERNEL_FACTORY_REG({class_name}, {aclnn_name}, {inputs_outputs_num});"""
215
+ reg_code += f"""
216
+ }} // namespace kernel
217
+ }} // namespace mindspore
218
+ """
219
+ return reg_code
220
+
221
+
222
+ def generate_aclnn_reg_file(work_path, yaml_str):
223
+ """
224
+ Generate nnacl kernelmod register
225
+ """
226
+ tmp_register_file = work_path + \
227
+ f'{MS_OPS_KERNEL_PATH}/ascend/opapi/tmp_aclnn_kernel_register.cc'
228
+ register_file = work_path + \
229
+ f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn_kernel_register_auto.cc'
230
+ reg_code = generate_aclnn_reg_code(yaml_str)
231
+ gen_utils.save_file(
232
+ os.path.dirname(tmp_register_file), os.path.basename(tmp_register_file), gen_utils.cc_license_str + reg_code)
233
+ gen_utils.check_change_and_replace_file(register_file, tmp_register_file)
234
+
235
+
236
+ def main(op_name, need_update_shape):
237
+ '''main func'''
238
+ gen_aclnn_kernel(op_name, need_update_shape)
239
+
240
+
241
+ parser = argparse.ArgumentParser(description="Generate aclnn KernelMod.")
242
+ parser.add_argument('-n', '--name', type=str, default=None,
243
+ help='Kernel name in yaml.')
244
+ parser.add_argument('-d', '--need_update_shape', type=bool, default=False,
245
+ help="Some kernel like:unique need update shape and size after launch. Default: False")
246
+ options, _ = parser.parse_known_args()
247
+
248
+ if __name__ == "__main__":
249
+ try:
250
+ name = options.name
251
+ if name is None:
252
+ raise ValueError(
253
+ "Please provide op name to generate aclnn kernelmod.")
254
+ is_need_update_shape = options.need_update_shape
255
+ main(name, is_need_update_shape)
256
+ except Exception as e: # pylint: disable=W0703
257
+ logging.exception("Generate aclnn kernelmod failed, err info: %s", e)
File without changes
@@ -0,0 +1,56 @@
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
+ Generates mindspore/common/_tensor_docs.py that attaches docs to tensor func APIs when import mindspore
17
+ """
18
+
19
+ import os
20
+ import common.gen_constants as K
21
+ from common.gen_utils import save_file, safe_load_yaml_from_dir
22
+ import common.template as template
23
+ from common.template import Template
24
+ from common.base_generator import BaseGenerator
25
+
26
+
27
+ class AddTensorDocsGenerator(BaseGenerator):
28
+ """
29
+ This class is responsible for generating a helper file that enable users to view the docstrings of Tensor func APIs.
30
+ """
31
+
32
+ def __init__(self):
33
+ self.ADD_TENSOR_DOCS_TEMPLATE = template.ADD_TENSOR_DOCS_TEMPLATE
34
+ self.attach_single_docstr_template = Template('attach_docstr("${api_name}", r"""${docstr}""")')
35
+ self.tensor_method_doc_yaml_dir_path = os.path.join(K.WORK_DIR, K.MS_TENSOR_METHOD_DOC_YAML_PATH)
36
+
37
+ def generate(self):
38
+ """
39
+ Generates the content for the helper file and saves it to the specified path.
40
+
41
+ Args:
42
+ work_path (str): The directory where the generated file will be saved.
43
+ tensor_docs_data (dict): A dict mapping from Tensor func API names to their docstrings.
44
+
45
+ Returns:
46
+ None
47
+ """
48
+ add_doc_statements = []
49
+ tensor_docs_data = safe_load_yaml_from_dir(self.tensor_method_doc_yaml_dir_path)
50
+ for api_name, tensor_doc in tensor_docs_data.items():
51
+ single_add_doc_statement = self.attach_single_docstr_template.replace(api_name=api_name,
52
+ docstr=tensor_doc['description'])
53
+ single_add_doc_statement += template.NEW_LINE
54
+ add_doc_statements.append(single_add_doc_statement)
55
+ _tensor_docs_py_str = self.ADD_TENSOR_DOCS_TEMPLATE.replace(add_doc_statements=add_doc_statements)
56
+ save_file(os.path.join(K.WORK_DIR, K.ADD_TENSOR_DOCS_PY_PATH), "_tensor_docs.py", _tensor_docs_py_str)
@@ -0,0 +1,105 @@
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
+ Generates C++ helper files for primitive instance creation based on operator metadata.
17
+ """
18
+
19
+ import os
20
+
21
+ import common.gen_constants as K
22
+ import common.gen_utils as gen_utils
23
+ import common.template as template
24
+ from common.base_generator import BaseGenerator
25
+ from pyboost import pyboost_utils
26
+
27
+
28
+ class CppCreatePrimInstanceHelperGenerator(BaseGenerator):
29
+ """
30
+ This class is responsible for generating a helper file that contains
31
+ operation labels and default values for creating primitive instances in C++.
32
+ """
33
+
34
+ def __init__(self):
35
+ """
36
+ Initializes the generator with templates for operation labels and default values.
37
+ """
38
+ self.op_labels_template = template.op_labels_template
39
+ self.op_args_default_value_template = template.arg_default_value
40
+ self.op_label_template = template.Template(""" "$op_name": {$op_label_body},\n""")
41
+ self.op_arg_default_val_template = template.Template(""" "$op_name": {$op_arg_default_value},\n""")
42
+
43
+ def generate(self, work_path, op_protos):
44
+ """
45
+ Generates the content for the helper file and saves it to the specified path.
46
+
47
+ Args:
48
+ work_path (str): The directory where the generated file will be saved.
49
+ op_protos (list): A list of operation prototypes to generate content for.
50
+
51
+ Returns:
52
+ None
53
+ """
54
+ py_arg_default = self.generate_op_arg_default_value(op_protos)
55
+ py_labels = self.generate_op_labels(op_protos)
56
+ res_str = (template.PY_LICENSE_STR + py_arg_default + py_labels)
57
+
58
+ save_path = os.path.join(work_path, K.PY_AUTO_GEN_PATH)
59
+ file_name = "cpp_create_prim_instance_helper.py"
60
+ gen_utils.save_file(save_path, file_name, res_str)
61
+
62
+ def generate_op_labels(self, op_protos):
63
+ """
64
+ Generates a string containing labels for each operation.
65
+
66
+ Args:
67
+ op_protos (list): A list of operation prototypes.
68
+
69
+ Returns:
70
+ str: A string representing the labels in the specified format.
71
+ """
72
+ gen_label_list = []
73
+ for op_proto in op_protos:
74
+ labels = op_proto.op_labels
75
+ if labels is not None:
76
+ op_name = pyboost_utils.get_op_name(op_proto.op_name, op_proto.op_class.name)
77
+ op_label_list = [f"\"{name}\": {value}" for name, value in labels.items()]
78
+ gen_label_list.append(self.op_label_template.replace(op_name=op_name, op_label_body=op_label_list))
79
+
80
+ return self.op_labels_template.replace(gen_label_py=gen_label_list)
81
+
82
+ def generate_op_arg_default_value(self, op_protos):
83
+ """
84
+ Generates a string containing default values for each operation's arguments.
85
+
86
+ Args:
87
+ op_protos (list): A list of operation prototypes.
88
+
89
+ Returns:
90
+ str: A string representing the default argument values in the specified format.
91
+ """
92
+ gen_default_list = []
93
+ for op_proto in op_protos:
94
+ arg_default_dict = {}
95
+ for op_arg in op_proto.op_args:
96
+ arg_default = op_arg.default
97
+ if arg_default is not None:
98
+ arg_default_dict[op_arg.arg_name] = arg_default
99
+ if arg_default_dict:
100
+ op_name = pyboost_utils.get_op_name(op_proto.op_name, op_proto.op_class.name)
101
+ arg_default_list = [f"\"{key}\": {value}" for key, value in arg_default_dict.items()]
102
+ gen_default_list.append(self.op_arg_default_val_template.replace(op_name=op_name,
103
+ op_arg_default_value=arg_default_list))
104
+
105
+ return self.op_args_default_value_template.replace(gen_default_py=gen_default_list)