mindspore 2.2.11__cp39-cp39-win_amd64.whl → 2.3.0__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 (1151) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +7 -5
  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/_checkparam.py +76 -18
  7. mindspore/_extends/builtin_operations.py +2 -1
  8. mindspore/_extends/graph_kernel/model/graph_parallel.py +16 -6
  9. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +3 -16
  10. mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +16 -4
  11. mindspore/_extends/parallel_compile/akg_compiler/compiler.py +1 -0
  12. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +96 -0
  13. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +2 -1
  14. mindspore/_extends/parallel_compile/akg_compiler/util.py +5 -2
  15. mindspore/_extends/parse/__init__.py +18 -14
  16. mindspore/_extends/parse/compile_config.py +258 -0
  17. mindspore/_extends/parse/namespace.py +2 -2
  18. mindspore/_extends/parse/parser.py +174 -62
  19. mindspore/_extends/parse/resources.py +45 -14
  20. mindspore/_extends/parse/standard_method.py +142 -240
  21. mindspore/{ops/_op_impl/tbe/atomic_addr_clean.py → _extends/pijit/__init__.py} +6 -16
  22. mindspore/_extends/pijit/pijit_func_white_list.py +343 -0
  23. mindspore/_extends/remote/kernel_build_server.py +2 -0
  24. mindspore/_profiler.py +30 -0
  25. mindspore/amp.py +51 -24
  26. mindspore/avcodec-59.dll +0 -0
  27. mindspore/avdevice-59.dll +0 -0
  28. mindspore/avfilter-8.dll +0 -0
  29. mindspore/avformat-59.dll +0 -0
  30. mindspore/avutil-57.dll +0 -0
  31. mindspore/boost/adasum.py +1 -1
  32. mindspore/boost/base.py +1 -1
  33. mindspore/boost/boost_cell_wrapper.py +2 -2
  34. mindspore/boost/grad_freeze.py +2 -2
  35. mindspore/boost/group_loss_scale_manager.py +1 -1
  36. mindspore/boost/less_batch_normalization.py +9 -6
  37. mindspore/common/__init__.py +15 -4
  38. mindspore/common/_jit_fallback_utils.py +2 -3
  39. mindspore/common/_register_for_adapter.py +7 -0
  40. mindspore/common/_register_for_recompute.py +48 -0
  41. mindspore/common/_register_for_tensor.py +8 -9
  42. mindspore/common/_stub_tensor.py +7 -1
  43. mindspore/common/_utils.py +5 -17
  44. mindspore/common/api.py +411 -106
  45. mindspore/common/auto_dynamic_shape.py +27 -14
  46. mindspore/common/dtype.py +17 -10
  47. mindspore/common/dump.py +6 -8
  48. mindspore/common/file_system.py +48 -0
  49. mindspore/common/generator.py +260 -0
  50. mindspore/common/hook_handle.py +51 -4
  51. mindspore/common/initializer.py +1 -1
  52. mindspore/common/jit_config.py +34 -14
  53. mindspore/common/lazy_inline.py +72 -19
  54. mindspore/common/mindir_util.py +12 -2
  55. mindspore/common/mutable.py +79 -14
  56. mindspore/common/no_inline.py +54 -0
  57. mindspore/common/np_dtype.py +25 -0
  58. mindspore/common/parameter.py +30 -11
  59. mindspore/common/recompute.py +262 -0
  60. mindspore/common/seed.py +9 -9
  61. mindspore/common/sparse_tensor.py +272 -24
  62. mindspore/common/symbol.py +122 -0
  63. mindspore/common/tensor.py +468 -496
  64. mindspore/communication/__init__.py +6 -11
  65. mindspore/communication/_comm_helper.py +5 -0
  66. mindspore/communication/comm_func.py +1140 -0
  67. mindspore/communication/management.py +118 -102
  68. mindspore/config/op_info.config +22 -54
  69. mindspore/context.py +378 -65
  70. mindspore/dataset/__init__.py +5 -5
  71. mindspore/dataset/audio/__init__.py +6 -6
  72. mindspore/dataset/audio/transforms.py +711 -158
  73. mindspore/dataset/callback/ds_callback.py +2 -2
  74. mindspore/dataset/engine/cache_client.py +2 -2
  75. mindspore/dataset/engine/datasets.py +163 -83
  76. mindspore/dataset/engine/datasets_audio.py +14 -14
  77. mindspore/dataset/engine/datasets_standard_format.py +33 -3
  78. mindspore/dataset/engine/datasets_text.py +38 -38
  79. mindspore/dataset/engine/datasets_user_defined.py +78 -59
  80. mindspore/dataset/engine/datasets_vision.py +77 -73
  81. mindspore/dataset/engine/offload.py +5 -7
  82. mindspore/dataset/engine/queue.py +56 -38
  83. mindspore/dataset/engine/validators.py +11 -5
  84. mindspore/dataset/text/__init__.py +3 -3
  85. mindspore/dataset/text/transforms.py +408 -121
  86. mindspore/dataset/text/utils.py +9 -9
  87. mindspore/dataset/transforms/__init__.py +1 -1
  88. mindspore/dataset/transforms/transforms.py +261 -76
  89. mindspore/dataset/utils/browse_dataset.py +9 -9
  90. mindspore/dataset/vision/__init__.py +8 -8
  91. mindspore/dataset/vision/c_transforms.py +10 -10
  92. mindspore/dataset/vision/py_transforms_util.py +3 -3
  93. mindspore/dataset/vision/transforms.py +2844 -549
  94. mindspore/dataset/vision/utils.py +161 -10
  95. mindspore/dataset/vision/validators.py +14 -2
  96. mindspore/dnnl.dll +0 -0
  97. mindspore/experimental/optim/__init__.py +12 -2
  98. mindspore/experimental/optim/adadelta.py +161 -0
  99. mindspore/experimental/optim/adagrad.py +168 -0
  100. mindspore/experimental/optim/adam.py +35 -34
  101. mindspore/experimental/optim/adamax.py +170 -0
  102. mindspore/experimental/optim/adamw.py +40 -16
  103. mindspore/experimental/optim/asgd.py +153 -0
  104. mindspore/experimental/optim/lr_scheduler.py +71 -127
  105. mindspore/experimental/optim/nadam.py +157 -0
  106. mindspore/experimental/optim/optimizer.py +15 -8
  107. mindspore/experimental/optim/radam.py +194 -0
  108. mindspore/experimental/optim/rmsprop.py +154 -0
  109. mindspore/experimental/optim/rprop.py +164 -0
  110. mindspore/experimental/optim/sgd.py +28 -19
  111. mindspore/hal/__init__.py +40 -0
  112. mindspore/hal/_ascend.py +57 -0
  113. mindspore/hal/_base.py +57 -0
  114. mindspore/hal/_cpu.py +56 -0
  115. mindspore/hal/_gpu.py +57 -0
  116. mindspore/hal/device.py +356 -0
  117. mindspore/hal/event.py +179 -0
  118. mindspore/hal/memory.py +326 -0
  119. mindspore/hal/stream.py +339 -0
  120. mindspore/include/api/data_type.h +2 -2
  121. mindspore/include/api/dual_abi_helper.h +16 -3
  122. mindspore/include/api/model.h +4 -3
  123. mindspore/include/api/status.h +14 -0
  124. mindspore/include/c_api/model_c.h +173 -0
  125. mindspore/include/c_api/ms/base/types.h +1 -0
  126. mindspore/include/c_api/types_c.h +19 -0
  127. mindspore/include/dataset/execute.h +1 -3
  128. mindspore/include/dataset/vision.h +54 -2
  129. mindspore/jpeg62.dll +0 -0
  130. mindspore/log.py +2 -2
  131. mindspore/mindrecord/__init__.py +5 -1
  132. mindspore/mindrecord/config.py +809 -0
  133. mindspore/mindrecord/filereader.py +25 -0
  134. mindspore/mindrecord/filewriter.py +76 -58
  135. mindspore/mindrecord/mindpage.py +40 -6
  136. mindspore/mindrecord/shardutils.py +3 -2
  137. mindspore/mindrecord/shardwriter.py +7 -0
  138. mindspore/mindrecord/tools/cifar100_to_mr.py +53 -66
  139. mindspore/mindrecord/tools/cifar10_to_mr.py +48 -63
  140. mindspore/mindrecord/tools/csv_to_mr.py +7 -17
  141. mindspore/mindrecord/tools/imagenet_to_mr.py +3 -8
  142. mindspore/mindrecord/tools/mnist_to_mr.py +11 -21
  143. mindspore/mindrecord/tools/tfrecord_to_mr.py +2 -10
  144. mindspore/mindspore_backend.dll +0 -0
  145. mindspore/mindspore_common.dll +0 -0
  146. mindspore/mindspore_core.dll +0 -0
  147. mindspore/mindspore_glog.dll +0 -0
  148. mindspore/mindspore_np_dtype.dll +0 -0
  149. mindspore/mindspore_shared_lib.dll +0 -0
  150. mindspore/mint/__init__.py +1137 -0
  151. mindspore/{rewrite/ast_transformers → mint/linalg}/__init__.py +9 -4
  152. mindspore/mint/nn/__init__.py +512 -0
  153. mindspore/mint/nn/functional.py +573 -0
  154. mindspore/mint/optim/__init__.py +24 -0
  155. mindspore/mint/optim/adamw.py +185 -0
  156. mindspore/multiprocessing/__init__.py +72 -0
  157. mindspore/nn/__init__.py +1 -0
  158. mindspore/nn/cell.py +213 -257
  159. mindspore/nn/dynamic_lr.py +2 -2
  160. mindspore/nn/extend/__init__.py +29 -0
  161. mindspore/nn/extend/basic.py +140 -0
  162. mindspore/nn/extend/embedding.py +143 -0
  163. mindspore/{rewrite/ast_creator_register.py → nn/extend/layer/__init__.py} +9 -19
  164. mindspore/nn/extend/layer/normalization.py +109 -0
  165. mindspore/nn/extend/pooling.py +117 -0
  166. mindspore/nn/layer/activation.py +84 -94
  167. mindspore/nn/layer/basic.py +177 -82
  168. mindspore/nn/layer/channel_shuffle.py +3 -16
  169. mindspore/nn/layer/container.py +3 -3
  170. mindspore/nn/layer/conv.py +75 -66
  171. mindspore/nn/layer/embedding.py +103 -45
  172. mindspore/nn/layer/embedding_service.py +531 -0
  173. mindspore/nn/layer/embedding_service_layer.py +393 -0
  174. mindspore/nn/layer/image.py +4 -7
  175. mindspore/nn/layer/math.py +1 -1
  176. mindspore/nn/layer/normalization.py +52 -66
  177. mindspore/nn/layer/padding.py +30 -39
  178. mindspore/nn/layer/pooling.py +18 -9
  179. mindspore/nn/layer/rnn_cells.py +6 -16
  180. mindspore/nn/layer/rnns.py +6 -5
  181. mindspore/nn/layer/thor_layer.py +1 -2
  182. mindspore/nn/layer/timedistributed.py +1 -1
  183. mindspore/nn/layer/transformer.py +52 -50
  184. mindspore/nn/learning_rate_schedule.py +6 -5
  185. mindspore/nn/loss/loss.py +63 -84
  186. mindspore/nn/optim/ada_grad.py +6 -4
  187. mindspore/nn/optim/adadelta.py +3 -1
  188. mindspore/nn/optim/adafactor.py +1 -1
  189. mindspore/nn/optim/adam.py +102 -181
  190. mindspore/nn/optim/adamax.py +4 -2
  191. mindspore/nn/optim/adasum.py +3 -3
  192. mindspore/nn/optim/asgd.py +4 -2
  193. mindspore/nn/optim/ftrl.py +31 -61
  194. mindspore/nn/optim/lamb.py +5 -3
  195. mindspore/nn/optim/lars.py +2 -2
  196. mindspore/nn/optim/lazyadam.py +6 -4
  197. mindspore/nn/optim/momentum.py +13 -25
  198. mindspore/nn/optim/optimizer.py +6 -3
  199. mindspore/nn/optim/proximal_ada_grad.py +4 -2
  200. mindspore/nn/optim/rmsprop.py +9 -3
  201. mindspore/nn/optim/rprop.py +4 -2
  202. mindspore/nn/optim/sgd.py +7 -4
  203. mindspore/nn/optim/thor.py +2 -2
  204. mindspore/nn/probability/distribution/_utils/custom_ops.py +2 -2
  205. mindspore/nn/probability/distribution/beta.py +2 -2
  206. mindspore/nn/probability/distribution/categorical.py +4 -6
  207. mindspore/nn/probability/distribution/cauchy.py +2 -2
  208. mindspore/nn/probability/distribution/exponential.py +2 -2
  209. mindspore/nn/probability/distribution/geometric.py +1 -1
  210. mindspore/nn/probability/distribution/gumbel.py +2 -2
  211. mindspore/nn/probability/distribution/logistic.py +1 -1
  212. mindspore/nn/probability/distribution/poisson.py +2 -2
  213. mindspore/nn/probability/distribution/uniform.py +2 -2
  214. mindspore/nn/reinforcement/_tensors_queue.py +13 -1
  215. mindspore/nn/wrap/__init__.py +2 -1
  216. mindspore/nn/wrap/cell_wrapper.py +58 -13
  217. mindspore/nn/wrap/grad_reducer.py +148 -8
  218. mindspore/nn/wrap/loss_scale.py +32 -9
  219. mindspore/numpy/__init__.py +2 -0
  220. mindspore/numpy/array_creations.py +2 -0
  221. mindspore/numpy/array_ops.py +6 -6
  222. mindspore/numpy/dtypes.py +3 -3
  223. mindspore/numpy/fft.py +431 -0
  224. mindspore/numpy/math_ops.py +61 -67
  225. mindspore/numpy/utils.py +3 -0
  226. mindspore/opencv_core452.dll +0 -0
  227. mindspore/opencv_imgcodecs452.dll +0 -0
  228. mindspore/opencv_imgproc452.dll +0 -0
  229. mindspore/ops/__init__.py +8 -4
  230. mindspore/ops/_grad_experimental/grad_array_ops.py +4 -160
  231. mindspore/ops/_grad_experimental/grad_comm_ops.py +93 -36
  232. mindspore/ops/_grad_experimental/grad_inner_ops.py +8 -0
  233. mindspore/ops/_grad_experimental/grad_math_ops.py +92 -287
  234. mindspore/ops/_grad_experimental/grad_nn_ops.py +0 -53
  235. mindspore/ops/_grad_experimental/grad_quant_ops.py +3 -3
  236. mindspore/ops/_grad_experimental/grad_sparse.py +1 -1
  237. mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -3
  238. mindspore/ops/_op_impl/__init__.py +0 -1
  239. mindspore/ops/_op_impl/aicpu/__init__.py +1 -0
  240. mindspore/ops/_op_impl/aicpu/gamma.py +2 -0
  241. mindspore/ops/_op_impl/{cpu/concat.py → aicpu/generate_eod_mask.py} +16 -17
  242. mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +1 -3
  243. mindspore/ops/_op_impl/aicpu/poisson.py +2 -0
  244. mindspore/ops/_op_impl/cpu/__init__.py +1 -3
  245. mindspore/ops/_op_impl/cpu/adam.py +2 -2
  246. mindspore/ops/_op_impl/cpu/adam_weight_decay.py +3 -2
  247. mindspore/ops/_op_impl/cpu/maximum_grad.py +16 -14
  248. mindspore/ops/_op_impl/cpu/minimum_grad.py +8 -0
  249. mindspore/ops/_vmap/vmap_array_ops.py +164 -101
  250. mindspore/ops/_vmap/vmap_base.py +8 -1
  251. mindspore/ops/_vmap/vmap_grad_math_ops.py +95 -9
  252. mindspore/ops/_vmap/vmap_grad_nn_ops.py +143 -58
  253. mindspore/ops/_vmap/vmap_image_ops.py +70 -13
  254. mindspore/ops/_vmap/vmap_math_ops.py +130 -58
  255. mindspore/ops/_vmap/vmap_nn_ops.py +249 -115
  256. mindspore/ops/_vmap/vmap_other_ops.py +1 -1
  257. mindspore/ops/auto_generate/__init__.py +31 -0
  258. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +231 -0
  259. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +250 -0
  260. mindspore/ops/auto_generate/gen_arg_handler.py +197 -0
  261. mindspore/ops/auto_generate/gen_extend_func.py +980 -0
  262. mindspore/ops/auto_generate/gen_ops_def.py +6443 -0
  263. mindspore/ops/auto_generate/gen_ops_prim.py +13167 -0
  264. mindspore/ops/auto_generate/pyboost_inner_prim.py +429 -0
  265. mindspore/ops/composite/__init__.py +5 -2
  266. mindspore/ops/composite/base.py +121 -23
  267. mindspore/ops/composite/math_ops.py +10 -49
  268. mindspore/ops/composite/multitype_ops/_compile_utils.py +191 -618
  269. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +25 -134
  270. mindspore/ops/composite/multitype_ops/add_impl.py +6 -0
  271. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +6 -0
  272. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +6 -0
  273. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +6 -0
  274. mindspore/ops/composite/multitype_ops/div_impl.py +8 -0
  275. mindspore/ops/composite/multitype_ops/equal_impl.py +6 -0
  276. mindspore/ops/composite/multitype_ops/floordiv_impl.py +8 -0
  277. mindspore/ops/composite/multitype_ops/getitem_impl.py +6 -0
  278. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +6 -0
  279. mindspore/ops/composite/multitype_ops/greater_impl.py +6 -0
  280. mindspore/ops/composite/multitype_ops/in_impl.py +8 -2
  281. mindspore/ops/composite/multitype_ops/left_shift_impl.py +6 -0
  282. mindspore/ops/composite/multitype_ops/less_equal_impl.py +6 -0
  283. mindspore/ops/composite/multitype_ops/less_impl.py +6 -0
  284. mindspore/ops/composite/multitype_ops/logic_not_impl.py +6 -0
  285. mindspore/ops/composite/multitype_ops/logical_and_impl.py +6 -0
  286. mindspore/ops/composite/multitype_ops/logical_or_impl.py +6 -0
  287. mindspore/ops/composite/multitype_ops/mod_impl.py +6 -0
  288. mindspore/ops/composite/multitype_ops/mul_impl.py +6 -0
  289. mindspore/ops/composite/multitype_ops/negative_impl.py +9 -3
  290. mindspore/ops/composite/multitype_ops/not_equal_impl.py +6 -0
  291. mindspore/ops/composite/multitype_ops/not_in_impl.py +6 -1
  292. mindspore/ops/composite/multitype_ops/ones_like_impl.py +2 -2
  293. mindspore/ops/composite/multitype_ops/pow_impl.py +6 -0
  294. mindspore/ops/composite/multitype_ops/right_shift_impl.py +6 -0
  295. mindspore/ops/composite/multitype_ops/setitem_impl.py +32 -21
  296. mindspore/ops/composite/multitype_ops/sub_impl.py +6 -0
  297. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +6 -3
  298. mindspore/ops/deprecated.py +14 -3
  299. mindspore/ops/extend/__init__.py +53 -0
  300. mindspore/ops/extend/array_func.py +218 -0
  301. mindspore/ops/extend/math_func.py +76 -0
  302. mindspore/ops/extend/nn_func.py +308 -0
  303. mindspore/ops/function/__init__.py +31 -11
  304. mindspore/ops/function/array_func.py +848 -1736
  305. mindspore/ops/function/clip_func.py +19 -31
  306. mindspore/ops/function/debug_func.py +2 -5
  307. mindspore/ops/function/fft_func.py +31 -0
  308. mindspore/ops/function/grad/grad_func.py +27 -20
  309. mindspore/ops/function/image_func.py +27 -21
  310. mindspore/ops/function/linalg_func.py +30 -53
  311. mindspore/ops/function/math_func.py +916 -2791
  312. mindspore/ops/function/nn_func.py +1445 -889
  313. mindspore/ops/function/other_func.py +6 -7
  314. mindspore/ops/function/parameter_func.py +6 -92
  315. mindspore/ops/function/random_func.py +254 -108
  316. mindspore/ops/function/reshard_func.py +102 -0
  317. mindspore/ops/function/sparse_func.py +4 -4
  318. mindspore/ops/function/sparse_unary_func.py +11 -18
  319. mindspore/ops/function/spectral_func.py +1 -1
  320. mindspore/ops/function/vmap_func.py +15 -14
  321. mindspore/ops/functional.py +342 -343
  322. mindspore/ops/op_info_register.py +16 -43
  323. mindspore/ops/operations/__init__.py +32 -23
  324. mindspore/ops/operations/_embedding_cache_ops.py +1 -1
  325. mindspore/ops/operations/_grad_ops.py +21 -853
  326. mindspore/ops/operations/_infer_ops.py +19 -0
  327. mindspore/ops/operations/_inner_ops.py +155 -511
  328. mindspore/ops/operations/_quant_ops.py +4 -4
  329. mindspore/ops/operations/_rl_inner_ops.py +3 -3
  330. mindspore/ops/operations/_scalar_ops.py +5 -480
  331. mindspore/ops/operations/_sequence_ops.py +6 -36
  332. mindspore/ops/operations/_tensor_array.py +8 -8
  333. mindspore/ops/operations/array_ops.py +112 -2698
  334. mindspore/ops/operations/comm_ops.py +801 -118
  335. mindspore/ops/operations/custom_ops.py +62 -121
  336. mindspore/ops/operations/debug_ops.py +105 -36
  337. mindspore/ops/operations/image_ops.py +3 -219
  338. mindspore/ops/operations/inner_ops.py +54 -40
  339. mindspore/ops/operations/linalg_ops.py +1 -49
  340. mindspore/ops/operations/manually_defined/__init__.py +24 -0
  341. mindspore/ops/operations/manually_defined/_inner.py +61 -0
  342. mindspore/ops/operations/manually_defined/ops_def.py +2016 -0
  343. mindspore/ops/operations/math_ops.py +621 -4654
  344. mindspore/ops/operations/nn_ops.py +316 -2226
  345. mindspore/ops/operations/other_ops.py +53 -45
  346. mindspore/ops/operations/random_ops.py +4 -51
  347. mindspore/ops/operations/reshard_ops.py +53 -0
  348. mindspore/ops/operations/sparse_ops.py +8 -8
  349. mindspore/ops/primitive.py +204 -103
  350. mindspore/ops/silent_check.py +162 -0
  351. mindspore/ops_generate/__init__.py +27 -0
  352. mindspore/ops_generate/arg_dtype_cast.py +250 -0
  353. mindspore/ops_generate/arg_handler.py +197 -0
  354. mindspore/ops_generate/gen_aclnn_implement.py +263 -0
  355. mindspore/ops_generate/gen_ops.py +1084 -0
  356. mindspore/ops_generate/gen_ops_inner_prim.py +131 -0
  357. mindspore/ops_generate/gen_pyboost_func.py +968 -0
  358. mindspore/ops_generate/gen_utils.py +209 -0
  359. mindspore/ops_generate/op_proto.py +138 -0
  360. mindspore/ops_generate/pyboost_utils.py +354 -0
  361. mindspore/ops_generate/template.py +239 -0
  362. mindspore/parallel/__init__.py +7 -4
  363. mindspore/parallel/_auto_parallel_context.py +155 -6
  364. mindspore/parallel/_cell_wrapper.py +16 -9
  365. mindspore/parallel/_cost_model_context.py +1 -1
  366. mindspore/parallel/_dp_allreduce_fusion.py +159 -159
  367. mindspore/parallel/_parallel_serialization.py +62 -14
  368. mindspore/parallel/_ps_context.py +1 -1
  369. mindspore/parallel/_recovery_context.py +1 -1
  370. mindspore/parallel/_tensor.py +18 -9
  371. mindspore/parallel/_transformer/__init__.py +1 -1
  372. mindspore/parallel/_transformer/layers.py +1 -1
  373. mindspore/parallel/_transformer/loss.py +1 -1
  374. mindspore/parallel/_transformer/moe.py +1 -1
  375. mindspore/parallel/_transformer/op_parallel_config.py +1 -1
  376. mindspore/parallel/_transformer/transformer.py +10 -10
  377. mindspore/parallel/_utils.py +161 -6
  378. mindspore/parallel/algo_parameter_config.py +6 -8
  379. mindspore/parallel/checkpoint_transform.py +369 -64
  380. mindspore/parallel/cluster/__init__.py +15 -0
  381. mindspore/parallel/cluster/process_entity/__init__.py +18 -0
  382. mindspore/parallel/cluster/process_entity/_api.py +344 -0
  383. mindspore/parallel/cluster/process_entity/_utils.py +126 -0
  384. mindspore/parallel/cluster/run.py +136 -0
  385. mindspore/parallel/mpi/__init__.py +1 -1
  386. mindspore/parallel/mpi/_mpi_config.py +1 -1
  387. mindspore/parallel/parameter_broadcast.py +152 -0
  388. mindspore/parallel/shard.py +128 -17
  389. mindspore/profiler/__init__.py +3 -2
  390. mindspore/profiler/common/process_pool.py +41 -0
  391. mindspore/profiler/common/singleton.py +28 -0
  392. mindspore/profiler/common/util.py +125 -0
  393. mindspore/profiler/envprofiling.py +2 -2
  394. mindspore/{_extends/parallel_compile/tbe_compiler → profiler/parser/ascend_analysis}/__init__.py +1 -1
  395. mindspore/profiler/parser/ascend_analysis/constant.py +53 -0
  396. mindspore/profiler/parser/ascend_analysis/file_manager.py +159 -0
  397. mindspore/profiler/parser/ascend_analysis/function_event.py +161 -0
  398. mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +131 -0
  399. mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +85 -0
  400. mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +57 -0
  401. mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +116 -0
  402. mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +86 -0
  403. mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +68 -0
  404. mindspore/profiler/parser/ascend_cluster_generator.py +116 -0
  405. mindspore/profiler/parser/ascend_communicate_generator.py +314 -0
  406. mindspore/profiler/parser/ascend_flops_generator.py +27 -5
  407. mindspore/profiler/parser/ascend_fpbp_generator.py +8 -2
  408. mindspore/profiler/parser/ascend_hccl_generator.py +31 -280
  409. mindspore/profiler/parser/ascend_integrate_generator.py +42 -0
  410. mindspore/profiler/parser/ascend_memory_generator.py +185 -0
  411. mindspore/profiler/parser/ascend_msprof_exporter.py +151 -126
  412. mindspore/profiler/parser/ascend_msprof_generator.py +75 -274
  413. mindspore/profiler/parser/ascend_op_generator.py +94 -36
  414. mindspore/profiler/parser/ascend_timeline_generator.py +297 -131
  415. mindspore/profiler/parser/base_timeline_generator.py +17 -3
  416. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +2 -1
  417. mindspore/profiler/parser/framework_parser.py +11 -4
  418. mindspore/profiler/parser/integrator.py +3 -1
  419. mindspore/profiler/parser/memory_usage_parser.py +8 -2
  420. mindspore/profiler/parser/minddata_analyzer.py +8 -2
  421. mindspore/profiler/parser/minddata_parser.py +73 -4
  422. mindspore/profiler/parser/msadvisor_analyzer.py +5 -3
  423. mindspore/profiler/parser/msadvisor_parser.py +10 -4
  424. mindspore/profiler/parser/profiler_info.py +16 -1
  425. mindspore/profiler/profiling.py +522 -195
  426. mindspore/rewrite/__init__.py +2 -13
  427. mindspore/rewrite/api/node.py +123 -37
  428. mindspore/rewrite/api/pattern_engine.py +2 -3
  429. mindspore/rewrite/api/scoped_value.py +16 -15
  430. mindspore/rewrite/api/symbol_tree.py +46 -30
  431. mindspore/rewrite/ast_helpers/__init__.py +3 -6
  432. mindspore/rewrite/ast_helpers/ast_converter.py +143 -0
  433. mindspore/rewrite/ast_helpers/ast_finder.py +48 -0
  434. mindspore/rewrite/ast_helpers/ast_flattener.py +268 -0
  435. mindspore/rewrite/ast_helpers/ast_modifier.py +160 -92
  436. mindspore/rewrite/common/__init__.py +1 -2
  437. mindspore/rewrite/common/config.py +24 -0
  438. mindspore/rewrite/common/{rewrite_elog.py → error_log.py} +39 -39
  439. mindspore/rewrite/{namer.py → common/namer.py} +63 -18
  440. mindspore/rewrite/common/namespace.py +118 -0
  441. mindspore/rewrite/node/__init__.py +5 -5
  442. mindspore/rewrite/node/call_function.py +23 -7
  443. mindspore/rewrite/node/cell_container.py +7 -3
  444. mindspore/rewrite/node/control_flow.py +53 -28
  445. mindspore/rewrite/node/node.py +212 -196
  446. mindspore/rewrite/node/node_manager.py +51 -22
  447. mindspore/rewrite/node/node_topological_manager.py +3 -23
  448. mindspore/rewrite/parsers/__init__.py +12 -0
  449. mindspore/rewrite/parsers/arguments_parser.py +8 -9
  450. mindspore/rewrite/parsers/assign_parser.py +637 -413
  451. mindspore/rewrite/parsers/attribute_parser.py +3 -4
  452. mindspore/rewrite/parsers/class_def_parser.py +115 -148
  453. mindspore/rewrite/parsers/constant_parser.py +5 -5
  454. mindspore/rewrite/parsers/container_parser.py +4 -6
  455. mindspore/rewrite/parsers/expr_parser.py +55 -0
  456. mindspore/rewrite/parsers/for_parser.py +31 -98
  457. mindspore/rewrite/parsers/function_def_parser.py +13 -5
  458. mindspore/rewrite/parsers/if_parser.py +28 -10
  459. mindspore/rewrite/parsers/module_parser.py +8 -182
  460. mindspore/rewrite/parsers/parser.py +1 -5
  461. mindspore/rewrite/parsers/parser_register.py +1 -1
  462. mindspore/rewrite/parsers/return_parser.py +5 -10
  463. mindspore/rewrite/parsers/while_parser.py +59 -0
  464. mindspore/rewrite/sparsify/utils.py +1 -1
  465. mindspore/rewrite/symbol_tree/__init__.py +20 -0
  466. mindspore/rewrite/{symbol_tree.py → symbol_tree/symbol_tree.py} +704 -185
  467. mindspore/rewrite/{symbol_tree_builder.py → symbol_tree/symbol_tree_builder.py} +8 -8
  468. mindspore/rewrite/{symbol_tree_dumper.py → symbol_tree/symbol_tree_dumper.py} +4 -4
  469. mindspore/run_check/_check_version.py +6 -14
  470. mindspore/run_check/run_check.py +1 -1
  471. mindspore/safeguard/rewrite_obfuscation.py +9 -19
  472. mindspore/swresample-4.dll +0 -0
  473. mindspore/swscale-6.dll +0 -0
  474. mindspore/tinyxml2.dll +0 -0
  475. mindspore/train/__init__.py +6 -5
  476. mindspore/train/_utils.py +178 -4
  477. mindspore/train/amp.py +167 -245
  478. mindspore/train/anf_ir_pb2.py +14 -2
  479. mindspore/train/callback/__init__.py +5 -2
  480. mindspore/train/callback/_backup_and_restore.py +5 -5
  481. mindspore/train/callback/_callback.py +4 -4
  482. mindspore/train/callback/_checkpoint.py +151 -37
  483. mindspore/train/callback/_cluster_monitor.py +201 -0
  484. mindspore/train/callback/_early_stop.py +2 -2
  485. mindspore/train/callback/_flops_collector.py +238 -0
  486. mindspore/train/callback/_landscape.py +16 -11
  487. mindspore/train/callback/_loss_monitor.py +2 -2
  488. mindspore/train/callback/_mindio_ttp.py +443 -0
  489. mindspore/train/callback/_on_request_exit.py +2 -2
  490. mindspore/train/callback/_reduce_lr_on_plateau.py +2 -2
  491. mindspore/train/callback/_summary_collector.py +13 -14
  492. mindspore/train/callback/_time_monitor.py +3 -3
  493. mindspore/train/data_sink.py +6 -5
  494. mindspore/train/dataset_helper.py +66 -21
  495. mindspore/train/loss_scale_manager.py +2 -2
  496. mindspore/train/metrics/accuracy.py +7 -7
  497. mindspore/train/metrics/confusion_matrix.py +8 -6
  498. mindspore/train/metrics/cosine_similarity.py +6 -4
  499. mindspore/train/metrics/error.py +2 -2
  500. mindspore/train/metrics/metric.py +3 -3
  501. mindspore/train/metrics/perplexity.py +2 -1
  502. mindspore/train/metrics/topk.py +2 -2
  503. mindspore/train/mind_ir_pb2.py +89 -15
  504. mindspore/train/model.py +298 -56
  505. mindspore/train/serialization.py +501 -221
  506. mindspore/train/summary/_summary_adapter.py +1 -1
  507. mindspore/train/summary/_writer_pool.py +1 -1
  508. mindspore/train/summary/summary_record.py +56 -34
  509. mindspore/train/train_thor/convert_utils.py +3 -3
  510. mindspore/turbojpeg.dll +0 -0
  511. mindspore/version.py +1 -1
  512. {mindspore-2.2.11.dist-info → mindspore-2.3.0.dist-info}/METADATA +3 -3
  513. mindspore-2.3.0.dist-info/RECORD +1400 -0
  514. {mindspore-2.2.11.dist-info → mindspore-2.3.0.dist-info}/entry_points.txt +1 -0
  515. mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +0 -662
  516. mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +0 -377
  517. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +0 -201
  518. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +0 -515
  519. mindspore/gen_ops.py +0 -273
  520. mindspore/nn/layer/flash_attention.py +0 -189
  521. mindspore/ops/_op_impl/cpu/tensor_shape.py +0 -42
  522. mindspore/ops/_op_impl/tbe/__init__.py +0 -47
  523. mindspore/ops/_op_impl/tbe/abs.py +0 -38
  524. mindspore/ops/_op_impl/tbe/abs_ds.py +0 -39
  525. mindspore/ops/_op_impl/tbe/abs_grad.py +0 -43
  526. mindspore/ops/_op_impl/tbe/abs_grad_ds.py +0 -44
  527. mindspore/ops/_op_impl/tbe/accumulate_n_v2.py +0 -41
  528. mindspore/ops/_op_impl/tbe/accumulate_n_v2_ds.py +0 -42
  529. mindspore/ops/_op_impl/tbe/acos.py +0 -37
  530. mindspore/ops/_op_impl/tbe/acos_ds.py +0 -38
  531. mindspore/ops/_op_impl/tbe/acos_grad.py +0 -43
  532. mindspore/ops/_op_impl/tbe/acos_grad_ds.py +0 -44
  533. mindspore/ops/_op_impl/tbe/acosh.py +0 -37
  534. mindspore/ops/_op_impl/tbe/acosh_ds.py +0 -38
  535. mindspore/ops/_op_impl/tbe/acosh_grad.py +0 -43
  536. mindspore/ops/_op_impl/tbe/acosh_grad_ds.py +0 -44
  537. mindspore/ops/_op_impl/tbe/act_ulq_clamp_max_grad.py +0 -38
  538. mindspore/ops/_op_impl/tbe/act_ulq_clamp_min_grad.py +0 -38
  539. mindspore/ops/_op_impl/tbe/acts_ulq.py +0 -45
  540. mindspore/ops/_op_impl/tbe/acts_ulq_input_grad.py +0 -38
  541. mindspore/ops/_op_impl/tbe/adam_apply_one.py +0 -50
  542. mindspore/ops/_op_impl/tbe/adam_apply_one_assign.py +0 -53
  543. mindspore/ops/_op_impl/tbe/adam_apply_one_ds.py +0 -51
  544. mindspore/ops/_op_impl/tbe/adam_apply_one_with_decay.py +0 -54
  545. mindspore/ops/_op_impl/tbe/adam_apply_one_with_decay_assign.py +0 -54
  546. mindspore/ops/_op_impl/tbe/adam_apply_one_with_decay_ds.py +0 -55
  547. mindspore/ops/_op_impl/tbe/adaptive_max_pool2d.py +0 -37
  548. mindspore/ops/_op_impl/tbe/add.py +0 -42
  549. mindspore/ops/_op_impl/tbe/add_ds.py +0 -43
  550. mindspore/ops/_op_impl/tbe/add_n.py +0 -39
  551. mindspore/ops/_op_impl/tbe/add_n_ds.py +0 -40
  552. mindspore/ops/_op_impl/tbe/addcdiv.py +0 -41
  553. mindspore/ops/_op_impl/tbe/addcdiv_ds.py +0 -42
  554. mindspore/ops/_op_impl/tbe/addcmul.py +0 -43
  555. mindspore/ops/_op_impl/tbe/addcmul_ds.py +0 -44
  556. mindspore/ops/_op_impl/tbe/apply_ada_max.py +0 -68
  557. mindspore/ops/_op_impl/tbe/apply_ada_max_ds.py +0 -69
  558. mindspore/ops/_op_impl/tbe/apply_adadelta.py +0 -66
  559. mindspore/ops/_op_impl/tbe/apply_adadelta_ds.py +0 -67
  560. mindspore/ops/_op_impl/tbe/apply_adagrad.py +0 -55
  561. mindspore/ops/_op_impl/tbe/apply_adagrad_d_a.py +0 -67
  562. mindspore/ops/_op_impl/tbe/apply_adagrad_ds.py +0 -56
  563. mindspore/ops/_op_impl/tbe/apply_adagrad_v2.py +0 -48
  564. mindspore/ops/_op_impl/tbe/apply_adagrad_v2_ds.py +0 -49
  565. mindspore/ops/_op_impl/tbe/apply_adam.py +0 -79
  566. mindspore/ops/_op_impl/tbe/apply_adam_ds.py +0 -80
  567. mindspore/ops/_op_impl/tbe/apply_adam_with_amsgrad.py +0 -60
  568. mindspore/ops/_op_impl/tbe/apply_adam_with_amsgrad_ds.py +0 -61
  569. mindspore/ops/_op_impl/tbe/apply_add_sign.py +0 -65
  570. mindspore/ops/_op_impl/tbe/apply_add_sign_ds.py +0 -66
  571. mindspore/ops/_op_impl/tbe/apply_centered_rms_prop.py +0 -77
  572. mindspore/ops/_op_impl/tbe/apply_centered_rms_prop_ds.py +0 -78
  573. mindspore/ops/_op_impl/tbe/apply_ftrl.py +0 -67
  574. mindspore/ops/_op_impl/tbe/apply_ftrl_ds.py +0 -68
  575. mindspore/ops/_op_impl/tbe/apply_gradient_descent.py +0 -44
  576. mindspore/ops/_op_impl/tbe/apply_gradient_descent_ds.py +0 -45
  577. mindspore/ops/_op_impl/tbe/apply_keras_momentum.py +0 -49
  578. mindspore/ops/_op_impl/tbe/apply_momentum.py +0 -64
  579. mindspore/ops/_op_impl/tbe/apply_momentum_ds.py +0 -65
  580. mindspore/ops/_op_impl/tbe/apply_power_sign.py +0 -65
  581. mindspore/ops/_op_impl/tbe/apply_power_sign_ds.py +0 -66
  582. mindspore/ops/_op_impl/tbe/apply_proximal_adagrad.py +0 -57
  583. mindspore/ops/_op_impl/tbe/apply_proximal_adagrad_ds.py +0 -58
  584. mindspore/ops/_op_impl/tbe/apply_proximal_gradient_descent.py +0 -54
  585. mindspore/ops/_op_impl/tbe/apply_proximal_gradient_descent_ds.py +0 -55
  586. mindspore/ops/_op_impl/tbe/apply_rms_prop.py +0 -52
  587. mindspore/ops/_op_impl/tbe/approximate_equal.py +0 -39
  588. mindspore/ops/_op_impl/tbe/approximate_equal_ds.py +0 -40
  589. mindspore/ops/_op_impl/tbe/arg_max.py +0 -38
  590. mindspore/ops/_op_impl/tbe/arg_max_with_value.py +0 -38
  591. mindspore/ops/_op_impl/tbe/arg_max_with_value_ds.py +0 -39
  592. mindspore/ops/_op_impl/tbe/arg_min.py +0 -38
  593. mindspore/ops/_op_impl/tbe/arg_min_v2_ds.py +0 -40
  594. mindspore/ops/_op_impl/tbe/arg_min_with_value.py +0 -38
  595. mindspore/ops/_op_impl/tbe/arg_min_with_value_ds.py +0 -39
  596. mindspore/ops/_op_impl/tbe/asin.py +0 -37
  597. mindspore/ops/_op_impl/tbe/asin_ds.py +0 -38
  598. mindspore/ops/_op_impl/tbe/asin_grad.py +0 -43
  599. mindspore/ops/_op_impl/tbe/asin_grad_ds.py +0 -44
  600. mindspore/ops/_op_impl/tbe/asinh.py +0 -37
  601. mindspore/ops/_op_impl/tbe/asinh_ds.py +0 -38
  602. mindspore/ops/_op_impl/tbe/asinh_grad.py +0 -43
  603. mindspore/ops/_op_impl/tbe/asinh_grad_ds.py +0 -44
  604. mindspore/ops/_op_impl/tbe/assign.py +0 -79
  605. mindspore/ops/_op_impl/tbe/assign_add.py +0 -59
  606. mindspore/ops/_op_impl/tbe/assign_add_ds.py +0 -60
  607. mindspore/ops/_op_impl/tbe/assign_ds.py +0 -80
  608. mindspore/ops/_op_impl/tbe/assign_sub.py +0 -55
  609. mindspore/ops/_op_impl/tbe/assign_sub_ds.py +0 -56
  610. mindspore/ops/_op_impl/tbe/atan.py +0 -37
  611. mindspore/ops/_op_impl/tbe/atan2.py +0 -38
  612. mindspore/ops/_op_impl/tbe/atan2_ds.py +0 -39
  613. mindspore/ops/_op_impl/tbe/atan_ds.py +0 -38
  614. mindspore/ops/_op_impl/tbe/atan_grad.py +0 -43
  615. mindspore/ops/_op_impl/tbe/atan_grad_ds.py +0 -44
  616. mindspore/ops/_op_impl/tbe/atanh.py +0 -37
  617. mindspore/ops/_op_impl/tbe/atanh_ds.py +0 -38
  618. mindspore/ops/_op_impl/tbe/avg_pool.py +0 -43
  619. mindspore/ops/_op_impl/tbe/avg_pool_3d.py +0 -44
  620. mindspore/ops/_op_impl/tbe/avg_pool_3d_grad.py +0 -45
  621. mindspore/ops/_op_impl/tbe/avg_pool_ds.py +0 -44
  622. mindspore/ops/_op_impl/tbe/avg_pool_grad.py +0 -42
  623. mindspore/ops/_op_impl/tbe/avg_pool_grad_vm.py +0 -42
  624. mindspore/ops/_op_impl/tbe/basic_lstm_cell.py +0 -57
  625. mindspore/ops/_op_impl/tbe/basic_lstm_cell_c_state_grad.py +0 -50
  626. mindspore/ops/_op_impl/tbe/basic_lstm_cell_c_state_grad_v2.py +0 -51
  627. mindspore/ops/_op_impl/tbe/basic_lstm_cell_input_grad.py +0 -42
  628. mindspore/ops/_op_impl/tbe/basic_lstm_cell_weight_grad.py +0 -41
  629. mindspore/ops/_op_impl/tbe/batch_matmul.py +0 -42
  630. mindspore/ops/_op_impl/tbe/batch_matmul_ds.py +0 -41
  631. mindspore/ops/_op_impl/tbe/batch_matmul_v2.py +0 -47
  632. mindspore/ops/_op_impl/tbe/batch_to_space.py +0 -38
  633. mindspore/ops/_op_impl/tbe/batch_to_space_nd.py +0 -38
  634. mindspore/ops/_op_impl/tbe/batch_to_space_nd_ds.py +0 -39
  635. mindspore/ops/_op_impl/tbe/batch_to_space_nd_v2.py +0 -41
  636. mindspore/ops/_op_impl/tbe/batchnorm.py +0 -58
  637. mindspore/ops/_op_impl/tbe/batchnorm_grad.py +0 -58
  638. mindspore/ops/_op_impl/tbe/bce_with_logits_loss.py +0 -42
  639. mindspore/ops/_op_impl/tbe/bessel_i0e.py +0 -37
  640. mindspore/ops/_op_impl/tbe/bessel_i0e_ds.py +0 -38
  641. mindspore/ops/_op_impl/tbe/bessel_i1e.py +0 -37
  642. mindspore/ops/_op_impl/tbe/bessel_i1e_ds.py +0 -38
  643. mindspore/ops/_op_impl/tbe/bias_add.py +0 -38
  644. mindspore/ops/_op_impl/tbe/bias_add_ds.py +0 -39
  645. mindspore/ops/_op_impl/tbe/bias_add_grad.py +0 -53
  646. mindspore/ops/_op_impl/tbe/binary_cross_entropy.py +0 -39
  647. mindspore/ops/_op_impl/tbe/binary_cross_entropy_ds.py +0 -40
  648. mindspore/ops/_op_impl/tbe/binary_cross_entropy_grad.py +0 -44
  649. mindspore/ops/_op_impl/tbe/binary_cross_entropy_grad_ds.py +0 -45
  650. mindspore/ops/_op_impl/tbe/bitwise_and.py +0 -39
  651. mindspore/ops/_op_impl/tbe/bitwise_and_ds.py +0 -40
  652. mindspore/ops/_op_impl/tbe/bitwise_or.py +0 -39
  653. mindspore/ops/_op_impl/tbe/bitwise_or_ds.py +0 -40
  654. mindspore/ops/_op_impl/tbe/bitwise_xor.py +0 -39
  655. mindspore/ops/_op_impl/tbe/bitwise_xor_ds.py +0 -40
  656. mindspore/ops/_op_impl/tbe/bn_infer.py +0 -43
  657. mindspore/ops/_op_impl/tbe/bn_infer_ds.py +0 -45
  658. mindspore/ops/_op_impl/tbe/bn_infer_grad.py +0 -41
  659. mindspore/ops/_op_impl/tbe/bn_infer_grad_ds.py +0 -40
  660. mindspore/ops/_op_impl/tbe/bn_inference.py +0 -50
  661. mindspore/ops/_op_impl/tbe/bn_training_reduce.py +0 -38
  662. mindspore/ops/_op_impl/tbe/bn_training_reduce_ds.py +0 -39
  663. mindspore/ops/_op_impl/tbe/bn_training_reduce_grad.py +0 -46
  664. mindspore/ops/_op_impl/tbe/bn_training_reduce_grad_ds.py +0 -47
  665. mindspore/ops/_op_impl/tbe/bn_training_update.py +0 -52
  666. mindspore/ops/_op_impl/tbe/bn_training_update_ds.py +0 -53
  667. mindspore/ops/_op_impl/tbe/bn_training_update_grad.py +0 -44
  668. mindspore/ops/_op_impl/tbe/bn_training_update_grad_ds.py +0 -45
  669. mindspore/ops/_op_impl/tbe/bn_training_update_v2.py +0 -48
  670. mindspore/ops/_op_impl/tbe/bn_training_update_v3.py +0 -51
  671. mindspore/ops/_op_impl/tbe/bounding_box_decode.py +0 -41
  672. mindspore/ops/_op_impl/tbe/bounding_box_decode_ds.py +0 -42
  673. mindspore/ops/_op_impl/tbe/bounding_box_encode.py +0 -38
  674. mindspore/ops/_op_impl/tbe/broadcast_to.py +0 -40
  675. mindspore/ops/_op_impl/tbe/broadcast_to_ds.py +0 -44
  676. mindspore/ops/_op_impl/tbe/cast.py +0 -55
  677. mindspore/ops/_op_impl/tbe/cast_ds.py +0 -58
  678. mindspore/ops/_op_impl/tbe/cdist.py +0 -38
  679. mindspore/ops/_op_impl/tbe/cdist_grad.py +0 -42
  680. mindspore/ops/_op_impl/tbe/ceil.py +0 -37
  681. mindspore/ops/_op_impl/tbe/ceil_ds.py +0 -38
  682. mindspore/ops/_op_impl/tbe/celu.py +0 -39
  683. mindspore/ops/_op_impl/tbe/centralization.py +0 -39
  684. mindspore/ops/_op_impl/tbe/check_valid.py +0 -38
  685. mindspore/ops/_op_impl/tbe/check_valid_ds.py +0 -39
  686. mindspore/ops/_op_impl/tbe/clip_by_norm_no_div_sum.py +0 -41
  687. mindspore/ops/_op_impl/tbe/clip_by_norm_no_div_sum_ds.py +0 -42
  688. mindspore/ops/_op_impl/tbe/clip_by_value.py +0 -41
  689. mindspore/ops/_op_impl/tbe/clip_by_value_ds.py +0 -42
  690. mindspore/ops/_op_impl/tbe/concat.py +0 -40
  691. mindspore/ops/_op_impl/tbe/concat_ds.py +0 -38
  692. mindspore/ops/_op_impl/tbe/confusion_matrix.py +0 -63
  693. mindspore/ops/_op_impl/tbe/confusion_mul_grad.py +0 -40
  694. mindspore/ops/_op_impl/tbe/confusion_softmax_grad.py +0 -41
  695. mindspore/ops/_op_impl/tbe/confusion_transpose_d.py +0 -39
  696. mindspore/ops/_op_impl/tbe/conv2d.py +0 -47
  697. mindspore/ops/_op_impl/tbe/conv2d_backprop_filter.py +0 -42
  698. mindspore/ops/_op_impl/tbe/conv2d_backprop_filter_ds.py +0 -43
  699. mindspore/ops/_op_impl/tbe/conv2d_backprop_input.py +0 -42
  700. mindspore/ops/_op_impl/tbe/conv2d_backprop_input_ds.py +0 -44
  701. mindspore/ops/_op_impl/tbe/conv2d_ds.py +0 -47
  702. mindspore/ops/_op_impl/tbe/conv2d_transpose.py +0 -48
  703. mindspore/ops/_op_impl/tbe/conv3d.py +0 -45
  704. mindspore/ops/_op_impl/tbe/conv3d_backprop_filter.py +0 -42
  705. mindspore/ops/_op_impl/tbe/conv3d_backprop_input.py +0 -42
  706. mindspore/ops/_op_impl/tbe/conv3d_transpose.py +0 -47
  707. mindspore/ops/_op_impl/tbe/conv3d_transpose_ds.py +0 -48
  708. mindspore/ops/_op_impl/tbe/cos.py +0 -37
  709. mindspore/ops/_op_impl/tbe/cos_ds.py +0 -38
  710. mindspore/ops/_op_impl/tbe/cosh.py +0 -37
  711. mindspore/ops/_op_impl/tbe/cosh_ds.py +0 -38
  712. mindspore/ops/_op_impl/tbe/ctc_loss_v2.py +0 -42
  713. mindspore/ops/_op_impl/tbe/ctc_loss_v2_grad.py +0 -44
  714. mindspore/ops/_op_impl/tbe/cum_sum.py +0 -42
  715. mindspore/ops/_op_impl/tbe/cum_sum_ds.py +0 -44
  716. mindspore/ops/_op_impl/tbe/cummin.py +0 -41
  717. mindspore/ops/_op_impl/tbe/cumprod.py +0 -42
  718. mindspore/ops/_op_impl/tbe/data_format_dim_map.py +0 -38
  719. mindspore/ops/_op_impl/tbe/data_format_dim_map_ds.py +0 -40
  720. mindspore/ops/_op_impl/tbe/deformable_offsets.py +0 -45
  721. mindspore/ops/_op_impl/tbe/deformable_offsets_grad.py +0 -48
  722. mindspore/ops/_op_impl/tbe/depth_to_space_ds.py +0 -49
  723. mindspore/ops/_op_impl/tbe/depthwise_conv2d.py +0 -44
  724. mindspore/ops/_op_impl/tbe/depthwise_conv2d_backprop_filter.py +0 -41
  725. mindspore/ops/_op_impl/tbe/depthwise_conv2d_backprop_input.py +0 -41
  726. mindspore/ops/_op_impl/tbe/diag.py +0 -38
  727. mindspore/ops/_op_impl/tbe/diag_part.py +0 -38
  728. mindspore/ops/_op_impl/tbe/dilation.py +0 -40
  729. mindspore/ops/_op_impl/tbe/div.py +0 -41
  730. mindspore/ops/_op_impl/tbe/div_ds.py +0 -42
  731. mindspore/ops/_op_impl/tbe/div_no_nan.py +0 -41
  732. mindspore/ops/_op_impl/tbe/div_no_nan_ds.py +0 -42
  733. mindspore/ops/_op_impl/tbe/dropout_do_mask.py +0 -38
  734. mindspore/ops/_op_impl/tbe/dropout_do_mask_ds.py +0 -39
  735. mindspore/ops/_op_impl/tbe/dropout_do_mask_v3.py +0 -39
  736. mindspore/ops/_op_impl/tbe/dynamic_atomic_addr_clean.py +0 -34
  737. mindspore/ops/_op_impl/tbe/dynamic_gru_v2.py +0 -95
  738. mindspore/ops/_op_impl/tbe/dynamic_rnn.py +0 -82
  739. mindspore/ops/_op_impl/tbe/elu.py +0 -38
  740. mindspore/ops/_op_impl/tbe/elu_ds.py +0 -39
  741. mindspore/ops/_op_impl/tbe/elu_grad.py +0 -43
  742. mindspore/ops/_op_impl/tbe/elu_grad_ds.py +0 -44
  743. mindspore/ops/_op_impl/tbe/equal.py +0 -42
  744. mindspore/ops/_op_impl/tbe/equal_ds.py +0 -42
  745. mindspore/ops/_op_impl/tbe/erf.py +0 -37
  746. mindspore/ops/_op_impl/tbe/erf_ds.py +0 -38
  747. mindspore/ops/_op_impl/tbe/erfc.py +0 -37
  748. mindspore/ops/_op_impl/tbe/erfc_ds.py +0 -38
  749. mindspore/ops/_op_impl/tbe/erfinv.py +0 -36
  750. mindspore/ops/_op_impl/tbe/exp.py +0 -40
  751. mindspore/ops/_op_impl/tbe/exp_ds.py +0 -41
  752. mindspore/ops/_op_impl/tbe/expand_dims.py +0 -38
  753. mindspore/ops/_op_impl/tbe/expm1.py +0 -37
  754. mindspore/ops/_op_impl/tbe/expm1_ds.py +0 -38
  755. mindspore/ops/_op_impl/tbe/extract_image_patches.py +0 -41
  756. mindspore/ops/_op_impl/tbe/extract_volume_patches.py +0 -39
  757. mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars.py +0 -39
  758. mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars_gradient.py +0 -43
  759. mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars_per_channel.py +0 -39
  760. mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars_per_channel_gradient.py +0 -43
  761. mindspore/ops/_op_impl/tbe/fast_gelu.py +0 -37
  762. mindspore/ops/_op_impl/tbe/fast_gelu_ds.py +0 -38
  763. mindspore/ops/_op_impl/tbe/fast_gelu_grad.py +0 -41
  764. mindspore/ops/_op_impl/tbe/fast_gelu_grad_ds.py +0 -42
  765. mindspore/ops/_op_impl/tbe/fill.py +0 -56
  766. mindspore/ops/_op_impl/tbe/fill_ds.py +0 -42
  767. mindspore/ops/_op_impl/tbe/flatten.py +0 -48
  768. mindspore/ops/_op_impl/tbe/floor.py +0 -37
  769. mindspore/ops/_op_impl/tbe/floor_div.py +0 -41
  770. mindspore/ops/_op_impl/tbe/floor_div_ds.py +0 -42
  771. mindspore/ops/_op_impl/tbe/floor_ds.py +0 -38
  772. mindspore/ops/_op_impl/tbe/floor_mod.py +0 -39
  773. mindspore/ops/_op_impl/tbe/floor_mod_ds.py +0 -40
  774. mindspore/ops/_op_impl/tbe/fused_dbn_dw.py +0 -52
  775. mindspore/ops/_op_impl/tbe/fused_mul_add.py +0 -38
  776. mindspore/ops/_op_impl/tbe/fused_mul_add_n.py +0 -48
  777. mindspore/ops/_op_impl/tbe/fused_mul_add_n_l2loss.py +0 -53
  778. mindspore/ops/_op_impl/tbe/fused_mul_apply_momentum.py +0 -57
  779. mindspore/ops/_op_impl/tbe/fused_mul_apply_momentum_extern.py +0 -67
  780. mindspore/ops/_op_impl/tbe/gather_nd.py +0 -52
  781. mindspore/ops/_op_impl/tbe/gather_nd_ds.py +0 -48
  782. mindspore/ops/_op_impl/tbe/gather_v2.py +0 -56
  783. mindspore/ops/_op_impl/tbe/gather_v2_ds.py +0 -68
  784. mindspore/ops/_op_impl/tbe/gelu.py +0 -37
  785. mindspore/ops/_op_impl/tbe/gelu_ds.py +0 -38
  786. mindspore/ops/_op_impl/tbe/gelu_grad.py +0 -42
  787. mindspore/ops/_op_impl/tbe/gelu_grad_ds.py +0 -43
  788. mindspore/ops/_op_impl/tbe/ger.py +0 -43
  789. mindspore/ops/_op_impl/tbe/ger_ds.py +0 -44
  790. mindspore/ops/_op_impl/tbe/greater.py +0 -43
  791. mindspore/ops/_op_impl/tbe/greater_equal.py +0 -41
  792. mindspore/ops/_op_impl/tbe/greater_equal_ds.py +0 -42
  793. mindspore/ops/_op_impl/tbe/gru_v2_hidden_grad.py +0 -51
  794. mindspore/ops/_op_impl/tbe/gru_v2_hidden_grad_cell.py +0 -52
  795. mindspore/ops/_op_impl/tbe/hard_swish.py +0 -37
  796. mindspore/ops/_op_impl/tbe/hard_swish_ds.py +0 -38
  797. mindspore/ops/_op_impl/tbe/hard_swish_grad.py +0 -41
  798. mindspore/ops/_op_impl/tbe/hard_swish_grad_ds.py +0 -42
  799. mindspore/ops/_op_impl/tbe/histogram_fixed_width.py +0 -40
  800. mindspore/ops/_op_impl/tbe/hshrink.py +0 -33
  801. mindspore/ops/_op_impl/tbe/hshrink_grad.py +0 -37
  802. mindspore/ops/_op_impl/tbe/hsigmoid.py +0 -45
  803. mindspore/ops/_op_impl/tbe/hsigmoid_grad.py +0 -39
  804. mindspore/ops/_op_impl/tbe/ifmr.py +0 -47
  805. mindspore/ops/_op_impl/tbe/ifmr_ds.py +0 -48
  806. mindspore/ops/_op_impl/tbe/im2col.py +0 -42
  807. mindspore/ops/_op_impl/tbe/in_top_k.py +0 -37
  808. mindspore/ops/_op_impl/tbe/inplace_add.py +0 -39
  809. mindspore/ops/_op_impl/tbe/inplace_index_add.py +0 -46
  810. mindspore/ops/_op_impl/tbe/inplace_sub.py +0 -39
  811. mindspore/ops/_op_impl/tbe/inplace_update.py +0 -39
  812. mindspore/ops/_op_impl/tbe/inplace_update_ds.py +0 -40
  813. mindspore/ops/_op_impl/tbe/inv.py +0 -38
  814. mindspore/ops/_op_impl/tbe/inv_ds.py +0 -39
  815. mindspore/ops/_op_impl/tbe/inv_grad.py +0 -40
  816. mindspore/ops/_op_impl/tbe/inv_grad_ds.py +0 -41
  817. mindspore/ops/_op_impl/tbe/invert.py +0 -37
  818. mindspore/ops/_op_impl/tbe/invert_ds.py +0 -38
  819. mindspore/ops/_op_impl/tbe/iou.py +0 -38
  820. mindspore/ops/_op_impl/tbe/iou_ds.py +0 -39
  821. mindspore/ops/_op_impl/tbe/is_close.py +0 -40
  822. mindspore/ops/_op_impl/tbe/kl_div_loss.py +0 -38
  823. mindspore/ops/_op_impl/tbe/kl_div_loss_ds.py +0 -39
  824. mindspore/ops/_op_impl/tbe/kl_div_loss_grad.py +0 -40
  825. mindspore/ops/_op_impl/tbe/l2_loss.py +0 -36
  826. mindspore/ops/_op_impl/tbe/l2_loss_ds.py +0 -37
  827. mindspore/ops/_op_impl/tbe/l2_normalize.py +0 -38
  828. mindspore/ops/_op_impl/tbe/l2_normalize_grad.py +0 -40
  829. mindspore/ops/_op_impl/tbe/lamb_apply_optimizer_assign.py +0 -55
  830. mindspore/ops/_op_impl/tbe/lamb_apply_weight_assign.py +0 -42
  831. mindspore/ops/_op_impl/tbe/lamb_next_mv.py +0 -59
  832. mindspore/ops/_op_impl/tbe/lamb_next_mv_with_decay.py +0 -59
  833. mindspore/ops/_op_impl/tbe/lamb_next_right.py +0 -44
  834. mindspore/ops/_op_impl/tbe/lamb_update_with_lr.py +0 -48
  835. mindspore/ops/_op_impl/tbe/lamb_update_with_lr_v2.py +0 -44
  836. mindspore/ops/_op_impl/tbe/lars_update.py +0 -50
  837. mindspore/ops/_op_impl/tbe/lars_update_ds.py +0 -51
  838. mindspore/ops/_op_impl/tbe/layer_norm.py +0 -46
  839. mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop.py +0 -44
  840. mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop_ds.py +0 -45
  841. mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop_v2.py +0 -40
  842. mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop_v2_ds.py +0 -41
  843. mindspore/ops/_op_impl/tbe/layer_norm_ds.py +0 -47
  844. mindspore/ops/_op_impl/tbe/layer_norm_grad.py +0 -48
  845. mindspore/ops/_op_impl/tbe/layer_norm_x_backprop.py +0 -43
  846. mindspore/ops/_op_impl/tbe/layer_norm_x_backprop_ds.py +0 -44
  847. mindspore/ops/_op_impl/tbe/layer_norm_x_backprop_v2.py +0 -45
  848. mindspore/ops/_op_impl/tbe/layer_norm_x_backprop_v2_ds.py +0 -45
  849. mindspore/ops/_op_impl/tbe/lerp.py +0 -38
  850. mindspore/ops/_op_impl/tbe/less.py +0 -41
  851. mindspore/ops/_op_impl/tbe/less_ds.py +0 -42
  852. mindspore/ops/_op_impl/tbe/less_equal.py +0 -41
  853. mindspore/ops/_op_impl/tbe/less_equal_ds.py +0 -42
  854. mindspore/ops/_op_impl/tbe/log.py +0 -40
  855. mindspore/ops/_op_impl/tbe/log1p.py +0 -37
  856. mindspore/ops/_op_impl/tbe/log1p_ds.py +0 -38
  857. mindspore/ops/_op_impl/tbe/log_ds.py +0 -41
  858. mindspore/ops/_op_impl/tbe/logical_and.py +0 -37
  859. mindspore/ops/_op_impl/tbe/logical_and_ds.py +0 -38
  860. mindspore/ops/_op_impl/tbe/logical_not.py +0 -36
  861. mindspore/ops/_op_impl/tbe/logical_not_ds.py +0 -37
  862. mindspore/ops/_op_impl/tbe/logical_or.py +0 -37
  863. mindspore/ops/_op_impl/tbe/logical_or_ds.py +0 -38
  864. mindspore/ops/_op_impl/tbe/logsoftmax.py +0 -37
  865. mindspore/ops/_op_impl/tbe/logsoftmax_ds.py +0 -38
  866. mindspore/ops/_op_impl/tbe/logsoftmax_grad.py +0 -38
  867. mindspore/ops/_op_impl/tbe/logsoftmax_grad_ds.py +0 -39
  868. mindspore/ops/_op_impl/tbe/lp_norm.py +0 -40
  869. mindspore/ops/_op_impl/tbe/lp_norm_ds.py +0 -41
  870. mindspore/ops/_op_impl/tbe/lrn.py +0 -41
  871. mindspore/ops/_op_impl/tbe/lrn_grad.py +0 -42
  872. mindspore/ops/_op_impl/tbe/lstm_input_grad.py +0 -51
  873. mindspore/ops/_op_impl/tbe/masked_fill.py +0 -40
  874. mindspore/ops/_op_impl/tbe/masked_fill_ds.py +0 -41
  875. mindspore/ops/_op_impl/tbe/matmul.py +0 -53
  876. mindspore/ops/_op_impl/tbe/matmul_ds.py +0 -47
  877. mindspore/ops/_op_impl/tbe/matmul_v2.py +0 -50
  878. mindspore/ops/_op_impl/tbe/matrix_diag.py +0 -45
  879. mindspore/ops/_op_impl/tbe/matrix_diag_part.py +0 -45
  880. mindspore/ops/_op_impl/tbe/matrix_set_diag.py +0 -46
  881. mindspore/ops/_op_impl/tbe/max_pool.py +0 -39
  882. mindspore/ops/_op_impl/tbe/max_pool3d.py +0 -44
  883. mindspore/ops/_op_impl/tbe/max_pool3d_grad.py +0 -43
  884. mindspore/ops/_op_impl/tbe/max_pool3d_grad_grad.py +0 -44
  885. mindspore/ops/_op_impl/tbe/max_pool_ds.py +0 -40
  886. mindspore/ops/_op_impl/tbe/max_pool_grad.py +0 -43
  887. mindspore/ops/_op_impl/tbe/max_pool_grad_grad.py +0 -41
  888. mindspore/ops/_op_impl/tbe/max_pool_grad_grad_with_argmax.py +0 -41
  889. mindspore/ops/_op_impl/tbe/max_pool_grad_with_argmax.py +0 -42
  890. mindspore/ops/_op_impl/tbe/max_pool_with_argmax.py +0 -40
  891. mindspore/ops/_op_impl/tbe/maximum.py +0 -39
  892. mindspore/ops/_op_impl/tbe/maximum_ds.py +0 -40
  893. mindspore/ops/_op_impl/tbe/maximum_grad.py +0 -46
  894. mindspore/ops/_op_impl/tbe/maximum_grad_ds.py +0 -47
  895. mindspore/ops/_op_impl/tbe/mem_set.py +0 -38
  896. mindspore/ops/_op_impl/tbe/minimum.py +0 -40
  897. mindspore/ops/_op_impl/tbe/minimum_ds.py +0 -41
  898. mindspore/ops/_op_impl/tbe/minimum_grad.py +0 -46
  899. mindspore/ops/_op_impl/tbe/minimum_grad_ds.py +0 -47
  900. mindspore/ops/_op_impl/tbe/mish.py +0 -37
  901. mindspore/ops/_op_impl/tbe/mod.py +0 -41
  902. mindspore/ops/_op_impl/tbe/mod_ds.py +0 -42
  903. mindspore/ops/_op_impl/tbe/mul.py +0 -37
  904. mindspore/ops/_op_impl/tbe/mul_ds.py +0 -38
  905. mindspore/ops/_op_impl/tbe/mul_no_nan.py +0 -39
  906. mindspore/ops/_op_impl/tbe/mul_no_nan_ds.py +0 -40
  907. mindspore/ops/_op_impl/tbe/multilabel_margin_loss.py +0 -39
  908. mindspore/ops/_op_impl/tbe/neg.py +0 -39
  909. mindspore/ops/_op_impl/tbe/neg_ds.py +0 -40
  910. mindspore/ops/_op_impl/tbe/new_im2col.py +0 -40
  911. mindspore/ops/_op_impl/tbe/nll_loss.py +0 -41
  912. mindspore/ops/_op_impl/tbe/nll_loss_grad.py +0 -44
  913. mindspore/ops/_op_impl/tbe/nms_with_mask.py +0 -39
  914. mindspore/ops/_op_impl/tbe/not_equal.py +0 -41
  915. mindspore/ops/_op_impl/tbe/not_equal_ds.py +0 -42
  916. mindspore/ops/_op_impl/tbe/npu_alloc_float_status.py +0 -34
  917. mindspore/ops/_op_impl/tbe/npu_clear_float_status.py +0 -35
  918. mindspore/ops/_op_impl/tbe/npu_clear_float_status_v2.py +0 -35
  919. mindspore/ops/_op_impl/tbe/npu_get_float_status.py +0 -35
  920. mindspore/ops/_op_impl/tbe/npu_get_float_status_v2.py +0 -35
  921. mindspore/ops/_op_impl/tbe/one_hot.py +0 -48
  922. mindspore/ops/_op_impl/tbe/one_hot_ds.py +0 -45
  923. mindspore/ops/_op_impl/tbe/ones_like.py +0 -40
  924. mindspore/ops/_op_impl/tbe/ones_like_ds.py +0 -41
  925. mindspore/ops/_op_impl/tbe/p_s_r_o_i_pooling.py +0 -40
  926. mindspore/ops/_op_impl/tbe/p_s_r_o_i_pooling_grad.py +0 -40
  927. mindspore/ops/_op_impl/tbe/pack.py +0 -58
  928. mindspore/ops/_op_impl/tbe/pack_ds.py +0 -59
  929. mindspore/ops/_op_impl/tbe/pad_d.py +0 -40
  930. mindspore/ops/_op_impl/tbe/pad_d_ds.py +0 -41
  931. mindspore/ops/_op_impl/tbe/parallel_concat.py +0 -70
  932. mindspore/ops/_op_impl/tbe/parallel_resize_bilinear.py +0 -45
  933. mindspore/ops/_op_impl/tbe/parallel_resize_bilinear_grad.py +0 -44
  934. mindspore/ops/_op_impl/tbe/pdist.py +0 -36
  935. mindspore/ops/_op_impl/tbe/pooling.py +0 -46
  936. mindspore/ops/_op_impl/tbe/population_count.py +0 -38
  937. mindspore/ops/_op_impl/tbe/pow.py +0 -41
  938. mindspore/ops/_op_impl/tbe/pow_ds.py +0 -42
  939. mindspore/ops/_op_impl/tbe/prelu.py +0 -37
  940. mindspore/ops/_op_impl/tbe/prelu_ds.py +0 -38
  941. mindspore/ops/_op_impl/tbe/prelu_grad.py +0 -40
  942. mindspore/ops/_op_impl/tbe/range.py +0 -39
  943. mindspore/ops/_op_impl/tbe/real_div.py +0 -38
  944. mindspore/ops/_op_impl/tbe/real_div_ds.py +0 -39
  945. mindspore/ops/_op_impl/tbe/reciprocal.py +0 -36
  946. mindspore/ops/_op_impl/tbe/reciprocal_ds.py +0 -37
  947. mindspore/ops/_op_impl/tbe/reciprocal_grad.py +0 -38
  948. mindspore/ops/_op_impl/tbe/reciprocal_grad_ds.py +0 -39
  949. mindspore/ops/_op_impl/tbe/reduce_all.py +0 -38
  950. mindspore/ops/_op_impl/tbe/reduce_all_ds.py +0 -39
  951. mindspore/ops/_op_impl/tbe/reduce_any.py +0 -38
  952. mindspore/ops/_op_impl/tbe/reduce_any_ds.py +0 -39
  953. mindspore/ops/_op_impl/tbe/reduce_max.py +0 -43
  954. mindspore/ops/_op_impl/tbe/reduce_max_ds.py +0 -41
  955. mindspore/ops/_op_impl/tbe/reduce_mean.py +0 -40
  956. mindspore/ops/_op_impl/tbe/reduce_mean_ds.py +0 -42
  957. mindspore/ops/_op_impl/tbe/reduce_min.py +0 -41
  958. mindspore/ops/_op_impl/tbe/reduce_min_ds.py +0 -41
  959. mindspore/ops/_op_impl/tbe/reduce_prod.py +0 -42
  960. mindspore/ops/_op_impl/tbe/reduce_prod_ds.py +0 -41
  961. mindspore/ops/_op_impl/tbe/reduce_std.py +0 -44
  962. mindspore/ops/_op_impl/tbe/reduce_sum.py +0 -39
  963. mindspore/ops/_op_impl/tbe/reduce_sum_ds.py +0 -41
  964. mindspore/ops/_op_impl/tbe/relu.py +0 -39
  965. mindspore/ops/_op_impl/tbe/relu6.py +0 -38
  966. mindspore/ops/_op_impl/tbe/relu6_ds.py +0 -39
  967. mindspore/ops/_op_impl/tbe/relu6_grad.py +0 -43
  968. mindspore/ops/_op_impl/tbe/relu6_grad_ds.py +0 -44
  969. mindspore/ops/_op_impl/tbe/relu_ds.py +0 -40
  970. mindspore/ops/_op_impl/tbe/relu_grad.py +0 -41
  971. mindspore/ops/_op_impl/tbe/relu_grad_ds.py +0 -42
  972. mindspore/ops/_op_impl/tbe/relu_grad_v2.py +0 -40
  973. mindspore/ops/_op_impl/tbe/relu_grad_v2_ds.py +0 -41
  974. mindspore/ops/_op_impl/tbe/relu_v2.py +0 -40
  975. mindspore/ops/_op_impl/tbe/relu_v2_ds.py +0 -41
  976. mindspore/ops/_op_impl/tbe/renorm.py +0 -39
  977. mindspore/ops/_op_impl/tbe/resize_bilinear.py +0 -40
  978. mindspore/ops/_op_impl/tbe/resize_bilinear_grad.py +0 -41
  979. mindspore/ops/_op_impl/tbe/resize_bilinear_v2.py +0 -43
  980. mindspore/ops/_op_impl/tbe/resize_nearest_neighbor.py +0 -40
  981. mindspore/ops/_op_impl/tbe/resize_nearest_neighbor_ds.py +0 -40
  982. mindspore/ops/_op_impl/tbe/resize_nearest_neighbor_grad.py +0 -39
  983. mindspore/ops/_op_impl/tbe/resize_nearest_neighbor_grad_ds.py +0 -42
  984. mindspore/ops/_op_impl/tbe/reverse_v2_d.py +0 -37
  985. mindspore/ops/_op_impl/tbe/rint.py +0 -37
  986. mindspore/ops/_op_impl/tbe/rint_ds.py +0 -38
  987. mindspore/ops/_op_impl/tbe/roi_align.py +0 -43
  988. mindspore/ops/_op_impl/tbe/roi_align_ds.py +0 -44
  989. mindspore/ops/_op_impl/tbe/roi_align_grad.py +0 -43
  990. mindspore/ops/_op_impl/tbe/roi_align_grad_ds.py +0 -44
  991. mindspore/ops/_op_impl/tbe/roll.py +0 -42
  992. mindspore/ops/_op_impl/tbe/round.py +0 -38
  993. mindspore/ops/_op_impl/tbe/round_ds.py +0 -39
  994. mindspore/ops/_op_impl/tbe/rsqrt.py +0 -37
  995. mindspore/ops/_op_impl/tbe/rsqrt_ds.py +0 -38
  996. mindspore/ops/_op_impl/tbe/rsqrt_grad.py +0 -40
  997. mindspore/ops/_op_impl/tbe/rsqrt_grad_ds.py +0 -41
  998. mindspore/ops/_op_impl/tbe/scatter_add.py +0 -44
  999. mindspore/ops/_op_impl/tbe/scatter_div.py +0 -46
  1000. mindspore/ops/_op_impl/tbe/scatter_max.py +0 -45
  1001. mindspore/ops/_op_impl/tbe/scatter_min.py +0 -45
  1002. mindspore/ops/_op_impl/tbe/scatter_mul.py +0 -44
  1003. mindspore/ops/_op_impl/tbe/scatter_nd.py +0 -41
  1004. mindspore/ops/_op_impl/tbe/scatter_nd_add.py +0 -45
  1005. mindspore/ops/_op_impl/tbe/scatter_nd_d.py +0 -41
  1006. mindspore/ops/_op_impl/tbe/scatter_nd_ds.py +0 -49
  1007. mindspore/ops/_op_impl/tbe/scatter_nd_sub.py +0 -47
  1008. mindspore/ops/_op_impl/tbe/scatter_nd_sub_ds.py +0 -48
  1009. mindspore/ops/_op_impl/tbe/scatter_nd_update.py +0 -47
  1010. mindspore/ops/_op_impl/tbe/scatter_nd_update_ds.py +0 -48
  1011. mindspore/ops/_op_impl/tbe/scatter_non_aliasing_add.py +0 -39
  1012. mindspore/ops/_op_impl/tbe/scatter_non_aliasing_add_ds.py +0 -40
  1013. mindspore/ops/_op_impl/tbe/scatter_sub.py +0 -47
  1014. mindspore/ops/_op_impl/tbe/scatter_sub_ds.py +0 -48
  1015. mindspore/ops/_op_impl/tbe/scatter_update.py +0 -43
  1016. mindspore/ops/_op_impl/tbe/select.py +0 -38
  1017. mindspore/ops/_op_impl/tbe/select_ds.py +0 -39
  1018. mindspore/ops/_op_impl/tbe/selu.py +0 -39
  1019. mindspore/ops/_op_impl/tbe/selu_ds.py +0 -40
  1020. mindspore/ops/_op_impl/tbe/sgd.py +0 -62
  1021. mindspore/ops/_op_impl/tbe/sigmoid.py +0 -37
  1022. mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits.py +0 -41
  1023. mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits_ds.py +0 -42
  1024. mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits_grad.py +0 -42
  1025. mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits_grad_ds.py +0 -43
  1026. mindspore/ops/_op_impl/tbe/sigmoid_ds.py +0 -38
  1027. mindspore/ops/_op_impl/tbe/sigmoid_grad.py +0 -39
  1028. mindspore/ops/_op_impl/tbe/sigmoid_grad_ds.py +0 -40
  1029. mindspore/ops/_op_impl/tbe/sign.py +0 -38
  1030. mindspore/ops/_op_impl/tbe/sign_ds.py +0 -39
  1031. mindspore/ops/_op_impl/tbe/sin.py +0 -37
  1032. mindspore/ops/_op_impl/tbe/sin_ds.py +0 -38
  1033. mindspore/ops/_op_impl/tbe/sinh.py +0 -37
  1034. mindspore/ops/_op_impl/tbe/sinh_ds.py +0 -38
  1035. mindspore/ops/_op_impl/tbe/slice.py +0 -58
  1036. mindspore/ops/_op_impl/tbe/smooth_l1_loss.py +0 -45
  1037. mindspore/ops/_op_impl/tbe/smooth_l1_loss_ds.py +0 -46
  1038. mindspore/ops/_op_impl/tbe/smooth_l1_loss_grad.py +0 -46
  1039. mindspore/ops/_op_impl/tbe/smooth_l1_loss_grad_ds.py +0 -47
  1040. mindspore/ops/_op_impl/tbe/soft_margin_loss.py +0 -38
  1041. mindspore/ops/_op_impl/tbe/soft_margin_loss_grad.py +0 -39
  1042. mindspore/ops/_op_impl/tbe/soft_shrink.py +0 -36
  1043. mindspore/ops/_op_impl/tbe/soft_shrink_grad.py +0 -38
  1044. mindspore/ops/_op_impl/tbe/softmax.py +0 -37
  1045. mindspore/ops/_op_impl/tbe/softmax_cross_entropy_with_logits.py +0 -38
  1046. mindspore/ops/_op_impl/tbe/softmax_cross_entropy_with_logits_ds.py +0 -39
  1047. mindspore/ops/_op_impl/tbe/softmax_ds.py +0 -38
  1048. mindspore/ops/_op_impl/tbe/softmax_grad_ext.py +0 -42
  1049. mindspore/ops/_op_impl/tbe/softmax_v2_with_dropout_do_mask_v3.py +0 -39
  1050. mindspore/ops/_op_impl/tbe/softplus.py +0 -37
  1051. mindspore/ops/_op_impl/tbe/softplus_ds.py +0 -38
  1052. mindspore/ops/_op_impl/tbe/softplus_grad.py +0 -38
  1053. mindspore/ops/_op_impl/tbe/softplus_grad_ds.py +0 -38
  1054. mindspore/ops/_op_impl/tbe/softsign.py +0 -37
  1055. mindspore/ops/_op_impl/tbe/softsign_ds.py +0 -38
  1056. mindspore/ops/_op_impl/tbe/sort.py +0 -38
  1057. mindspore/ops/_op_impl/tbe/sort_ds.py +0 -39
  1058. mindspore/ops/_op_impl/tbe/space_to_batch.py +0 -38
  1059. mindspore/ops/_op_impl/tbe/space_to_batch_nd.py +0 -38
  1060. mindspore/ops/_op_impl/tbe/space_to_depth.py +0 -47
  1061. mindspore/ops/_op_impl/tbe/sparse_apply_adadelta.py +0 -56
  1062. mindspore/ops/_op_impl/tbe/sparse_apply_adagrad.py +0 -45
  1063. mindspore/ops/_op_impl/tbe/sparse_apply_adagrad_ds.py +0 -46
  1064. mindspore/ops/_op_impl/tbe/sparse_apply_adagrad_v2.py +0 -46
  1065. mindspore/ops/_op_impl/tbe/sparse_apply_adagrad_v2_ds.py +0 -47
  1066. mindspore/ops/_op_impl/tbe/sparse_apply_ftrl_d.py +0 -53
  1067. mindspore/ops/_op_impl/tbe/sparse_apply_ftrl_d_ds.py +0 -50
  1068. mindspore/ops/_op_impl/tbe/sparse_apply_ftrl_v2.py +0 -50
  1069. mindspore/ops/_op_impl/tbe/sparse_apply_proximal_adagrad.py +0 -66
  1070. mindspore/ops/_op_impl/tbe/sparse_apply_proximal_adagrad_ds.py +0 -67
  1071. mindspore/ops/_op_impl/tbe/sparse_apply_r_m_s_prop.py +0 -57
  1072. mindspore/ops/_op_impl/tbe/sparse_apply_r_m_s_prop_ds.py +0 -58
  1073. mindspore/ops/_op_impl/tbe/sparse_gather_v2.py +0 -56
  1074. mindspore/ops/_op_impl/tbe/sparse_gather_v2_ds.py +0 -58
  1075. mindspore/ops/_op_impl/tbe/split_d.py +0 -38
  1076. mindspore/ops/_op_impl/tbe/split_d_ds.py +0 -39
  1077. mindspore/ops/_op_impl/tbe/split_v.py +0 -39
  1078. mindspore/ops/_op_impl/tbe/splitv.py +0 -39
  1079. mindspore/ops/_op_impl/tbe/sqrt.py +0 -37
  1080. mindspore/ops/_op_impl/tbe/sqrt_ds.py +0 -38
  1081. mindspore/ops/_op_impl/tbe/sqrt_grad.py +0 -43
  1082. mindspore/ops/_op_impl/tbe/sqrt_grad_ds.py +0 -44
  1083. mindspore/ops/_op_impl/tbe/square.py +0 -38
  1084. mindspore/ops/_op_impl/tbe/square_ds.py +0 -39
  1085. mindspore/ops/_op_impl/tbe/square_sum_all.py +0 -40
  1086. mindspore/ops/_op_impl/tbe/square_sum_all_ds.py +0 -41
  1087. mindspore/ops/_op_impl/tbe/square_sum_v1.py +0 -38
  1088. mindspore/ops/_op_impl/tbe/square_sum_v1_ds.py +0 -39
  1089. mindspore/ops/_op_impl/tbe/square_sum_v2.py +0 -39
  1090. mindspore/ops/_op_impl/tbe/squared_difference.py +0 -39
  1091. mindspore/ops/_op_impl/tbe/squared_difference_ds.py +0 -41
  1092. mindspore/ops/_op_impl/tbe/squeeze.py +0 -37
  1093. mindspore/ops/_op_impl/tbe/strided_read.py +0 -38
  1094. mindspore/ops/_op_impl/tbe/strided_slice_d.py +0 -44
  1095. mindspore/ops/_op_impl/tbe/strided_slice_ds.py +0 -71
  1096. mindspore/ops/_op_impl/tbe/strided_slice_grad_d.py +0 -51
  1097. mindspore/ops/_op_impl/tbe/strided_slice_grad_ds.py +0 -57
  1098. mindspore/ops/_op_impl/tbe/strided_write.py +0 -38
  1099. mindspore/ops/_op_impl/tbe/sub.py +0 -39
  1100. mindspore/ops/_op_impl/tbe/sub_ds.py +0 -40
  1101. mindspore/ops/_op_impl/tbe/tan.py +0 -38
  1102. mindspore/ops/_op_impl/tbe/tan_ds.py +0 -39
  1103. mindspore/ops/_op_impl/tbe/tanh.py +0 -37
  1104. mindspore/ops/_op_impl/tbe/tanh_ds.py +0 -38
  1105. mindspore/ops/_op_impl/tbe/tanh_grad.py +0 -39
  1106. mindspore/ops/_op_impl/tbe/tanh_grad_ds.py +0 -40
  1107. mindspore/ops/_op_impl/tbe/tensor_move.py +0 -49
  1108. mindspore/ops/_op_impl/tbe/tensor_move_ds.py +0 -50
  1109. mindspore/ops/_op_impl/tbe/tensor_scatter_update.py +0 -41
  1110. mindspore/ops/_op_impl/tbe/tile.py +0 -37
  1111. mindspore/ops/_op_impl/tbe/tile_ds.py +0 -42
  1112. mindspore/ops/_op_impl/tbe/top_k.py +0 -42
  1113. mindspore/ops/_op_impl/tbe/top_k_ds.py +0 -43
  1114. mindspore/ops/_op_impl/tbe/trans_data.py +0 -167
  1115. mindspore/ops/_op_impl/tbe/trans_data_ds.py +0 -180
  1116. mindspore/ops/_op_impl/tbe/trans_data_rnn.py +0 -44
  1117. mindspore/ops/_op_impl/tbe/transpose.py +0 -60
  1118. mindspore/ops/_op_impl/tbe/transpose_d.py +0 -47
  1119. mindspore/ops/_op_impl/tbe/transpose_nod.py +0 -60
  1120. mindspore/ops/_op_impl/tbe/trunc.py +0 -39
  1121. mindspore/ops/_op_impl/tbe/truncate_div.py +0 -41
  1122. mindspore/ops/_op_impl/tbe/truncate_div_ds.py +0 -42
  1123. mindspore/ops/_op_impl/tbe/truncate_mod.py +0 -41
  1124. mindspore/ops/_op_impl/tbe/truncate_mod_ds.py +0 -42
  1125. mindspore/ops/_op_impl/tbe/unpack.py +0 -38
  1126. mindspore/ops/_op_impl/tbe/unpack_ds.py +0 -39
  1127. mindspore/ops/_op_impl/tbe/unsorted_segment_max.py +0 -49
  1128. mindspore/ops/_op_impl/tbe/unsorted_segment_max_ds.py +0 -40
  1129. mindspore/ops/_op_impl/tbe/unsorted_segment_min.py +0 -49
  1130. mindspore/ops/_op_impl/tbe/unsorted_segment_min_ds.py +0 -40
  1131. mindspore/ops/_op_impl/tbe/unsorted_segment_prod.py +0 -49
  1132. mindspore/ops/_op_impl/tbe/unsorted_segment_prod_ds.py +0 -38
  1133. mindspore/ops/_op_impl/tbe/unsorted_segment_sum.py +0 -38
  1134. mindspore/ops/_op_impl/tbe/unsorted_segment_sum_ds.py +0 -41
  1135. mindspore/ops/_op_impl/tbe/wts_arq.py +0 -40
  1136. mindspore/ops/_op_impl/tbe/xdivy.py +0 -38
  1137. mindspore/ops/_op_impl/tbe/xdivy_ds.py +0 -39
  1138. mindspore/ops/_op_impl/tbe/xlogy.py +0 -38
  1139. mindspore/ops/_op_impl/tbe/xlogy_ds.py +0 -39
  1140. mindspore/ops/_op_impl/tbe/zeros_like.py +0 -41
  1141. mindspore/ops/_op_impl/tbe/zeros_like_ds.py +0 -42
  1142. mindspore/ops/_tracefunc.py +0 -241
  1143. mindspore/ops/arg_dtype_cast.py +0 -54
  1144. mindspore/rewrite/api/tree_node_helper.py +0 -60
  1145. mindspore/rewrite/ast_helpers/ast_creator.py +0 -115
  1146. mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +0 -267
  1147. mindspore/rewrite/ast_transformers/remove_return_out_of_if.py +0 -228
  1148. mindspore/rewrite/namespace.py +0 -53
  1149. mindspore-2.2.11.dist-info/RECORD +0 -1920
  1150. {mindspore-2.2.11.dist-info → mindspore-2.3.0.dist-info}/WHEEL +0 -0
  1151. {mindspore-2.2.11.dist-info → mindspore-2.3.0.dist-info}/top_level.txt +0 -0
@@ -51,17 +51,12 @@ class ReduceOp:
51
51
  .. note::
52
52
  Before running the following examples, you need to configure the communication environment variables.
53
53
 
54
- For the Ascend devices, users need to prepare the rank table, set rank_id and device_id.
55
- Please see the `rank table Startup
56
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/rank_table.html>`_
54
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
55
+ without any third-party or configuration file dependencies.
56
+ Please see the `msrun start up
57
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
57
58
  for more details.
58
59
 
59
- For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
60
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
61
-
62
- For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
63
- Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
64
-
65
60
  This example should be run with multiple devices.
66
61
 
67
62
  >>> import numpy as np
@@ -94,7 +89,7 @@ class ReduceOp:
94
89
 
95
90
  def check_collective_target_dtype(data_name, data_dtype, prim_name):
96
91
  """Check if data type is valid."""
97
- default_target_dtypes = (mstype.int8, mstype.uint8, mstype.int32, mstype.float16, mstype.bfloat16, mstype.float32)
92
+ default_target_dtypes = (mstype.int8, mstype.int32, mstype.float16, mstype.float32, mstype.bfloat16)
98
93
  gpu_target_dtypes = (mstype.bool_, mstype.int8, mstype.int32, mstype.int64, mstype.uint32, mstype.uint64,
99
94
  mstype.float16, mstype.float32, mstype.float64)
100
95
 
@@ -113,15 +108,16 @@ def check_hcom_group_valid(group, prim_name=None):
113
108
 
114
109
  class AllReduce(Primitive):
115
110
  """
116
- Reduces the tensor data across all devices in such a way that all devices will get the same final result.
111
+ Reduces tensors across all devices in such a way that all devices will get the same final result,
112
+ returns the tensor which is all reduced.
117
113
 
118
114
  Note:
119
115
  The tensors must have the same shape and format in all processes of the collection.
120
116
 
121
117
  Args:
122
- op (str): Specifies an operation used for element-wise reductions, like sum, prod, max, and min.
118
+ op (str, optional): Specifies an operation used for element-wise reductions, like sum, prod, max, and min.
123
119
  On the CPU, only 'sum' is supported. Default: ``ReduceOp.SUM`` .
124
- group (str): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
120
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
125
121
  means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
126
122
 
127
123
  Inputs:
@@ -132,8 +128,8 @@ class AllReduce(Primitive):
132
128
  The contents depend on the specified operation.
133
129
 
134
130
  Raises:
135
- TypeError: If any of `op` and `group` is not a str,
136
- or fusion is not an integer, or the input's dtype is bool.
131
+ TypeError: If any of `op` and `group` is not a str or the input's dtype is bool.
132
+ RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
137
133
 
138
134
  Supported Platforms:
139
135
  ``Ascend`` ``GPU`` ``CPU``
@@ -142,17 +138,12 @@ class AllReduce(Primitive):
142
138
  .. note::
143
139
  Before running the following examples, you need to configure the communication environment variables.
144
140
 
145
- For the Ascend devices, users need to prepare the rank table, set rank_id and device_id.
146
- Please see the `rank table Startup
147
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/rank_table.html>`_
141
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
142
+ without any third-party or configuration file dependencies.
143
+ Please see the `msrun start up
144
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
148
145
  for more details.
149
146
 
150
- For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
151
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
152
-
153
- For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
154
- Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
155
-
156
147
  This example should be run with 2 devices.
157
148
 
158
149
  >>> import numpy as np
@@ -160,7 +151,7 @@ class AllReduce(Primitive):
160
151
  >>> from mindspore import Tensor
161
152
  >>> from mindspore.ops import ReduceOp
162
153
  >>> import mindspore.nn as nn
163
- >>> import mindspore.ops as ops
154
+ >>> from mindspore import ops
164
155
  >>>
165
156
  >>> init()
166
157
  >>> class Net(nn.Cell):
@@ -180,7 +171,7 @@ class AllReduce(Primitive):
180
171
 
181
172
  Tutorial Examples:
182
173
  - `Distributed Set Communication Primitives - AllReduce
183
- <https://www.mindspore.cn/docs/en/r2.2/api_python/samples/ops/communicate_ops.html#allreduce>`_
174
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#allreduce>`_
184
175
 
185
176
  """
186
177
 
@@ -200,16 +191,104 @@ class AllReduce(Primitive):
200
191
  self.add_prim_attr('no_eliminate', True)
201
192
 
202
193
 
194
+ class Reduce(PrimitiveWithInfer):
195
+ """
196
+ Reduces tensors across the processes in the specified communication group, sends the result
197
+ to the target dest_rank(local rank), and returns the tensor which is sent to the target process.
198
+
199
+ Note:
200
+ Only process with destination rank receives the reduced output.
201
+ Support PyNative mode and Graph mode, but Graph mode only supports scenes with a graph compilation level of O0.
202
+ Other processes only get a tensor with shape [1], which has no mathematical meaning.
203
+
204
+ Args:
205
+ dest_rank (int): The target process(local rank) in the specific group that receives the reduced output.
206
+ op (str, optional): Specifies an operation used for element-wise reductions, like sum, prod, max, and min.
207
+ On the CPU, only 'sum' is supported. Default: ``ReduceOp.SUM`` .
208
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
209
+ means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
210
+
211
+ Inputs:
212
+ - **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
213
+
214
+ Outputs:
215
+ Tensor. Return the tensor in the specific rank of the process after reduction.
216
+ The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
217
+
218
+ Raises:
219
+ TypeError: If the type of the first input parameter is not Tensor,
220
+ or any of `op` and `group` is not a str.
221
+ RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
222
+
223
+ Supported Platforms:
224
+ ``Ascend``
225
+
226
+ Examples:
227
+ .. note::
228
+ Before running the following examples, you need to configure the communication environment variables.
229
+
230
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method without any third-party
231
+ or configuration file dependencies.
232
+ Please see the `msrun start up
233
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
234
+ for more details.
235
+
236
+ This example should be run with 4 devices.
237
+
238
+ >>> from mindspore import ops
239
+ >>> import mindspore.nn as nn
240
+ >>> from mindspore.communication import init
241
+ >>> from mindspore import Tensor
242
+ >>> import numpy as np
243
+ >>> # Launch 4 processes.
244
+ >>> init()
245
+ >>> class ReduceNet(nn.Cell):
246
+ >>> def __init__(self):
247
+ >>> super(Net, self).__init__()
248
+ >>> self.reduce = ops.Reduce(dest_rank=1)
249
+ >>>
250
+ >>> def construct(self, x):
251
+ >>> out = self.reduce(x)
252
+ >>> return out
253
+ >>> input = Tensor(np.ones([2, 8]).astype(np.float32))
254
+ >>> net = ReduceNet()
255
+ >>> output = net(input)
256
+ >>> print(output)
257
+ Process with rank 1: [[4. 4. 4. 4. 4. 4. 4. 4.]
258
+ [4. 4. 4. 4. 4. 4. 4. 4.]],
259
+ Other proesses: [0.].
260
+ """
261
+
262
+ @prim_attr_register
263
+ def __init__(self, dest_rank, op=ReduceOp.SUM, group=GlobalComm.WORLD_COMM_GROUP):
264
+ validator.check_value_type('group', _get_group(group), (str,), self.name)
265
+ validator.check_value_type('op', op, (type(ReduceOp.SUM),), self.name)
266
+ self.dest_rank = dest_rank
267
+ self.op = op
268
+ self.group = _get_group(group)
269
+ self.add_prim_attr('group', _get_group(group))
270
+ self.add_prim_attr('dest_rank', dest_rank)
271
+
272
+ def infer_shape(self, x_shape):
273
+ # The process with dest_rank returns the reduced output.
274
+ # Other processes only gets a tensor with shape [1], which has no mathematical meaning.
275
+ if self.dest_rank == get_rank():
276
+ return x_shape
277
+ return [1]
278
+
279
+ def infer_dtype(self, x_dtype):
280
+ return x_dtype
281
+
282
+
203
283
  class AllGather(PrimitiveWithInfer):
204
284
  """
205
- Gathers tensors from the specified communication group.
285
+ Gathers tensors from the specified communication group and returns the tensor which is all gathered.
206
286
 
207
287
  Note:
208
288
  - The tensors must have the same shape and format in all processes of the collection.
209
- - Currently only supports GRAPH_MODE and it should be called in Cell.
210
289
 
211
290
  Args:
212
- group (str): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
291
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
213
292
  means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
214
293
 
215
294
  Inputs:
@@ -223,6 +302,7 @@ class AllGather(PrimitiveWithInfer):
223
302
  TypeError: If `group` is not a str.
224
303
  ValueError: If the local rank id of the calling process in the group
225
304
  is larger than the group's rank size.
305
+ RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
226
306
 
227
307
  Supported Platforms:
228
308
  ``Ascend`` ``GPU``
@@ -231,22 +311,17 @@ class AllGather(PrimitiveWithInfer):
231
311
  .. note::
232
312
  Before running the following examples, you need to configure the communication environment variables.
233
313
 
234
- For the Ascend devices, users need to prepare the rank table, set rank_id and device_id.
235
- Please see the `rank table Startup
236
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/rank_table.html>`_
314
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
315
+ without any third-party or configuration file dependencies.
316
+ Please see the `msrun start up
317
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
237
318
  for more details.
238
319
 
239
- For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
240
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
241
-
242
- For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
243
- Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
244
-
245
320
  This example should be run with 2 devices.
246
321
 
247
322
  >>> import numpy as np
248
323
  >>> import mindspore as ms
249
- >>> import mindspore.ops as ops
324
+ >>> from mindspore import ops
250
325
  >>> import mindspore.nn as nn
251
326
  >>> from mindspore.communication import init
252
327
  >>> from mindspore import Tensor
@@ -272,7 +347,7 @@ class AllGather(PrimitiveWithInfer):
272
347
 
273
348
  Tutorial Examples:
274
349
  - `Distributed Set Communication Primitives - AllGather
275
- <https://www.mindspore.cn/docs/en/r2.2/api_python/samples/ops/communicate_ops.html#allgather>`_
350
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#allgather>`_
276
351
 
277
352
  """
278
353
 
@@ -300,6 +375,25 @@ class AllGather(PrimitiveWithInfer):
300
375
  return x_dtype
301
376
 
302
377
 
378
+ class AShardIdentity(PrimitiveWithInfer):
379
+ """
380
+ Auto parallel virtual operator. Identity operator only for shard function.
381
+ Do nothing in terms of infer_shape, infer_dtype, and the tensor.
382
+
383
+ It is only for internal use of parallel modules and cannot be called by users.
384
+ """
385
+
386
+ @prim_attr_register
387
+ def __init__(self):
388
+ pass
389
+
390
+ def infer_shape(self, x_shape):
391
+ return x_shape
392
+
393
+ def infer_dtype(self, x_dtype):
394
+ return x_dtype
395
+
396
+
303
397
  class _MiniStepAllGather(PrimitiveWithInfer):
304
398
  """
305
399
  Auto parallel virtual operator. Do nothing in forward, do reducescatter in backward in mini-step. It is only for
@@ -427,7 +521,8 @@ class _HostAllGather(PrimitiveWithInfer):
427
521
 
428
522
  class ReduceScatter(Primitive):
429
523
  r"""
430
- Reduces and scatters tensors from the specified communication group.
524
+ Reduces and scatters tensors from the specified communication group
525
+ and returns the tensor which is reduced and scattered.
431
526
 
432
527
  Note:
433
528
  The tensors must have the same shape and format in all processes of the collection.
@@ -448,6 +543,7 @@ class ReduceScatter(Primitive):
448
543
  Raises:
449
544
  TypeError: If any of operation and group is not a string.
450
545
  ValueError: If the first dimension of the input cannot be divided by the rank_size.
546
+ RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
451
547
 
452
548
  Supported Platforms:
453
549
  ``Ascend`` ``GPU``
@@ -456,17 +552,12 @@ class ReduceScatter(Primitive):
456
552
  .. note::
457
553
  Before running the following examples, you need to configure the communication environment variables.
458
554
 
459
- For the Ascend devices, users need to prepare the rank table, set rank_id and device_id.
460
- Please see the `rank table Startup
461
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/rank_table.html>`_
555
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
556
+ without any third-party or configuration file dependencies.
557
+ Please see the `msrun start up
558
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
462
559
  for more details.
463
560
 
464
- For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
465
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
466
-
467
- For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
468
- Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
469
-
470
561
  This example should be run with 2 devices.
471
562
 
472
563
  >>> import mindspore as ms
@@ -474,7 +565,7 @@ class ReduceScatter(Primitive):
474
565
  >>> from mindspore.communication import init
475
566
  >>> from mindspore.ops import ReduceOp
476
567
  >>> import mindspore.nn as nn
477
- >>> import mindspore.ops as ops
568
+ >>> from mindspore import ops
478
569
  >>> import numpy as np
479
570
  >>>
480
571
  >>> ms.set_context(mode=ms.GRAPH_MODE)
@@ -498,7 +589,7 @@ class ReduceScatter(Primitive):
498
589
 
499
590
  Tutorial Examples:
500
591
  - `Distributed Set Communication Primitives - ReduceScatter
501
- <https://www.mindspore.cn/docs/en/r2.2/api_python/samples/ops/communicate_ops.html#reducescatter>`_
592
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#reducescatter>`_
502
593
 
503
594
  """
504
595
 
@@ -577,12 +668,12 @@ class Broadcast(PrimitiveWithInfer):
577
668
  The tensors must have the same shape and format in all processes of the collection.
578
669
 
579
670
  Args:
580
- root_rank (int): Source rank. Required in all processes except the one
581
- that is sending the data.
671
+ root_rank (int): Specifies the rank(global rank) of the process that broadcast the tensor.
672
+ And only process `root_rank` will broadcast the tensor.
582
673
  group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` .
583
674
 
584
675
  Inputs:
585
- - **input_x** (tuple[Tensor]) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
676
+ - **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
586
677
 
587
678
  Outputs:
588
679
  tuple[Tensor], Tensor has the same shape of the input, i.e., :math:`(x_1, x_2, ..., x_R)`.
@@ -598,24 +689,19 @@ class Broadcast(PrimitiveWithInfer):
598
689
  .. note::
599
690
  Before running the following examples, you need to configure the communication environment variables.
600
691
 
601
- For the Ascend devices, users need to prepare the rank table, set rank_id and device_id.
602
- Please see the `rank table Startup
603
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/rank_table.html>`_
692
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
693
+ without any third-party or configuration file dependencies.
694
+ Please see the `msrun start up
695
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
604
696
  for more details.
605
697
 
606
- For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
607
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
608
-
609
- For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
610
- Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
611
-
612
- This example should be run with multiple devices.
698
+ This example should be run with 2 devices.
613
699
 
614
700
  >>> import mindspore as ms
615
701
  >>> from mindspore import Tensor
616
702
  >>> from mindspore.communication import init
617
703
  >>> import mindspore.nn as nn
618
- >>> import mindspore.ops as ops
704
+ >>> from mindspore import ops
619
705
  >>> import numpy as np
620
706
  >>>
621
707
  >>> ms.set_context(mode=ms.GRAPH_MODE)
@@ -638,7 +724,7 @@ class Broadcast(PrimitiveWithInfer):
638
724
 
639
725
  Tutorial Examples:
640
726
  - `Distributed Set Communication Primitives - Broadcast
641
- <https://www.mindspore.cn/docs/en/r2.2/api_python/samples/ops/communicate_ops.html#broadcast>`_
727
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#broadcast>`_
642
728
 
643
729
  """
644
730
 
@@ -651,16 +737,6 @@ class Broadcast(PrimitiveWithInfer):
651
737
  self.add_prim_attr('group', _get_group(group))
652
738
  self.add_prim_attr('no_eliminate', True)
653
739
 
654
- def infer_shape(self, x_shape):
655
- return x_shape
656
-
657
- def infer_dtype(self, x_dtype):
658
- if not isinstance(x_dtype, tuple):
659
- raise TypeError(f"For '{self.name}', the 'input_x' must be a tuple, but got {type(x_dtype).__name__}!")
660
- for _ele in x_dtype:
661
- check_collective_target_dtype('tuple input_x', _ele, self.name)
662
- return x_dtype
663
-
664
740
 
665
741
  class _AllSwap(PrimitiveWithCheck):
666
742
  """
@@ -728,11 +804,11 @@ class NeighborExchange(Primitive):
728
804
  The user needs to preset
729
805
  communication environment variables before running the following example, please check the details on the
730
806
  official website of `MindSpore \
731
- <https://www.mindspore.cn/docs/en/r2.2/api_python/mindspore.ops.primitive.html#communication-operator>`_.
807
+ <https://www.mindspore.cn/docs/en/master/api_python/mindspore.ops.primitive.html#communication-operator>`_.
732
808
 
733
809
  This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
734
810
  in the same subnet, please check the `details \
735
- <https://www.mindspore.cn/docs/en/r2.2/api_python/samples/ops/communicate_ops.html#notes>`_.
811
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
736
812
 
737
813
  Args:
738
814
  send_rank_ids (list(int)): Ranks which the data is sent to.
@@ -758,7 +834,7 @@ class NeighborExchange(Primitive):
758
834
  >>> from mindspore import Tensor
759
835
  >>> from mindspore.communication import init
760
836
  >>> import mindspore.nn as nn
761
- >>> import mindspore.ops as ops
837
+ >>> from mindspore import ops
762
838
  >>> import numpy as np
763
839
  >>> class Net(nn.Cell):
764
840
  ... def __init__(self):
@@ -781,7 +857,7 @@ class NeighborExchange(Primitive):
781
857
 
782
858
  Tutorial Examples:
783
859
  - `Distributed Set Communication Primitives - NeighborExchange
784
- <https://www.mindspore.cn/docs/en/r2.2/api_python/samples/ops/communicate_ops.html#neighborexchange>`_
860
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#neighborexchange>`_
785
861
 
786
862
  """
787
863
 
@@ -814,7 +890,7 @@ class AlltoAll(PrimitiveWithInfer):
814
890
  Note:
815
891
  This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
816
892
  in the same subnet, please check the `details \
817
- <https://www.mindspore.cn/docs/en/r2.2/api_python/samples/ops/communicate_ops.html#notes>`_.
893
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
818
894
 
819
895
  Args:
820
896
  split_count (int): On each process, divide blocks into split_count number.
@@ -843,17 +919,12 @@ class AlltoAll(PrimitiveWithInfer):
843
919
  .. note::
844
920
  Before running the following examples, you need to configure the communication environment variables.
845
921
 
846
- For the Ascend devices, users need to prepare the rank table, set rank_id and device_id.
847
- Please see the `rank table Startup
848
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/rank_table.html>`_
922
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
923
+ without any third-party or configuration file dependencies.
924
+ Please see the `msrun start up
925
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
849
926
  for more details.
850
927
 
851
- For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
852
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
853
-
854
- For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
855
- Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
856
-
857
928
  This example should be run with 8 devices.
858
929
 
859
930
  >>> import os
@@ -861,7 +932,7 @@ class AlltoAll(PrimitiveWithInfer):
861
932
  >>> from mindspore import Tensor
862
933
  >>> from mindspore.communication import init
863
934
  >>> import mindspore.nn as nn
864
- >>> import mindspore.ops as ops
935
+ >>> from mindspore import ops
865
936
  >>> import numpy as np
866
937
  >>> class Net(nn.Cell):
867
938
  ... def __init__(self):
@@ -883,7 +954,7 @@ class AlltoAll(PrimitiveWithInfer):
883
954
 
884
955
  Tutorial Examples:
885
956
  - `Distributed Set Communication Primitives - AlltoAll
886
- <https://www.mindspore.cn/docs/en/r2.2/api_python/samples/ops/communicate_ops.html#alltoall>`_
957
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#alltoall>`_
887
958
 
888
959
  """
889
960
 
@@ -905,20 +976,20 @@ class AlltoAll(PrimitiveWithInfer):
905
976
  if self.split_count != rank_size:
906
977
  raise ValueError(f"For '{self.name}', the 'split_count' must be equal to 'rank_size', "
907
978
  f"but got 'split_count': {self.split_count}, 'rank_size': {rank_size}.")
908
- if x_shape[self.split_dim] % self.split_count != 0:
909
- raise ValueError(f"For '{self.name}', the 'split_count' must be divisible by 'rank_size', "
910
- f"but got 'split_count' {self.split_count}, 'rank_size' {x_shape[self.split_dim]}.")
911
- x_shape[self.concat_dim] = x_shape[self.concat_dim] * self.split_count
912
- x_shape[self.split_dim] = int(x_shape[self.split_dim] / self.split_count)
979
+ if x_shape[self.split_dim] >= 0 and x_shape[self.split_dim] % self.split_count != 0:
980
+ raise ValueError(f"For '{self.name}', the 'x_shape[self.split_dim]' must be divisible by 'split_count', "
981
+ f"but got 'x_shape[self.split_dim]' {x_shape[self.split_dim]}, "
982
+ f"'split_count' {self.split_count}.")
983
+ if x_shape[self.concat_dim] >= 0:
984
+ x_shape[self.concat_dim] = x_shape[self.concat_dim] * self.split_count
985
+ if x_shape[self.split_dim] >= 0:
986
+ x_shape[self.split_dim] = int(x_shape[self.split_dim] / self.split_count)
913
987
  return x_shape
914
988
 
915
989
  def infer_dtype(self, x_dtype):
916
990
  check_collective_target_dtype('x', x_dtype, self.name)
917
991
  return x_dtype
918
992
 
919
- def __call__(self, tensor):
920
- raise NotImplementedError
921
-
922
993
 
923
994
  class NeighborExchangeV2(Primitive):
924
995
  r"""
@@ -931,7 +1002,7 @@ class NeighborExchangeV2(Primitive):
931
1002
  Note:
932
1003
  This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
933
1004
  in the same subnet, please check the `details \
934
- <https://www.mindspore.cn/docs/en/r2.2/api_python/samples/ops/communicate_ops.html#notes>`_.
1005
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
935
1006
 
936
1007
  Args:
937
1008
  send_rank_ids (list(int)): Ranks which the data is sent to. 8 rank_ids represents 8 directions, if one
@@ -967,24 +1038,19 @@ class NeighborExchangeV2(Primitive):
967
1038
  .. note::
968
1039
  Before running the following examples, you need to configure the communication environment variables.
969
1040
 
970
- For the Ascend devices, users need to prepare the rank table, set rank_id and device_id.
971
- Please see the `rank table Startup
972
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/rank_table.html>`_
1041
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
1042
+ without any third-party or configuration file dependencies.
1043
+ Please see the `msrun start up
1044
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
973
1045
  for more details.
974
1046
 
975
- For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
976
- <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
977
-
978
- For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
979
- Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
980
-
981
1047
  This example should be run with 2 devices.
982
1048
 
983
1049
  >>> import os
984
1050
  >>> import mindspore as ms
985
1051
  >>> from mindspore.communication import init
986
1052
  >>> import mindspore.nn as nn
987
- >>> import mindspore.ops as ops
1053
+ >>> from mindspore import ops
988
1054
  >>> import numpy as np
989
1055
  >>>
990
1056
  >>> class Net0(nn.Cell):
@@ -998,7 +1064,6 @@ class NeighborExchangeV2(Primitive):
998
1064
  ... def construct(self, x):
999
1065
  ... out = self.neighbor_exchangev2(x)
1000
1066
  ... return out
1001
- >>>
1002
1067
  ... class Net1(nn.Cell):
1003
1068
  ... def __init__(self):
1004
1069
  ... super(Net1, self).__init__()
@@ -1028,7 +1093,7 @@ class NeighborExchangeV2(Primitive):
1028
1093
 
1029
1094
  Tutorial Examples:
1030
1095
  - `Distributed Set Communication Primitives - NeighborExchangeV2
1031
- <https://www.mindspore.cn/docs/en/r2.2/api_python/samples/ops/communicate_ops.html#neighborexchangev2>`_
1096
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#neighborexchangev2>`_
1032
1097
 
1033
1098
  """
1034
1099
 
@@ -1057,6 +1122,416 @@ class NeighborExchangeV2(Primitive):
1057
1122
  raise NotImplementedError
1058
1123
 
1059
1124
 
1125
+ class CollectiveScatter(Primitive):
1126
+ r"""
1127
+ Scatter tensor evently across the processes in the specified communication group.
1128
+
1129
+ Note:
1130
+ The interface behavior only support Tensor input and scatter evenly.
1131
+ Only the tensor in process `src_rank` (global rank) will do scatter.
1132
+
1133
+ Args:
1134
+ src_rank (int, optional): Specifies the rank of the process that send the tensor.
1135
+ And only process `src_rank` will send the tensor.
1136
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
1137
+
1138
+ Inputs:
1139
+ - **input_x** (Tensor) - The input tensor to be scattered. The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
1140
+
1141
+ Outputs:
1142
+ Tensor, the shape of output is :math:`(x_1/src\_rank, x_2, ..., x_R)`. The dimension 0 of data is equal to
1143
+ the dimension of input tensor divided by `src`, and the other dimension keep the same.
1144
+
1145
+ Raises:
1146
+ TypeError: If `group` is not a str.
1147
+ RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
1148
+ ValueError: If the local rank id of the calling process in the group
1149
+ is larger than the group's rank size.
1150
+
1151
+ Supported Platforms:
1152
+ ``Ascend``
1153
+
1154
+ Examples:
1155
+ .. note::
1156
+ Before running the following examples, you need to configure the communication environment variables.
1157
+
1158
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
1159
+ without any third-party or configuration file dependencies.
1160
+ Please see the `msrun start up
1161
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
1162
+ for more details.
1163
+
1164
+ This example should be run with 2 devices.
1165
+
1166
+ >>> import numpy as np
1167
+ >>> import mindspore.nn as nn
1168
+ >>> from mindspore import Tensor
1169
+ >>> from mindspore.communication.management import init, get_rank
1170
+ >>> from mindspore import ops
1171
+ >>> # Launch 2 processes.
1172
+ >>> init()
1173
+ >>> class CollectiveScatterNet(nn.Cell):
1174
+ >>> def __init__(self):
1175
+ >>> super(CollectiveScatter, self).__init__()
1176
+ >>> self.collective_scatter = ops.CollectiveScatter(src_rank=0)
1177
+ >>>
1178
+ >>> def construct(self, x):
1179
+ >>> return self.collective_scatter(x)
1180
+ >>>
1181
+ >>> input = Tensor(np.arange(8).reshape([4, 2]).astype(np.float32))
1182
+ >>> net = CollectiveScatterNet()
1183
+ >>> output = net(input)
1184
+ >>> print(output)
1185
+ Process with rank 0: [[0. 1.],
1186
+ [2. 3.]]
1187
+ Process with rank 1: [[4. 5.],
1188
+ [6. 7.]]
1189
+
1190
+ Tutorial Examples:
1191
+ - `Distributed Set Communication Primitives - CollectiveScatter
1192
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#reducescatter>`_
1193
+
1194
+ """
1195
+
1196
+ @prim_attr_register
1197
+ def __init__(self, src_rank=0, group=GlobalComm.WORLD_COMM_GROUP):
1198
+ validator.check_value_type('group', _get_group(group), (str,), self.name)
1199
+ self.rank_id = get_rank(_get_group(group))
1200
+ self.src_rank = src_rank
1201
+ self.rank_size = get_group_size(_get_group(group))
1202
+ validator.check('rank', self.rank_id, 'rank_size', self.rank_size, validator.LT, self.name)
1203
+ self.add_prim_attr('rank_id', self.rank_id)
1204
+ self.add_prim_attr('src_rank', self.src_rank)
1205
+ self.add_prim_attr('rank_size', self.rank_size)
1206
+ self.add_prim_attr('group', _get_group(group))
1207
+
1208
+
1209
+ class CollectiveGather(Primitive):
1210
+ r"""
1211
+ Gathers tensors from the specified communication group. The operation will gather the tensor
1212
+ from processes according to dimension 0.
1213
+
1214
+ Note:
1215
+ Only the tensor in process `dest_rank` (global rank) will keep the gathered tensor. The other process
1216
+ will keep a tensor with shape [1], which has no mathematical meaning.
1217
+
1218
+ Args:
1219
+ dest_rank(int): Specifies the rank of the process that receive the tensor.
1220
+ And only process `dest_rank` will receive the gathered tensor.
1221
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
1222
+
1223
+ Inputs:
1224
+ - **input_x** (Tensor) - The tensor to be gathered. The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
1225
+
1226
+ Outputs:
1227
+ Tensor, the shape of output is :math:`(\sum x_1, x_2, ..., x_R)`. The dimension 0 of data is equal to
1228
+ sum of the dimension of input tensor, and the other dimension keep the same.
1229
+
1230
+ Raises:
1231
+ TypeError: If `group` is not a str.
1232
+ RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
1233
+ ValueError: If the local rank id of the calling process in the group
1234
+ is larger than the group's rank size.
1235
+
1236
+ Supported Platforms:
1237
+ ``Ascend``
1238
+
1239
+ Examples:
1240
+ .. note::
1241
+ Before running the following examples, you need to configure the communication environment variables.
1242
+
1243
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
1244
+ without any third-party or configuration file dependencies.
1245
+ Please see the `msrun start up
1246
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
1247
+ for more details.
1248
+
1249
+ This example should be run with 4 devices.
1250
+
1251
+ >>> import numpy as np
1252
+ >>> import mindspore as ms
1253
+ >>> import mindspore.nn as nn
1254
+ >>> from mindspore.communication import init
1255
+ >>> from mindspore import Tensor
1256
+ >>> from mindspore import ops
1257
+ >>> # Launch 2 processes.
1258
+ >>>
1259
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
1260
+ >>> init()
1261
+ >>> class CollectiveGatherNet(nn.Cell):
1262
+ ... def __init__(self):
1263
+ ... super(CollectiveGatherNet, self).__init__()
1264
+ ... self.collective_gather = ops.CollectiveGather(dest_rank=0)
1265
+ ...
1266
+ ... def construct(self, x):
1267
+ ... return self.collective_gather(x)
1268
+ ...
1269
+ >>> input = Tensor(np.arange(4).reshape([2, 2]).astype(np.float32))
1270
+ >>> net = CollectiveGatherNet()
1271
+ >>> output = net(input)
1272
+ >>> print(output)
1273
+ Process with rank 0: [[0. 1.],
1274
+ [2. 3.],
1275
+ [0. 1.],
1276
+ [2. 3.]]
1277
+ Process with rank 1: [0.]
1278
+
1279
+ Tutorial Examples:
1280
+ - `Distributed Set Communication Primitives - CollectiveGather
1281
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#collectivegather>`_
1282
+
1283
+ """
1284
+
1285
+ @prim_attr_register
1286
+ def __init__(self, dest_rank, group=GlobalComm.WORLD_COMM_GROUP):
1287
+ """Initialize Gather."""
1288
+ validator.check_value_type('group', _get_group(group), (str,), self.name)
1289
+ self.rank_id = get_rank(_get_group(group))
1290
+ self.dest_rank = dest_rank
1291
+ self.rank_size = get_group_size(_get_group(group))
1292
+ validator.check('rank', self.rank_id, 'rank_size', self.rank_size, validator.LT, self.name)
1293
+ self.add_prim_attr('rank_size', self.rank_size)
1294
+ self.add_prim_attr('group', _get_group(group))
1295
+ self.add_prim_attr('dest_rank', self.dest_rank)
1296
+ self.add_prim_attr('rank_id', self.rank_id)
1297
+
1298
+
1299
+ class Barrier(PrimitiveWithInfer):
1300
+ """
1301
+ Synchronizes all processes in the specified group. Once the process call this operation, it will be blocked until
1302
+ all processes call this operation. After all processes finish calling the operations, the blocked processes
1303
+ will be waken and continue their task.
1304
+
1305
+ Args:
1306
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
1307
+
1308
+ Raises:
1309
+ TypeError: If `group` is not a str.
1310
+ RuntimeError: If backend is invalid, or distributed initialization fails.
1311
+ ValueError: If the local rank id of the calling process in the group
1312
+ is larger than the group's rank size.
1313
+
1314
+ Supported Platforms:
1315
+ ``Ascend``
1316
+
1317
+ Examples:
1318
+ .. note::
1319
+ Before running the following examples, you need to configure the communication environment variables.
1320
+
1321
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
1322
+ without any third-party or configuration file dependencies.
1323
+ Please see the `msrun start up
1324
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
1325
+ for more details.
1326
+
1327
+ This example should be run with 2 devices.
1328
+
1329
+ >>> import numpy as np
1330
+ >>> import mindspore.nn as nn
1331
+ >>> from mindspore.communication import init
1332
+ >>> from mindspore import Tensor
1333
+ >>> from mindspore import ops
1334
+ >>> # Launch 4 processes.
1335
+ >>> init()
1336
+ >>> class BarrierNet(nn.Cell):
1337
+ >>> def __init__(self):
1338
+ >>> super(BarrierNet, self).__init__()
1339
+ >>> self.barrier = ops.Barrier()
1340
+ >>>
1341
+ >>> def construct(self):
1342
+ >>> self.barrier()
1343
+ >>> net = BarrierNet()
1344
+ >>> net()
1345
+
1346
+ Tutorial Examples:
1347
+ - `Distributed Set Communication Primitives - Barrier
1348
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#barrier>`_
1349
+
1350
+ """
1351
+
1352
+ @prim_attr_register
1353
+ def __init__(self, group=GlobalComm.WORLD_COMM_GROUP):
1354
+ self.group = group
1355
+ self.add_prim_attr("side_effect_mem", True)
1356
+
1357
+ def infer_shape(self):
1358
+ return [1]
1359
+
1360
+ def infer_dtype(self):
1361
+ return mstype.float32
1362
+
1363
+
1364
+ class Send(PrimitiveWithInfer):
1365
+ """
1366
+ Send tensors to the specified dest_rank.
1367
+
1368
+ Note:
1369
+ Send and Receive must be used in combination and have same sr_tag.
1370
+
1371
+ Args:
1372
+ sr_tag (int): The tag to identify the send/recv message. The message will
1373
+ be received by the Receive op with the same "sr_tag".
1374
+ dest_rank (int): A required integer identifying the destination rank.
1375
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
1376
+ group_back (str, optional): The communication group for backpropagation.
1377
+ Default: ``GlobalComm.WORLD_COMM_GROUP``.
1378
+
1379
+ Inputs:
1380
+ - **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
1381
+
1382
+ Raises:
1383
+ TypeError: If `group` is not a str.
1384
+ RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
1385
+ ValueError: If the local rank id of the calling process in the group
1386
+ is larger than the group's rank size.
1387
+
1388
+ Supported Platforms:
1389
+ ``Ascend`` ``GPU``
1390
+
1391
+ Examples:
1392
+ .. note::
1393
+ Before running the following examples, you need to configure the communication environment variables.
1394
+
1395
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
1396
+ without any third-party or configuration file dependencies.
1397
+ Please see the `msrun start up
1398
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
1399
+ for more details.
1400
+
1401
+ This example should be run with 2 devices.
1402
+
1403
+ >>> import numpy as np
1404
+ >>> import mindspore.nn as nn
1405
+ >>> from mindspore.communication import init
1406
+ >>> from mindspore import Tensor
1407
+ >>> from mindspore import ops
1408
+ >>>
1409
+ >>> init()
1410
+ >>> class SendNet(nn.Cell):
1411
+ >>> def __init__(self):
1412
+ >>> super(SendNet, self).__init__()
1413
+ >>> self.depend = ops.Depend()
1414
+ >>> self.send = ops.Send(st_tag=0, dest_rank=8, group="hccl_world_group")
1415
+ >>>
1416
+ >>> def construct(self, x):
1417
+ >>> out = self.depend(x, self.send(x))
1418
+ >>> return out
1419
+ >>>
1420
+ >>> input_ = Tensor(np.ones([2, 8]).astype(np.float32))
1421
+ >>> net = Net()
1422
+ >>> output = net(input_)
1423
+
1424
+ Tutorial Examples:
1425
+ - `Distributed Set Communication Primitives - Send
1426
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#send>`_
1427
+
1428
+ """
1429
+
1430
+ @prim_attr_register
1431
+ def __init__(self, sr_tag, dest_rank, group=GlobalComm.WORLD_COMM_GROUP, group_back=GlobalComm.WORLD_COMM_GROUP):
1432
+ self.rank = dest_rank
1433
+ self.sr_tag = sr_tag
1434
+ self.group = group
1435
+ self.add_prim_attr("no_eliminate", True)
1436
+
1437
+ def infer_shape(self, x_shape):
1438
+ self.add_prim_attr("shape", x_shape)
1439
+ return x_shape
1440
+
1441
+ def infer_dtype(self, x_dtype):
1442
+ return x_dtype
1443
+
1444
+
1445
+ class Receive(PrimitiveWithInfer):
1446
+ """
1447
+ Receive tensors from src_rank.
1448
+
1449
+ Note:
1450
+ Send and Receive must be used in combination and have same sr_tag.
1451
+
1452
+ Args:
1453
+ sr_tag (int): A required integer identifying the send/recv message tag. The message will
1454
+ will be send by the Send op with the same "sr_tag".
1455
+ src_rank (int): A required integer identifying the source rank.
1456
+ shape (list[int]): A required list identifying the shape of the tensor to be received.
1457
+ dtype (Type): A required Type identifying the type of the tensor to be received. The supported types:
1458
+ int8/int16/int32/float16/float32.
1459
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
1460
+ group_back (str, optional): The communication group for backpropagation.
1461
+ Default: ``GlobalComm.WORLD_COMM_GROUP``.
1462
+
1463
+ Outputs:
1464
+ Tensor, output has the same shape as the Tensor sent by `Send` operation.
1465
+
1466
+ Raises:
1467
+ TypeError: If `group` is not a str.
1468
+ RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
1469
+ ValueError: If the local rank id of the calling process in the group
1470
+ is larger than the group's rank size.
1471
+
1472
+ Supported Platforms:
1473
+ ``Ascend`` ``GPU``
1474
+
1475
+ Examples:
1476
+ .. note::
1477
+ Before running the following examples, you need to configure the communication environment variables.
1478
+
1479
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
1480
+ without any third-party or configuration file dependencies.
1481
+ Please see the `msrun start up
1482
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
1483
+ for more details.
1484
+
1485
+ This example should be run with 2 devices.
1486
+
1487
+ >>> import numpy as np
1488
+ >>> import mindspore.nn as nn
1489
+ >>> from mindspore.communication import init
1490
+ >>> from mindspore import Tensor
1491
+ >>> from mindspore import ops
1492
+ >>>
1493
+ >>> init()
1494
+ >>> class ReceiveNet(nn.Cell):
1495
+ >>> def __init__(self):
1496
+ >>> super(ReceiveNet, self).__init__()
1497
+ >>> self.recv = ops.Receive(sr_tag=0, src_rank=0, shape=[2, 8], dtype=ms.float32,
1498
+ >>> group="hccl_world_group")
1499
+ >>>
1500
+ >>> def construct(self):
1501
+ >>> out = self.recv()
1502
+ >>> return out
1503
+ >>>
1504
+ >>> net = Net()
1505
+ >>> output = net()
1506
+
1507
+ Tutorial Examples:
1508
+ - `Distributed Set Communication Primitives - Receive
1509
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#receive>`_
1510
+
1511
+ """
1512
+
1513
+ @prim_attr_register
1514
+ def __init__(self, sr_tag, src_rank, shape, dtype, group=GlobalComm.WORLD_COMM_GROUP,
1515
+ group_back=GlobalComm.WORLD_COMM_GROUP):
1516
+ self.rank = src_rank
1517
+ self.tag = sr_tag
1518
+ self.shape = shape
1519
+ self.dtype = dtype
1520
+ self.group = group
1521
+ self.add_prim_attr("no_eliminate", True)
1522
+ valid_type = [mstype.float16, mstype.float32, mstype.float64, mstype.bfloat16,
1523
+ mstype.int8, mstype.int16, mstype.int32, mstype.int64,
1524
+ mstype.uint8, mstype.uint16, mstype.uint32, mstype.uint64]
1525
+ args = {"dtype": dtype}
1526
+ validator.check_scalar_or_tensor_types_same(args, valid_type, self.name)
1527
+
1528
+ def infer_shape(self, x_shape=None):
1529
+ return self.get_attr_dict()['shape']
1530
+
1531
+ def infer_dtype(self, x_dtype=None):
1532
+ return self.get_attr_dict()['dtype']
1533
+
1534
+
1060
1535
  class _MirrorOperator(PrimitiveWithInfer):
1061
1536
  """
1062
1537
  Auto parallel virtual operator. Do nothing in forward, do all reduce and mean in backward. It is only for
@@ -1220,8 +1695,6 @@ class _VirtualAssignAdd(PrimitiveWithInfer):
1220
1695
 
1221
1696
  def infer_dtype(self, x_dtype, y_dtype):
1222
1697
  return x_dtype
1223
-
1224
-
1225
1698
  virtual_assign_add = _VirtualAssignAdd()
1226
1699
 
1227
1700
 
@@ -1306,8 +1779,218 @@ class _GetTensorSlice(PrimitiveWithInfer):
1306
1779
  """Initialize _GetTensorSlice."""
1307
1780
  self.add_prim_attr('order_enforce_skip', True)
1308
1781
 
1309
- def infer_value(self, x, dev_mat, tensor_map):
1782
+ def infer_value(self, x, dev_mat, tensor_map, slice_shape, full_shape):
1310
1783
  from mindspore.parallel._tensor import _load_tensor
1311
1784
  validator.check_value_type("dev_mat", dev_mat, [tuple], self.name)
1312
1785
  validator.check_value_type("tensor_map", tensor_map, [tuple], self.name)
1313
- return Tensor(_load_tensor(x, dev_mat, tensor_map), x.dtype)
1786
+ tensor_slice = _load_tensor(x, dev_mat, tensor_map, full_shape)
1787
+ if tensor_slice.shape != slice_shape:
1788
+ tensor_slice = tensor_slice.reshape(slice_shape)
1789
+ return Tensor(tensor_slice, x.dtype)
1790
+
1791
+
1792
+ class BatchISendIRecv(PrimitiveWithInfer):
1793
+ """
1794
+ Batch send and recv tensors asynchronously.
1795
+
1796
+ Note:
1797
+ - The ``isend`` and ``irecv`` in ``op_types`` between ranks need to match each other.
1798
+ - ``isend`` and ``irecv`` in a batch can only be used in the same communication group.
1799
+
1800
+ Args:
1801
+ op_types(Union[tuple[str], list[str]]): "isend" or "irecv" to indicate the order and number of communication.
1802
+ remote_ranks(Union[tuple[int], list[int]]): src or dst rank that matches the op_types.
1803
+ receive_shapes(Union[tuple[int], list[int]]): receive tensor shapes that matches "irecv" in op_types.
1804
+ receive_types(Union[tuple[mindspore.dtype], list[mindspore.dtype]]): receive tensor dtype
1805
+ that matches "irecv" in op_types.
1806
+ group (str): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``, which
1807
+ means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
1808
+
1809
+ Inputs:
1810
+ - **input_x** (Union[tuple[Tensor], list[Tensor], tuple(None)]) -
1811
+ The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
1812
+
1813
+ Outputs:
1814
+ tuple(Tensor). Output tensors is corresponding to ``op_types``:
1815
+ At ``"isend"`` position, output tensor is a fake tensor with scalar, which has no meaning.
1816
+ At ``"irecv"`` position, output tensor is a tensor received from remote end.
1817
+
1818
+
1819
+ Raises:
1820
+ TypeError: If ``group`` is not a str.
1821
+ TypeError: If ``op_types``, ``receive_shapes``, ``receive_dtypes``, ``remote_ranks`` are not tuple or list.
1822
+ ValueError: If the length of ``receive_shapes`` and ``receive_dtypes`` are not the same.
1823
+ ValueError: If the length of ``op_types`` and ``remote_ranks`` are not the same.
1824
+ RuntimeError: If the length of input tensors and ``"isend"`` count are not the same.
1825
+
1826
+ Supported Platforms:
1827
+ ``Ascend``
1828
+
1829
+ Examples:
1830
+ .. note::
1831
+ Before running the following examples, you need to configure the communication environment variables.
1832
+
1833
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
1834
+ without any third-party or configuration file dependencies.
1835
+
1836
+ Please see the `msrun start up
1837
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
1838
+ for more details.
1839
+
1840
+ This example should be run with 2 devices.
1841
+
1842
+ >>> import numpy as np
1843
+ >>> import mindspore as ms
1844
+ >>> from mindspore import ops
1845
+ >>> import mindspore.nn as nn
1846
+ >>> from mindspore.communication import init, get_rank
1847
+ >>> from mindspore import Tensor
1848
+ >>>
1849
+ >>> init()
1850
+ >>> rank = get_rank()
1851
+ >>> class Net(nn.Cell):
1852
+ ... def __init__(self):
1853
+ ... super(Net, self).__init__()
1854
+ ... if rank == 0:
1855
+ ... remote_rank = [1, 1]
1856
+ ... else:
1857
+ ... remote_rank = [0, 0]
1858
+ ... self.batchisendirecv = ops.BatchISendIRecv(("isend", "irecv"), remote_rank, [()], (ms.float32,))
1859
+ ...
1860
+ ... def construct(self, x):
1861
+ ... if isinstance(x, Tensor):
1862
+ ... x = (x,)
1863
+ ... return self.batchisendirecv(x)
1864
+ ...
1865
+ >>> send_x = Tensor(rank + 1).astype(ms.float32)
1866
+ >>> net = Net()
1867
+ >>> output = net(send_x)
1868
+ >>> print(output)
1869
+ rank 0:
1870
+ (Tensor(shape=[], dtype=Float32, value= 0), Tensor(shape=[], dtype=Float32, value= 2))
1871
+ rank 1:
1872
+ (Tensor(shape=[], dtype=Float32, value= 0), Tensor(shape=[], dtype=Float32, value= 1))
1873
+
1874
+ Tutorial Examples:
1875
+ - `Distributed Set Communication Primitives - BatchISendIRecv
1876
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#allgather>`_
1877
+
1878
+ """
1879
+
1880
+ @prim_attr_register
1881
+ def __init__(self, op_types, remote_ranks, receive_shapes=None,
1882
+ receive_dtypes=None, group=GlobalComm.WORLD_COMM_GROUP):
1883
+ if receive_shapes is None:
1884
+ receive_shapes = ()
1885
+ else:
1886
+ validator.check_value_type("receive_shapes", receive_shapes, [tuple, list], self.name)
1887
+
1888
+ if receive_dtypes is None:
1889
+ receive_dtypes = ()
1890
+ else:
1891
+ validator.check_value_type("receive_dtypes", receive_dtypes, [tuple, list], self.name)
1892
+
1893
+ validator.check_value_type("op_types", op_types, [tuple, list], self.name)
1894
+ validator.check_value_type("remote_ranks", remote_ranks, [tuple, list], self.name)
1895
+
1896
+ if len(receive_shapes) != len(receive_dtypes):
1897
+ raise ValueError("length of receive_shapes and receive_shapes must be the same, "
1898
+ f"but got receive_shapes: {len(receive_shapes)} "
1899
+ f" and receive_shapes: {receive_dtypes}")
1900
+
1901
+ if len(op_types) != len(remote_ranks):
1902
+ raise ValueError("length of op_types and remote_ranks must be the same.")
1903
+
1904
+ if group is None:
1905
+ group = GlobalComm.WORLD_COMM_GROUP
1906
+ self.add_prim_attr('group', group)
1907
+ self.add_prim_attr('op_types', op_types)
1908
+ self.add_prim_attr('remote_ranks', remote_ranks)
1909
+ self.add_prim_attr('receive_shapes', receive_shapes)
1910
+ self.add_prim_attr('receive_dtypes', receive_dtypes)
1911
+ self.add_prim_attr('no_eliminate', True)
1912
+
1913
+
1914
+ class AlltoAllV(PrimitiveWithInfer):
1915
+ """
1916
+ AllToAll which support uneven split.
1917
+
1918
+ Note:
1919
+ - Only support flatten tensor as input. input tensor should be flattened and
1920
+ concatenated before call this primitive.
1921
+
1922
+ Args:
1923
+ send_numel_list(Union[tuple[int], list[int]]): split numel to scatter to different remote rank.
1924
+ recv_numel_list(Union[tuple[int], list[int]]): split numel to gather from different remote rank.
1925
+ group (str): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``, which
1926
+ means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
1927
+
1928
+ Inputs:
1929
+ - **input_x** (Tensor) - flatten tensor to scatter. The shape of tensor is :math:`(x_1)`.
1930
+
1931
+ Outputs:
1932
+ Tensor. flattened and concatenated tensor gather from remote ranks.
1933
+ If gather result is empty, it will return a Tensor with value 0, which has no actual meaning.
1934
+
1935
+ Raises:
1936
+ TypeError: If 'send_numel_list' or 'recv_numel_list' is not type of tuple and list.
1937
+
1938
+ Supported Platforms:
1939
+ ``Ascend``
1940
+
1941
+ Examples:
1942
+ .. note::
1943
+ Before running the following examples, you need to configure the communication environment variables.
1944
+
1945
+ For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
1946
+ without any third-party or configuration file dependencies.
1947
+
1948
+ Please see the `msrun start up
1949
+ <https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
1950
+ for more details.
1951
+
1952
+ This example should be run with 2 devices.
1953
+
1954
+ >>> import numpy as np
1955
+ >>> import mindspore as ms
1956
+ >>> from mindspore import ops
1957
+ >>> import mindspore.nn as nn
1958
+ >>> from mindspore.communication import init, get_rank
1959
+ >>> from mindspore import Tensor
1960
+ >>>
1961
+ >>> init()
1962
+ >>> rank = get_rank()
1963
+ >>> class Net(nn.Cell):
1964
+ ... def __init__(self):
1965
+ ... super(Net, self).__init__()
1966
+ ... if rank == 0:
1967
+ ... self.all_to_all = ops.AlltoAllV([1, 2], [1, 2])
1968
+ ... else:
1969
+ ... self.all_to_all = ops.AlltoAllV([2, 1], [2, 1])
1970
+ ...
1971
+ ... def construct(self, x):
1972
+ ... return self.all_to_all(x)
1973
+ ...
1974
+ >>> if rank == 0:
1975
+ >>> send_tensor = Tensor([0, 1, 2.])
1976
+ >>> elif rank == 1:
1977
+ >>> send_tensor = Tensor([3, 4, 5.])
1978
+ >>> net = Net()
1979
+ >>> output = net(send_tensor)
1980
+ >>> print(output)
1981
+ rank 0:
1982
+ [0. 3. 4]
1983
+ rank 1:
1984
+ [1. 2. 5]
1985
+
1986
+ """
1987
+
1988
+ @prim_attr_register
1989
+ def __init__(self, send_numel_list, recv_numel_list, group=None):
1990
+ validator.check_value_type("send_numel_list", send_numel_list, [tuple, list], self.name)
1991
+ validator.check_value_type("recv_numel_list", recv_numel_list, [tuple, list], self.name)
1992
+ if group is None:
1993
+ group = GlobalComm.WORLD_COMM_GROUP
1994
+ self.add_prim_attr('group', group)
1995
+ self.add_prim_attr('send_numel_list', send_numel_list)
1996
+ self.add_prim_attr('recv_numel_list', recv_numel_list)