mindspore 2.3.0__cp310-cp310-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.
Files changed (1400) hide show
  1. mindspore/.commit_id +1 -0
  2. mindspore/ConcurrencyCheck.dll +0 -0
  3. mindspore/CppBuildInsights.dll +0 -0
  4. mindspore/CppCoreCheck.dll +0 -0
  5. mindspore/EnumIndex.dll +0 -0
  6. mindspore/EspXEngine.dll +0 -0
  7. mindspore/HResultCheck.dll +0 -0
  8. mindspore/KernelTraceControl.dll +0 -0
  9. mindspore/LocalESPC.dll +0 -0
  10. mindspore/Microsoft.Diagnostics.Tracing.EventSource.dll +0 -0
  11. mindspore/Microsoft.VisualStudio.RemoteControl.dll +0 -0
  12. mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
  13. mindspore/Microsoft.VisualStudio.Utilities.Internal.dll +0 -0
  14. mindspore/Newtonsoft.Json.dll +0 -0
  15. mindspore/System.Runtime.CompilerServices.Unsafe.dll +0 -0
  16. mindspore/VariantClear.dll +0 -0
  17. mindspore/__init__.py +51 -0
  18. mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
  19. mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
  20. mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
  21. mindspore/_check_jit_forbidden_api.py +106 -0
  22. mindspore/_checkparam.py +1378 -0
  23. mindspore/_extends/__init__.py +23 -0
  24. mindspore/_extends/builtin_operations.py +224 -0
  25. mindspore/_extends/graph_kernel/__init__.py +17 -0
  26. mindspore/_extends/graph_kernel/model/__init__.py +19 -0
  27. mindspore/_extends/graph_kernel/model/graph_parallel.py +311 -0
  28. mindspore/_extends/graph_kernel/model/graph_split.py +1348 -0
  29. mindspore/_extends/graph_kernel/model/model.py +553 -0
  30. mindspore/_extends/graph_kernel/model/model_builder.py +216 -0
  31. mindspore/_extends/graph_kernel/parallel_estimate.py +60 -0
  32. mindspore/_extends/graph_kernel/splitter.py +140 -0
  33. mindspore/_extends/graph_kernel/utils.py +28 -0
  34. mindspore/_extends/parallel_compile/__init__.py +19 -0
  35. mindspore/_extends/parallel_compile/akg_compiler/__init__.py +19 -0
  36. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +269 -0
  37. mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +529 -0
  38. mindspore/_extends/parallel_compile/akg_compiler/compiler.py +56 -0
  39. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +96 -0
  40. mindspore/_extends/parallel_compile/akg_compiler/get_file_path.py +36 -0
  41. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +556 -0
  42. mindspore/_extends/parallel_compile/akg_compiler/util.py +159 -0
  43. mindspore/_extends/parse/__init__.py +49 -0
  44. mindspore/_extends/parse/compile_config.py +258 -0
  45. mindspore/_extends/parse/namespace.py +136 -0
  46. mindspore/_extends/parse/parser.py +1446 -0
  47. mindspore/_extends/parse/resources.py +213 -0
  48. mindspore/_extends/parse/standard_method.py +4437 -0
  49. mindspore/_extends/parse/trope.py +97 -0
  50. mindspore/_extends/pijit/__init__.py +23 -0
  51. mindspore/_extends/pijit/pijit_func_white_list.py +343 -0
  52. mindspore/_extends/remote/__init__.py +19 -0
  53. mindspore/_extends/remote/kernel_build_server.py +199 -0
  54. mindspore/_extends/remote/kernel_build_server_akg.py +55 -0
  55. mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
  56. mindspore/_extends/remote/kernel_build_server_ascend.py +75 -0
  57. mindspore/_extends/utils.py +68 -0
  58. mindspore/_install_custom.py +43 -0
  59. mindspore/_profiler.py +30 -0
  60. mindspore/amp.py +419 -0
  61. mindspore/atlprov.dll +0 -0
  62. mindspore/avcodec-59.dll +0 -0
  63. mindspore/avdevice-59.dll +0 -0
  64. mindspore/avfilter-8.dll +0 -0
  65. mindspore/avformat-59.dll +0 -0
  66. mindspore/avutil-57.dll +0 -0
  67. mindspore/boost/__init__.py +42 -0
  68. mindspore/boost/adasum.py +319 -0
  69. mindspore/boost/base.py +535 -0
  70. mindspore/boost/boost.py +400 -0
  71. mindspore/boost/boost_cell_wrapper.py +790 -0
  72. mindspore/boost/dim_reduce.py +323 -0
  73. mindspore/boost/grad_accumulation.py +79 -0
  74. mindspore/boost/grad_freeze.py +382 -0
  75. mindspore/boost/group_loss_scale_manager.py +166 -0
  76. mindspore/boost/less_batch_normalization.py +174 -0
  77. mindspore/c1.dll +0 -0
  78. mindspore/c1xx.dll +0 -0
  79. mindspore/c2.dll +0 -0
  80. mindspore/cfgpersist.dll +0 -0
  81. mindspore/clang_rt.asan_dbg_dynamic-x86_64.dll +0 -0
  82. mindspore/clang_rt.asan_dynamic-x86_64.dll +0 -0
  83. mindspore/common/__init__.py +84 -0
  84. mindspore/common/_auto_dynamic.py +68 -0
  85. mindspore/common/_decorator.py +50 -0
  86. mindspore/common/_jit_fallback_utils.py +110 -0
  87. mindspore/common/_monad.py +25 -0
  88. mindspore/common/_register_for_adapter.py +74 -0
  89. mindspore/common/_register_for_recompute.py +48 -0
  90. mindspore/common/_register_for_tensor.py +45 -0
  91. mindspore/common/_stub_tensor.py +210 -0
  92. mindspore/common/_utils.py +122 -0
  93. mindspore/common/api.py +2049 -0
  94. mindspore/common/auto_dynamic_shape.py +507 -0
  95. mindspore/common/dtype.py +422 -0
  96. mindspore/common/dump.py +131 -0
  97. mindspore/common/file_system.py +48 -0
  98. mindspore/common/generator.py +260 -0
  99. mindspore/common/hook_handle.py +155 -0
  100. mindspore/common/initializer.py +880 -0
  101. mindspore/common/jit_config.py +98 -0
  102. mindspore/common/lazy_inline.py +240 -0
  103. mindspore/common/mindir_util.py +111 -0
  104. mindspore/common/mutable.py +234 -0
  105. mindspore/common/no_inline.py +54 -0
  106. mindspore/common/np_dtype.py +25 -0
  107. mindspore/common/parameter.py +1048 -0
  108. mindspore/common/recompute.py +262 -0
  109. mindspore/common/seed.py +260 -0
  110. mindspore/common/sparse_tensor.py +1171 -0
  111. mindspore/common/symbol.py +122 -0
  112. mindspore/common/tensor.py +4859 -0
  113. mindspore/communication/__init__.py +37 -0
  114. mindspore/communication/_comm_helper.py +466 -0
  115. mindspore/communication/_hccl_management.py +297 -0
  116. mindspore/communication/comm_func.py +1140 -0
  117. mindspore/communication/management.py +673 -0
  118. mindspore/config/op_info.config +533 -0
  119. mindspore/context.py +1976 -0
  120. mindspore/d3dcompiler_47.dll +0 -0
  121. mindspore/dataset/__init__.py +90 -0
  122. mindspore/dataset/audio/__init__.py +61 -0
  123. mindspore/dataset/audio/transforms.py +3690 -0
  124. mindspore/dataset/audio/utils.py +386 -0
  125. mindspore/dataset/audio/validators.py +1172 -0
  126. mindspore/dataset/callback/__init__.py +20 -0
  127. mindspore/dataset/callback/ds_callback.py +368 -0
  128. mindspore/dataset/callback/validators.py +32 -0
  129. mindspore/dataset/core/__init__.py +13 -0
  130. mindspore/dataset/core/config.py +1088 -0
  131. mindspore/dataset/core/datatypes.py +101 -0
  132. mindspore/dataset/core/py_util_helpers.py +65 -0
  133. mindspore/dataset/core/validator_helpers.py +774 -0
  134. mindspore/dataset/debug/__init__.py +21 -0
  135. mindspore/dataset/debug/debug_hook.py +97 -0
  136. mindspore/dataset/debug/pre_defined_hook.py +67 -0
  137. mindspore/dataset/engine/__init__.py +124 -0
  138. mindspore/dataset/engine/cache_admin.py +47 -0
  139. mindspore/dataset/engine/cache_client.py +129 -0
  140. mindspore/dataset/engine/datasets.py +4554 -0
  141. mindspore/dataset/engine/datasets_audio.py +911 -0
  142. mindspore/dataset/engine/datasets_standard_format.py +493 -0
  143. mindspore/dataset/engine/datasets_text.py +2161 -0
  144. mindspore/dataset/engine/datasets_user_defined.py +1114 -0
  145. mindspore/dataset/engine/datasets_vision.py +4816 -0
  146. mindspore/dataset/engine/iterators.py +342 -0
  147. mindspore/dataset/engine/obs/__init__.py +23 -0
  148. mindspore/dataset/engine/obs/config_loader.py +68 -0
  149. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +508 -0
  150. mindspore/dataset/engine/obs/util.py +475 -0
  151. mindspore/dataset/engine/offload.py +596 -0
  152. mindspore/dataset/engine/queue.py +250 -0
  153. mindspore/dataset/engine/samplers.py +895 -0
  154. mindspore/dataset/engine/serializer_deserializer.py +159 -0
  155. mindspore/dataset/engine/validators.py +2875 -0
  156. mindspore/dataset/text/__init__.py +54 -0
  157. mindspore/dataset/text/transforms.py +1703 -0
  158. mindspore/dataset/text/utils.py +715 -0
  159. mindspore/dataset/text/validators.py +642 -0
  160. mindspore/dataset/transforms/__init__.py +48 -0
  161. mindspore/dataset/transforms/c_transforms.py +638 -0
  162. mindspore/dataset/transforms/py_transforms.py +393 -0
  163. mindspore/dataset/transforms/py_transforms_util.py +255 -0
  164. mindspore/dataset/transforms/transforms.py +1260 -0
  165. mindspore/dataset/transforms/validators.py +410 -0
  166. mindspore/dataset/utils/__init__.py +19 -0
  167. mindspore/dataset/utils/browse_dataset.py +190 -0
  168. mindspore/dataset/utils/line_reader.py +124 -0
  169. mindspore/dataset/vision/__init__.py +68 -0
  170. mindspore/dataset/vision/c_transforms.py +2641 -0
  171. mindspore/dataset/vision/py_transforms.py +2120 -0
  172. mindspore/dataset/vision/py_transforms_util.py +1660 -0
  173. mindspore/dataset/vision/transforms.py +7295 -0
  174. mindspore/dataset/vision/utils.py +863 -0
  175. mindspore/dataset/vision/validators.py +1482 -0
  176. mindspore/default_config.py +2 -0
  177. mindspore/dnnl.dll +0 -0
  178. mindspore/dpcmi.dll +0 -0
  179. mindspore/experimental/__init__.py +20 -0
  180. mindspore/experimental/map_parameter.py +309 -0
  181. mindspore/experimental/optim/__init__.py +40 -0
  182. mindspore/experimental/optim/adadelta.py +161 -0
  183. mindspore/experimental/optim/adagrad.py +168 -0
  184. mindspore/experimental/optim/adam.py +193 -0
  185. mindspore/experimental/optim/adamax.py +170 -0
  186. mindspore/experimental/optim/adamw.py +205 -0
  187. mindspore/experimental/optim/asgd.py +153 -0
  188. mindspore/experimental/optim/lr_scheduler.py +1371 -0
  189. mindspore/experimental/optim/nadam.py +157 -0
  190. mindspore/experimental/optim/optimizer.py +259 -0
  191. mindspore/experimental/optim/radam.py +194 -0
  192. mindspore/experimental/optim/rmsprop.py +154 -0
  193. mindspore/experimental/optim/rprop.py +164 -0
  194. mindspore/experimental/optim/sgd.py +156 -0
  195. mindspore/hal/__init__.py +40 -0
  196. mindspore/hal/_ascend.py +57 -0
  197. mindspore/hal/_base.py +57 -0
  198. mindspore/hal/_cpu.py +56 -0
  199. mindspore/hal/_gpu.py +57 -0
  200. mindspore/hal/device.py +356 -0
  201. mindspore/hal/event.py +179 -0
  202. mindspore/hal/memory.py +326 -0
  203. mindspore/hal/stream.py +339 -0
  204. mindspore/include/OWNERS +7 -0
  205. mindspore/include/api/allocator.h +97 -0
  206. mindspore/include/api/callback/callback.h +93 -0
  207. mindspore/include/api/callback/ckpt_saver.h +41 -0
  208. mindspore/include/api/callback/loss_monitor.h +33 -0
  209. mindspore/include/api/callback/lr_scheduler.h +51 -0
  210. mindspore/include/api/callback/time_monitor.h +34 -0
  211. mindspore/include/api/callback/train_accuracy.h +37 -0
  212. mindspore/include/api/cell.h +90 -0
  213. mindspore/include/api/cfg.h +82 -0
  214. mindspore/include/api/context.h +602 -0
  215. mindspore/include/api/data_type.h +47 -0
  216. mindspore/include/api/delegate.h +178 -0
  217. mindspore/include/api/delegate_api.h +75 -0
  218. mindspore/include/api/dual_abi_helper.h +208 -0
  219. mindspore/include/api/format.h +28 -0
  220. mindspore/include/api/graph.h +46 -0
  221. mindspore/include/api/kernel.h +58 -0
  222. mindspore/include/api/kernel_api.h +168 -0
  223. mindspore/include/api/metrics/accuracy.h +36 -0
  224. mindspore/include/api/metrics/metrics.h +41 -0
  225. mindspore/include/api/model.h +438 -0
  226. mindspore/include/api/model_group.h +79 -0
  227. mindspore/include/api/model_parallel_runner.h +168 -0
  228. mindspore/include/api/serialization.h +185 -0
  229. mindspore/include/api/status.h +192 -0
  230. mindspore/include/api/types.h +431 -0
  231. mindspore/include/api/visible.h +41 -0
  232. mindspore/include/c_api/context_c.h +179 -0
  233. mindspore/include/c_api/data_type_c.h +52 -0
  234. mindspore/include/c_api/format_c.h +46 -0
  235. mindspore/include/c_api/model_c.h +347 -0
  236. mindspore/include/c_api/ms/abstract.h +67 -0
  237. mindspore/include/c_api/ms/attribute.h +197 -0
  238. mindspore/include/c_api/ms/base/handle_types.h +43 -0
  239. mindspore/include/c_api/ms/base/macros.h +32 -0
  240. mindspore/include/c_api/ms/base/status.h +33 -0
  241. mindspore/include/c_api/ms/base/types.h +283 -0
  242. mindspore/include/c_api/ms/context.h +102 -0
  243. mindspore/include/c_api/ms/graph.h +160 -0
  244. mindspore/include/c_api/ms/node.h +606 -0
  245. mindspore/include/c_api/ms/tensor.h +161 -0
  246. mindspore/include/c_api/ms/value.h +84 -0
  247. mindspore/include/c_api/status_c.h +79 -0
  248. mindspore/include/c_api/tensor_c.h +146 -0
  249. mindspore/include/c_api/types_c.h +67 -0
  250. mindspore/include/dataset/config.h +163 -0
  251. mindspore/include/dataset/constants.h +363 -0
  252. mindspore/include/dataset/execute.h +196 -0
  253. mindspore/include/dataset/text.h +1092 -0
  254. mindspore/include/dataset/transforms.h +638 -0
  255. mindspore/include/dataset/vision.h +2125 -0
  256. mindspore/include/dataset/vision_ascend.h +206 -0
  257. mindspore/include/dataset/vision_lite.h +625 -0
  258. mindspore/jpeg62.dll +0 -0
  259. mindspore/log.py +633 -0
  260. mindspore/mindrecord/__init__.py +43 -0
  261. mindspore/mindrecord/common/__init__.py +17 -0
  262. mindspore/mindrecord/common/constant.py +20 -0
  263. mindspore/mindrecord/common/enums.py +44 -0
  264. mindspore/mindrecord/common/exceptions.py +311 -0
  265. mindspore/mindrecord/config.py +809 -0
  266. mindspore/mindrecord/filereader.py +174 -0
  267. mindspore/mindrecord/filewriter.py +705 -0
  268. mindspore/mindrecord/mindpage.py +210 -0
  269. mindspore/mindrecord/shardheader.py +141 -0
  270. mindspore/mindrecord/shardindexgenerator.py +74 -0
  271. mindspore/mindrecord/shardreader.py +117 -0
  272. mindspore/mindrecord/shardsegment.py +128 -0
  273. mindspore/mindrecord/shardutils.py +185 -0
  274. mindspore/mindrecord/shardwriter.py +237 -0
  275. mindspore/mindrecord/tools/__init__.py +17 -0
  276. mindspore/mindrecord/tools/cifar10.py +140 -0
  277. mindspore/mindrecord/tools/cifar100.py +153 -0
  278. mindspore/mindrecord/tools/cifar100_to_mr.py +185 -0
  279. mindspore/mindrecord/tools/cifar10_to_mr.py +177 -0
  280. mindspore/mindrecord/tools/csv_to_mr.py +200 -0
  281. mindspore/mindrecord/tools/imagenet_to_mr.py +206 -0
  282. mindspore/mindrecord/tools/mnist_to_mr.py +259 -0
  283. mindspore/mindrecord/tools/tfrecord_to_mr.py +360 -0
  284. mindspore/mindspore_backend.dll +0 -0
  285. mindspore/mindspore_common.dll +0 -0
  286. mindspore/mindspore_core.dll +0 -0
  287. mindspore/mindspore_glog.dll +0 -0
  288. mindspore/mindspore_np_dtype.dll +0 -0
  289. mindspore/mindspore_shared_lib.dll +0 -0
  290. mindspore/mint/__init__.py +1137 -0
  291. mindspore/mint/linalg/__init__.py +22 -0
  292. mindspore/mint/nn/__init__.py +512 -0
  293. mindspore/mint/nn/functional.py +573 -0
  294. mindspore/mint/optim/__init__.py +24 -0
  295. mindspore/mint/optim/adamw.py +185 -0
  296. mindspore/msobj140.dll +0 -0
  297. mindspore/mspdb140.dll +0 -0
  298. mindspore/mspdbcore.dll +0 -0
  299. mindspore/mspdbst.dll +0 -0
  300. mindspore/mspft140.dll +0 -0
  301. mindspore/msvcdis140.dll +0 -0
  302. mindspore/msvcp140.dll +0 -0
  303. mindspore/msvcp140_1.dll +0 -0
  304. mindspore/msvcp140_2.dll +0 -0
  305. mindspore/msvcp140_atomic_wait.dll +0 -0
  306. mindspore/msvcp140_codecvt_ids.dll +0 -0
  307. mindspore/multiprocessing/__init__.py +72 -0
  308. mindspore/nn/__init__.py +48 -0
  309. mindspore/nn/cell.py +2605 -0
  310. mindspore/nn/dynamic_lr.py +482 -0
  311. mindspore/nn/extend/__init__.py +29 -0
  312. mindspore/nn/extend/basic.py +140 -0
  313. mindspore/nn/extend/embedding.py +143 -0
  314. mindspore/nn/extend/layer/__init__.py +27 -0
  315. mindspore/nn/extend/layer/normalization.py +109 -0
  316. mindspore/nn/extend/pooling.py +117 -0
  317. mindspore/nn/grad/__init__.py +21 -0
  318. mindspore/nn/grad/cell_grad.py +196 -0
  319. mindspore/nn/layer/__init__.py +63 -0
  320. mindspore/nn/layer/activation.py +1655 -0
  321. mindspore/nn/layer/basic.py +1519 -0
  322. mindspore/nn/layer/channel_shuffle.py +90 -0
  323. mindspore/nn/layer/combined.py +248 -0
  324. mindspore/nn/layer/container.py +734 -0
  325. mindspore/nn/layer/conv.py +1505 -0
  326. mindspore/nn/layer/dense.py +204 -0
  327. mindspore/nn/layer/embedding.py +751 -0
  328. mindspore/nn/layer/embedding_service.py +531 -0
  329. mindspore/nn/layer/embedding_service_layer.py +393 -0
  330. mindspore/nn/layer/image.py +661 -0
  331. mindspore/nn/layer/math.py +1069 -0
  332. mindspore/nn/layer/normalization.py +1177 -0
  333. mindspore/nn/layer/padding.py +894 -0
  334. mindspore/nn/layer/pooling.py +2148 -0
  335. mindspore/nn/layer/rnn_cells.py +388 -0
  336. mindspore/nn/layer/rnns.py +849 -0
  337. mindspore/nn/layer/thor_layer.py +963 -0
  338. mindspore/nn/layer/timedistributed.py +155 -0
  339. mindspore/nn/layer/transformer.py +823 -0
  340. mindspore/nn/learning_rate_schedule.py +512 -0
  341. mindspore/nn/loss/__init__.py +36 -0
  342. mindspore/nn/loss/loss.py +2846 -0
  343. mindspore/nn/metrics.py +53 -0
  344. mindspore/nn/optim/__init__.py +44 -0
  345. mindspore/nn/optim/_dist_optimizer_registry.py +111 -0
  346. mindspore/nn/optim/ada_grad.py +217 -0
  347. mindspore/nn/optim/adadelta.py +206 -0
  348. mindspore/nn/optim/adafactor.py +448 -0
  349. mindspore/nn/optim/adam.py +1297 -0
  350. mindspore/nn/optim/adamax.py +220 -0
  351. mindspore/nn/optim/adasum.py +548 -0
  352. mindspore/nn/optim/asgd.py +216 -0
  353. mindspore/nn/optim/ftrl.py +401 -0
  354. mindspore/nn/optim/lamb.py +296 -0
  355. mindspore/nn/optim/lars.py +202 -0
  356. mindspore/nn/optim/lazyadam.py +533 -0
  357. mindspore/nn/optim/momentum.py +239 -0
  358. mindspore/nn/optim/optimizer.py +1034 -0
  359. mindspore/nn/optim/proximal_ada_grad.py +242 -0
  360. mindspore/nn/optim/rmsprop.py +264 -0
  361. mindspore/nn/optim/rprop.py +251 -0
  362. mindspore/nn/optim/sgd.py +237 -0
  363. mindspore/nn/optim/thor.py +1310 -0
  364. mindspore/nn/probability/__init__.py +22 -0
  365. mindspore/nn/probability/bijector/__init__.py +35 -0
  366. mindspore/nn/probability/bijector/bijector.py +337 -0
  367. mindspore/nn/probability/bijector/exp.py +65 -0
  368. mindspore/nn/probability/bijector/gumbel_cdf.py +144 -0
  369. mindspore/nn/probability/bijector/invert.py +126 -0
  370. mindspore/nn/probability/bijector/power_transform.py +196 -0
  371. mindspore/nn/probability/bijector/scalar_affine.py +167 -0
  372. mindspore/nn/probability/bijector/softplus.py +189 -0
  373. mindspore/nn/probability/bnn_layers/__init__.py +29 -0
  374. mindspore/nn/probability/bnn_layers/_util.py +46 -0
  375. mindspore/nn/probability/bnn_layers/bnn_cell_wrapper.py +112 -0
  376. mindspore/nn/probability/bnn_layers/conv_variational.py +267 -0
  377. mindspore/nn/probability/bnn_layers/dense_variational.py +302 -0
  378. mindspore/nn/probability/bnn_layers/layer_distribution.py +123 -0
  379. mindspore/nn/probability/distribution/__init__.py +56 -0
  380. mindspore/nn/probability/distribution/_utils/__init__.py +34 -0
  381. mindspore/nn/probability/distribution/_utils/custom_ops.py +96 -0
  382. mindspore/nn/probability/distribution/_utils/utils.py +362 -0
  383. mindspore/nn/probability/distribution/bernoulli.py +334 -0
  384. mindspore/nn/probability/distribution/beta.py +391 -0
  385. mindspore/nn/probability/distribution/categorical.py +435 -0
  386. mindspore/nn/probability/distribution/cauchy.py +383 -0
  387. mindspore/nn/probability/distribution/distribution.py +827 -0
  388. mindspore/nn/probability/distribution/exponential.py +350 -0
  389. mindspore/nn/probability/distribution/gamma.py +391 -0
  390. mindspore/nn/probability/distribution/geometric.py +335 -0
  391. mindspore/nn/probability/distribution/gumbel.py +257 -0
  392. mindspore/nn/probability/distribution/half_normal.py +133 -0
  393. mindspore/nn/probability/distribution/laplace.py +128 -0
  394. mindspore/nn/probability/distribution/log_normal.py +272 -0
  395. mindspore/nn/probability/distribution/logistic.py +379 -0
  396. mindspore/nn/probability/distribution/normal.py +336 -0
  397. mindspore/nn/probability/distribution/poisson.py +288 -0
  398. mindspore/nn/probability/distribution/student_t.py +149 -0
  399. mindspore/nn/probability/distribution/transformed_distribution.py +235 -0
  400. mindspore/nn/probability/distribution/uniform.py +375 -0
  401. mindspore/nn/reinforcement/__init__.py +24 -0
  402. mindspore/nn/reinforcement/_batch_read_write.py +142 -0
  403. mindspore/nn/reinforcement/_tensors_queue.py +152 -0
  404. mindspore/nn/reinforcement/tensor_array.py +145 -0
  405. mindspore/nn/sparse/__init__.py +23 -0
  406. mindspore/nn/sparse/sparse.py +147 -0
  407. mindspore/nn/wrap/__init__.py +49 -0
  408. mindspore/nn/wrap/cell_wrapper.py +979 -0
  409. mindspore/nn/wrap/grad_reducer.py +608 -0
  410. mindspore/nn/wrap/loss_scale.py +680 -0
  411. mindspore/numpy/__init__.py +121 -0
  412. mindspore/numpy/array_creations.py +2734 -0
  413. mindspore/numpy/array_ops.py +2625 -0
  414. mindspore/numpy/dtypes.py +185 -0
  415. mindspore/numpy/fft.py +431 -0
  416. mindspore/numpy/logic_ops.py +935 -0
  417. mindspore/numpy/math_ops.py +5910 -0
  418. mindspore/numpy/utils.py +214 -0
  419. mindspore/numpy/utils_const.py +565 -0
  420. mindspore/opencv_core452.dll +0 -0
  421. mindspore/opencv_imgcodecs452.dll +0 -0
  422. mindspore/opencv_imgproc452.dll +0 -0
  423. mindspore/ops/__init__.py +54 -0
  424. mindspore/ops/_constants.py +30 -0
  425. mindspore/ops/_grad_experimental/__init__.py +31 -0
  426. mindspore/ops/_grad_experimental/grad_array_ops.py +830 -0
  427. mindspore/ops/_grad_experimental/grad_base.py +143 -0
  428. mindspore/ops/_grad_experimental/grad_comm_ops.py +670 -0
  429. mindspore/ops/_grad_experimental/grad_debug_ops.py +31 -0
  430. mindspore/ops/_grad_experimental/grad_implementations.py +203 -0
  431. mindspore/ops/_grad_experimental/grad_inner_ops.py +79 -0
  432. mindspore/ops/_grad_experimental/grad_math_ops.py +824 -0
  433. mindspore/ops/_grad_experimental/grad_nn_ops.py +231 -0
  434. mindspore/ops/_grad_experimental/grad_quant_ops.py +238 -0
  435. mindspore/ops/_grad_experimental/grad_sparse.py +342 -0
  436. mindspore/ops/_grad_experimental/grad_sparse_ops.py +399 -0
  437. mindspore/ops/_grad_experimental/taylor_rule.py +220 -0
  438. mindspore/ops/_op_impl/__init__.py +23 -0
  439. mindspore/ops/_op_impl/_custom_op/__init__.py +39 -0
  440. mindspore/ops/_op_impl/_custom_op/_basic.py +158 -0
  441. mindspore/ops/_op_impl/_custom_op/batch_matmul_impl.py +279 -0
  442. mindspore/ops/_op_impl/_custom_op/batchnorm_fold.py +156 -0
  443. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2.py +109 -0
  444. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad.py +125 -0
  445. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad_reduce.py +105 -0
  446. mindspore/ops/_op_impl/_custom_op/batchnorm_fold_grad.py +124 -0
  447. mindspore/ops/_op_impl/_custom_op/cholesky_trsm_impl.py +116 -0
  448. mindspore/ops/_op_impl/_custom_op/correction_mul.py +89 -0
  449. mindspore/ops/_op_impl/_custom_op/correction_mul_grad.py +196 -0
  450. mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +366 -0
  451. mindspore/ops/_op_impl/_custom_op/dsd_impl.py +162 -0
  452. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel.py +136 -0
  453. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad.py +206 -0
  454. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad_reduce.py +88 -0
  455. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer.py +128 -0
  456. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad.py +199 -0
  457. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad_reduce.py +88 -0
  458. mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel.py +156 -0
  459. mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel_grad.py +184 -0
  460. mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer.py +143 -0
  461. mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer_grad.py +169 -0
  462. mindspore/ops/_op_impl/_custom_op/fused_abs_max1_impl.py +548 -0
  463. mindspore/ops/_op_impl/_custom_op/img2col_impl.py +881 -0
  464. mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_left_impl.py +278 -0
  465. mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_right_impl.py +200 -0
  466. mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_left_cast_impl.py +334 -0
  467. mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_right_mul_impl.py +255 -0
  468. mindspore/ops/_op_impl/_custom_op/matmul_cube_impl.py +222 -0
  469. mindspore/ops/_op_impl/_custom_op/matmul_dds_grad_impl.py +644 -0
  470. mindspore/ops/_op_impl/_custom_op/matmul_dds_impl.py +488 -0
  471. mindspore/ops/_op_impl/_custom_op/matrix_combine_impl.py +87 -0
  472. mindspore/ops/_op_impl/_custom_op/minmax_update_perchannel.py +129 -0
  473. mindspore/ops/_op_impl/_custom_op/minmax_update_perlayer.py +121 -0
  474. mindspore/ops/_op_impl/_custom_op/transpose02314_impl.py +352 -0
  475. mindspore/ops/_op_impl/aicpu/__init__.py +441 -0
  476. mindspore/ops/_op_impl/aicpu/abs.py +36 -0
  477. mindspore/ops/_op_impl/aicpu/acos.py +32 -0
  478. mindspore/ops/_op_impl/aicpu/acos_grad.py +33 -0
  479. mindspore/ops/_op_impl/aicpu/acosh.py +34 -0
  480. mindspore/ops/_op_impl/aicpu/acosh_grad.py +35 -0
  481. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d.py +34 -0
  482. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d_grad.py +34 -0
  483. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_3d.py +39 -0
  484. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_3d_grad.py +39 -0
  485. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_2d.py +37 -0
  486. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_2d_grad.py +37 -0
  487. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_3d.py +42 -0
  488. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_3d_grad.py +152 -0
  489. mindspore/ops/_op_impl/aicpu/add.py +43 -0
  490. mindspore/ops/_op_impl/aicpu/add_n.py +41 -0
  491. mindspore/ops/_op_impl/aicpu/add_v2.py +40 -0
  492. mindspore/ops/_op_impl/aicpu/addcdiv.py +41 -0
  493. mindspore/ops/_op_impl/aicpu/addcmul.py +47 -0
  494. mindspore/ops/_op_impl/aicpu/adjust_contrastv2.py +32 -0
  495. mindspore/ops/_op_impl/aicpu/adjust_hue.py +31 -0
  496. mindspore/ops/_op_impl/aicpu/adjust_saturation.py +32 -0
  497. mindspore/ops/_op_impl/aicpu/affine_grid.py +33 -0
  498. mindspore/ops/_op_impl/aicpu/affine_grid_grad.py +35 -0
  499. mindspore/ops/_op_impl/aicpu/angle.py +31 -0
  500. mindspore/ops/_op_impl/aicpu/arg_max.py +75 -0
  501. mindspore/ops/_op_impl/aicpu/arg_min.py +75 -0
  502. mindspore/ops/_op_impl/aicpu/argmax_with_value.py +43 -0
  503. mindspore/ops/_op_impl/aicpu/argmin_with_value.py +43 -0
  504. mindspore/ops/_op_impl/aicpu/asin.py +32 -0
  505. mindspore/ops/_op_impl/aicpu/asin_grad.py +33 -0
  506. mindspore/ops/_op_impl/aicpu/asinh.py +34 -0
  507. mindspore/ops/_op_impl/aicpu/asinh_grad.py +35 -0
  508. mindspore/ops/_op_impl/aicpu/atanh.py +34 -0
  509. mindspore/ops/_op_impl/aicpu/avgpool_grad_v1.py +37 -0
  510. mindspore/ops/_op_impl/aicpu/avgpool_v1.py +36 -0
  511. mindspore/ops/_op_impl/aicpu/bartlett_window.py +36 -0
  512. mindspore/ops/_op_impl/aicpu/batch_matmul.py +43 -0
  513. mindspore/ops/_op_impl/aicpu/batch_norm_grad_grad.py +49 -0
  514. mindspore/ops/_op_impl/aicpu/bernoulli.py +48 -0
  515. mindspore/ops/_op_impl/aicpu/bessel_i0.py +31 -0
  516. mindspore/ops/_op_impl/aicpu/betainc.py +31 -0
  517. mindspore/ops/_op_impl/aicpu/bias_add.py +44 -0
  518. mindspore/ops/_op_impl/aicpu/bias_add_grad.py +42 -0
  519. mindspore/ops/_op_impl/aicpu/bincount.py +33 -0
  520. mindspore/ops/_op_impl/aicpu/blackman_window.py +36 -0
  521. mindspore/ops/_op_impl/aicpu/broadcast_to.py +58 -0
  522. mindspore/ops/_op_impl/aicpu/bucketize.py +34 -0
  523. mindspore/ops/_op_impl/aicpu/cache_swap_table.py +102 -0
  524. mindspore/ops/_op_impl/aicpu/cast.py +225 -0
  525. mindspore/ops/_op_impl/aicpu/cauchy.py +33 -0
  526. mindspore/ops/_op_impl/aicpu/channel_shuffle.py +40 -0
  527. mindspore/ops/_op_impl/aicpu/check_numerics.py +33 -0
  528. mindspore/ops/_op_impl/aicpu/cholesky.py +32 -0
  529. mindspore/ops/_op_impl/aicpu/cholesky_inverse.py +31 -0
  530. mindspore/ops/_op_impl/aicpu/cholesky_solve.py +33 -0
  531. mindspore/ops/_op_impl/aicpu/choleskygrad.py +32 -0
  532. mindspore/ops/_op_impl/aicpu/coalesce.py +37 -0
  533. mindspore/ops/_op_impl/aicpu/col2im.py +38 -0
  534. mindspore/ops/_op_impl/aicpu/combined_non_max_suppression.py +42 -0
  535. mindspore/ops/_op_impl/aicpu/compare_and_bitpack.py +37 -0
  536. mindspore/ops/_op_impl/aicpu/complex.py +32 -0
  537. mindspore/ops/_op_impl/aicpu/complex_abs.py +31 -0
  538. mindspore/ops/_op_impl/aicpu/compute_accidental_hits.py +44 -0
  539. mindspore/ops/_op_impl/aicpu/concat.py +57 -0
  540. mindspore/ops/_op_impl/aicpu/concat_offset.py +42 -0
  541. mindspore/ops/_op_impl/aicpu/concat_offset_v1.py +31 -0
  542. mindspore/ops/_op_impl/aicpu/conj.py +42 -0
  543. mindspore/ops/_op_impl/aicpu/conjugate_transpose.py +58 -0
  544. mindspore/ops/_op_impl/aicpu/cos.py +34 -0
  545. mindspore/ops/_op_impl/aicpu/cosh.py +34 -0
  546. mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
  547. mindspore/ops/_op_impl/aicpu/crop_and_resize.py +69 -0
  548. mindspore/ops/_op_impl/aicpu/crop_and_resize_grad_boxes.py +68 -0
  549. mindspore/ops/_op_impl/aicpu/crop_and_resize_grad_image.py +38 -0
  550. mindspore/ops/_op_impl/aicpu/cross.py +42 -0
  551. mindspore/ops/_op_impl/aicpu/csr_sparse_matrix_to_dense.py +48 -0
  552. mindspore/ops/_op_impl/aicpu/csr_sparse_matrix_to_sparse_tensor.py +51 -0
  553. mindspore/ops/_op_impl/aicpu/ctc_greedy_decoder.py +35 -0
  554. mindspore/ops/_op_impl/aicpu/ctc_loss_v2.py +43 -0
  555. mindspore/ops/_op_impl/aicpu/ctc_loss_v2_grad.py +45 -0
  556. mindspore/ops/_op_impl/aicpu/ctcloss.py +38 -0
  557. mindspore/ops/_op_impl/aicpu/cummax.py +41 -0
  558. mindspore/ops/_op_impl/aicpu/cumprod.py +58 -0
  559. mindspore/ops/_op_impl/aicpu/cumsum.py +58 -0
  560. mindspore/ops/_op_impl/aicpu/cumulative_logsumexp.py +36 -0
  561. mindspore/ops/_op_impl/aicpu/data_format_vec_permute.py +32 -0
  562. mindspore/ops/_op_impl/aicpu/deformable_offsets.py +38 -0
  563. mindspore/ops/_op_impl/aicpu/deformable_offsets_grad.py +43 -0
  564. mindspore/ops/_op_impl/aicpu/dense_to_csr_sparse_matrix.py +49 -0
  565. mindspore/ops/_op_impl/aicpu/dense_to_dense_set_operation.py +45 -0
  566. mindspore/ops/_op_impl/aicpu/dense_to_sparse_set_operation.py +48 -0
  567. mindspore/ops/_op_impl/aicpu/depth_to_space.py +44 -0
  568. mindspore/ops/_op_impl/aicpu/diag.py +36 -0
  569. mindspore/ops/_op_impl/aicpu/diag_part.py +36 -0
  570. mindspore/ops/_op_impl/aicpu/diagonal.py +35 -0
  571. mindspore/ops/_op_impl/aicpu/digamma.py +31 -0
  572. mindspore/ops/_op_impl/aicpu/div.py +41 -0
  573. mindspore/ops/_op_impl/aicpu/div_no_nan.py +35 -0
  574. mindspore/ops/_op_impl/aicpu/dropout2d.py +42 -0
  575. mindspore/ops/_op_impl/aicpu/dropout3d.py +42 -0
  576. mindspore/ops/_op_impl/aicpu/dropout_genmask.py +41 -0
  577. mindspore/ops/_op_impl/aicpu/dropout_genmask_v3.py +32 -0
  578. mindspore/ops/_op_impl/aicpu/dynamic_stitch.py +42 -0
  579. mindspore/ops/_op_impl/aicpu/edit_distance.py +56 -0
  580. mindspore/ops/_op_impl/aicpu/eig.py +35 -0
  581. mindspore/ops/_op_impl/aicpu/embedding_lookup.py +102 -0
  582. mindspore/ops/_op_impl/aicpu/end_of_sequence.py +30 -0
  583. mindspore/ops/_op_impl/aicpu/environ_create.py +28 -0
  584. mindspore/ops/_op_impl/aicpu/environ_destroy_all.py +28 -0
  585. mindspore/ops/_op_impl/aicpu/environ_get.py +41 -0
  586. mindspore/ops/_op_impl/aicpu/environ_set.py +40 -0
  587. mindspore/ops/_op_impl/aicpu/eps.py +32 -0
  588. mindspore/ops/_op_impl/aicpu/equal.py +41 -0
  589. mindspore/ops/_op_impl/aicpu/exp.py +37 -0
  590. mindspore/ops/_op_impl/aicpu/expand.py +45 -0
  591. mindspore/ops/_op_impl/aicpu/expand_dims.py +42 -0
  592. mindspore/ops/_op_impl/aicpu/expm1.py +34 -0
  593. mindspore/ops/_op_impl/aicpu/extract_glimpse.py +35 -0
  594. mindspore/ops/_op_impl/aicpu/eye.py +44 -0
  595. mindspore/ops/_op_impl/aicpu/fft_with_size.py +47 -0
  596. mindspore/ops/_op_impl/aicpu/fill_diagonal.py +39 -0
  597. mindspore/ops/_op_impl/aicpu/fill_v2.py +58 -0
  598. mindspore/ops/_op_impl/aicpu/flatten.py +43 -0
  599. mindspore/ops/_op_impl/aicpu/floor_div.py +38 -0
  600. mindspore/ops/_op_impl/aicpu/fmax.py +36 -0
  601. mindspore/ops/_op_impl/aicpu/fmin.py +37 -0
  602. mindspore/ops/_op_impl/aicpu/fractional_avg_pool.py +41 -0
  603. mindspore/ops/_op_impl/aicpu/fractional_avg_pool_grad.py +41 -0
  604. mindspore/ops/_op_impl/aicpu/fractional_max_pool.py +41 -0
  605. mindspore/ops/_op_impl/aicpu/fractional_max_pool3d_grad_with_fixed_ksize.py +43 -0
  606. mindspore/ops/_op_impl/aicpu/fractional_max_pool3d_with_fixed_ksize.py +65 -0
  607. mindspore/ops/_op_impl/aicpu/fractional_max_pool_grad.py +42 -0
  608. mindspore/ops/_op_impl/aicpu/fractional_max_pool_grad_with_fixed_ksize.py +42 -0
  609. mindspore/ops/_op_impl/aicpu/fractional_max_pool_with_fixed_ksize.py +49 -0
  610. mindspore/ops/_op_impl/aicpu/fse_decode.py +43 -0
  611. mindspore/ops/_op_impl/aicpu/fused_sparse_adam.py +46 -0
  612. mindspore/ops/_op_impl/aicpu/fused_sparse_ftrl.py +41 -0
  613. mindspore/ops/_op_impl/aicpu/fused_sparse_lazy_adam.py +46 -0
  614. mindspore/ops/_op_impl/aicpu/fused_sparse_proximal_adagrad.py +39 -0
  615. mindspore/ops/_op_impl/aicpu/gamma.py +38 -0
  616. mindspore/ops/_op_impl/aicpu/gather.py +46 -0
  617. mindspore/ops/_op_impl/aicpu/gather_d.py +79 -0
  618. mindspore/ops/_op_impl/aicpu/gather_d_grad_v2.py +79 -0
  619. mindspore/ops/_op_impl/aicpu/gather_grad.py +54 -0
  620. mindspore/ops/_op_impl/aicpu/gather_nd.py +56 -0
  621. mindspore/ops/_op_impl/aicpu/gcd.py +32 -0
  622. mindspore/ops/_op_impl/aicpu/generate_eod_mask.py +38 -0
  623. mindspore/ops/_op_impl/aicpu/geqrf.py +32 -0
  624. mindspore/ops/_op_impl/aicpu/get_next.py +39 -0
  625. mindspore/ops/_op_impl/aicpu/glu.py +33 -0
  626. mindspore/ops/_op_impl/aicpu/glu_grad.py +34 -0
  627. mindspore/ops/_op_impl/aicpu/greater.py +41 -0
  628. mindspore/ops/_op_impl/aicpu/greater_equal.py +41 -0
  629. mindspore/ops/_op_impl/aicpu/grid_sampler_2d.py +35 -0
  630. mindspore/ops/_op_impl/aicpu/grid_sampler_2d_grad.py +38 -0
  631. mindspore/ops/_op_impl/aicpu/grid_sampler_3d.py +34 -0
  632. mindspore/ops/_op_impl/aicpu/grid_sampler_3d_grad.py +38 -0
  633. mindspore/ops/_op_impl/aicpu/hamming_window.py +57 -0
  634. mindspore/ops/_op_impl/aicpu/hard_sigmoid.py +32 -0
  635. mindspore/ops/_op_impl/aicpu/hard_sigmoid_grad.py +33 -0
  636. mindspore/ops/_op_impl/aicpu/heaviside.py +40 -0
  637. mindspore/ops/_op_impl/aicpu/histogram.py +35 -0
  638. mindspore/ops/_op_impl/aicpu/hsv_to_rgb.py +32 -0
  639. mindspore/ops/_op_impl/aicpu/hypot.py +32 -0
  640. mindspore/ops/_op_impl/aicpu/identity.py +42 -0
  641. mindspore/ops/_op_impl/aicpu/identity_n.py +41 -0
  642. mindspore/ops/_op_impl/aicpu/igamma.py +30 -0
  643. mindspore/ops/_op_impl/aicpu/igammac.py +30 -0
  644. mindspore/ops/_op_impl/aicpu/igammagrada.py +30 -0
  645. mindspore/ops/_op_impl/aicpu/im2col.py +43 -0
  646. mindspore/ops/_op_impl/aicpu/imag.py +31 -0
  647. mindspore/ops/_op_impl/aicpu/index_fill.py +54 -0
  648. mindspore/ops/_op_impl/aicpu/index_put.py +50 -0
  649. mindspore/ops/_op_impl/aicpu/init_data_set_queue.py +27 -0
  650. mindspore/ops/_op_impl/aicpu/inplace_index_add.py +39 -0
  651. mindspore/ops/_op_impl/aicpu/instance_norm_v2.py +41 -0
  652. mindspore/ops/_op_impl/aicpu/instance_norm_v2_grad.py +44 -0
  653. mindspore/ops/_op_impl/aicpu/is_finite.py +40 -0
  654. mindspore/ops/_op_impl/aicpu/is_inf.py +31 -0
  655. mindspore/ops/_op_impl/aicpu/is_nan.py +31 -0
  656. mindspore/ops/_op_impl/aicpu/kldivloss.py +34 -0
  657. mindspore/ops/_op_impl/aicpu/kldivlossgrad.py +35 -0
  658. mindspore/ops/_op_impl/aicpu/layer_norm_grad_grad.py +47 -0
  659. mindspore/ops/_op_impl/aicpu/lcm.py +32 -0
  660. mindspore/ops/_op_impl/aicpu/left_shift.py +38 -0
  661. mindspore/ops/_op_impl/aicpu/less.py +41 -0
  662. mindspore/ops/_op_impl/aicpu/less_equal.py +41 -0
  663. mindspore/ops/_op_impl/aicpu/lgamma.py +33 -0
  664. mindspore/ops/_op_impl/aicpu/linear_sum_assignment.py +57 -0
  665. mindspore/ops/_op_impl/aicpu/linspace.py +33 -0
  666. mindspore/ops/_op_impl/aicpu/list_diff.py +50 -0
  667. mindspore/ops/_op_impl/aicpu/log.py +37 -0
  668. mindspore/ops/_op_impl/aicpu/log1p.py +34 -0
  669. mindspore/ops/_op_impl/aicpu/log_matrix_determinant.py +31 -0
  670. mindspore/ops/_op_impl/aicpu/log_normal_reverse.py +33 -0
  671. mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +37 -0
  672. mindspore/ops/_op_impl/aicpu/logical_xor.py +30 -0
  673. mindspore/ops/_op_impl/aicpu/logit.py +33 -0
  674. mindspore/ops/_op_impl/aicpu/logit_grad.py +34 -0
  675. mindspore/ops/_op_impl/aicpu/logspace.py +36 -0
  676. mindspore/ops/_op_impl/aicpu/lower_bound.py +47 -0
  677. mindspore/ops/_op_impl/aicpu/lstsq.py +34 -0
  678. mindspore/ops/_op_impl/aicpu/lu.py +39 -0
  679. mindspore/ops/_op_impl/aicpu/lu_solve.py +32 -0
  680. mindspore/ops/_op_impl/aicpu/lu_unpack.py +114 -0
  681. mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +49 -0
  682. mindspore/ops/_op_impl/aicpu/masked_fill.py +42 -0
  683. mindspore/ops/_op_impl/aicpu/masked_scatter.py +40 -0
  684. mindspore/ops/_op_impl/aicpu/masked_select.py +31 -0
  685. mindspore/ops/_op_impl/aicpu/masked_select_grad.py +35 -0
  686. mindspore/ops/_op_impl/aicpu/matmul.py +39 -0
  687. mindspore/ops/_op_impl/aicpu/matrix_band_part.py +59 -0
  688. mindspore/ops/_op_impl/aicpu/matrix_determinant.py +30 -0
  689. mindspore/ops/_op_impl/aicpu/matrix_diag_part_v3.py +54 -0
  690. mindspore/ops/_op_impl/aicpu/matrix_diag_v3.py +56 -0
  691. mindspore/ops/_op_impl/aicpu/matrix_exp.py +34 -0
  692. mindspore/ops/_op_impl/aicpu/matrix_inverse.py +31 -0
  693. mindspore/ops/_op_impl/aicpu/matrix_logarithm.py +31 -0
  694. mindspore/ops/_op_impl/aicpu/matrix_power.py +37 -0
  695. mindspore/ops/_op_impl/aicpu/matrix_set_diag_v3.py +54 -0
  696. mindspore/ops/_op_impl/aicpu/matrix_solve.py +35 -0
  697. mindspore/ops/_op_impl/aicpu/matrix_solve_ls.py +36 -0
  698. mindspore/ops/_op_impl/aicpu/matrix_triangular_solve.py +36 -0
  699. mindspore/ops/_op_impl/aicpu/max_pool3d_grad_with_argmax.py +60 -0
  700. mindspore/ops/_op_impl/aicpu/max_pool3d_with_argmax.py +59 -0
  701. mindspore/ops/_op_impl/aicpu/max_unpool2d.py +57 -0
  702. mindspore/ops/_op_impl/aicpu/max_unpool2d_grad.py +58 -0
  703. mindspore/ops/_op_impl/aicpu/max_unpool3d.py +57 -0
  704. mindspore/ops/_op_impl/aicpu/max_unpool3d_grad.py +58 -0
  705. mindspore/ops/_op_impl/aicpu/maximum_grad_grad.py +40 -0
  706. mindspore/ops/_op_impl/aicpu/maxpool_grad_v1.py +46 -0
  707. mindspore/ops/_op_impl/aicpu/maxpool_v1.py +42 -0
  708. mindspore/ops/_op_impl/aicpu/median.py +39 -0
  709. mindspore/ops/_op_impl/aicpu/median_grad.py +45 -0
  710. mindspore/ops/_op_impl/aicpu/meshgrid.py +41 -0
  711. mindspore/ops/_op_impl/aicpu/minimum_grad_grad.py +40 -0
  712. mindspore/ops/_op_impl/aicpu/mirror_pad.py +50 -0
  713. mindspore/ops/_op_impl/aicpu/mirror_pad_grad.py +48 -0
  714. mindspore/ops/_op_impl/aicpu/mul.py +43 -0
  715. mindspore/ops/_op_impl/aicpu/mul_no_nan.py +42 -0
  716. mindspore/ops/_op_impl/aicpu/multi_margin_loss.py +37 -0
  717. mindspore/ops/_op_impl/aicpu/multi_margin_loss_grad.py +41 -0
  718. mindspore/ops/_op_impl/aicpu/multilabel_margin_loss_grad.py +37 -0
  719. mindspore/ops/_op_impl/aicpu/multinomial.py +47 -0
  720. mindspore/ops/_op_impl/aicpu/multinomial_with_replacement.py +35 -0
  721. mindspore/ops/_op_impl/aicpu/mvlgamma.py +32 -0
  722. mindspore/ops/_op_impl/aicpu/mvlgamma_grad.py +33 -0
  723. mindspore/ops/_op_impl/aicpu/nan_to_num.py +34 -0
  724. mindspore/ops/_op_impl/aicpu/neg.py +36 -0
  725. mindspore/ops/_op_impl/aicpu/nextafter.py +32 -0
  726. mindspore/ops/_op_impl/aicpu/nllloss.py +38 -0
  727. mindspore/ops/_op_impl/aicpu/nllloss_grad.py +39 -0
  728. mindspore/ops/_op_impl/aicpu/no_repeat_ngram.py +34 -0
  729. mindspore/ops/_op_impl/aicpu/non_deterministic_ints.py +33 -0
  730. mindspore/ops/_op_impl/aicpu/non_max_suppression.py +36 -0
  731. mindspore/ops/_op_impl/aicpu/non_max_suppression_with_overlaps.py +35 -0
  732. mindspore/ops/_op_impl/aicpu/non_zero.py +43 -0
  733. mindspore/ops/_op_impl/aicpu/not_equal.py +39 -0
  734. mindspore/ops/_op_impl/aicpu/nth_element.py +39 -0
  735. mindspore/ops/_op_impl/aicpu/nuclear_norm.py +33 -0
  736. mindspore/ops/_op_impl/aicpu/one_hot.py +116 -0
  737. mindspore/ops/_op_impl/aicpu/ones_like.py +39 -0
  738. mindspore/ops/_op_impl/aicpu/orgqr.py +34 -0
  739. mindspore/ops/_op_impl/aicpu/pad_and_shift.py +33 -0
  740. mindspore/ops/_op_impl/aicpu/pad_v3.py +61 -0
  741. mindspore/ops/_op_impl/aicpu/pad_v3_grad.py +59 -0
  742. mindspore/ops/_op_impl/aicpu/padding.py +41 -0
  743. mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +54 -0
  744. mindspore/ops/_op_impl/aicpu/pdist_grad.py +33 -0
  745. mindspore/ops/_op_impl/aicpu/poisson.py +37 -0
  746. mindspore/ops/_op_impl/aicpu/polar.py +32 -0
  747. mindspore/ops/_op_impl/aicpu/polygamma.py +34 -0
  748. mindspore/ops/_op_impl/aicpu/pow.py +39 -0
  749. mindspore/ops/_op_impl/aicpu/print_tensor.py +39 -0
  750. mindspore/ops/_op_impl/aicpu/priority_replay_buffer.py +113 -0
  751. mindspore/ops/_op_impl/aicpu/qr.py +36 -0
  752. mindspore/ops/_op_impl/aicpu/quant_dtype_cast.py +40 -0
  753. mindspore/ops/_op_impl/aicpu/quantile.py +35 -0
  754. mindspore/ops/_op_impl/aicpu/ragged_range.py +49 -0
  755. mindspore/ops/_op_impl/aicpu/ragged_tensor_to_sparse.py +73 -0
  756. mindspore/ops/_op_impl/aicpu/ragged_tensor_to_tensor.py +74 -0
  757. mindspore/ops/_op_impl/aicpu/random_categorical.py +68 -0
  758. mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +36 -0
  759. mindspore/ops/_op_impl/aicpu/random_gamma.py +38 -0
  760. mindspore/ops/_op_impl/aicpu/random_poisson.py +134 -0
  761. mindspore/ops/_op_impl/aicpu/random_shuffle.py +47 -0
  762. mindspore/ops/_op_impl/aicpu/randperm.py +38 -0
  763. mindspore/ops/_op_impl/aicpu/randperm_v2.py +41 -0
  764. mindspore/ops/_op_impl/aicpu/range.py +36 -0
  765. mindspore/ops/_op_impl/aicpu/range_v2.py +35 -0
  766. mindspore/ops/_op_impl/aicpu/real.py +31 -0
  767. mindspore/ops/_op_impl/aicpu/real_div.py +40 -0
  768. mindspore/ops/_op_impl/aicpu/reciprocal.py +34 -0
  769. mindspore/ops/_op_impl/aicpu/reciprocal_grad.py +35 -0
  770. mindspore/ops/_op_impl/aicpu/reduce_mean.py +57 -0
  771. mindspore/ops/_op_impl/aicpu/reduce_prod.py +57 -0
  772. mindspore/ops/_op_impl/aicpu/reduce_sum.py +57 -0
  773. mindspore/ops/_op_impl/aicpu/relu_grad_v3.py +41 -0
  774. mindspore/ops/_op_impl/aicpu/relu_v3.py +38 -0
  775. mindspore/ops/_op_impl/aicpu/reservoir_replay_buffer.py +96 -0
  776. mindspore/ops/_op_impl/aicpu/reshape.py +42 -0
  777. mindspore/ops/_op_impl/aicpu/resize_area.py +40 -0
  778. mindspore/ops/_op_impl/aicpu/resize_bicubic.py +20 -0
  779. mindspore/ops/_op_impl/aicpu/resize_bicubic_grad.py +19 -0
  780. mindspore/ops/_op_impl/aicpu/resize_bilinear.py +32 -0
  781. mindspore/ops/_op_impl/aicpu/resize_bilinear_grad.py +32 -0
  782. mindspore/ops/_op_impl/aicpu/resize_nearest_neighbor_v2.py +36 -0
  783. mindspore/ops/_op_impl/aicpu/resize_nearest_neighbor_v2_grad.py +35 -0
  784. mindspore/ops/_op_impl/aicpu/resize_v2.py +68 -0
  785. mindspore/ops/_op_impl/aicpu/resize_v2_grad.py +68 -0
  786. mindspore/ops/_op_impl/aicpu/reverse_sequence.py +55 -0
  787. mindspore/ops/_op_impl/aicpu/reversev2.py +54 -0
  788. mindspore/ops/_op_impl/aicpu/rgb_to_hsv.py +32 -0
  789. mindspore/ops/_op_impl/aicpu/right_shift.py +38 -0
  790. mindspore/ops/_op_impl/aicpu/rnnt_loss.py +35 -0
  791. mindspore/ops/_op_impl/aicpu/round.py +34 -0
  792. mindspore/ops/_op_impl/aicpu/rsqrt.py +33 -0
  793. mindspore/ops/_op_impl/aicpu/rsqrt_grad.py +36 -0
  794. mindspore/ops/_op_impl/aicpu/sample_distorted_bounding_box_v2.py +49 -0
  795. mindspore/ops/_op_impl/aicpu/scale_and_translate.py +52 -0
  796. mindspore/ops/_op_impl/aicpu/scale_and_translate_grad.py +36 -0
  797. mindspore/ops/_op_impl/aicpu/scatter.py +79 -0
  798. mindspore/ops/_op_impl/aicpu/scatter_add_with_axis.py +53 -0
  799. mindspore/ops/_op_impl/aicpu/scatter_elements.py +39 -0
  800. mindspore/ops/_op_impl/aicpu/scatter_nd.py +59 -0
  801. mindspore/ops/_op_impl/aicpu/scatter_nd_max.py +54 -0
  802. mindspore/ops/_op_impl/aicpu/scatter_nd_min.py +54 -0
  803. mindspore/ops/_op_impl/aicpu/scatter_nd_update.py +59 -0
  804. mindspore/ops/_op_impl/aicpu/search_sorted.py +44 -0
  805. mindspore/ops/_op_impl/aicpu/segment_max.py +52 -0
  806. mindspore/ops/_op_impl/aicpu/segment_mean.py +56 -0
  807. mindspore/ops/_op_impl/aicpu/segment_min.py +52 -0
  808. mindspore/ops/_op_impl/aicpu/segment_prod.py +56 -0
  809. mindspore/ops/_op_impl/aicpu/segment_sum.py +56 -0
  810. mindspore/ops/_op_impl/aicpu/select.py +45 -0
  811. mindspore/ops/_op_impl/aicpu/self_adjoint_eig.py +34 -0
  812. mindspore/ops/_op_impl/aicpu/sequence_add.py +34 -0
  813. mindspore/ops/_op_impl/aicpu/sequence_add_offset.py +34 -0
  814. mindspore/ops/_op_impl/aicpu/sequence_addn.py +38 -0
  815. mindspore/ops/_op_impl/aicpu/sequence_concat.py +40 -0
  816. mindspore/ops/_op_impl/aicpu/sequence_stack.py +40 -0
  817. mindspore/ops/_op_impl/aicpu/set_size.py +38 -0
  818. mindspore/ops/_op_impl/aicpu/sign.py +36 -0
  819. mindspore/ops/_op_impl/aicpu/sin.py +34 -0
  820. mindspore/ops/_op_impl/aicpu/sinc.py +43 -0
  821. mindspore/ops/_op_impl/aicpu/sinh.py +34 -0
  822. mindspore/ops/_op_impl/aicpu/slice.py +59 -0
  823. mindspore/ops/_op_impl/aicpu/slice_grad.py +76 -0
  824. mindspore/ops/_op_impl/aicpu/smooth_l1_loss.py +35 -0
  825. mindspore/ops/_op_impl/aicpu/smooth_l1_loss_grad.py +37 -0
  826. mindspore/ops/_op_impl/aicpu/sort.py +39 -0
  827. mindspore/ops/_op_impl/aicpu/space_to_depth.py +44 -0
  828. mindspore/ops/_op_impl/aicpu/sparse_addmm.py +87 -0
  829. mindspore/ops/_op_impl/aicpu/sparse_apply_adagrad_da.py +80 -0
  830. mindspore/ops/_op_impl/aicpu/sparse_apply_centered_rms_prop.py +105 -0
  831. mindspore/ops/_op_impl/aicpu/sparse_apply_momentum.py +80 -0
  832. mindspore/ops/_op_impl/aicpu/sparse_apply_proximal_gradient_descent.py +79 -0
  833. mindspore/ops/_op_impl/aicpu/sparse_concat.py +59 -0
  834. mindspore/ops/_op_impl/aicpu/sparse_cross.py +42 -0
  835. mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_add.py +58 -0
  836. mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_div.py +58 -0
  837. mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_mul.py +58 -0
  838. mindspore/ops/_op_impl/aicpu/sparse_fill_empty_rows.py +63 -0
  839. mindspore/ops/_op_impl/aicpu/sparse_fill_empty_rows_grad.py +45 -0
  840. mindspore/ops/_op_impl/aicpu/sparse_matrix_mat_mul.py +56 -0
  841. mindspore/ops/_op_impl/aicpu/sparse_matrix_nnz.py +81 -0
  842. mindspore/ops/_op_impl/aicpu/sparse_matrix_transpose.py +116 -0
  843. mindspore/ops/_op_impl/aicpu/sparse_reorder.py +56 -0
  844. mindspore/ops/_op_impl/aicpu/sparse_reshape.py +34 -0
  845. mindspore/ops/_op_impl/aicpu/sparse_segment_mean_grad.py +36 -0
  846. mindspore/ops/_op_impl/aicpu/sparse_segment_mean_with_num_segments.py +44 -0
  847. mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n.py +43 -0
  848. mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n_grad.py +38 -0
  849. mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n_with_num_segments.py +44 -0
  850. mindspore/ops/_op_impl/aicpu/sparse_segment_sum.py +49 -0
  851. mindspore/ops/_op_impl/aicpu/sparse_segment_sum_with_num_segments.py +68 -0
  852. mindspore/ops/_op_impl/aicpu/sparse_slice.py +63 -0
  853. mindspore/ops/_op_impl/aicpu/sparse_slice_grad.py +61 -0
  854. mindspore/ops/_op_impl/aicpu/sparse_softmax.py +33 -0
  855. mindspore/ops/_op_impl/aicpu/sparse_softmax_cross_entropy_with_logits_v2.py +35 -0
  856. mindspore/ops/_op_impl/aicpu/sparse_sparse_maximum.py +53 -0
  857. mindspore/ops/_op_impl/aicpu/sparse_sparse_minimum.py +53 -0
  858. mindspore/ops/_op_impl/aicpu/sparse_tensor_dense_add.py +84 -0
  859. mindspore/ops/_op_impl/aicpu/sparse_tensor_dense_mat_mul.py +190 -0
  860. mindspore/ops/_op_impl/aicpu/sparse_tensor_to_csr_sparse_matrix.py +51 -0
  861. mindspore/ops/_op_impl/aicpu/sparse_to_dense_v2.py +73 -0
  862. mindspore/ops/_op_impl/aicpu/split.py +45 -0
  863. mindspore/ops/_op_impl/aicpu/sqrt.py +34 -0
  864. mindspore/ops/_op_impl/aicpu/sqrt_grad.py +35 -0
  865. mindspore/ops/_op_impl/aicpu/square.py +35 -0
  866. mindspore/ops/_op_impl/aicpu/squared_difference.py +37 -0
  867. mindspore/ops/_op_impl/aicpu/squeeze.py +42 -0
  868. mindspore/ops/_op_impl/aicpu/sspaddmm.py +97 -0
  869. mindspore/ops/_op_impl/aicpu/stack.py +45 -0
  870. mindspore/ops/_op_impl/aicpu/stack_push_pop.py +87 -0
  871. mindspore/ops/_op_impl/aicpu/standard_laplace.py +34 -0
  872. mindspore/ops/_op_impl/aicpu/standard_normal.py +34 -0
  873. mindspore/ops/_op_impl/aicpu/stateless_dropout_genmask.py +37 -0
  874. mindspore/ops/_op_impl/aicpu/stft.py +70 -0
  875. mindspore/ops/_op_impl/aicpu/strided_slice.py +43 -0
  876. mindspore/ops/_op_impl/aicpu/strided_slice_grad.py +50 -0
  877. mindspore/ops/_op_impl/aicpu/strided_slice_v2.py +93 -0
  878. mindspore/ops/_op_impl/aicpu/strided_slice_v2_grad.py +66 -0
  879. mindspore/ops/_op_impl/aicpu/sub.py +41 -0
  880. mindspore/ops/_op_impl/aicpu/sub_and_filter.py +36 -0
  881. mindspore/ops/_op_impl/aicpu/tan.py +34 -0
  882. mindspore/ops/_op_impl/aicpu/tanh.py +34 -0
  883. mindspore/ops/_op_impl/aicpu/tanh_grad.py +35 -0
  884. mindspore/ops/_op_impl/aicpu/tensor_scatter_update.py +59 -0
  885. mindspore/ops/_op_impl/aicpu/tile.py +56 -0
  886. mindspore/ops/_op_impl/aicpu/topk.py +34 -0
  887. mindspore/ops/_op_impl/aicpu/trace.py +40 -0
  888. mindspore/ops/_op_impl/aicpu/tracegrad.py +41 -0
  889. mindspore/ops/_op_impl/aicpu/trans_data.py +35 -0
  890. mindspore/ops/_op_impl/aicpu/transpose.py +58 -0
  891. mindspore/ops/_op_impl/aicpu/tridiagonal_matmul.py +42 -0
  892. mindspore/ops/_op_impl/aicpu/tridiagonal_solve.py +35 -0
  893. mindspore/ops/_op_impl/aicpu/tril.py +42 -0
  894. mindspore/ops/_op_impl/aicpu/tril_indices.py +34 -0
  895. mindspore/ops/_op_impl/aicpu/triplet_margin_loss.py +62 -0
  896. mindspore/ops/_op_impl/aicpu/triu.py +43 -0
  897. mindspore/ops/_op_impl/aicpu/triu_indices.py +34 -0
  898. mindspore/ops/_op_impl/aicpu/truncated_normal.py +39 -0
  899. mindspore/ops/_op_impl/aicpu/uniform.py +36 -0
  900. mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +41 -0
  901. mindspore/ops/_op_impl/aicpu/uniform_int.py +36 -0
  902. mindspore/ops/_op_impl/aicpu/uniform_real.py +33 -0
  903. mindspore/ops/_op_impl/aicpu/unique.py +31 -0
  904. mindspore/ops/_op_impl/aicpu/unique_consecutive.py +47 -0
  905. mindspore/ops/_op_impl/aicpu/unique_with_pad.py +32 -0
  906. mindspore/ops/_op_impl/aicpu/unravel_index.py +32 -0
  907. mindspore/ops/_op_impl/aicpu/unsorted_segment_prod.py +53 -0
  908. mindspore/ops/_op_impl/aicpu/unsorted_segment_sum.py +57 -0
  909. mindspore/ops/_op_impl/aicpu/unstack.py +45 -0
  910. mindspore/ops/_op_impl/aicpu/update_cache.py +44 -0
  911. mindspore/ops/_op_impl/aicpu/upper_bound.py +47 -0
  912. mindspore/ops/_op_impl/aicpu/upsample_nearest_3d.py +42 -0
  913. mindspore/ops/_op_impl/aicpu/upsample_nearest_3d_grad.py +49 -0
  914. mindspore/ops/_op_impl/aicpu/upsample_trilinear_3d.py +40 -0
  915. mindspore/ops/_op_impl/aicpu/upsample_trilinear_3d_grad.py +50 -0
  916. mindspore/ops/_op_impl/aicpu/xdivy.py +35 -0
  917. mindspore/ops/_op_impl/aicpu/xlogy.py +33 -0
  918. mindspore/ops/_op_impl/aicpu/zeros_like.py +42 -0
  919. mindspore/ops/_op_impl/aicpu/zeta.py +31 -0
  920. mindspore/ops/_op_impl/akg/__init__.py +19 -0
  921. mindspore/ops/_op_impl/akg/ascend/__init__.py +48 -0
  922. mindspore/ops/_op_impl/akg/ascend/abs.py +35 -0
  923. mindspore/ops/_op_impl/akg/ascend/add.py +42 -0
  924. mindspore/ops/_op_impl/akg/ascend/add_n.py +37 -0
  925. mindspore/ops/_op_impl/akg/ascend/batchmatmul.py +33 -0
  926. mindspore/ops/_op_impl/akg/ascend/cast.py +46 -0
  927. mindspore/ops/_op_impl/akg/ascend/equal.py +35 -0
  928. mindspore/ops/_op_impl/akg/ascend/exp.py +35 -0
  929. mindspore/ops/_op_impl/akg/ascend/expand_dims.py +33 -0
  930. mindspore/ops/_op_impl/akg/ascend/greater.py +34 -0
  931. mindspore/ops/_op_impl/akg/ascend/greater_equal.py +35 -0
  932. mindspore/ops/_op_impl/akg/ascend/less.py +31 -0
  933. mindspore/ops/_op_impl/akg/ascend/less_equal.py +35 -0
  934. mindspore/ops/_op_impl/akg/ascend/load_im2col.py +33 -0
  935. mindspore/ops/_op_impl/akg/ascend/log.py +34 -0
  936. mindspore/ops/_op_impl/akg/ascend/maximum.py +36 -0
  937. mindspore/ops/_op_impl/akg/ascend/minimum.py +39 -0
  938. mindspore/ops/_op_impl/akg/ascend/mul.py +41 -0
  939. mindspore/ops/_op_impl/akg/ascend/neg.py +37 -0
  940. mindspore/ops/_op_impl/akg/ascend/pow.py +35 -0
  941. mindspore/ops/_op_impl/akg/ascend/prod_force_se_a.py +33 -0
  942. mindspore/ops/_op_impl/akg/ascend/real_div.py +36 -0
  943. mindspore/ops/_op_impl/akg/ascend/reciprocal.py +32 -0
  944. mindspore/ops/_op_impl/akg/ascend/reduce_max.py +32 -0
  945. mindspore/ops/_op_impl/akg/ascend/reduce_min.py +32 -0
  946. mindspore/ops/_op_impl/akg/ascend/reduce_sum.py +37 -0
  947. mindspore/ops/_op_impl/akg/ascend/rsqrt.py +35 -0
  948. mindspore/ops/_op_impl/akg/ascend/select.py +37 -0
  949. mindspore/ops/_op_impl/akg/ascend/sqrt.py +35 -0
  950. mindspore/ops/_op_impl/akg/ascend/square.py +35 -0
  951. mindspore/ops/_op_impl/akg/ascend/sub.py +42 -0
  952. mindspore/ops/_op_impl/akg/cpu/__init__.py +23 -0
  953. mindspore/ops/_op_impl/akg/cpu/coo2csr.py +29 -0
  954. mindspore/ops/_op_impl/akg/cpu/csr2coo.py +29 -0
  955. mindspore/ops/_op_impl/akg/cpu/csr_gather.py +33 -0
  956. mindspore/ops/_op_impl/akg/cpu/csr_mm.py +34 -0
  957. mindspore/ops/_op_impl/akg/cpu/csr_mul.py +33 -0
  958. mindspore/ops/_op_impl/akg/cpu/csr_mv.py +33 -0
  959. mindspore/ops/_op_impl/akg/cpu/csr_reduce_sum.py +31 -0
  960. mindspore/ops/_op_impl/akg/gpu/__init__.py +24 -0
  961. mindspore/ops/_op_impl/akg/gpu/coo2csr.py +29 -0
  962. mindspore/ops/_op_impl/akg/gpu/csr2coo.py +29 -0
  963. mindspore/ops/_op_impl/akg/gpu/csr_div.py +36 -0
  964. mindspore/ops/_op_impl/akg/gpu/csr_gather.py +33 -0
  965. mindspore/ops/_op_impl/akg/gpu/csr_mm.py +37 -0
  966. mindspore/ops/_op_impl/akg/gpu/csr_mul.py +36 -0
  967. mindspore/ops/_op_impl/akg/gpu/csr_mv.py +36 -0
  968. mindspore/ops/_op_impl/akg/gpu/csr_reduce_sum.py +33 -0
  969. mindspore/ops/_op_impl/cpu/__init__.py +78 -0
  970. mindspore/ops/_op_impl/cpu/adam.py +49 -0
  971. mindspore/ops/_op_impl/cpu/adam_weight_decay.py +47 -0
  972. mindspore/ops/_op_impl/cpu/arg_max.py +30 -0
  973. mindspore/ops/_op_impl/cpu/arg_max_with_value.py +31 -0
  974. mindspore/ops/_op_impl/cpu/arg_min_with_value.py +31 -0
  975. mindspore/ops/_op_impl/cpu/buffer_append.py +28 -0
  976. mindspore/ops/_op_impl/cpu/buffer_get.py +28 -0
  977. mindspore/ops/_op_impl/cpu/buffer_sample.py +28 -0
  978. mindspore/ops/_op_impl/cpu/cast.py +171 -0
  979. mindspore/ops/_op_impl/cpu/concat_offset.py +38 -0
  980. mindspore/ops/_op_impl/cpu/conv2d.py +30 -0
  981. mindspore/ops/_op_impl/cpu/conv3d.py +30 -0
  982. mindspore/ops/_op_impl/cpu/div.py +32 -0
  983. mindspore/ops/_op_impl/cpu/dropout.py +31 -0
  984. mindspore/ops/_op_impl/cpu/dropout_grad.py +30 -0
  985. mindspore/ops/_op_impl/cpu/dynamic_shape.py +42 -0
  986. mindspore/ops/_op_impl/cpu/dynamic_stitch.py +41 -0
  987. mindspore/ops/_op_impl/cpu/equal_count.py +30 -0
  988. mindspore/ops/_op_impl/cpu/gather_d.py +49 -0
  989. mindspore/ops/_op_impl/cpu/gather_d_grad.py +38 -0
  990. mindspore/ops/_op_impl/cpu/gather_d_grad_v2.py +40 -0
  991. mindspore/ops/_op_impl/cpu/gather_v2.py +40 -0
  992. mindspore/ops/_op_impl/cpu/hsigmoid.py +33 -0
  993. mindspore/ops/_op_impl/cpu/hsigmoid_grad.py +34 -0
  994. mindspore/ops/_op_impl/cpu/hswish.py +32 -0
  995. mindspore/ops/_op_impl/cpu/hswish_grad.py +33 -0
  996. mindspore/ops/_op_impl/cpu/identity_n.py +40 -0
  997. mindspore/ops/_op_impl/cpu/is_finite.py +39 -0
  998. mindspore/ops/_op_impl/cpu/l2loss.py +30 -0
  999. mindspore/ops/_op_impl/cpu/layer_norm.py +36 -0
  1000. mindspore/ops/_op_impl/cpu/layer_norm_grad.py +38 -0
  1001. mindspore/ops/_op_impl/cpu/maximum.py +35 -0
  1002. mindspore/ops/_op_impl/cpu/maximum_grad.py +47 -0
  1003. mindspore/ops/_op_impl/cpu/minimum.py +40 -0
  1004. mindspore/ops/_op_impl/cpu/minimum_grad.py +51 -0
  1005. mindspore/ops/_op_impl/cpu/mirror_pad.py +36 -0
  1006. mindspore/ops/_op_impl/cpu/mirror_pad_grad.py +36 -0
  1007. mindspore/ops/_op_impl/cpu/mul.py +32 -0
  1008. mindspore/ops/_op_impl/cpu/one_hot.py +31 -0
  1009. mindspore/ops/_op_impl/cpu/pad.py +32 -0
  1010. mindspore/ops/_op_impl/cpu/pow.py +32 -0
  1011. mindspore/ops/_op_impl/cpu/priority_replay_buffer.py +42 -0
  1012. mindspore/ops/_op_impl/cpu/pyexecute.py +29 -0
  1013. mindspore/ops/_op_impl/cpu/pyfunc.py +29 -0
  1014. mindspore/ops/_op_impl/cpu/range.py +34 -0
  1015. mindspore/ops/_op_impl/cpu/real_div.py +33 -0
  1016. mindspore/ops/_op_impl/cpu/reduce_all.py +29 -0
  1017. mindspore/ops/_op_impl/cpu/reduce_any.py +29 -0
  1018. mindspore/ops/_op_impl/cpu/reduce_max.py +32 -0
  1019. mindspore/ops/_op_impl/cpu/reduce_mean.py +40 -0
  1020. mindspore/ops/_op_impl/cpu/reduce_min.py +32 -0
  1021. mindspore/ops/_op_impl/cpu/reduce_prod.py +40 -0
  1022. mindspore/ops/_op_impl/cpu/reduce_std.py +31 -0
  1023. mindspore/ops/_op_impl/cpu/reduce_sum.py +41 -0
  1024. mindspore/ops/_op_impl/cpu/space_to_batch_nd.py +38 -0
  1025. mindspore/ops/_op_impl/cpu/sparse_slice.py +62 -0
  1026. mindspore/ops/_op_impl/cpu/sparse_slice_grad.py +60 -0
  1027. mindspore/ops/_op_impl/cpu/split.py +34 -0
  1028. mindspore/ops/_op_impl/cpu/sspaddmm.py +95 -0
  1029. mindspore/ops/_op_impl/cpu/stack.py +38 -0
  1030. mindspore/ops/_op_impl/cpu/sub.py +32 -0
  1031. mindspore/ops/_op_impl/cpu/tensor_copy_slices.py +41 -0
  1032. mindspore/ops/_op_impl/cpu/tile.py +37 -0
  1033. mindspore/ops/_op_impl/cpu/top_k.py +31 -0
  1034. mindspore/ops/_op_impl/cpu/transpose.py +39 -0
  1035. mindspore/ops/_primitive_cache.py +90 -0
  1036. mindspore/ops/_register_for_op.py +73 -0
  1037. mindspore/ops/_utils/__init__.py +20 -0
  1038. mindspore/ops/_utils/utils.py +147 -0
  1039. mindspore/ops/_vmap/__init__.py +25 -0
  1040. mindspore/ops/_vmap/vmap_array_ops.py +2151 -0
  1041. mindspore/ops/_vmap/vmap_base.py +533 -0
  1042. mindspore/ops/_vmap/vmap_convolution_ops.py +441 -0
  1043. mindspore/ops/_vmap/vmap_debug_ops.py +50 -0
  1044. mindspore/ops/_vmap/vmap_grad_math_ops.py +274 -0
  1045. mindspore/ops/_vmap/vmap_grad_nn_ops.py +806 -0
  1046. mindspore/ops/_vmap/vmap_image_ops.py +194 -0
  1047. mindspore/ops/_vmap/vmap_math_ops.py +977 -0
  1048. mindspore/ops/_vmap/vmap_nn_ops.py +2209 -0
  1049. mindspore/ops/_vmap/vmap_other_ops.py +105 -0
  1050. mindspore/ops/_vmap/vmap_random_ops.py +122 -0
  1051. mindspore/ops/_vmap/vmap_sparse_ops.py +89 -0
  1052. mindspore/ops/auto_generate/__init__.py +31 -0
  1053. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +231 -0
  1054. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +250 -0
  1055. mindspore/ops/auto_generate/gen_arg_handler.py +197 -0
  1056. mindspore/ops/auto_generate/gen_extend_func.py +980 -0
  1057. mindspore/ops/auto_generate/gen_ops_def.py +6443 -0
  1058. mindspore/ops/auto_generate/gen_ops_prim.py +13167 -0
  1059. mindspore/ops/auto_generate/pyboost_inner_prim.py +429 -0
  1060. mindspore/ops/composite/__init__.py +71 -0
  1061. mindspore/ops/composite/base.py +1281 -0
  1062. mindspore/ops/composite/env_ops.py +41 -0
  1063. mindspore/ops/composite/math_ops.py +125 -0
  1064. mindspore/ops/composite/multitype_ops/__init__.py +77 -0
  1065. mindspore/ops/composite/multitype_ops/_compile_utils.py +1458 -0
  1066. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +897 -0
  1067. mindspore/ops/composite/multitype_ops/add_impl.py +606 -0
  1068. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +56 -0
  1069. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +56 -0
  1070. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +56 -0
  1071. mindspore/ops/composite/multitype_ops/div_impl.py +189 -0
  1072. mindspore/ops/composite/multitype_ops/equal_impl.py +335 -0
  1073. mindspore/ops/composite/multitype_ops/floordiv_impl.py +88 -0
  1074. mindspore/ops/composite/multitype_ops/getitem_impl.py +400 -0
  1075. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +109 -0
  1076. mindspore/ops/composite/multitype_ops/greater_impl.py +110 -0
  1077. mindspore/ops/composite/multitype_ops/in_impl.py +196 -0
  1078. mindspore/ops/composite/multitype_ops/left_shift_impl.py +37 -0
  1079. mindspore/ops/composite/multitype_ops/less_equal_impl.py +111 -0
  1080. mindspore/ops/composite/multitype_ops/less_impl.py +112 -0
  1081. mindspore/ops/composite/multitype_ops/logic_not_impl.py +113 -0
  1082. mindspore/ops/composite/multitype_ops/logical_and_impl.py +60 -0
  1083. mindspore/ops/composite/multitype_ops/logical_or_impl.py +61 -0
  1084. mindspore/ops/composite/multitype_ops/mod_impl.py +86 -0
  1085. mindspore/ops/composite/multitype_ops/mul_impl.py +294 -0
  1086. mindspore/ops/composite/multitype_ops/negative_impl.py +79 -0
  1087. mindspore/ops/composite/multitype_ops/not_equal_impl.py +290 -0
  1088. mindspore/ops/composite/multitype_ops/not_in_impl.py +196 -0
  1089. mindspore/ops/composite/multitype_ops/ones_like_impl.py +96 -0
  1090. mindspore/ops/composite/multitype_ops/pow_impl.py +87 -0
  1091. mindspore/ops/composite/multitype_ops/right_shift_impl.py +37 -0
  1092. mindspore/ops/composite/multitype_ops/setitem_impl.py +884 -0
  1093. mindspore/ops/composite/multitype_ops/sub_impl.py +116 -0
  1094. mindspore/ops/composite/multitype_ops/uadd_impl.py +29 -0
  1095. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +228 -0
  1096. mindspore/ops/deprecated.py +315 -0
  1097. mindspore/ops/extend/__init__.py +53 -0
  1098. mindspore/ops/extend/array_func.py +218 -0
  1099. mindspore/ops/extend/math_func.py +76 -0
  1100. mindspore/ops/extend/nn_func.py +308 -0
  1101. mindspore/ops/function/__init__.py +760 -0
  1102. mindspore/ops/function/array_func.py +6889 -0
  1103. mindspore/ops/function/clip_func.py +384 -0
  1104. mindspore/ops/function/debug_func.py +69 -0
  1105. mindspore/ops/function/fft_func.py +31 -0
  1106. mindspore/ops/function/grad/__init__.py +34 -0
  1107. mindspore/ops/function/grad/grad_func.py +1424 -0
  1108. mindspore/ops/function/image_func.py +292 -0
  1109. mindspore/ops/function/linalg_func.py +416 -0
  1110. mindspore/ops/function/math_func.py +11877 -0
  1111. mindspore/ops/function/nn_func.py +8175 -0
  1112. mindspore/ops/function/other_func.py +114 -0
  1113. mindspore/ops/function/parameter_func.py +134 -0
  1114. mindspore/ops/function/random_func.py +1539 -0
  1115. mindspore/ops/function/reshard_func.py +102 -0
  1116. mindspore/ops/function/sparse_func.py +884 -0
  1117. mindspore/ops/function/sparse_unary_func.py +2422 -0
  1118. mindspore/ops/function/spectral_func.py +150 -0
  1119. mindspore/ops/function/vmap_func.py +116 -0
  1120. mindspore/ops/functional.py +454 -0
  1121. mindspore/ops/op_info_register.py +1572 -0
  1122. mindspore/ops/operations/__init__.py +717 -0
  1123. mindspore/ops/operations/_csr_ops.py +403 -0
  1124. mindspore/ops/operations/_custom_grad.py +181 -0
  1125. mindspore/ops/operations/_embedding_cache_ops.py +307 -0
  1126. mindspore/ops/operations/_grad_ops.py +3052 -0
  1127. mindspore/ops/operations/_infer_ops.py +19 -0
  1128. mindspore/ops/operations/_inner_ops.py +2567 -0
  1129. mindspore/ops/operations/_map_tensor_ops.py +112 -0
  1130. mindspore/ops/operations/_ms_kernel.py +601 -0
  1131. mindspore/ops/operations/_ocr_ops.py +379 -0
  1132. mindspore/ops/operations/_opaque_predicate_registry.py +41 -0
  1133. mindspore/ops/operations/_pyfunc_registry.py +58 -0
  1134. mindspore/ops/operations/_quant_ops.py +1844 -0
  1135. mindspore/ops/operations/_rl_inner_ops.py +1231 -0
  1136. mindspore/ops/operations/_scalar_ops.py +106 -0
  1137. mindspore/ops/operations/_sequence_ops.py +1155 -0
  1138. mindspore/ops/operations/_sparse_grad_ops.py +56 -0
  1139. mindspore/ops/operations/_tensor_array.py +359 -0
  1140. mindspore/ops/operations/_thor_ops.py +807 -0
  1141. mindspore/ops/operations/array_ops.py +6258 -0
  1142. mindspore/ops/operations/comm_ops.py +1996 -0
  1143. mindspore/ops/operations/control_ops.py +127 -0
  1144. mindspore/ops/operations/custom_ops.py +1065 -0
  1145. mindspore/ops/operations/debug_ops.py +646 -0
  1146. mindspore/ops/operations/image_ops.py +1041 -0
  1147. mindspore/ops/operations/inner_ops.py +697 -0
  1148. mindspore/ops/operations/linalg_ops.py +95 -0
  1149. mindspore/ops/operations/manually_defined/__init__.py +24 -0
  1150. mindspore/ops/operations/manually_defined/_inner.py +61 -0
  1151. mindspore/ops/operations/manually_defined/ops_def.py +2016 -0
  1152. mindspore/ops/operations/math_ops.py +5306 -0
  1153. mindspore/ops/operations/nn_ops.py +9669 -0
  1154. mindspore/ops/operations/other_ops.py +871 -0
  1155. mindspore/ops/operations/random_ops.py +1243 -0
  1156. mindspore/ops/operations/reshard_ops.py +53 -0
  1157. mindspore/ops/operations/rl_ops.py +288 -0
  1158. mindspore/ops/operations/sparse_ops.py +2753 -0
  1159. mindspore/ops/operations/spectral_ops.py +111 -0
  1160. mindspore/ops/primitive.py +1034 -0
  1161. mindspore/ops/signature.py +54 -0
  1162. mindspore/ops/silent_check.py +162 -0
  1163. mindspore/ops/vm_impl_registry.py +91 -0
  1164. mindspore/ops_generate/__init__.py +27 -0
  1165. mindspore/ops_generate/arg_dtype_cast.py +250 -0
  1166. mindspore/ops_generate/arg_handler.py +197 -0
  1167. mindspore/ops_generate/gen_aclnn_implement.py +263 -0
  1168. mindspore/ops_generate/gen_ops.py +1084 -0
  1169. mindspore/ops_generate/gen_ops_inner_prim.py +131 -0
  1170. mindspore/ops_generate/gen_pyboost_func.py +968 -0
  1171. mindspore/ops_generate/gen_utils.py +209 -0
  1172. mindspore/ops_generate/op_proto.py +138 -0
  1173. mindspore/ops_generate/pyboost_utils.py +354 -0
  1174. mindspore/ops_generate/template.py +239 -0
  1175. mindspore/parallel/__init__.py +28 -0
  1176. mindspore/parallel/_auto_parallel_context.py +1466 -0
  1177. mindspore/parallel/_cell_wrapper.py +91 -0
  1178. mindspore/parallel/_cost_model_context.py +700 -0
  1179. mindspore/parallel/_dp_allreduce_fusion.py +159 -0
  1180. mindspore/parallel/_offload_context.py +275 -0
  1181. mindspore/parallel/_parallel_serialization.py +533 -0
  1182. mindspore/parallel/_ps_context.py +242 -0
  1183. mindspore/parallel/_recovery_context.py +110 -0
  1184. mindspore/parallel/_tensor.py +660 -0
  1185. mindspore/parallel/_transformer/__init__.py +35 -0
  1186. mindspore/parallel/_transformer/layers.py +765 -0
  1187. mindspore/parallel/_transformer/loss.py +251 -0
  1188. mindspore/parallel/_transformer/moe.py +693 -0
  1189. mindspore/parallel/_transformer/op_parallel_config.py +222 -0
  1190. mindspore/parallel/_transformer/transformer.py +3119 -0
  1191. mindspore/parallel/_utils.py +600 -0
  1192. mindspore/parallel/algo_parameter_config.py +400 -0
  1193. mindspore/parallel/checkpoint_transform.py +643 -0
  1194. mindspore/parallel/cluster/__init__.py +15 -0
  1195. mindspore/parallel/cluster/process_entity/__init__.py +18 -0
  1196. mindspore/parallel/cluster/process_entity/_api.py +344 -0
  1197. mindspore/parallel/cluster/process_entity/_utils.py +126 -0
  1198. mindspore/parallel/cluster/run.py +136 -0
  1199. mindspore/parallel/mpi/__init__.py +14 -0
  1200. mindspore/parallel/mpi/_mpi_config.py +116 -0
  1201. mindspore/parallel/parameter_broadcast.py +152 -0
  1202. mindspore/parallel/shard.py +350 -0
  1203. mindspore/perf_msvcbuildinsights.dll +0 -0
  1204. mindspore/pgodb140.dll +0 -0
  1205. mindspore/pgort140.dll +0 -0
  1206. mindspore/profiler/__init__.py +27 -0
  1207. mindspore/profiler/common/__init__.py +14 -0
  1208. mindspore/profiler/common/exceptions/__init__.py +14 -0
  1209. mindspore/profiler/common/exceptions/error_code.py +83 -0
  1210. mindspore/profiler/common/exceptions/exceptions.py +286 -0
  1211. mindspore/profiler/common/process_pool.py +41 -0
  1212. mindspore/profiler/common/singleton.py +28 -0
  1213. mindspore/profiler/common/struct_type.py +118 -0
  1214. mindspore/profiler/common/util.py +444 -0
  1215. mindspore/profiler/common/validator/__init__.py +14 -0
  1216. mindspore/profiler/common/validator/validate_path.py +84 -0
  1217. mindspore/profiler/envprofiling.py +256 -0
  1218. mindspore/profiler/parser/__init__.py +14 -0
  1219. mindspore/profiler/parser/aicpu_data_parser.py +272 -0
  1220. mindspore/profiler/parser/ascend_analysis/__init__.py +14 -0
  1221. mindspore/profiler/parser/ascend_analysis/constant.py +53 -0
  1222. mindspore/profiler/parser/ascend_analysis/file_manager.py +159 -0
  1223. mindspore/profiler/parser/ascend_analysis/function_event.py +161 -0
  1224. mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +131 -0
  1225. mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +85 -0
  1226. mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +57 -0
  1227. mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +116 -0
  1228. mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +86 -0
  1229. mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +68 -0
  1230. mindspore/profiler/parser/ascend_cluster_generator.py +116 -0
  1231. mindspore/profiler/parser/ascend_communicate_generator.py +314 -0
  1232. mindspore/profiler/parser/ascend_flops_generator.py +116 -0
  1233. mindspore/profiler/parser/ascend_fpbp_generator.py +82 -0
  1234. mindspore/profiler/parser/ascend_hccl_generator.py +271 -0
  1235. mindspore/profiler/parser/ascend_integrate_generator.py +42 -0
  1236. mindspore/profiler/parser/ascend_memory_generator.py +185 -0
  1237. mindspore/profiler/parser/ascend_msprof_exporter.py +281 -0
  1238. mindspore/profiler/parser/ascend_msprof_generator.py +187 -0
  1239. mindspore/profiler/parser/ascend_op_generator.py +334 -0
  1240. mindspore/profiler/parser/ascend_steptrace_generator.py +94 -0
  1241. mindspore/profiler/parser/ascend_timeline_generator.py +543 -0
  1242. mindspore/profiler/parser/base_timeline_generator.py +489 -0
  1243. mindspore/profiler/parser/container.py +229 -0
  1244. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +684 -0
  1245. mindspore/profiler/parser/flops_parser.py +531 -0
  1246. mindspore/profiler/parser/framework_enum.py +111 -0
  1247. mindspore/profiler/parser/framework_parser.py +854 -0
  1248. mindspore/profiler/parser/framework_struct.py +61 -0
  1249. mindspore/profiler/parser/hccl_parser.py +573 -0
  1250. mindspore/profiler/parser/hwts_log_parser.py +122 -0
  1251. mindspore/profiler/parser/integrator.py +526 -0
  1252. mindspore/profiler/parser/memory_usage_parser.py +431 -0
  1253. mindspore/profiler/parser/minddata_analyzer.py +800 -0
  1254. mindspore/profiler/parser/minddata_parser.py +186 -0
  1255. mindspore/profiler/parser/minddata_pipeline_parser.py +299 -0
  1256. mindspore/profiler/parser/msadvisor_analyzer.py +82 -0
  1257. mindspore/profiler/parser/msadvisor_parser.py +240 -0
  1258. mindspore/profiler/parser/op_intermediate_parser.py +149 -0
  1259. mindspore/profiler/parser/optime_parser.py +250 -0
  1260. mindspore/profiler/parser/profiler_info.py +141 -0
  1261. mindspore/profiler/parser/step_trace_parser.py +666 -0
  1262. mindspore/profiler/profiling.py +2054 -0
  1263. mindspore/rewrite/__init__.py +29 -0
  1264. mindspore/rewrite/api/__init__.py +17 -0
  1265. mindspore/rewrite/api/node.py +519 -0
  1266. mindspore/rewrite/api/node_type.py +53 -0
  1267. mindspore/rewrite/api/pattern_engine.py +490 -0
  1268. mindspore/rewrite/api/scoped_value.py +181 -0
  1269. mindspore/rewrite/api/symbol_tree.py +497 -0
  1270. mindspore/rewrite/ast_helpers/__init__.py +25 -0
  1271. mindspore/rewrite/ast_helpers/ast_converter.py +143 -0
  1272. mindspore/rewrite/ast_helpers/ast_finder.py +404 -0
  1273. mindspore/rewrite/ast_helpers/ast_flattener.py +268 -0
  1274. mindspore/rewrite/ast_helpers/ast_modifier.py +605 -0
  1275. mindspore/rewrite/ast_helpers/ast_replacer.py +79 -0
  1276. mindspore/rewrite/common/__init__.py +19 -0
  1277. mindspore/rewrite/common/config.py +24 -0
  1278. mindspore/rewrite/common/error_log.py +39 -0
  1279. mindspore/rewrite/common/event.py +28 -0
  1280. mindspore/rewrite/common/namer.py +271 -0
  1281. mindspore/rewrite/common/namespace.py +118 -0
  1282. mindspore/rewrite/common/observable.py +44 -0
  1283. mindspore/rewrite/common/observer.py +54 -0
  1284. mindspore/rewrite/node/__init__.py +22 -0
  1285. mindspore/rewrite/node/call_function.py +95 -0
  1286. mindspore/rewrite/node/cell_container.py +139 -0
  1287. mindspore/rewrite/node/control_flow.py +113 -0
  1288. mindspore/rewrite/node/node.py +1428 -0
  1289. mindspore/rewrite/node/node_manager.py +283 -0
  1290. mindspore/rewrite/node/node_topological_manager.py +223 -0
  1291. mindspore/rewrite/parsers/__init__.py +29 -0
  1292. mindspore/rewrite/parsers/arguments_parser.py +63 -0
  1293. mindspore/rewrite/parsers/assign_parser.py +852 -0
  1294. mindspore/rewrite/parsers/attribute_parser.py +57 -0
  1295. mindspore/rewrite/parsers/class_def_parser.py +289 -0
  1296. mindspore/rewrite/parsers/constant_parser.py +104 -0
  1297. mindspore/rewrite/parsers/container_parser.py +88 -0
  1298. mindspore/rewrite/parsers/expr_parser.py +55 -0
  1299. mindspore/rewrite/parsers/for_parser.py +61 -0
  1300. mindspore/rewrite/parsers/function_def_parser.py +84 -0
  1301. mindspore/rewrite/parsers/if_parser.py +85 -0
  1302. mindspore/rewrite/parsers/module_parser.py +117 -0
  1303. mindspore/rewrite/parsers/parser.py +43 -0
  1304. mindspore/rewrite/parsers/parser_register.py +86 -0
  1305. mindspore/rewrite/parsers/return_parser.py +37 -0
  1306. mindspore/rewrite/parsers/while_parser.py +59 -0
  1307. mindspore/rewrite/sparsify/__init__.py +0 -0
  1308. mindspore/rewrite/sparsify/sparse_transformer.py +457 -0
  1309. mindspore/rewrite/sparsify/sparsify.py +112 -0
  1310. mindspore/rewrite/sparsify/utils.py +179 -0
  1311. mindspore/rewrite/symbol_tree/__init__.py +20 -0
  1312. mindspore/rewrite/symbol_tree/symbol_tree.py +1819 -0
  1313. mindspore/rewrite/symbol_tree/symbol_tree_builder.py +76 -0
  1314. mindspore/rewrite/symbol_tree/symbol_tree_dumper.py +142 -0
  1315. mindspore/run_check/__init__.py +20 -0
  1316. mindspore/run_check/_check_version.py +574 -0
  1317. mindspore/run_check/run_check.py +66 -0
  1318. mindspore/safeguard/__init__.py +18 -0
  1319. mindspore/safeguard/rewrite_obfuscation.py +531 -0
  1320. mindspore/swresample-4.dll +0 -0
  1321. mindspore/swscale-6.dll +0 -0
  1322. mindspore/tbbmalloc.dll +0 -0
  1323. mindspore/tinyxml2.dll +0 -0
  1324. mindspore/train/__init__.py +47 -0
  1325. mindspore/train/_utils.py +439 -0
  1326. mindspore/train/amp.py +817 -0
  1327. mindspore/train/anf_ir_pb2.py +1517 -0
  1328. mindspore/train/callback/__init__.py +44 -0
  1329. mindspore/train/callback/_backup_and_restore.py +117 -0
  1330. mindspore/train/callback/_callback.py +613 -0
  1331. mindspore/train/callback/_checkpoint.py +751 -0
  1332. mindspore/train/callback/_cluster_monitor.py +201 -0
  1333. mindspore/train/callback/_dataset_graph.py +150 -0
  1334. mindspore/train/callback/_early_stop.py +239 -0
  1335. mindspore/train/callback/_flops_collector.py +238 -0
  1336. mindspore/train/callback/_history.py +92 -0
  1337. mindspore/train/callback/_lambda_callback.py +80 -0
  1338. mindspore/train/callback/_landscape.py +1049 -0
  1339. mindspore/train/callback/_loss_monitor.py +107 -0
  1340. mindspore/train/callback/_lr_scheduler_callback.py +76 -0
  1341. mindspore/train/callback/_mindio_ttp.py +443 -0
  1342. mindspore/train/callback/_on_request_exit.py +195 -0
  1343. mindspore/train/callback/_reduce_lr_on_plateau.py +226 -0
  1344. mindspore/train/callback/_summary_collector.py +1184 -0
  1345. mindspore/train/callback/_time_monitor.py +141 -0
  1346. mindspore/train/checkpoint_pb2.py +233 -0
  1347. mindspore/train/data_sink.py +219 -0
  1348. mindspore/train/dataset_helper.py +688 -0
  1349. mindspore/train/lineage_pb2.py +1260 -0
  1350. mindspore/train/loss_scale_manager.py +213 -0
  1351. mindspore/train/memory_profiling_pb2.py +298 -0
  1352. mindspore/train/metrics/__init__.py +175 -0
  1353. mindspore/train/metrics/accuracy.py +133 -0
  1354. mindspore/train/metrics/auc.py +129 -0
  1355. mindspore/train/metrics/bleu_score.py +170 -0
  1356. mindspore/train/metrics/confusion_matrix.py +700 -0
  1357. mindspore/train/metrics/cosine_similarity.py +109 -0
  1358. mindspore/train/metrics/dice.py +116 -0
  1359. mindspore/train/metrics/error.py +175 -0
  1360. mindspore/train/metrics/fbeta.py +167 -0
  1361. mindspore/train/metrics/hausdorff_distance.py +333 -0
  1362. mindspore/train/metrics/loss.py +97 -0
  1363. mindspore/train/metrics/mean_surface_distance.py +189 -0
  1364. mindspore/train/metrics/metric.py +373 -0
  1365. mindspore/train/metrics/occlusion_sensitivity.py +225 -0
  1366. mindspore/train/metrics/perplexity.py +133 -0
  1367. mindspore/train/metrics/precision.py +160 -0
  1368. mindspore/train/metrics/recall.py +159 -0
  1369. mindspore/train/metrics/roc.py +223 -0
  1370. mindspore/train/metrics/root_mean_square_surface_distance.py +191 -0
  1371. mindspore/train/metrics/topk.py +167 -0
  1372. mindspore/train/mind_ir_pb2.py +1903 -0
  1373. mindspore/train/model.py +2176 -0
  1374. mindspore/train/node_strategy_pb2.py +653 -0
  1375. mindspore/train/print_pb2.py +184 -0
  1376. mindspore/train/profiling_parallel_pb2.py +151 -0
  1377. mindspore/train/serialization.py +3101 -0
  1378. mindspore/train/summary/__init__.py +23 -0
  1379. mindspore/train/summary/_lineage_adapter.py +41 -0
  1380. mindspore/train/summary/_summary_adapter.py +496 -0
  1381. mindspore/train/summary/_writer_pool.py +207 -0
  1382. mindspore/train/summary/enums.py +56 -0
  1383. mindspore/train/summary/summary_record.py +581 -0
  1384. mindspore/train/summary/writer.py +167 -0
  1385. mindspore/train/summary_pb2.py +1165 -0
  1386. mindspore/train/train_thor/__init__.py +20 -0
  1387. mindspore/train/train_thor/convert_utils.py +268 -0
  1388. mindspore/train/train_thor/dataset_helper.py +192 -0
  1389. mindspore/train/train_thor/model_thor.py +257 -0
  1390. mindspore/turbojpeg.dll +0 -0
  1391. mindspore/vcmeta.dll +0 -0
  1392. mindspore/vcomp140.dll +0 -0
  1393. mindspore/vcruntime140.dll +0 -0
  1394. mindspore/vcruntime140_1.dll +0 -0
  1395. mindspore/version.py +1 -0
  1396. mindspore-2.3.0.dist-info/METADATA +351 -0
  1397. mindspore-2.3.0.dist-info/RECORD +1400 -0
  1398. mindspore-2.3.0.dist-info/WHEEL +5 -0
  1399. mindspore-2.3.0.dist-info/entry_points.txt +4 -0
  1400. mindspore-2.3.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1996 @@
1
+ # Copyright 2020-2023 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+
16
+ """Communication APIs.
17
+ """
18
+ from __future__ import absolute_import
19
+ from __future__ import division
20
+
21
+ from mindspore.common import Tensor
22
+ from mindspore import _checkparam as validator
23
+ from mindspore.communication.management import get_rank, get_group_size, GlobalComm, _get_group, _host_distribute
24
+ from mindspore.common import dtype as mstype
25
+ from mindspore.ops.primitive import PrimitiveWithInfer, PrimitiveWithCheck, Primitive, prim_attr_register
26
+ from mindspore.common.api import context
27
+
28
+
29
+ class ReduceOp:
30
+ """
31
+ Operation options for reducing tensors. This is an enumerated type, not an operator.
32
+
33
+ The main calling methods are as follows:
34
+
35
+ - SUM: ReduceOp.SUM.
36
+ - MAX: ReduceOp.MAX.
37
+ - MIN: ReduceOp.MIN.
38
+ - PROD: ReduceOp.PROD.
39
+
40
+ There are four kinds of operation options, "SUM", "MAX", "MIN", and "PROD".
41
+
42
+ - SUM: Take the sum.
43
+ - MAX: Take the maximum.
44
+ - MIN: Take the minimum.
45
+ - PROD: Take the product.
46
+
47
+ Supported Platforms:
48
+ ``Ascend`` ``GPU``
49
+
50
+ Examples:
51
+ .. note::
52
+ Before running the following examples, you need to configure the communication environment variables.
53
+
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>`_
58
+ for more details.
59
+
60
+ This example should be run with multiple devices.
61
+
62
+ >>> import numpy as np
63
+ >>> import mindspore
64
+ >>> from mindspore.communication import init
65
+ >>> from mindspore import Tensor, ops, nn
66
+ >>> from mindspore.ops import ReduceOp
67
+ >>>
68
+ >>> init()
69
+ >>> class Net(nn.Cell):
70
+ ... def __init__(self):
71
+ ... super(Net, self).__init__()
72
+ ... self.allreduce_sum = ops.AllReduce(ReduceOp.SUM)
73
+ ...
74
+ ... def construct(self, x):
75
+ ... return self.allreduce_sum(x)
76
+ ...
77
+ >>> input_ = Tensor(np.ones([2, 8]).astype(np.float32))
78
+ >>> net = Net()
79
+ >>> output = net(input_)
80
+ >>> print(output)
81
+ [[2. 2. 2. 2. 2. 2. 2. 2.]
82
+ [2. 2. 2. 2. 2. 2. 2. 2.]]
83
+ """
84
+ SUM = "sum"
85
+ MAX = "max"
86
+ MIN = "min"
87
+ PROD = "prod"
88
+
89
+
90
+ def check_collective_target_dtype(data_name, data_dtype, prim_name):
91
+ """Check if data type is valid."""
92
+ default_target_dtypes = (mstype.int8, mstype.int32, mstype.float16, mstype.float32, mstype.bfloat16)
93
+ gpu_target_dtypes = (mstype.bool_, mstype.int8, mstype.int32, mstype.int64, mstype.uint32, mstype.uint64,
94
+ mstype.float16, mstype.float32, mstype.float64)
95
+
96
+ valid_dtype = gpu_target_dtypes if context.get_context("device_target") == "GPU" else default_target_dtypes
97
+ validator.check_tensor_dtype_valid(data_name, data_dtype, valid_dtype, prim_name)
98
+
99
+
100
+ def check_hcom_group_valid(group, prim_name=None):
101
+ """Check if hcom group is valid."""
102
+ msg_prefix = f"For '{prim_name}', the" if prim_name else "The"
103
+ if not _host_distribute() and context.get_context("mode") == context.PYNATIVE_MODE and \
104
+ group != GlobalComm.WORLD_COMM_GROUP:
105
+ raise RuntimeError(f"{msg_prefix} 'group' only support 'hccl_world_group' in pynative mode, but got "
106
+ f"'group': {group}. Please start by using mpi-run.")
107
+
108
+
109
+ class AllReduce(Primitive):
110
+ """
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.
113
+
114
+ Note:
115
+ The tensors must have the same shape and format in all processes of the collection.
116
+
117
+ Args:
118
+ op (str, optional): Specifies an operation used for element-wise reductions, like sum, prod, max, and min.
119
+ On the CPU, only 'sum' is supported. Default: ``ReduceOp.SUM`` .
120
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
121
+ means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
122
+
123
+ Inputs:
124
+ - **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
125
+
126
+ Outputs:
127
+ Tensor, has the same shape of the input, i.e., :math:`(x_1, x_2, ..., x_R)`.
128
+ The contents depend on the specified operation.
129
+
130
+ Raises:
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.
133
+
134
+ Supported Platforms:
135
+ ``Ascend`` ``GPU`` ``CPU``
136
+
137
+ Examples:
138
+ .. note::
139
+ Before running the following examples, you need to configure the communication environment variables.
140
+
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>`_
145
+ for more details.
146
+
147
+ This example should be run with 2 devices.
148
+
149
+ >>> import numpy as np
150
+ >>> from mindspore.communication import init
151
+ >>> from mindspore import Tensor
152
+ >>> from mindspore.ops import ReduceOp
153
+ >>> import mindspore.nn as nn
154
+ >>> from mindspore import ops
155
+ >>>
156
+ >>> init()
157
+ >>> class Net(nn.Cell):
158
+ ... def __init__(self):
159
+ ... super(Net, self).__init__()
160
+ ... self.allreduce_sum = ops.AllReduce(ReduceOp.SUM)
161
+ ...
162
+ ... def construct(self, x):
163
+ ... return self.allreduce_sum(x)
164
+ ...
165
+ >>> input_ = Tensor(np.ones([2, 8]).astype(np.float32))
166
+ >>> net = Net()
167
+ >>> output = net(input_)
168
+ >>> print(output)
169
+ [[2. 2. 2. 2. 2. 2. 2. 2.]
170
+ [2. 2. 2. 2. 2. 2. 2. 2.]]
171
+
172
+ Tutorial Examples:
173
+ - `Distributed Set Communication Primitives - AllReduce
174
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#allreduce>`_
175
+
176
+ """
177
+
178
+ @prim_attr_register
179
+ def __init__(self, op=ReduceOp.SUM, group=GlobalComm.WORLD_COMM_GROUP):
180
+ """Initialize AllReduce."""
181
+ if not isinstance(op, type(ReduceOp.SUM)):
182
+ raise TypeError(f"For '{self.name}', the 'op' must be str, but got {type(op).__name__}.")
183
+ if not isinstance(_get_group(group), str):
184
+ raise TypeError(f"For '{self.name}', the 'group' must be str, "
185
+ f"but got {type(_get_group(group)).__name__}.")
186
+ check_hcom_group_valid(group, prim_name=self.name)
187
+ self.op = op
188
+ self.add_prim_attr('group', _get_group(group))
189
+ self.add_prim_attr('fusion', 0)
190
+ self.add_prim_attr('index', 0)
191
+ self.add_prim_attr('no_eliminate', True)
192
+
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
+
283
+ class AllGather(PrimitiveWithInfer):
284
+ """
285
+ Gathers tensors from the specified communication group and returns the tensor which is all gathered.
286
+
287
+ Note:
288
+ - The tensors must have the same shape and format in all processes of the collection.
289
+
290
+ Args:
291
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
292
+ means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
293
+
294
+ Inputs:
295
+ - **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
296
+
297
+ Outputs:
298
+ Tensor. If the number of devices in the group is N,
299
+ then the shape of output is :math:`(N, x_1, x_2, ..., x_R)`.
300
+
301
+ Raises:
302
+ TypeError: If `group` is not a str.
303
+ ValueError: If the local rank id of the calling process in the group
304
+ is larger than the group's rank size.
305
+ RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
306
+
307
+ Supported Platforms:
308
+ ``Ascend`` ``GPU``
309
+
310
+ Examples:
311
+ .. note::
312
+ Before running the following examples, you need to configure the communication environment variables.
313
+
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>`_
318
+ for more details.
319
+
320
+ This example should be run with 2 devices.
321
+
322
+ >>> import numpy as np
323
+ >>> import mindspore as ms
324
+ >>> from mindspore import ops
325
+ >>> import mindspore.nn as nn
326
+ >>> from mindspore.communication import init
327
+ >>> from mindspore import Tensor
328
+ >>>
329
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
330
+ >>> init()
331
+ >>> class Net(nn.Cell):
332
+ ... def __init__(self):
333
+ ... super(Net, self).__init__()
334
+ ... self.allgather = ops.AllGather()
335
+ ...
336
+ ... def construct(self, x):
337
+ ... return self.allgather(x)
338
+ ...
339
+ >>> input_x = Tensor(np.ones([2, 8]).astype(np.float32))
340
+ >>> net = Net()
341
+ >>> output = net(input_x)
342
+ >>> print(output)
343
+ [[1. 1. 1. 1. 1. 1. 1. 1.]
344
+ [1. 1. 1. 1. 1. 1. 1. 1.]
345
+ [1. 1. 1. 1. 1. 1. 1. 1.]
346
+ [1. 1. 1. 1. 1. 1. 1. 1.]]
347
+
348
+ Tutorial Examples:
349
+ - `Distributed Set Communication Primitives - AllGather
350
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#allgather>`_
351
+
352
+ """
353
+
354
+ @prim_attr_register
355
+ def __init__(self, group=GlobalComm.WORLD_COMM_GROUP):
356
+ """Initialize AllGather."""
357
+ validator.check_value_type('group', _get_group(group), (str,), self.name)
358
+ self.rank = get_rank(_get_group(group))
359
+ self.rank_size = get_group_size(_get_group(group))
360
+ validator.check('rank', self.rank, 'rank_size', self.rank_size, validator.LT, self.name)
361
+ self.add_prim_attr('rank_size', self.rank_size)
362
+ self.add_prim_attr('group', _get_group(group))
363
+ self.add_prim_attr('fusion', 0)
364
+ self.add_prim_attr('mean_flag', False)
365
+ self.add_prim_attr('no_eliminate', True)
366
+
367
+ def infer_shape(self, x_shape):
368
+ validator.check_positive_int(len(x_shape), "x shape", self.name)
369
+ if x_shape[0] > 0:
370
+ x_shape[0] = x_shape[0] * self.rank_size
371
+ return x_shape
372
+
373
+ def infer_dtype(self, x_dtype):
374
+ check_collective_target_dtype('x', x_dtype, self.name)
375
+ return x_dtype
376
+
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
+
397
+ class _MiniStepAllGather(PrimitiveWithInfer):
398
+ """
399
+ Auto parallel virtual operator. Do nothing in forward, do reducescatter in backward in mini-step. It is only for
400
+ internal use of parallel modules and cannot be called by users.
401
+
402
+ Args:
403
+ group (str): The communication group to work on. Default: ``None`` .
404
+ grad_accumulation_step (int): The grad accumulation step. Default: ``None`` .
405
+ """
406
+
407
+ @prim_attr_register
408
+ def __init__(self, group=GlobalComm.WORLD_COMM_GROUP, grad_accumulation_step=None, mean_flag=None):
409
+ """Initialize _MiniStepAllGather."""
410
+ validator.check_value_type('group', _get_group(group), (str,), self.name)
411
+ self.rank = get_rank(_get_group(group))
412
+ self.rank_size = get_group_size(_get_group(group))
413
+ validator.check('rank', self.rank, 'rank_size', self.rank_size, validator.LT, self.name)
414
+ self.add_prim_attr('rank_size', self.rank_size)
415
+ self.add_prim_attr('group', _get_group(group))
416
+ self.add_prim_attr('fusion', 1)
417
+ self.grad_accumulation_step = grad_accumulation_step
418
+ self.mean_flag = mean_flag
419
+ self.add_prim_attr('order_enforce_skip', True)
420
+ self.add_prim_attr('side_effect_backprop_mem', True)
421
+
422
+ def infer_shape(self, x_shape, z_shape):
423
+ validator.check_positive_int(len(x_shape), "x shape", self.name)
424
+ if x_shape[0] > 0:
425
+ x_shape[0] = x_shape[0] * self.rank_size
426
+ return x_shape
427
+
428
+ def infer_dtype(self, x_dtype, z_shape):
429
+ check_collective_target_dtype('x', x_dtype, self.name)
430
+ return x_dtype
431
+
432
+
433
+ class _MicroStepAllGather(PrimitiveWithInfer):
434
+ """
435
+ Auto parallel virtual operator. Do nothing in forward, do reducescatter in backward in mini-step. It is only for
436
+ internal use of parallel modules and cannot be called by users.
437
+
438
+ Args:
439
+ group (str): The communication group to work on. Default: ``None`` .
440
+ """
441
+
442
+ @prim_attr_register
443
+ def __init__(self, group=GlobalComm.WORLD_COMM_GROUP, mean_flag=None):
444
+ validator.check_value_type('group', _get_group(group), (str,), self.name)
445
+ self.rank_size = 1
446
+ if group != "":
447
+ self.rank = get_rank(_get_group(group))
448
+ self.rank_size = get_group_size(_get_group(group))
449
+ validator.check('rank', self.rank, 'rank_size', self.rank_size, validator.LT, self.name)
450
+ self.add_prim_attr('rank_size', self.rank_size)
451
+ self.add_prim_attr('group', _get_group(group))
452
+ self.add_prim_attr('fusion', 1)
453
+ self.add_prim_attr('do_mirror', False)
454
+ self.mean_flag = mean_flag
455
+ self.add_prim_attr('order_enforce_skip', True)
456
+
457
+ def infer_shape(self, x_shape, z_shape):
458
+ validator.check_positive_int(len(x_shape), "x shape", self.name)
459
+ if x_shape[0] > 0:
460
+ x_shape[0] = x_shape[0] * self.rank_size
461
+ return x_shape
462
+
463
+ def infer_dtype(self, x_dtype, z_dtype):
464
+ check_collective_target_dtype('x', x_dtype, self.name)
465
+ return x_dtype
466
+
467
+
468
+ class _HostAllGather(PrimitiveWithInfer):
469
+ """
470
+ Gathers tensors from the specified communication group on host.
471
+
472
+ Note:
473
+ The tensors must have the same shape and format in all processes of the collection.
474
+ _HostAllGather is a host-side operator, it depends on OpenMPI and must use build option -M on
475
+ to enable it. Using mpirun command to run it:
476
+ mpirun -output-filename log -merge-stderr-to-stdout -np 3 python test_host_all_gather.py
477
+
478
+ Args:
479
+ group (Union[tuple[int],list[int]]): The rand_ids of communication group to work on. Default: ``None`` .
480
+
481
+ Raises:
482
+ TypeError: If group is not a list nor tuple, or elements of group are not int.
483
+ ValueError: If group is not set, or rank_id from group not in [0, 7].
484
+
485
+ Inputs:
486
+ - **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
487
+
488
+ Outputs:
489
+ Tensor. If the number of devices in the group is N,
490
+ then the shape of output is :math:`(N, x_1, x_2, ..., x_R)`.
491
+ """
492
+
493
+ @prim_attr_register
494
+ def __init__(self, group=None):
495
+ """Initialize _HostAllGather."""
496
+ if group is None:
497
+ raise ValueError(f"For '{self.name}', the 'group' cannot be None, but got {group}.")
498
+ validator.check_value_type('group', group, (tuple, list), self.name)
499
+ validator.check_int(len(group), 2, validator.GE, "group size", self.name)
500
+ for r in group:
501
+ validator.check_int_range(r, 0, 7, validator.INC_BOTH, "rank_id", self.name)
502
+ validator.check_value_type("rank_id", r, (int,), self.name)
503
+ self.group_size = len(group)
504
+ self.add_prim_attr('group', group)
505
+ self.add_prim_attr('no_eliminate', True)
506
+ self.add_prim_attr('order_enforce_skip', True)
507
+
508
+ def infer_shape(self, x_shape):
509
+ validator.check_positive_int(len(x_shape), "x shape", self.name)
510
+ if x_shape[0] > 0:
511
+ x_shape[0] = x_shape[0] * self.group_size
512
+ return x_shape
513
+
514
+ def infer_dtype(self, x_dtype):
515
+ check_collective_target_dtype('x', x_dtype, self.name)
516
+ return x_dtype
517
+
518
+ def __call__(self, tensor):
519
+ raise NotImplementedError
520
+
521
+
522
+ class ReduceScatter(Primitive):
523
+ r"""
524
+ Reduces and scatters tensors from the specified communication group
525
+ and returns the tensor which is reduced and scattered.
526
+
527
+ Note:
528
+ The tensors must have the same shape and format in all processes of the collection.
529
+
530
+ Args:
531
+ op (str, optional): Specifies an operation used for element-wise reductions,
532
+ like SUM and MAX. Default: ``ReduceOp.SUM`` .
533
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` .
534
+
535
+ Inputs:
536
+ - **input_x** (Tensor) - Input Tensor, suppose it has a shape :math:`(N, *)`, where `*`
537
+ means any number of additional dimensions. N must be divisible by rank_size.
538
+ rank_size refers to the number of cards in the communication group.
539
+
540
+ Outputs:
541
+ Tensor, it has the same dtype as `input_x` with a shape of :math:`(N/rank\_size, *)`.
542
+
543
+ Raises:
544
+ TypeError: If any of operation and group is not a string.
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.
547
+
548
+ Supported Platforms:
549
+ ``Ascend`` ``GPU``
550
+
551
+ Examples:
552
+ .. note::
553
+ Before running the following examples, you need to configure the communication environment variables.
554
+
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>`_
559
+ for more details.
560
+
561
+ This example should be run with 2 devices.
562
+
563
+ >>> import mindspore as ms
564
+ >>> from mindspore import Tensor
565
+ >>> from mindspore.communication import init
566
+ >>> from mindspore.ops import ReduceOp
567
+ >>> import mindspore.nn as nn
568
+ >>> from mindspore import ops
569
+ >>> import numpy as np
570
+ >>>
571
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
572
+ >>> init()
573
+ >>> class Net(nn.Cell):
574
+ ... def __init__(self):
575
+ ... super(Net, self).__init__()
576
+ ... self.reducescatter = ops.ReduceScatter(ReduceOp.SUM)
577
+ ...
578
+ ... def construct(self, x):
579
+ ... return self.reducescatter(x)
580
+ ...
581
+ >>> input_ = Tensor(np.ones([8, 8]).astype(np.float32))
582
+ >>> net = Net()
583
+ >>> output = net(input_)
584
+ >>> print(output)
585
+ [[2. 2. 2. 2. 2. 2. 2. 2.]
586
+ [2. 2. 2. 2. 2. 2. 2. 2.]
587
+ [2. 2. 2. 2. 2. 2. 2. 2.]
588
+ [2. 2. 2. 2. 2. 2. 2. 2.]]
589
+
590
+ Tutorial Examples:
591
+ - `Distributed Set Communication Primitives - ReduceScatter
592
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#reducescatter>`_
593
+
594
+ """
595
+
596
+ @prim_attr_register
597
+ def __init__(self, op=ReduceOp.SUM, group=GlobalComm.WORLD_COMM_GROUP):
598
+ """Initialize ReduceScatter."""
599
+ validator.check_value_type('op', op, (type(ReduceOp.SUM),), self.name)
600
+ validator.check_value_type('group', _get_group(group), (str,), self.name)
601
+ self.op = op
602
+ self.rank_size = get_group_size(_get_group(group))
603
+ self.add_prim_attr('rank_size', self.rank_size)
604
+ self.add_prim_attr('group', _get_group(group))
605
+ self.add_prim_attr('fusion', 0)
606
+ self.add_prim_attr('no_eliminate', True)
607
+
608
+
609
+ class _HostReduceScatter(PrimitiveWithInfer):
610
+ """
611
+ Reduces and scatters tensors from the specified communication group on host.
612
+
613
+ Note:
614
+ The tensors must have the same shape and format in all processes of the collection.
615
+ _HostReduceScatter is a host-side operator, it depends on OpenMPI and must use build option
616
+ -M on to enable it. Using mpirun command to run it:
617
+ mpirun -output-filename log -merge-stderr-to-stdout -np 3 python test_host_reduce_scatter.py
618
+
619
+ Args:
620
+ op (str): Specifies an operation used for element-wise reductions,
621
+ like sum, max, avg. Default: ``ReduceOp.SUM`` .
622
+ group (Union[tuple[int],list[int]]): The rand_ids of communication group to work on. Default: ``None`` .
623
+
624
+ Raises:
625
+ TypeError: If op is not a string and group is not a list nor tuple,
626
+ or elements of group are not int.
627
+ ValueError: If the first dimension of input can not be divided by group size,
628
+ or group is not set, or rank_id not in [0, 7].
629
+ """
630
+
631
+ @prim_attr_register
632
+ def __init__(self, op=ReduceOp.SUM, group=None):
633
+ """Initialize _HostReduceScatter."""
634
+ if group is None:
635
+ raise ValueError(f"For '{self.name}', the 'group' cannot be None, but got {group}.")
636
+ validator.check_value_type('op', op, (type(ReduceOp.SUM),), self.name)
637
+ validator.check_value_type('group', group, (tuple, list), self.name)
638
+ validator.check_int(len(group), 2, validator.GE, "group size", self.name)
639
+ for r in group:
640
+ validator.check_int_range(r, 0, 7, validator.INC_BOTH, "rank_id", self.name)
641
+ validator.check_value_type("rank_id", r, (int,), self.name)
642
+ self.op = op
643
+ self.group_size = len(group)
644
+ self.add_prim_attr('group', group)
645
+ self.add_prim_attr('no_eliminate', True)
646
+ self.add_prim_attr('order_enforce_skip', True)
647
+
648
+ def infer_shape(self, x_shape):
649
+ if x_shape[0] % self.group_size != 0:
650
+ raise ValueError(f"For '{self.name}', the first dimension of 'x_shape' must be divided by 'group_size', "
651
+ f"but got 'x_shape[0]': {x_shape[0]}, 'rank_size': {self.group_size}.")
652
+ x_shape[0] = int(x_shape[0] / self.group_size)
653
+ return x_shape
654
+
655
+ def infer_dtype(self, x_dtype):
656
+ check_collective_target_dtype('x', x_dtype, self.name)
657
+ return x_dtype
658
+
659
+ def __call__(self, tensor):
660
+ raise NotImplementedError
661
+
662
+
663
+ class Broadcast(PrimitiveWithInfer):
664
+ """
665
+ Broadcasts the tensor to the whole group.
666
+
667
+ Note:
668
+ The tensors must have the same shape and format in all processes of the collection.
669
+
670
+ Args:
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.
673
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` .
674
+
675
+ Inputs:
676
+ - **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
677
+
678
+ Outputs:
679
+ tuple[Tensor], Tensor has the same shape of the input, i.e., :math:`(x_1, x_2, ..., x_R)`.
680
+ The contents depend on the data of the `root_rank` device.
681
+
682
+ Raises:
683
+ TypeError: If root_rank is not an integer or group is not a string.
684
+
685
+ Supported Platforms:
686
+ ``Ascend`` ``GPU``
687
+
688
+ Examples:
689
+ .. note::
690
+ Before running the following examples, you need to configure the communication environment variables.
691
+
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>`_
696
+ for more details.
697
+
698
+ This example should be run with 2 devices.
699
+
700
+ >>> import mindspore as ms
701
+ >>> from mindspore import Tensor
702
+ >>> from mindspore.communication import init
703
+ >>> import mindspore.nn as nn
704
+ >>> from mindspore import ops
705
+ >>> import numpy as np
706
+ >>>
707
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
708
+ >>> init()
709
+ >>> class Net(nn.Cell):
710
+ ... def __init__(self):
711
+ ... super(Net, self).__init__()
712
+ ... self.broadcast = ops.Broadcast(1)
713
+ ...
714
+ ... def construct(self, x):
715
+ ... return self.broadcast((x,))
716
+ ...
717
+ >>> input_x = Tensor(np.ones([2, 4]).astype(np.int32))
718
+ >>> net = Net()
719
+ >>> output = net(input_x)
720
+ >>> print(output)
721
+ (Tensor(shape[2,4], dtype=Int32, value=
722
+ [[1, 1, 1, 1],
723
+ [1, 1, 1, 1]]),)
724
+
725
+ Tutorial Examples:
726
+ - `Distributed Set Communication Primitives - Broadcast
727
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#broadcast>`_
728
+
729
+ """
730
+
731
+ @prim_attr_register
732
+ def __init__(self, root_rank, group=GlobalComm.WORLD_COMM_GROUP):
733
+ """Initialize Broadcast."""
734
+ validator.check_value_type('root_rank', root_rank, (int,), self.name)
735
+ validator.check_value_type('group', _get_group(group), (str,), self.name)
736
+ check_hcom_group_valid(group, prim_name=self.name)
737
+ self.add_prim_attr('group', _get_group(group))
738
+ self.add_prim_attr('no_eliminate', True)
739
+
740
+
741
+ class _AllSwap(PrimitiveWithCheck):
742
+ """
743
+ _AllSwap is a collective operation.
744
+
745
+ _AllSwap sends data from the all processes to the all processes in the specified group. It has two phases:
746
+
747
+ - The scatter phase: On each process, the operand is split into the send size of blocks along the
748
+ 0-th axis, and the blocks are scattered to all processes, e.g., the ith block is send to the ith process.
749
+ - The gather phase: Each process concatenates the received blocks along the 0-th axis.
750
+
751
+ Note:
752
+ The tensors must have the same format in all processes of the collection.
753
+
754
+ Args:
755
+ group (str): The communication group name.
756
+
757
+ Inputs:
758
+ tensor_in (tensor): A 2-D tensor. On each process, divide blocks into number of the send size.
759
+ send_size (tensor): A 1-D int64 tensor. The element is the send data size for each process.
760
+ recv_size (tensor): A 1-D int64 tensor. The element is the receive data size for each process.
761
+
762
+ Returns:
763
+ tensor_out (tensor): The result tensor.
764
+
765
+ Raises:
766
+ TypeError: If group is not a string.
767
+ """
768
+
769
+ @prim_attr_register
770
+ def __init__(self, group=GlobalComm.WORLD_COMM_GROUP):
771
+ """Initialize _AllSwap"""
772
+ validator.check_value_type('group', _get_group(group), (str,), self.name)
773
+ self.init_prim_io_names(inputs=['tensor_in', 'send_size', 'recv_size'], outputs=['tensor_out'])
774
+ self.add_prim_attr('group', _get_group(group))
775
+ self.add_prim_attr('no_eliminate', True)
776
+ self.add_prim_attr('order_enforce_skip', True)
777
+
778
+ def __check__(self, tensor_in, send_size, recv_size):
779
+ validator.check_subclass("tensor_in", tensor_in['dtype'], mstype.tensor_type, self.name)
780
+ validator.check_tensor_dtype_valid("send_size", send_size['dtype'], [mstype.int64],
781
+ self.name)
782
+ validator.check_tensor_dtype_valid("recv_size", recv_size['dtype'], [mstype.int64],
783
+ self.name)
784
+
785
+ validator.check_equal_int(len(tensor_in['shape']), 2, "tensor_in", self.name)
786
+ validator.check_equal_int(len(send_size['shape']), 1, "send_size", self.name)
787
+ validator.check_equal_int(len(recv_size['shape']), 1, "recv_size", self.name)
788
+
789
+ out_shape = [-1] + [tensor_in['shape'][1]]
790
+ out = {'shape': out_shape,
791
+ 'dtype': tensor_in['dtype'],
792
+ 'value': None}
793
+ return out
794
+
795
+
796
+ class NeighborExchange(Primitive):
797
+ """
798
+ NeighborExchange is a collective operation.
799
+
800
+ NeighborExchange sends data from the local rank to ranks in the send_rank_ids,
801
+ as while receive data from recv_rank_ids.
802
+
803
+ Note:
804
+ The user needs to preset
805
+ communication environment variables before running the following example, please check the details on the
806
+ official website of `MindSpore \
807
+ <https://www.mindspore.cn/docs/en/master/api_python/mindspore.ops.primitive.html#communication-operator>`_.
808
+
809
+ This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
810
+ in the same subnet, please check the `details \
811
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
812
+
813
+ Args:
814
+ send_rank_ids (list(int)): Ranks which the data is sent to.
815
+ recv_rank_ids (list(int)): Ranks which the data is received from.
816
+ recv_shapes (tuple(list(int))): Data shape which received from recv_rank_ids.
817
+ send_shapes (tuple(list(int))): Data shape which send to the send_rank_ids.
818
+ recv_type (type): Data type which received from recv_rank_ids
819
+ group (str): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` .
820
+
821
+ Inputs:
822
+ - **input_x** (tuple[Tensor]) - Shapes are same as args of send_shapes.
823
+
824
+ Outputs:
825
+ Tuple tensor, shapes are same as args of recv_shapes.
826
+
827
+ Supported Platforms:
828
+ ``Ascend``
829
+
830
+ Examples:
831
+ >>> # This example should be run with 2 devices. Refer to the tutorial > Distributed Training on mindspore.cn
832
+ >>> import os
833
+ >>> import mindspore as ms
834
+ >>> from mindspore import Tensor
835
+ >>> from mindspore.communication import init
836
+ >>> import mindspore.nn as nn
837
+ >>> from mindspore import ops
838
+ >>> import numpy as np
839
+ >>> class Net(nn.Cell):
840
+ ... def __init__(self):
841
+ ... super(Net, self).__init__()
842
+ ... self.neighborexchange = ops.NeighborExchange(send_rank_ids=[1], recv_rank_ids=[1],
843
+ ... recv_shapes=([2, 2],), send_shapes=([3, 3],),
844
+ ... recv_type=ms.float32)
845
+ ...
846
+ ...
847
+ ... def construct(self, x):
848
+ ... out = self.neighborexchange((x,))
849
+ ...
850
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
851
+ >>> init()
852
+ >>> net = Net()
853
+ >>> input_x = Tensor(np.ones([3, 3]), dtype = ms.float32)
854
+ >>> output = net(input_x)
855
+ >>> print(output)
856
+ [[2. 2.], [2. 2.]]
857
+
858
+ Tutorial Examples:
859
+ - `Distributed Set Communication Primitives - NeighborExchange
860
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#neighborexchange>`_
861
+
862
+ """
863
+
864
+ @prim_attr_register
865
+ def __init__(self, send_rank_ids, recv_rank_ids, recv_shapes, send_shapes, recv_type,
866
+ group=GlobalComm.WORLD_COMM_GROUP):
867
+ self.init_prim_io_names(inputs=['x'], outputs=['output'])
868
+ self.send_rank_ids = send_rank_ids
869
+ self.recv_rank_ids = recv_rank_ids
870
+ self.recv_shapes = recv_shapes
871
+ self.send_shapes = send_shapes
872
+ self.recv_type = recv_type
873
+ self.add_prim_attr('group', _get_group(group))
874
+ self.add_prim_attr('no_eliminate', True)
875
+
876
+ def __call__(self, tensor):
877
+ raise NotImplementedError
878
+
879
+
880
+ class AlltoAll(PrimitiveWithInfer):
881
+ r"""
882
+ AlltoAll is a collective operation.
883
+
884
+ AlltoAll sends data from the all processes to the all processes in the specified group. It has two phases:
885
+
886
+ - The scatter phase: On each process, the operand is split into split_count number of blocks along the
887
+ split_dimensions, and the blocks are scattered to all processes, e.g., the ith block is send to the ith process.
888
+ - The gather phase: Each process concatenates the received blocks along the concat_dimension.
889
+
890
+ Note:
891
+ This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
892
+ in the same subnet, please check the `details \
893
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
894
+
895
+ Args:
896
+ split_count (int): On each process, divide blocks into split_count number.
897
+ split_dim (int): On each process, split blocks along the split_dim.
898
+ concat_dim (int): On each process, gather the received blocks along the concat_dimension.
899
+ group (str): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` .
900
+
901
+ Inputs:
902
+ - **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
903
+
904
+ Outputs:
905
+ Tensor. If the shape of input tensor is :math:`(x_1, x_2, ..., x_R)`, then the shape of output tensor is
906
+ :math:`(y_1, y_2, ..., y_R)`, where:
907
+
908
+ - :math:`y_{split\_dim} = x_{split\_dim} / split\_count`
909
+ - :math:`y_{concat\_dim} = x_{concat\_dim} * split\_count`
910
+ - :math:`y_{other} = x_{other}`.
911
+
912
+ Raises:
913
+ TypeError: If group is not a string.
914
+
915
+ Supported Platforms:
916
+ ``Ascend``
917
+
918
+ Examples:
919
+ .. note::
920
+ Before running the following examples, you need to configure the communication environment variables.
921
+
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>`_
926
+ for more details.
927
+
928
+ This example should be run with 8 devices.
929
+
930
+ >>> import os
931
+ >>> import mindspore as ms
932
+ >>> from mindspore import Tensor
933
+ >>> from mindspore.communication import init
934
+ >>> import mindspore.nn as nn
935
+ >>> from mindspore import ops
936
+ >>> import numpy as np
937
+ >>> class Net(nn.Cell):
938
+ ... def __init__(self):
939
+ ... super(Net, self).__init__()
940
+ ... self.alltoall = ops.AlltoAll(split_count = 8, split_dim = -2, concat_dim = -1)
941
+ ...
942
+ ... def construct(self, x):
943
+ ... out = self.alltoall(x)
944
+ ... return out
945
+ ...
946
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
947
+ >>> init()
948
+ >>> net = Net()
949
+ >>> rank_id = int(os.getenv("RANK_ID"))
950
+ >>> input_x = Tensor(np.ones([1, 1, 8, 1]) * rank_id, dtype = ms.float32)
951
+ >>> output = net(input_x)
952
+ >>> print(output)
953
+ [[[[0. 1. 2. 3. 4. 5. 6. 7.]]]]
954
+
955
+ Tutorial Examples:
956
+ - `Distributed Set Communication Primitives - AlltoAll
957
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#alltoall>`_
958
+
959
+ """
960
+
961
+ @prim_attr_register
962
+ def __init__(self, split_count, split_dim, concat_dim, group=GlobalComm.WORLD_COMM_GROUP):
963
+ """Initialize AlltoAll"""
964
+ validator.check_value_type('group', _get_group(group), (str,), self.name)
965
+ validator.check_is_int(split_count, int)
966
+ validator.check_is_int(split_dim, int)
967
+ validator.check_is_int(concat_dim, int)
968
+ self.split_count = split_count
969
+ self.split_dim = split_dim
970
+ self.concat_dim = concat_dim
971
+ self.add_prim_attr('group', _get_group(group))
972
+ self.add_prim_attr('no_eliminate', True)
973
+
974
+ def infer_shape(self, x_shape):
975
+ rank_size = get_group_size(_get_group(self.group))
976
+ if self.split_count != rank_size:
977
+ raise ValueError(f"For '{self.name}', the 'split_count' must be equal to 'rank_size', "
978
+ f"but got 'split_count': {self.split_count}, 'rank_size': {rank_size}.")
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)
987
+ return x_shape
988
+
989
+ def infer_dtype(self, x_dtype):
990
+ check_collective_target_dtype('x', x_dtype, self.name)
991
+ return x_dtype
992
+
993
+
994
+ class NeighborExchangeV2(Primitive):
995
+ r"""
996
+ NeighborExchangeV2 is a collective communication operation.
997
+
998
+ NeighborExchangeV2 sends data from the local rank to ranks in the `send_rank_ids`,
999
+ as while receive data from `recv_rank_ids`. Please refer to the tutorial examples
1000
+ below to learn about how the data is exchanged between neighborhood devices.
1001
+
1002
+ Note:
1003
+ This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
1004
+ in the same subnet, please check the `details \
1005
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
1006
+
1007
+ Args:
1008
+ send_rank_ids (list(int)): Ranks which the data is sent to. 8 rank_ids represents 8 directions, if one
1009
+ direction is not send to , set it -1.
1010
+ recv_rank_ids (list(int)): Ranks which the data is received from. 8 rank_ids represents 8 directions,
1011
+ if one direction is not recv from , set it -1.
1012
+ send_lens (list(int)): Data lens which send to the send_rank_ids, 4 numbers represent the lens of
1013
+ [send_top, send_bottom, send_left, send_right].
1014
+ recv_lens (list(int)): Data lens which received from recv_rank_ids, 4 numbers represent the lens of
1015
+ [recv_top, recv_bottom, recv_left, recv_right].
1016
+ data_format (str): Data format, only support NCHW now.
1017
+ group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
1018
+ means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
1019
+
1020
+ Inputs:
1021
+ - **input_x** (Tensor) - The Tensor before being exchanged. It has a shape of :math:`(N, C, H, W)`.
1022
+
1023
+ Outputs:
1024
+ The Tensor after being exchanged. If input shape is :math:`(N, C, H, W)`, output shape is
1025
+ :math:`(N, C, H+recv\_top+recv\_bottom, W+recv\_left+recv\_right)`.
1026
+
1027
+ Raises:
1028
+ TypeError: If `group` is not a string or any one of `send_rank_ids`,
1029
+ `recv_rank_ids`, `send_lens`, `recv_lens` is not a list.
1030
+ ValueError: If `send_rank_ids` or `recv_rank_ids` has value less than -1 or has repeated values.
1031
+ ValueError: If `send_lens`, `recv_lens` has value less than 0.
1032
+ ValueError: If `data_format` is not "NCHW".
1033
+
1034
+ Supported Platforms:
1035
+ ``Ascend``
1036
+
1037
+ Examples:
1038
+ .. note::
1039
+ Before running the following examples, you need to configure the communication environment variables.
1040
+
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>`_
1045
+ for more details.
1046
+
1047
+ This example should be run with 2 devices.
1048
+
1049
+ >>> import os
1050
+ >>> import mindspore as ms
1051
+ >>> from mindspore.communication import init
1052
+ >>> import mindspore.nn as nn
1053
+ >>> from mindspore import ops
1054
+ >>> import numpy as np
1055
+ >>>
1056
+ >>> class Net0(nn.Cell):
1057
+ ... def __init__(self):
1058
+ ... super(Net0, self).__init__()
1059
+ ... self.neighbor_exchangev2 = ops.NeighborExchangeV2(send_rank_ids=[-1, -1, -1, -1, 1, -1, -1, -1],
1060
+ ... send_lens=[0, 1, 0, 0],
1061
+ ... recv_rank_ids=[-1, -1, -1, -1, 1, -1, -1, -1],
1062
+ ... recv_lens=[0, 1, 0, 0], data_format="NCHW")
1063
+ ...
1064
+ ... def construct(self, x):
1065
+ ... out = self.neighbor_exchangev2(x)
1066
+ ... return out
1067
+ ... class Net1(nn.Cell):
1068
+ ... def __init__(self):
1069
+ ... super(Net1, self).__init__()
1070
+ ... self.neighbor_exchangev2 = ops.NeighborExchangeV2(send_rank_ids=[0, -1, -1, -1, -1, -1, -1, -1],
1071
+ ... send_lens=[1, 0, 0, 0],
1072
+ ... recv_rank_ids=[0, -1, -1, -1, -1, -1, -1, -1],
1073
+ ... recv_lens=[1, 0, 0, 0], data_format="NCHW")
1074
+ ...
1075
+ ... def construct(self, x):
1076
+ ... out = self.neighbor_exchangev2(x)
1077
+ ... return out
1078
+ >>>
1079
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
1080
+ >>> init()
1081
+ >>> rank_id = int(os.getenv("RANK_ID"))
1082
+ >>> if (rank_id % 2 == 0):
1083
+ >>> input_x = ms.Tensor(np.ones([1, 1, 2, 2]), dtype = ms.float32)
1084
+ >>> net = Net0()
1085
+ >>> output = net(input_x)
1086
+ >>> print(output)
1087
+ >>> else:
1088
+ >>> input_x = ms.Tensor(np.ones([1, 1, 2, 2]) * 2, dtype = ms.float32)
1089
+ >>> net = Net1()
1090
+ >>> output = net(input_x)
1091
+ >>> print(output)
1092
+ [[[[1. 1.], [1. 1.], [2. 2.]]]]
1093
+
1094
+ Tutorial Examples:
1095
+ - `Distributed Set Communication Primitives - NeighborExchangeV2
1096
+ <https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#neighborexchangev2>`_
1097
+
1098
+ """
1099
+
1100
+ @prim_attr_register
1101
+ def __init__(self, send_rank_ids, send_lens, recv_rank_ids, recv_lens, data_format,
1102
+ group=GlobalComm.WORLD_COMM_GROUP):
1103
+ self.init_prim_io_names(inputs=['x'], outputs=['output'])
1104
+ self.send_rank_ids = send_rank_ids
1105
+ self.recv_rank_ids = recv_rank_ids
1106
+ self.send_lens = send_lens
1107
+ self.recv_lens = recv_lens
1108
+ self.format = data_format
1109
+ self.add_prim_attr('group', _get_group(group))
1110
+ self.add_prim_attr('no_eliminate', True)
1111
+ self.rank_size = get_group_size(_get_group(group))
1112
+ for rank_id in send_rank_ids:
1113
+ if rank_id != -1:
1114
+ validator.check_number_range(rank_id, 0, self.rank_size, validator.INC_LEFT, int,
1115
+ "rank_id in send_rank_ids")
1116
+ for rank_id in recv_rank_ids:
1117
+ if rank_id != -1:
1118
+ validator.check_number_range(rank_id, 0, self.rank_size, validator.INC_LEFT, int,
1119
+ "rank_id in recv_rank_ids")
1120
+
1121
+ def __call__(self, tensor):
1122
+ raise NotImplementedError
1123
+
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
+
1535
+ class _MirrorOperator(PrimitiveWithInfer):
1536
+ """
1537
+ Auto parallel virtual operator. Do nothing in forward, do all reduce and mean in backward. It is only for
1538
+ internal use of parallel modules and cannot be called by users.
1539
+
1540
+ Args:
1541
+ group (str): The communication group to work on. Default: ``None`` .
1542
+ dev_num (int): The device number of the group. Default: ``None`` .
1543
+ mean_flag (bool): Whether use mean in backward. Default: ``None`` .
1544
+ """
1545
+
1546
+ @prim_attr_register
1547
+ def __init__(self, group=None, dev_num=None, mean_flag=None):
1548
+ """Initialize _MirrorOperator."""
1549
+ self.group = group
1550
+ self.dev_num = dev_num
1551
+ self.mean_flag = mean_flag
1552
+ self.add_prim_attr("fusion", 1)
1553
+ self.add_prim_attr('order_enforce_skip', True)
1554
+
1555
+ def infer_shape(self, x_shape):
1556
+ return x_shape
1557
+
1558
+ def infer_dtype(self, x_dtype):
1559
+ return x_dtype
1560
+
1561
+
1562
+ mirror = _MirrorOperator()
1563
+
1564
+
1565
+ class _MirrorMiniStepOperator(PrimitiveWithInfer):
1566
+ """
1567
+ Auto parallel virtual operator. Do nothing in forward, do all reduce and mean in backward. It is only for
1568
+ internal use of parallel modules and cannot be called by users.
1569
+
1570
+ Args:
1571
+ group (str): The communication group to work on. Default: ``None`` .
1572
+ dev_num (int): The device number of the group. Default: ``None`` .
1573
+ mean_flag (bool): Whether use mean in backward. Default: ``None`` .
1574
+ grad_accumulation_step (int): The grad accumulation step. Default: ``None`` .
1575
+ """
1576
+
1577
+ @prim_attr_register
1578
+ def __init__(self, group=None, dev_num=None, mean_flag=None, grad_accumulation_step=None):
1579
+ """Initialize _MirrorMiniStepOperator."""
1580
+ self.group = group
1581
+ self.dev_num = dev_num
1582
+ self.mean_flag = mean_flag
1583
+ self.grad_accumulation_step = grad_accumulation_step
1584
+ self.add_prim_attr('order_enforce_skip', True)
1585
+ self.add_prim_attr('side_effect_backprop_mem', True)
1586
+
1587
+ def infer_shape(self, x_shape, z_shape):
1588
+ return x_shape
1589
+
1590
+ def infer_dtype(self, x_dtype, z_shape):
1591
+ return x_dtype
1592
+
1593
+
1594
+ mirror_mini_step = _MirrorMiniStepOperator()
1595
+
1596
+
1597
+ class _VirtualDiv(PrimitiveWithInfer):
1598
+ """
1599
+ Auto parallel virtual operator. Do nothing in forward, do Div in backward.
1600
+
1601
+ Args:
1602
+ divisor: float32
1603
+ """
1604
+
1605
+ @prim_attr_register
1606
+ def __init__(self, divisor=None):
1607
+ """Initialize _VirtualDiv."""
1608
+ self.divisor = divisor
1609
+ self.add_prim_attr('order_enforce_skip', True)
1610
+
1611
+ def infer_shape(self, x_shape):
1612
+ return x_shape
1613
+
1614
+ def infer_dtype(self, x_dtype):
1615
+ return x_dtype
1616
+
1617
+
1618
+ virtual_div = _VirtualDiv()
1619
+
1620
+
1621
+ class _VirtualPipelineEnd(PrimitiveWithInfer):
1622
+ """
1623
+ Auto parallel virtual operator. Do nothing in forward and backward, mark end node in pipeline parallel.
1624
+
1625
+ Args:
1626
+ divisor: float32
1627
+ """
1628
+
1629
+ @prim_attr_register
1630
+ def __init__(self):
1631
+ """Initialize _VirtualPipelineEnd."""
1632
+
1633
+ def infer_shape(self, x_shape):
1634
+ return x_shape
1635
+
1636
+ def infer_dtype(self, x_dtype):
1637
+ return x_dtype
1638
+
1639
+
1640
+ virtual_pipeline_end = _VirtualPipelineEnd()
1641
+
1642
+
1643
+ class _VirtualAdd(PrimitiveWithInfer):
1644
+ """Auto parallel virtual operator. Do nothing in forward, do Add in backward."""
1645
+
1646
+ @prim_attr_register
1647
+ def __init__(self):
1648
+ """Initialize _VirtualAdd."""
1649
+ self.add_prim_attr('order_enforce_skip', True)
1650
+
1651
+ def infer_shape(self, x_shape, y_shape):
1652
+ return x_shape
1653
+
1654
+ def infer_dtype(self, x_dtype, y_dtype):
1655
+ return x_dtype
1656
+
1657
+
1658
+ class _VirtualDataset(PrimitiveWithInfer):
1659
+ """
1660
+ Auto parallel virtual dataset operator.
1661
+
1662
+ It would insert VirtualDataset operator in forward computation and be deleted before backward computation.
1663
+ """
1664
+
1665
+ @prim_attr_register
1666
+ def __init__(self):
1667
+ """Initialize _VirtualDataset."""
1668
+ self.add_prim_attr('order_enforce_skip', True)
1669
+
1670
+ def infer_shape(self, *args):
1671
+ return args
1672
+
1673
+ def infer_dtype(self, *args):
1674
+ return args
1675
+
1676
+
1677
+ virtual_dataset = _VirtualDataset()
1678
+
1679
+
1680
+ class _VirtualAssignAdd(PrimitiveWithInfer):
1681
+ """
1682
+ Auto parallel virtual operator. Do nothing in forward, do AssignAdd in backward. It is only for
1683
+ internal use of parallel modules and cannot be called by users.
1684
+
1685
+ """
1686
+
1687
+ @prim_attr_register
1688
+ def __init__(self):
1689
+ """Initialize _VirtualAssignAdd."""
1690
+ self.add_prim_attr('order_enforce_skip', True)
1691
+ self.add_prim_attr('side_effect_backprop_mem', True)
1692
+
1693
+ def infer_shape(self, x_shape, y_shape):
1694
+ return x_shape
1695
+
1696
+ def infer_dtype(self, x_dtype, y_dtype):
1697
+ return x_dtype
1698
+ virtual_assign_add = _VirtualAssignAdd()
1699
+
1700
+
1701
+ class _VirtualAccuGrad(PrimitiveWithInfer):
1702
+ """
1703
+ Auto parallel virtual operator. Do nothing in forward, return y in backward. It is only for
1704
+ internal use of parallel modules and cannot be called by users.
1705
+ """
1706
+
1707
+ @prim_attr_register
1708
+ def __init__(self):
1709
+ """Initialize _VirtualAccuGrad."""
1710
+ self.add_prim_attr('order_enforce_skip', True)
1711
+
1712
+ def infer_shape(self, x_shape, y_shape):
1713
+ return x_shape
1714
+
1715
+ def infer_dtype(self, x_dtype, y_dtype):
1716
+ return x_dtype
1717
+
1718
+
1719
+ virtual_accu_grad = _VirtualAccuGrad()
1720
+
1721
+
1722
+ class _MirrorMicroStepOperator(PrimitiveWithInfer):
1723
+ """
1724
+ Auto parallel virtual operator. Do nothing in forward, do all reduce and mean in backward. It is only for
1725
+ internal use of parallel modules and cannot be called by users.
1726
+
1727
+ Args:
1728
+ group (str): The communication group to work on. Default: ``None`` .
1729
+ dev_num (int): The device number of the group. Default: ``None`` .
1730
+ mean_flag (bool): Whether use mean in backward. Default: ``None`` .
1731
+ """
1732
+
1733
+ @prim_attr_register
1734
+ def __init__(self, group=None, dev_num=None, mean_flag=None):
1735
+ """Initialize _MirrorMicroStepOperator."""
1736
+ self.group = group
1737
+ self.dev_num = dev_num
1738
+ self.mean_flag = mean_flag
1739
+ self.add_prim_attr('order_enforce_skip', True)
1740
+ self.add_prim_attr('side_effect_backprop_mem', True)
1741
+
1742
+ def infer_shape(self, x_shape, z_shape):
1743
+ return x_shape
1744
+
1745
+ def infer_dtype(self, x_dtype, z_shape):
1746
+ return x_dtype
1747
+
1748
+
1749
+ class _VirtualOutput(PrimitiveWithInfer):
1750
+ """
1751
+ Auto parallel virtual out operator.
1752
+
1753
+ It would insert VirtualOutput operator in forward computation and be deleted before backward computation.
1754
+ """
1755
+
1756
+ @prim_attr_register
1757
+ def __init__(self):
1758
+ """Initialize _VirtualOutput."""
1759
+ self.add_prim_attr('order_enforce_skip', True)
1760
+
1761
+ def infer_shape(self, x_shape):
1762
+ return x_shape
1763
+
1764
+ def infer_dtype(self, x_dtype):
1765
+ return x_dtype
1766
+
1767
+
1768
+ class _GetTensorSlice(PrimitiveWithInfer):
1769
+ """
1770
+ Gets tensor slice by device matrix and tensor map.
1771
+
1772
+ Args:
1773
+ dev_mat (tuple): The device matrix of the slice tensor.
1774
+ tensor_map (tuple): The tensor map of the slice tensor.
1775
+ """
1776
+
1777
+ @prim_attr_register
1778
+ def __init__(self):
1779
+ """Initialize _GetTensorSlice."""
1780
+ self.add_prim_attr('order_enforce_skip', True)
1781
+
1782
+ def infer_value(self, x, dev_mat, tensor_map, slice_shape, full_shape):
1783
+ from mindspore.parallel._tensor import _load_tensor
1784
+ validator.check_value_type("dev_mat", dev_mat, [tuple], self.name)
1785
+ validator.check_value_type("tensor_map", tensor_map, [tuple], self.name)
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)