mindspore 2.2.14__cp39-cp39-win_amd64.whl → 2.3.0__cp39-cp39-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +6 -5
- mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
- mindspore/_checkparam.py +76 -18
- mindspore/_extends/builtin_operations.py +2 -1
- mindspore/_extends/graph_kernel/model/graph_parallel.py +16 -6
- mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +3 -16
- mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +16 -4
- mindspore/_extends/parallel_compile/akg_compiler/compiler.py +1 -0
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +96 -0
- mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +2 -1
- mindspore/_extends/parallel_compile/akg_compiler/util.py +5 -2
- mindspore/_extends/parse/__init__.py +18 -14
- mindspore/_extends/parse/compile_config.py +258 -0
- mindspore/_extends/parse/namespace.py +2 -2
- mindspore/_extends/parse/parser.py +174 -62
- mindspore/_extends/parse/resources.py +45 -14
- mindspore/_extends/parse/standard_method.py +142 -240
- mindspore/{ops/_op_impl/tbe/atomic_addr_clean.py → _extends/pijit/__init__.py} +6 -16
- mindspore/_extends/pijit/pijit_func_white_list.py +343 -0
- mindspore/_extends/remote/kernel_build_server.py +2 -0
- mindspore/_profiler.py +30 -0
- mindspore/amp.py +51 -24
- mindspore/atlprov.dll +0 -0
- mindspore/avcodec-59.dll +0 -0
- mindspore/avdevice-59.dll +0 -0
- mindspore/avfilter-8.dll +0 -0
- mindspore/avformat-59.dll +0 -0
- mindspore/avutil-57.dll +0 -0
- mindspore/boost/adasum.py +1 -1
- mindspore/boost/base.py +1 -1
- mindspore/boost/boost_cell_wrapper.py +2 -2
- mindspore/boost/grad_freeze.py +2 -2
- mindspore/boost/group_loss_scale_manager.py +1 -1
- mindspore/boost/less_batch_normalization.py +9 -6
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +15 -4
- mindspore/common/_jit_fallback_utils.py +2 -3
- mindspore/common/_register_for_adapter.py +7 -0
- mindspore/common/_register_for_recompute.py +48 -0
- mindspore/common/_register_for_tensor.py +8 -9
- mindspore/common/_stub_tensor.py +7 -1
- mindspore/common/_utils.py +5 -17
- mindspore/common/api.py +411 -106
- mindspore/common/auto_dynamic_shape.py +27 -14
- mindspore/common/dtype.py +17 -10
- mindspore/common/dump.py +6 -8
- mindspore/common/file_system.py +48 -0
- mindspore/common/generator.py +260 -0
- mindspore/common/hook_handle.py +51 -4
- mindspore/common/initializer.py +1 -1
- mindspore/common/jit_config.py +34 -14
- mindspore/common/lazy_inline.py +72 -19
- mindspore/common/mindir_util.py +12 -2
- mindspore/common/mutable.py +79 -14
- mindspore/common/no_inline.py +54 -0
- mindspore/common/np_dtype.py +25 -0
- mindspore/common/parameter.py +30 -11
- mindspore/common/recompute.py +262 -0
- mindspore/common/seed.py +9 -9
- mindspore/common/sparse_tensor.py +272 -24
- mindspore/common/symbol.py +122 -0
- mindspore/common/tensor.py +468 -494
- mindspore/communication/__init__.py +6 -11
- mindspore/communication/_comm_helper.py +5 -0
- mindspore/communication/comm_func.py +1140 -0
- mindspore/communication/management.py +115 -102
- mindspore/config/op_info.config +22 -54
- mindspore/context.py +346 -63
- mindspore/dataset/__init__.py +5 -5
- mindspore/dataset/audio/__init__.py +6 -6
- mindspore/dataset/audio/transforms.py +711 -158
- mindspore/dataset/callback/ds_callback.py +2 -2
- mindspore/dataset/engine/cache_client.py +2 -2
- mindspore/dataset/engine/datasets.py +140 -83
- mindspore/dataset/engine/datasets_audio.py +14 -14
- mindspore/dataset/engine/datasets_standard_format.py +33 -3
- mindspore/dataset/engine/datasets_text.py +38 -38
- mindspore/dataset/engine/datasets_user_defined.py +78 -59
- mindspore/dataset/engine/datasets_vision.py +77 -73
- mindspore/dataset/engine/offload.py +5 -7
- mindspore/dataset/engine/queue.py +56 -38
- mindspore/dataset/engine/validators.py +11 -5
- mindspore/dataset/text/__init__.py +3 -3
- mindspore/dataset/text/transforms.py +408 -121
- mindspore/dataset/text/utils.py +9 -9
- mindspore/dataset/transforms/__init__.py +1 -1
- mindspore/dataset/transforms/transforms.py +261 -76
- mindspore/dataset/utils/browse_dataset.py +9 -9
- mindspore/dataset/vision/__init__.py +8 -8
- mindspore/dataset/vision/c_transforms.py +10 -10
- mindspore/dataset/vision/py_transforms_util.py +1 -1
- mindspore/dataset/vision/transforms.py +2844 -549
- mindspore/dataset/vision/utils.py +161 -10
- mindspore/dataset/vision/validators.py +14 -2
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/optim/__init__.py +12 -2
- mindspore/experimental/optim/adadelta.py +161 -0
- mindspore/experimental/optim/adagrad.py +168 -0
- mindspore/experimental/optim/adam.py +35 -34
- mindspore/experimental/optim/adamax.py +170 -0
- mindspore/experimental/optim/adamw.py +40 -16
- mindspore/experimental/optim/asgd.py +153 -0
- mindspore/experimental/optim/lr_scheduler.py +66 -121
- mindspore/experimental/optim/nadam.py +157 -0
- mindspore/experimental/optim/optimizer.py +15 -8
- mindspore/experimental/optim/radam.py +194 -0
- mindspore/experimental/optim/rmsprop.py +154 -0
- mindspore/experimental/optim/rprop.py +164 -0
- mindspore/experimental/optim/sgd.py +28 -19
- mindspore/hal/__init__.py +40 -0
- mindspore/hal/_ascend.py +57 -0
- mindspore/hal/_base.py +57 -0
- mindspore/hal/_cpu.py +56 -0
- mindspore/hal/_gpu.py +57 -0
- mindspore/hal/device.py +356 -0
- mindspore/hal/event.py +179 -0
- mindspore/hal/memory.py +326 -0
- mindspore/hal/stream.py +339 -0
- mindspore/include/api/data_type.h +2 -2
- mindspore/include/api/dual_abi_helper.h +16 -3
- mindspore/include/api/model.h +4 -3
- mindspore/include/api/status.h +14 -0
- mindspore/include/c_api/model_c.h +173 -0
- mindspore/include/c_api/ms/base/types.h +1 -0
- mindspore/include/c_api/types_c.h +19 -0
- mindspore/include/dataset/execute.h +1 -3
- mindspore/include/dataset/vision.h +54 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +2 -2
- mindspore/mindrecord/__init__.py +5 -1
- mindspore/mindrecord/config.py +809 -0
- mindspore/mindrecord/filereader.py +25 -0
- mindspore/mindrecord/filewriter.py +76 -58
- mindspore/mindrecord/mindpage.py +40 -6
- mindspore/mindrecord/shardutils.py +3 -2
- mindspore/mindrecord/shardwriter.py +7 -0
- mindspore/mindrecord/tools/cifar100_to_mr.py +8 -13
- mindspore/mindrecord/tools/cifar10_to_mr.py +9 -15
- mindspore/mindrecord/tools/csv_to_mr.py +4 -9
- mindspore/mindrecord/tools/imagenet_to_mr.py +3 -8
- mindspore/mindrecord/tools/mnist_to_mr.py +7 -12
- mindspore/mindrecord/tools/tfrecord_to_mr.py +1 -6
- mindspore/mindspore_backend.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/mindspore_shared_lib.dll +0 -0
- mindspore/mint/__init__.py +1137 -0
- mindspore/{rewrite/ast_transformers → mint/linalg}/__init__.py +9 -4
- mindspore/mint/nn/__init__.py +512 -0
- mindspore/mint/nn/functional.py +573 -0
- mindspore/mint/optim/__init__.py +24 -0
- mindspore/mint/optim/adamw.py +185 -0
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/multiprocessing/__init__.py +72 -0
- mindspore/nn/__init__.py +1 -0
- mindspore/nn/cell.py +213 -257
- mindspore/nn/dynamic_lr.py +2 -2
- mindspore/nn/extend/__init__.py +29 -0
- mindspore/nn/extend/basic.py +140 -0
- mindspore/nn/extend/embedding.py +143 -0
- mindspore/{rewrite/ast_creator_register.py → nn/extend/layer/__init__.py} +9 -19
- mindspore/nn/extend/layer/normalization.py +109 -0
- mindspore/nn/extend/pooling.py +117 -0
- mindspore/nn/layer/activation.py +83 -93
- mindspore/nn/layer/basic.py +177 -82
- mindspore/nn/layer/channel_shuffle.py +3 -16
- mindspore/nn/layer/container.py +3 -3
- mindspore/nn/layer/conv.py +75 -66
- mindspore/nn/layer/embedding.py +101 -43
- mindspore/nn/layer/embedding_service.py +531 -0
- mindspore/nn/layer/embedding_service_layer.py +393 -0
- mindspore/nn/layer/image.py +4 -7
- mindspore/nn/layer/math.py +1 -1
- mindspore/nn/layer/normalization.py +52 -66
- mindspore/nn/layer/padding.py +30 -39
- mindspore/nn/layer/pooling.py +18 -9
- mindspore/nn/layer/rnn_cells.py +6 -16
- mindspore/nn/layer/rnns.py +6 -5
- mindspore/nn/layer/thor_layer.py +1 -2
- mindspore/nn/layer/timedistributed.py +1 -1
- mindspore/nn/layer/transformer.py +52 -50
- mindspore/nn/learning_rate_schedule.py +6 -5
- mindspore/nn/loss/loss.py +62 -83
- mindspore/nn/optim/ada_grad.py +4 -2
- mindspore/nn/optim/adadelta.py +3 -1
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +102 -181
- mindspore/nn/optim/adamax.py +4 -2
- mindspore/nn/optim/adasum.py +3 -3
- mindspore/nn/optim/asgd.py +4 -2
- mindspore/nn/optim/ftrl.py +31 -61
- mindspore/nn/optim/lamb.py +5 -3
- mindspore/nn/optim/lars.py +2 -2
- mindspore/nn/optim/lazyadam.py +6 -4
- mindspore/nn/optim/momentum.py +13 -25
- mindspore/nn/optim/optimizer.py +6 -3
- mindspore/nn/optim/proximal_ada_grad.py +4 -2
- mindspore/nn/optim/rmsprop.py +9 -3
- mindspore/nn/optim/rprop.py +4 -2
- mindspore/nn/optim/sgd.py +5 -3
- mindspore/nn/optim/thor.py +2 -2
- mindspore/nn/probability/distribution/_utils/custom_ops.py +2 -2
- mindspore/nn/probability/distribution/beta.py +2 -2
- mindspore/nn/probability/distribution/categorical.py +4 -6
- mindspore/nn/probability/distribution/cauchy.py +2 -2
- mindspore/nn/probability/distribution/exponential.py +2 -2
- mindspore/nn/probability/distribution/geometric.py +1 -1
- mindspore/nn/probability/distribution/gumbel.py +2 -2
- mindspore/nn/probability/distribution/logistic.py +1 -1
- mindspore/nn/probability/distribution/poisson.py +2 -2
- mindspore/nn/probability/distribution/uniform.py +2 -2
- mindspore/nn/reinforcement/_tensors_queue.py +13 -1
- mindspore/nn/wrap/__init__.py +2 -1
- mindspore/nn/wrap/cell_wrapper.py +58 -13
- mindspore/nn/wrap/grad_reducer.py +148 -8
- mindspore/nn/wrap/loss_scale.py +32 -9
- mindspore/numpy/__init__.py +2 -0
- mindspore/numpy/array_creations.py +2 -0
- mindspore/numpy/array_ops.py +6 -6
- mindspore/numpy/dtypes.py +3 -3
- mindspore/numpy/fft.py +431 -0
- mindspore/numpy/math_ops.py +62 -68
- mindspore/numpy/utils.py +3 -0
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +6 -5
- mindspore/ops/_grad_experimental/grad_array_ops.py +4 -129
- mindspore/ops/_grad_experimental/grad_comm_ops.py +89 -34
- mindspore/ops/_grad_experimental/grad_math_ops.py +68 -283
- mindspore/ops/_grad_experimental/grad_nn_ops.py +0 -53
- mindspore/ops/_grad_experimental/grad_quant_ops.py +3 -3
- mindspore/ops/_grad_experimental/grad_sparse.py +1 -1
- mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -3
- mindspore/ops/_op_impl/__init__.py +0 -1
- mindspore/ops/_op_impl/aicpu/gamma.py +2 -0
- mindspore/ops/_op_impl/aicpu/generate_eod_mask.py +1 -1
- mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +1 -3
- mindspore/ops/_op_impl/aicpu/poisson.py +2 -0
- mindspore/ops/_op_impl/cpu/__init__.py +1 -3
- mindspore/ops/_op_impl/cpu/adam.py +2 -2
- mindspore/ops/_op_impl/cpu/adam_weight_decay.py +3 -2
- mindspore/ops/_op_impl/cpu/maximum_grad.py +16 -14
- mindspore/ops/_op_impl/cpu/minimum_grad.py +8 -0
- mindspore/ops/_vmap/vmap_array_ops.py +164 -101
- mindspore/ops/_vmap/vmap_base.py +8 -1
- mindspore/ops/_vmap/vmap_grad_math_ops.py +95 -9
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +143 -58
- mindspore/ops/_vmap/vmap_image_ops.py +70 -13
- mindspore/ops/_vmap/vmap_math_ops.py +130 -58
- mindspore/ops/_vmap/vmap_nn_ops.py +249 -115
- mindspore/ops/_vmap/vmap_other_ops.py +1 -1
- mindspore/ops/auto_generate/__init__.py +31 -0
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +231 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +250 -0
- mindspore/ops/auto_generate/gen_arg_handler.py +197 -0
- mindspore/ops/auto_generate/gen_extend_func.py +980 -0
- mindspore/ops/auto_generate/gen_ops_def.py +6443 -0
- mindspore/ops/auto_generate/gen_ops_prim.py +13167 -0
- mindspore/ops/auto_generate/pyboost_inner_prim.py +429 -0
- mindspore/ops/composite/__init__.py +5 -2
- mindspore/ops/composite/base.py +121 -23
- mindspore/ops/composite/math_ops.py +10 -49
- mindspore/ops/composite/multitype_ops/_compile_utils.py +191 -618
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +25 -134
- mindspore/ops/composite/multitype_ops/add_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/div_impl.py +8 -0
- mindspore/ops/composite/multitype_ops/equal_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +8 -0
- mindspore/ops/composite/multitype_ops/getitem_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/greater_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/in_impl.py +8 -2
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/less_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/mod_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/mul_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/negative_impl.py +9 -3
- mindspore/ops/composite/multitype_ops/not_equal_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/not_in_impl.py +6 -1
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +2 -2
- mindspore/ops/composite/multitype_ops/pow_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/setitem_impl.py +32 -21
- mindspore/ops/composite/multitype_ops/sub_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/zeros_like_impl.py +6 -3
- mindspore/ops/deprecated.py +14 -3
- mindspore/ops/extend/__init__.py +53 -0
- mindspore/ops/extend/array_func.py +218 -0
- mindspore/ops/extend/math_func.py +76 -0
- mindspore/ops/extend/nn_func.py +308 -0
- mindspore/ops/function/__init__.py +31 -11
- mindspore/ops/function/array_func.py +846 -1735
- mindspore/ops/function/clip_func.py +19 -31
- mindspore/ops/function/debug_func.py +1 -4
- mindspore/ops/function/fft_func.py +31 -0
- mindspore/ops/function/grad/grad_func.py +27 -20
- mindspore/ops/function/image_func.py +27 -21
- mindspore/ops/function/linalg_func.py +35 -68
- mindspore/ops/function/math_func.py +913 -2791
- mindspore/ops/function/nn_func.py +1439 -885
- mindspore/ops/function/other_func.py +6 -7
- mindspore/ops/function/parameter_func.py +5 -93
- mindspore/ops/function/random_func.py +254 -108
- mindspore/ops/function/reshard_func.py +102 -0
- mindspore/ops/function/sparse_func.py +4 -4
- mindspore/ops/function/sparse_unary_func.py +9 -16
- mindspore/ops/function/spectral_func.py +1 -1
- mindspore/ops/function/vmap_func.py +14 -14
- mindspore/ops/functional.py +342 -343
- mindspore/ops/op_info_register.py +16 -43
- mindspore/ops/operations/__init__.py +32 -23
- mindspore/ops/operations/_grad_ops.py +21 -853
- mindspore/ops/operations/_infer_ops.py +19 -0
- mindspore/ops/operations/_inner_ops.py +107 -518
- mindspore/ops/operations/_rl_inner_ops.py +2 -2
- mindspore/ops/operations/_scalar_ops.py +5 -480
- mindspore/ops/operations/_sequence_ops.py +6 -36
- mindspore/ops/operations/_tensor_array.py +8 -8
- mindspore/ops/operations/array_ops.py +108 -2705
- mindspore/ops/operations/comm_ops.py +801 -118
- mindspore/ops/operations/custom_ops.py +61 -120
- mindspore/ops/operations/debug_ops.py +104 -35
- mindspore/ops/operations/image_ops.py +1 -217
- mindspore/ops/operations/inner_ops.py +5 -40
- mindspore/ops/operations/linalg_ops.py +1 -49
- mindspore/ops/operations/manually_defined/__init__.py +24 -0
- mindspore/ops/operations/manually_defined/_inner.py +61 -0
- mindspore/ops/operations/manually_defined/ops_def.py +2016 -0
- mindspore/ops/operations/math_ops.py +572 -4667
- mindspore/ops/operations/nn_ops.py +248 -2162
- mindspore/ops/operations/other_ops.py +53 -45
- mindspore/ops/operations/random_ops.py +4 -53
- mindspore/ops/operations/reshard_ops.py +53 -0
- mindspore/ops/operations/sparse_ops.py +4 -4
- mindspore/ops/primitive.py +204 -103
- mindspore/ops/silent_check.py +5 -5
- mindspore/ops_generate/__init__.py +27 -0
- mindspore/ops_generate/arg_dtype_cast.py +250 -0
- mindspore/ops_generate/arg_handler.py +197 -0
- mindspore/ops_generate/gen_aclnn_implement.py +263 -0
- mindspore/ops_generate/gen_ops.py +1084 -0
- mindspore/ops_generate/gen_ops_inner_prim.py +131 -0
- mindspore/ops_generate/gen_pyboost_func.py +968 -0
- mindspore/ops_generate/gen_utils.py +209 -0
- mindspore/ops_generate/op_proto.py +138 -0
- mindspore/ops_generate/pyboost_utils.py +354 -0
- mindspore/ops_generate/template.py +239 -0
- mindspore/parallel/__init__.py +6 -4
- mindspore/parallel/_auto_parallel_context.py +73 -3
- mindspore/parallel/_cell_wrapper.py +16 -9
- mindspore/parallel/_cost_model_context.py +1 -1
- mindspore/parallel/_dp_allreduce_fusion.py +159 -159
- mindspore/parallel/_parallel_serialization.py +29 -13
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +1 -1
- mindspore/parallel/_tensor.py +18 -11
- mindspore/parallel/_transformer/__init__.py +1 -1
- mindspore/parallel/_transformer/layers.py +1 -1
- mindspore/parallel/_transformer/loss.py +1 -1
- mindspore/parallel/_transformer/moe.py +1 -1
- mindspore/parallel/_transformer/op_parallel_config.py +1 -1
- mindspore/parallel/_transformer/transformer.py +2 -2
- mindspore/parallel/_utils.py +161 -6
- mindspore/parallel/algo_parameter_config.py +6 -8
- mindspore/parallel/checkpoint_transform.py +191 -32
- mindspore/parallel/cluster/__init__.py +15 -0
- mindspore/parallel/cluster/process_entity/__init__.py +18 -0
- mindspore/parallel/cluster/process_entity/_api.py +344 -0
- mindspore/parallel/cluster/process_entity/_utils.py +126 -0
- mindspore/parallel/cluster/run.py +136 -0
- mindspore/parallel/mpi/__init__.py +1 -1
- mindspore/parallel/mpi/_mpi_config.py +1 -1
- mindspore/parallel/parameter_broadcast.py +152 -0
- mindspore/parallel/shard.py +128 -17
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +3 -2
- mindspore/profiler/common/process_pool.py +41 -0
- mindspore/profiler/common/singleton.py +28 -0
- mindspore/profiler/common/util.py +125 -0
- mindspore/profiler/envprofiling.py +2 -2
- mindspore/{_extends/parallel_compile/tbe_compiler → profiler/parser/ascend_analysis}/__init__.py +1 -1
- mindspore/profiler/parser/ascend_analysis/constant.py +53 -0
- mindspore/profiler/parser/ascend_analysis/file_manager.py +159 -0
- mindspore/profiler/parser/ascend_analysis/function_event.py +161 -0
- mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +131 -0
- mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +85 -0
- mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +57 -0
- mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +116 -0
- mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +86 -0
- mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +68 -0
- mindspore/profiler/parser/ascend_cluster_generator.py +14 -9
- mindspore/profiler/parser/ascend_communicate_generator.py +0 -1
- mindspore/profiler/parser/ascend_flops_generator.py +20 -4
- mindspore/profiler/parser/ascend_hccl_generator.py +29 -278
- mindspore/profiler/parser/ascend_integrate_generator.py +42 -0
- mindspore/profiler/parser/ascend_memory_generator.py +185 -0
- mindspore/profiler/parser/ascend_msprof_exporter.py +147 -146
- mindspore/profiler/parser/ascend_msprof_generator.py +73 -283
- mindspore/profiler/parser/ascend_op_generator.py +92 -42
- mindspore/profiler/parser/ascend_timeline_generator.py +296 -133
- mindspore/profiler/parser/base_timeline_generator.py +6 -0
- mindspore/profiler/parser/framework_parser.py +3 -2
- mindspore/profiler/parser/integrator.py +3 -1
- mindspore/profiler/parser/minddata_parser.py +72 -3
- mindspore/profiler/parser/msadvisor_analyzer.py +1 -1
- mindspore/profiler/parser/msadvisor_parser.py +1 -1
- mindspore/profiler/parser/profiler_info.py +16 -1
- mindspore/profiler/profiling.py +445 -190
- mindspore/rewrite/__init__.py +2 -13
- mindspore/rewrite/api/node.py +122 -36
- mindspore/rewrite/api/pattern_engine.py +2 -3
- mindspore/rewrite/api/scoped_value.py +16 -15
- mindspore/rewrite/api/symbol_tree.py +45 -29
- mindspore/rewrite/ast_helpers/__init__.py +3 -6
- mindspore/rewrite/ast_helpers/ast_converter.py +143 -0
- mindspore/rewrite/ast_helpers/ast_finder.py +48 -0
- mindspore/rewrite/ast_helpers/ast_flattener.py +268 -0
- mindspore/rewrite/ast_helpers/ast_modifier.py +160 -92
- mindspore/rewrite/common/__init__.py +1 -2
- mindspore/rewrite/common/config.py +24 -0
- mindspore/rewrite/common/{rewrite_elog.py → error_log.py} +39 -39
- mindspore/rewrite/{namer.py → common/namer.py} +63 -18
- mindspore/rewrite/common/namespace.py +118 -0
- mindspore/rewrite/node/__init__.py +5 -5
- mindspore/rewrite/node/call_function.py +23 -7
- mindspore/rewrite/node/cell_container.py +7 -3
- mindspore/rewrite/node/control_flow.py +53 -28
- mindspore/rewrite/node/node.py +212 -196
- mindspore/rewrite/node/node_manager.py +51 -22
- mindspore/rewrite/node/node_topological_manager.py +3 -23
- mindspore/rewrite/parsers/__init__.py +12 -0
- mindspore/rewrite/parsers/arguments_parser.py +8 -9
- mindspore/rewrite/parsers/assign_parser.py +637 -413
- mindspore/rewrite/parsers/attribute_parser.py +3 -4
- mindspore/rewrite/parsers/class_def_parser.py +115 -148
- mindspore/rewrite/parsers/constant_parser.py +5 -5
- mindspore/rewrite/parsers/container_parser.py +4 -6
- mindspore/rewrite/parsers/expr_parser.py +55 -0
- mindspore/rewrite/parsers/for_parser.py +31 -98
- mindspore/rewrite/parsers/function_def_parser.py +13 -5
- mindspore/rewrite/parsers/if_parser.py +28 -10
- mindspore/rewrite/parsers/module_parser.py +8 -182
- mindspore/rewrite/parsers/parser.py +1 -5
- mindspore/rewrite/parsers/parser_register.py +1 -1
- mindspore/rewrite/parsers/return_parser.py +5 -10
- mindspore/rewrite/parsers/while_parser.py +59 -0
- mindspore/rewrite/sparsify/utils.py +1 -1
- mindspore/rewrite/symbol_tree/__init__.py +20 -0
- mindspore/rewrite/{symbol_tree.py → symbol_tree/symbol_tree.py} +704 -185
- mindspore/rewrite/{symbol_tree_builder.py → symbol_tree/symbol_tree_builder.py} +8 -8
- mindspore/rewrite/{symbol_tree_dumper.py → symbol_tree/symbol_tree_dumper.py} +4 -4
- mindspore/run_check/_check_version.py +6 -14
- mindspore/run_check/run_check.py +1 -1
- mindspore/safeguard/rewrite_obfuscation.py +9 -19
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/__init__.py +6 -5
- mindspore/train/_utils.py +178 -4
- mindspore/train/amp.py +167 -245
- mindspore/train/anf_ir_pb2.py +14 -2
- mindspore/train/callback/__init__.py +5 -2
- mindspore/train/callback/_backup_and_restore.py +5 -5
- mindspore/train/callback/_callback.py +4 -4
- mindspore/train/callback/_checkpoint.py +143 -29
- mindspore/train/callback/_cluster_monitor.py +201 -0
- mindspore/train/callback/_early_stop.py +2 -2
- mindspore/train/callback/_flops_collector.py +238 -0
- mindspore/train/callback/_landscape.py +15 -9
- mindspore/train/callback/_loss_monitor.py +2 -2
- mindspore/train/callback/_mindio_ttp.py +443 -0
- mindspore/train/callback/_on_request_exit.py +2 -2
- mindspore/train/callback/_reduce_lr_on_plateau.py +2 -2
- mindspore/train/callback/_summary_collector.py +7 -7
- mindspore/train/callback/_time_monitor.py +3 -3
- mindspore/train/data_sink.py +6 -5
- mindspore/train/dataset_helper.py +60 -21
- mindspore/train/loss_scale_manager.py +2 -2
- mindspore/train/metrics/accuracy.py +7 -7
- mindspore/train/metrics/confusion_matrix.py +8 -6
- mindspore/train/metrics/cosine_similarity.py +6 -4
- mindspore/train/metrics/error.py +2 -2
- mindspore/train/metrics/metric.py +3 -3
- mindspore/train/metrics/perplexity.py +2 -1
- mindspore/train/metrics/topk.py +2 -2
- mindspore/train/mind_ir_pb2.py +89 -15
- mindspore/train/model.py +290 -60
- mindspore/train/serialization.py +495 -220
- mindspore/train/summary/_summary_adapter.py +1 -1
- mindspore/train/summary/summary_record.py +51 -28
- mindspore/train/train_thor/convert_utils.py +3 -3
- mindspore/turbojpeg.dll +0 -0
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.2.14.dist-info → mindspore-2.3.0.dist-info}/METADATA +3 -3
- mindspore-2.3.0.dist-info/RECORD +1400 -0
- {mindspore-2.2.14.dist-info → mindspore-2.3.0.dist-info}/entry_points.txt +1 -0
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +0 -662
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +0 -377
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +0 -201
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +0 -515
- mindspore/gen_ops.py +0 -273
- mindspore/nn/layer/flash_attention.py +0 -189
- mindspore/ops/_op_impl/cpu/concat.py +0 -39
- mindspore/ops/_op_impl/cpu/tensor_shape.py +0 -42
- mindspore/ops/_op_impl/tbe/__init__.py +0 -47
- mindspore/ops/_op_impl/tbe/abs.py +0 -38
- mindspore/ops/_op_impl/tbe/abs_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/abs_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/abs_grad_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/accumulate_n_v2.py +0 -41
- mindspore/ops/_op_impl/tbe/accumulate_n_v2_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/acos.py +0 -37
- mindspore/ops/_op_impl/tbe/acos_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/acos_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/acos_grad_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/acosh.py +0 -37
- mindspore/ops/_op_impl/tbe/acosh_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/acosh_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/acosh_grad_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/act_ulq_clamp_max_grad.py +0 -38
- mindspore/ops/_op_impl/tbe/act_ulq_clamp_min_grad.py +0 -38
- mindspore/ops/_op_impl/tbe/acts_ulq.py +0 -45
- mindspore/ops/_op_impl/tbe/acts_ulq_input_grad.py +0 -38
- mindspore/ops/_op_impl/tbe/adam_apply_one.py +0 -50
- mindspore/ops/_op_impl/tbe/adam_apply_one_assign.py +0 -53
- mindspore/ops/_op_impl/tbe/adam_apply_one_ds.py +0 -51
- mindspore/ops/_op_impl/tbe/adam_apply_one_with_decay.py +0 -54
- mindspore/ops/_op_impl/tbe/adam_apply_one_with_decay_assign.py +0 -54
- mindspore/ops/_op_impl/tbe/adam_apply_one_with_decay_ds.py +0 -55
- mindspore/ops/_op_impl/tbe/adaptive_max_pool2d.py +0 -37
- mindspore/ops/_op_impl/tbe/add.py +0 -42
- mindspore/ops/_op_impl/tbe/add_ds.py +0 -43
- mindspore/ops/_op_impl/tbe/add_n.py +0 -39
- mindspore/ops/_op_impl/tbe/add_n_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/addcdiv.py +0 -41
- mindspore/ops/_op_impl/tbe/addcdiv_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/addcmul.py +0 -43
- mindspore/ops/_op_impl/tbe/addcmul_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/apply_ada_max.py +0 -68
- mindspore/ops/_op_impl/tbe/apply_ada_max_ds.py +0 -69
- mindspore/ops/_op_impl/tbe/apply_adadelta.py +0 -66
- mindspore/ops/_op_impl/tbe/apply_adadelta_ds.py +0 -67
- mindspore/ops/_op_impl/tbe/apply_adagrad.py +0 -55
- mindspore/ops/_op_impl/tbe/apply_adagrad_d_a.py +0 -67
- mindspore/ops/_op_impl/tbe/apply_adagrad_ds.py +0 -56
- mindspore/ops/_op_impl/tbe/apply_adagrad_v2.py +0 -48
- mindspore/ops/_op_impl/tbe/apply_adagrad_v2_ds.py +0 -49
- mindspore/ops/_op_impl/tbe/apply_adam.py +0 -79
- mindspore/ops/_op_impl/tbe/apply_adam_ds.py +0 -80
- mindspore/ops/_op_impl/tbe/apply_adam_with_amsgrad.py +0 -60
- mindspore/ops/_op_impl/tbe/apply_adam_with_amsgrad_ds.py +0 -61
- mindspore/ops/_op_impl/tbe/apply_add_sign.py +0 -65
- mindspore/ops/_op_impl/tbe/apply_add_sign_ds.py +0 -66
- mindspore/ops/_op_impl/tbe/apply_centered_rms_prop.py +0 -77
- mindspore/ops/_op_impl/tbe/apply_centered_rms_prop_ds.py +0 -78
- mindspore/ops/_op_impl/tbe/apply_ftrl.py +0 -67
- mindspore/ops/_op_impl/tbe/apply_ftrl_ds.py +0 -68
- mindspore/ops/_op_impl/tbe/apply_gradient_descent.py +0 -44
- mindspore/ops/_op_impl/tbe/apply_gradient_descent_ds.py +0 -45
- mindspore/ops/_op_impl/tbe/apply_keras_momentum.py +0 -49
- mindspore/ops/_op_impl/tbe/apply_momentum.py +0 -64
- mindspore/ops/_op_impl/tbe/apply_momentum_ds.py +0 -65
- mindspore/ops/_op_impl/tbe/apply_power_sign.py +0 -65
- mindspore/ops/_op_impl/tbe/apply_power_sign_ds.py +0 -66
- mindspore/ops/_op_impl/tbe/apply_proximal_adagrad.py +0 -57
- mindspore/ops/_op_impl/tbe/apply_proximal_adagrad_ds.py +0 -58
- mindspore/ops/_op_impl/tbe/apply_proximal_gradient_descent.py +0 -54
- mindspore/ops/_op_impl/tbe/apply_proximal_gradient_descent_ds.py +0 -55
- mindspore/ops/_op_impl/tbe/apply_rms_prop.py +0 -52
- mindspore/ops/_op_impl/tbe/approximate_equal.py +0 -39
- mindspore/ops/_op_impl/tbe/approximate_equal_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/arg_max.py +0 -38
- mindspore/ops/_op_impl/tbe/arg_max_with_value.py +0 -38
- mindspore/ops/_op_impl/tbe/arg_max_with_value_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/arg_min.py +0 -38
- mindspore/ops/_op_impl/tbe/arg_min_v2_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/arg_min_with_value.py +0 -38
- mindspore/ops/_op_impl/tbe/arg_min_with_value_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/asin.py +0 -37
- mindspore/ops/_op_impl/tbe/asin_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/asin_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/asin_grad_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/asinh.py +0 -37
- mindspore/ops/_op_impl/tbe/asinh_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/asinh_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/asinh_grad_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/assign.py +0 -79
- mindspore/ops/_op_impl/tbe/assign_add.py +0 -59
- mindspore/ops/_op_impl/tbe/assign_add_ds.py +0 -60
- mindspore/ops/_op_impl/tbe/assign_ds.py +0 -80
- mindspore/ops/_op_impl/tbe/assign_sub.py +0 -55
- mindspore/ops/_op_impl/tbe/assign_sub_ds.py +0 -56
- mindspore/ops/_op_impl/tbe/atan.py +0 -37
- mindspore/ops/_op_impl/tbe/atan2.py +0 -38
- mindspore/ops/_op_impl/tbe/atan2_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/atan_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/atan_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/atan_grad_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/atanh.py +0 -37
- mindspore/ops/_op_impl/tbe/atanh_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/avg_pool.py +0 -43
- mindspore/ops/_op_impl/tbe/avg_pool_3d.py +0 -44
- mindspore/ops/_op_impl/tbe/avg_pool_3d_grad.py +0 -45
- mindspore/ops/_op_impl/tbe/avg_pool_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/avg_pool_grad.py +0 -42
- mindspore/ops/_op_impl/tbe/avg_pool_grad_vm.py +0 -42
- mindspore/ops/_op_impl/tbe/basic_lstm_cell.py +0 -57
- mindspore/ops/_op_impl/tbe/basic_lstm_cell_c_state_grad.py +0 -50
- mindspore/ops/_op_impl/tbe/basic_lstm_cell_c_state_grad_v2.py +0 -51
- mindspore/ops/_op_impl/tbe/basic_lstm_cell_input_grad.py +0 -42
- mindspore/ops/_op_impl/tbe/basic_lstm_cell_weight_grad.py +0 -41
- mindspore/ops/_op_impl/tbe/batch_matmul.py +0 -42
- mindspore/ops/_op_impl/tbe/batch_matmul_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/batch_matmul_v2.py +0 -47
- mindspore/ops/_op_impl/tbe/batch_to_space.py +0 -38
- mindspore/ops/_op_impl/tbe/batch_to_space_nd.py +0 -38
- mindspore/ops/_op_impl/tbe/batch_to_space_nd_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/batch_to_space_nd_v2.py +0 -41
- mindspore/ops/_op_impl/tbe/batchnorm.py +0 -58
- mindspore/ops/_op_impl/tbe/batchnorm_grad.py +0 -58
- mindspore/ops/_op_impl/tbe/bce_with_logits_loss.py +0 -42
- mindspore/ops/_op_impl/tbe/bessel_i0e.py +0 -37
- mindspore/ops/_op_impl/tbe/bessel_i0e_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/bessel_i1e.py +0 -37
- mindspore/ops/_op_impl/tbe/bessel_i1e_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/bias_add.py +0 -38
- mindspore/ops/_op_impl/tbe/bias_add_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/bias_add_grad.py +0 -53
- mindspore/ops/_op_impl/tbe/binary_cross_entropy.py +0 -39
- mindspore/ops/_op_impl/tbe/binary_cross_entropy_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/binary_cross_entropy_grad.py +0 -44
- mindspore/ops/_op_impl/tbe/binary_cross_entropy_grad_ds.py +0 -45
- mindspore/ops/_op_impl/tbe/bitwise_and.py +0 -39
- mindspore/ops/_op_impl/tbe/bitwise_and_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/bitwise_or.py +0 -39
- mindspore/ops/_op_impl/tbe/bitwise_or_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/bitwise_xor.py +0 -39
- mindspore/ops/_op_impl/tbe/bitwise_xor_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/bn_infer.py +0 -43
- mindspore/ops/_op_impl/tbe/bn_infer_ds.py +0 -45
- mindspore/ops/_op_impl/tbe/bn_infer_grad.py +0 -41
- mindspore/ops/_op_impl/tbe/bn_infer_grad_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/bn_inference.py +0 -50
- mindspore/ops/_op_impl/tbe/bn_training_reduce.py +0 -38
- mindspore/ops/_op_impl/tbe/bn_training_reduce_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/bn_training_reduce_grad.py +0 -46
- mindspore/ops/_op_impl/tbe/bn_training_reduce_grad_ds.py +0 -47
- mindspore/ops/_op_impl/tbe/bn_training_update.py +0 -52
- mindspore/ops/_op_impl/tbe/bn_training_update_ds.py +0 -53
- mindspore/ops/_op_impl/tbe/bn_training_update_grad.py +0 -44
- mindspore/ops/_op_impl/tbe/bn_training_update_grad_ds.py +0 -45
- mindspore/ops/_op_impl/tbe/bn_training_update_v2.py +0 -48
- mindspore/ops/_op_impl/tbe/bn_training_update_v3.py +0 -51
- mindspore/ops/_op_impl/tbe/bounding_box_decode.py +0 -41
- mindspore/ops/_op_impl/tbe/bounding_box_decode_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/bounding_box_encode.py +0 -38
- mindspore/ops/_op_impl/tbe/broadcast_to.py +0 -40
- mindspore/ops/_op_impl/tbe/broadcast_to_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/cast.py +0 -55
- mindspore/ops/_op_impl/tbe/cast_ds.py +0 -58
- mindspore/ops/_op_impl/tbe/cdist.py +0 -38
- mindspore/ops/_op_impl/tbe/cdist_grad.py +0 -42
- mindspore/ops/_op_impl/tbe/ceil.py +0 -37
- mindspore/ops/_op_impl/tbe/ceil_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/celu.py +0 -39
- mindspore/ops/_op_impl/tbe/centralization.py +0 -39
- mindspore/ops/_op_impl/tbe/check_valid.py +0 -38
- mindspore/ops/_op_impl/tbe/check_valid_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/clip_by_norm_no_div_sum.py +0 -41
- mindspore/ops/_op_impl/tbe/clip_by_norm_no_div_sum_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/clip_by_value.py +0 -41
- mindspore/ops/_op_impl/tbe/clip_by_value_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/concat.py +0 -40
- mindspore/ops/_op_impl/tbe/concat_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/confusion_matrix.py +0 -63
- mindspore/ops/_op_impl/tbe/confusion_mul_grad.py +0 -40
- mindspore/ops/_op_impl/tbe/confusion_softmax_grad.py +0 -41
- mindspore/ops/_op_impl/tbe/confusion_transpose_d.py +0 -39
- mindspore/ops/_op_impl/tbe/conv2d.py +0 -47
- mindspore/ops/_op_impl/tbe/conv2d_backprop_filter.py +0 -42
- mindspore/ops/_op_impl/tbe/conv2d_backprop_filter_ds.py +0 -43
- mindspore/ops/_op_impl/tbe/conv2d_backprop_input.py +0 -42
- mindspore/ops/_op_impl/tbe/conv2d_backprop_input_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/conv2d_ds.py +0 -47
- mindspore/ops/_op_impl/tbe/conv2d_transpose.py +0 -48
- mindspore/ops/_op_impl/tbe/conv3d.py +0 -45
- mindspore/ops/_op_impl/tbe/conv3d_backprop_filter.py +0 -42
- mindspore/ops/_op_impl/tbe/conv3d_backprop_input.py +0 -42
- mindspore/ops/_op_impl/tbe/conv3d_transpose.py +0 -47
- mindspore/ops/_op_impl/tbe/conv3d_transpose_ds.py +0 -48
- mindspore/ops/_op_impl/tbe/cos.py +0 -37
- mindspore/ops/_op_impl/tbe/cos_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/cosh.py +0 -37
- mindspore/ops/_op_impl/tbe/cosh_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/ctc_loss_v2.py +0 -42
- mindspore/ops/_op_impl/tbe/ctc_loss_v2_grad.py +0 -44
- mindspore/ops/_op_impl/tbe/cum_sum.py +0 -42
- mindspore/ops/_op_impl/tbe/cum_sum_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/cummin.py +0 -41
- mindspore/ops/_op_impl/tbe/cumprod.py +0 -42
- mindspore/ops/_op_impl/tbe/data_format_dim_map.py +0 -38
- mindspore/ops/_op_impl/tbe/data_format_dim_map_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/deformable_offsets.py +0 -45
- mindspore/ops/_op_impl/tbe/deformable_offsets_grad.py +0 -48
- mindspore/ops/_op_impl/tbe/depth_to_space_ds.py +0 -49
- mindspore/ops/_op_impl/tbe/depthwise_conv2d.py +0 -44
- mindspore/ops/_op_impl/tbe/depthwise_conv2d_backprop_filter.py +0 -41
- mindspore/ops/_op_impl/tbe/depthwise_conv2d_backprop_input.py +0 -41
- mindspore/ops/_op_impl/tbe/diag.py +0 -38
- mindspore/ops/_op_impl/tbe/diag_part.py +0 -38
- mindspore/ops/_op_impl/tbe/dilation.py +0 -40
- mindspore/ops/_op_impl/tbe/div.py +0 -41
- mindspore/ops/_op_impl/tbe/div_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/div_no_nan.py +0 -41
- mindspore/ops/_op_impl/tbe/div_no_nan_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/dropout_do_mask.py +0 -38
- mindspore/ops/_op_impl/tbe/dropout_do_mask_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/dropout_do_mask_v3.py +0 -39
- mindspore/ops/_op_impl/tbe/dynamic_atomic_addr_clean.py +0 -34
- mindspore/ops/_op_impl/tbe/dynamic_gru_v2.py +0 -95
- mindspore/ops/_op_impl/tbe/dynamic_rnn.py +0 -82
- mindspore/ops/_op_impl/tbe/elu.py +0 -38
- mindspore/ops/_op_impl/tbe/elu_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/elu_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/elu_grad_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/equal.py +0 -42
- mindspore/ops/_op_impl/tbe/equal_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/erf.py +0 -37
- mindspore/ops/_op_impl/tbe/erf_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/erfc.py +0 -37
- mindspore/ops/_op_impl/tbe/erfc_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/erfinv.py +0 -36
- mindspore/ops/_op_impl/tbe/exp.py +0 -40
- mindspore/ops/_op_impl/tbe/exp_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/expand_dims.py +0 -38
- mindspore/ops/_op_impl/tbe/expm1.py +0 -37
- mindspore/ops/_op_impl/tbe/expm1_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/extract_image_patches.py +0 -41
- mindspore/ops/_op_impl/tbe/extract_volume_patches.py +0 -39
- mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars.py +0 -39
- mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars_gradient.py +0 -43
- mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars_per_channel.py +0 -39
- mindspore/ops/_op_impl/tbe/fake_quant_with_min_max_vars_per_channel_gradient.py +0 -43
- mindspore/ops/_op_impl/tbe/fast_gelu.py +0 -37
- mindspore/ops/_op_impl/tbe/fast_gelu_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/fast_gelu_grad.py +0 -41
- mindspore/ops/_op_impl/tbe/fast_gelu_grad_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/fill.py +0 -56
- mindspore/ops/_op_impl/tbe/fill_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/flatten.py +0 -48
- mindspore/ops/_op_impl/tbe/floor.py +0 -37
- mindspore/ops/_op_impl/tbe/floor_div.py +0 -41
- mindspore/ops/_op_impl/tbe/floor_div_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/floor_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/floor_mod.py +0 -39
- mindspore/ops/_op_impl/tbe/floor_mod_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/fused_dbn_dw.py +0 -52
- mindspore/ops/_op_impl/tbe/fused_mul_add.py +0 -38
- mindspore/ops/_op_impl/tbe/fused_mul_add_n.py +0 -48
- mindspore/ops/_op_impl/tbe/fused_mul_add_n_l2loss.py +0 -53
- mindspore/ops/_op_impl/tbe/fused_mul_apply_momentum.py +0 -57
- mindspore/ops/_op_impl/tbe/fused_mul_apply_momentum_extern.py +0 -67
- mindspore/ops/_op_impl/tbe/gather_nd.py +0 -52
- mindspore/ops/_op_impl/tbe/gather_nd_ds.py +0 -48
- mindspore/ops/_op_impl/tbe/gather_v2.py +0 -56
- mindspore/ops/_op_impl/tbe/gather_v2_ds.py +0 -68
- mindspore/ops/_op_impl/tbe/gelu.py +0 -37
- mindspore/ops/_op_impl/tbe/gelu_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/gelu_grad.py +0 -42
- mindspore/ops/_op_impl/tbe/gelu_grad_ds.py +0 -43
- mindspore/ops/_op_impl/tbe/ger.py +0 -43
- mindspore/ops/_op_impl/tbe/ger_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/greater.py +0 -43
- mindspore/ops/_op_impl/tbe/greater_equal.py +0 -41
- mindspore/ops/_op_impl/tbe/greater_equal_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/gru_v2_hidden_grad.py +0 -51
- mindspore/ops/_op_impl/tbe/gru_v2_hidden_grad_cell.py +0 -52
- mindspore/ops/_op_impl/tbe/hard_swish.py +0 -37
- mindspore/ops/_op_impl/tbe/hard_swish_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/hard_swish_grad.py +0 -41
- mindspore/ops/_op_impl/tbe/hard_swish_grad_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/histogram_fixed_width.py +0 -40
- mindspore/ops/_op_impl/tbe/hshrink.py +0 -33
- mindspore/ops/_op_impl/tbe/hshrink_grad.py +0 -37
- mindspore/ops/_op_impl/tbe/hsigmoid.py +0 -45
- mindspore/ops/_op_impl/tbe/hsigmoid_grad.py +0 -39
- mindspore/ops/_op_impl/tbe/ifmr.py +0 -47
- mindspore/ops/_op_impl/tbe/ifmr_ds.py +0 -48
- mindspore/ops/_op_impl/tbe/im2col.py +0 -42
- mindspore/ops/_op_impl/tbe/in_top_k.py +0 -37
- mindspore/ops/_op_impl/tbe/inplace_add.py +0 -39
- mindspore/ops/_op_impl/tbe/inplace_index_add.py +0 -46
- mindspore/ops/_op_impl/tbe/inplace_sub.py +0 -39
- mindspore/ops/_op_impl/tbe/inplace_update.py +0 -39
- mindspore/ops/_op_impl/tbe/inplace_update_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/inv.py +0 -38
- mindspore/ops/_op_impl/tbe/inv_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/inv_grad.py +0 -40
- mindspore/ops/_op_impl/tbe/inv_grad_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/invert.py +0 -37
- mindspore/ops/_op_impl/tbe/invert_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/iou.py +0 -38
- mindspore/ops/_op_impl/tbe/iou_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/is_close.py +0 -40
- mindspore/ops/_op_impl/tbe/kl_div_loss.py +0 -38
- mindspore/ops/_op_impl/tbe/kl_div_loss_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/kl_div_loss_grad.py +0 -40
- mindspore/ops/_op_impl/tbe/l2_loss.py +0 -36
- mindspore/ops/_op_impl/tbe/l2_loss_ds.py +0 -37
- mindspore/ops/_op_impl/tbe/l2_normalize.py +0 -38
- mindspore/ops/_op_impl/tbe/l2_normalize_grad.py +0 -40
- mindspore/ops/_op_impl/tbe/lamb_apply_optimizer_assign.py +0 -55
- mindspore/ops/_op_impl/tbe/lamb_apply_weight_assign.py +0 -42
- mindspore/ops/_op_impl/tbe/lamb_next_mv.py +0 -59
- mindspore/ops/_op_impl/tbe/lamb_next_mv_with_decay.py +0 -59
- mindspore/ops/_op_impl/tbe/lamb_next_right.py +0 -44
- mindspore/ops/_op_impl/tbe/lamb_update_with_lr.py +0 -48
- mindspore/ops/_op_impl/tbe/lamb_update_with_lr_v2.py +0 -44
- mindspore/ops/_op_impl/tbe/lars_update.py +0 -50
- mindspore/ops/_op_impl/tbe/lars_update_ds.py +0 -51
- mindspore/ops/_op_impl/tbe/layer_norm.py +0 -46
- mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop.py +0 -44
- mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop_ds.py +0 -45
- mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop_v2.py +0 -40
- mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop_v2_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/layer_norm_ds.py +0 -47
- mindspore/ops/_op_impl/tbe/layer_norm_grad.py +0 -48
- mindspore/ops/_op_impl/tbe/layer_norm_x_backprop.py +0 -43
- mindspore/ops/_op_impl/tbe/layer_norm_x_backprop_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/layer_norm_x_backprop_v2.py +0 -45
- mindspore/ops/_op_impl/tbe/layer_norm_x_backprop_v2_ds.py +0 -45
- mindspore/ops/_op_impl/tbe/lerp.py +0 -38
- mindspore/ops/_op_impl/tbe/less.py +0 -41
- mindspore/ops/_op_impl/tbe/less_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/less_equal.py +0 -41
- mindspore/ops/_op_impl/tbe/less_equal_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/log.py +0 -40
- mindspore/ops/_op_impl/tbe/log1p.py +0 -37
- mindspore/ops/_op_impl/tbe/log1p_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/log_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/logical_and.py +0 -37
- mindspore/ops/_op_impl/tbe/logical_and_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/logical_not.py +0 -36
- mindspore/ops/_op_impl/tbe/logical_not_ds.py +0 -37
- mindspore/ops/_op_impl/tbe/logical_or.py +0 -37
- mindspore/ops/_op_impl/tbe/logical_or_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/logsoftmax.py +0 -37
- mindspore/ops/_op_impl/tbe/logsoftmax_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/logsoftmax_grad.py +0 -38
- mindspore/ops/_op_impl/tbe/logsoftmax_grad_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/lp_norm.py +0 -40
- mindspore/ops/_op_impl/tbe/lp_norm_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/lrn.py +0 -41
- mindspore/ops/_op_impl/tbe/lrn_grad.py +0 -42
- mindspore/ops/_op_impl/tbe/lstm_input_grad.py +0 -51
- mindspore/ops/_op_impl/tbe/masked_fill.py +0 -40
- mindspore/ops/_op_impl/tbe/masked_fill_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/matmul.py +0 -53
- mindspore/ops/_op_impl/tbe/matmul_ds.py +0 -47
- mindspore/ops/_op_impl/tbe/matmul_v2.py +0 -50
- mindspore/ops/_op_impl/tbe/matrix_diag.py +0 -45
- mindspore/ops/_op_impl/tbe/matrix_diag_part.py +0 -45
- mindspore/ops/_op_impl/tbe/matrix_set_diag.py +0 -46
- mindspore/ops/_op_impl/tbe/max_pool.py +0 -39
- mindspore/ops/_op_impl/tbe/max_pool3d.py +0 -44
- mindspore/ops/_op_impl/tbe/max_pool3d_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/max_pool3d_grad_grad.py +0 -44
- mindspore/ops/_op_impl/tbe/max_pool_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/max_pool_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/max_pool_grad_grad.py +0 -41
- mindspore/ops/_op_impl/tbe/max_pool_grad_grad_with_argmax.py +0 -41
- mindspore/ops/_op_impl/tbe/max_pool_grad_with_argmax.py +0 -42
- mindspore/ops/_op_impl/tbe/max_pool_with_argmax.py +0 -40
- mindspore/ops/_op_impl/tbe/maximum.py +0 -39
- mindspore/ops/_op_impl/tbe/maximum_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/maximum_grad.py +0 -46
- mindspore/ops/_op_impl/tbe/maximum_grad_ds.py +0 -47
- mindspore/ops/_op_impl/tbe/mem_set.py +0 -38
- mindspore/ops/_op_impl/tbe/minimum.py +0 -40
- mindspore/ops/_op_impl/tbe/minimum_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/minimum_grad.py +0 -46
- mindspore/ops/_op_impl/tbe/minimum_grad_ds.py +0 -47
- mindspore/ops/_op_impl/tbe/mish.py +0 -37
- mindspore/ops/_op_impl/tbe/mod.py +0 -41
- mindspore/ops/_op_impl/tbe/mod_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/mul.py +0 -37
- mindspore/ops/_op_impl/tbe/mul_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/mul_no_nan.py +0 -39
- mindspore/ops/_op_impl/tbe/mul_no_nan_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/multilabel_margin_loss.py +0 -39
- mindspore/ops/_op_impl/tbe/neg.py +0 -39
- mindspore/ops/_op_impl/tbe/neg_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/new_im2col.py +0 -40
- mindspore/ops/_op_impl/tbe/nll_loss.py +0 -41
- mindspore/ops/_op_impl/tbe/nll_loss_grad.py +0 -44
- mindspore/ops/_op_impl/tbe/nms_with_mask.py +0 -39
- mindspore/ops/_op_impl/tbe/not_equal.py +0 -41
- mindspore/ops/_op_impl/tbe/not_equal_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/npu_alloc_float_status.py +0 -34
- mindspore/ops/_op_impl/tbe/npu_clear_float_status.py +0 -35
- mindspore/ops/_op_impl/tbe/npu_clear_float_status_v2.py +0 -35
- mindspore/ops/_op_impl/tbe/npu_get_float_status.py +0 -35
- mindspore/ops/_op_impl/tbe/npu_get_float_status_v2.py +0 -35
- mindspore/ops/_op_impl/tbe/one_hot.py +0 -48
- mindspore/ops/_op_impl/tbe/one_hot_ds.py +0 -45
- mindspore/ops/_op_impl/tbe/ones_like.py +0 -40
- mindspore/ops/_op_impl/tbe/ones_like_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/p_s_r_o_i_pooling.py +0 -40
- mindspore/ops/_op_impl/tbe/p_s_r_o_i_pooling_grad.py +0 -40
- mindspore/ops/_op_impl/tbe/pack.py +0 -58
- mindspore/ops/_op_impl/tbe/pack_ds.py +0 -59
- mindspore/ops/_op_impl/tbe/pad_d.py +0 -40
- mindspore/ops/_op_impl/tbe/pad_d_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/parallel_concat.py +0 -70
- mindspore/ops/_op_impl/tbe/parallel_resize_bilinear.py +0 -45
- mindspore/ops/_op_impl/tbe/parallel_resize_bilinear_grad.py +0 -44
- mindspore/ops/_op_impl/tbe/pdist.py +0 -36
- mindspore/ops/_op_impl/tbe/pooling.py +0 -46
- mindspore/ops/_op_impl/tbe/population_count.py +0 -38
- mindspore/ops/_op_impl/tbe/pow.py +0 -41
- mindspore/ops/_op_impl/tbe/pow_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/prelu.py +0 -37
- mindspore/ops/_op_impl/tbe/prelu_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/prelu_grad.py +0 -40
- mindspore/ops/_op_impl/tbe/range.py +0 -39
- mindspore/ops/_op_impl/tbe/real_div.py +0 -38
- mindspore/ops/_op_impl/tbe/real_div_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/reciprocal.py +0 -36
- mindspore/ops/_op_impl/tbe/reciprocal_ds.py +0 -37
- mindspore/ops/_op_impl/tbe/reciprocal_grad.py +0 -38
- mindspore/ops/_op_impl/tbe/reciprocal_grad_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/reduce_all.py +0 -38
- mindspore/ops/_op_impl/tbe/reduce_all_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/reduce_any.py +0 -38
- mindspore/ops/_op_impl/tbe/reduce_any_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/reduce_max.py +0 -43
- mindspore/ops/_op_impl/tbe/reduce_max_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/reduce_mean.py +0 -40
- mindspore/ops/_op_impl/tbe/reduce_mean_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/reduce_min.py +0 -41
- mindspore/ops/_op_impl/tbe/reduce_min_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/reduce_prod.py +0 -42
- mindspore/ops/_op_impl/tbe/reduce_prod_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/reduce_std.py +0 -44
- mindspore/ops/_op_impl/tbe/reduce_sum.py +0 -39
- mindspore/ops/_op_impl/tbe/reduce_sum_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/relu.py +0 -39
- mindspore/ops/_op_impl/tbe/relu6.py +0 -38
- mindspore/ops/_op_impl/tbe/relu6_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/relu6_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/relu6_grad_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/relu_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/relu_grad.py +0 -41
- mindspore/ops/_op_impl/tbe/relu_grad_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/relu_grad_v2.py +0 -40
- mindspore/ops/_op_impl/tbe/relu_grad_v2_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/relu_v2.py +0 -40
- mindspore/ops/_op_impl/tbe/relu_v2_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/renorm.py +0 -39
- mindspore/ops/_op_impl/tbe/resize_bilinear.py +0 -40
- mindspore/ops/_op_impl/tbe/resize_bilinear_grad.py +0 -41
- mindspore/ops/_op_impl/tbe/resize_bilinear_v2.py +0 -43
- mindspore/ops/_op_impl/tbe/resize_nearest_neighbor.py +0 -40
- mindspore/ops/_op_impl/tbe/resize_nearest_neighbor_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/resize_nearest_neighbor_grad.py +0 -39
- mindspore/ops/_op_impl/tbe/resize_nearest_neighbor_grad_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/reverse_v2_d.py +0 -37
- mindspore/ops/_op_impl/tbe/rint.py +0 -37
- mindspore/ops/_op_impl/tbe/rint_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/roi_align.py +0 -43
- mindspore/ops/_op_impl/tbe/roi_align_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/roi_align_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/roi_align_grad_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/roll.py +0 -42
- mindspore/ops/_op_impl/tbe/round.py +0 -38
- mindspore/ops/_op_impl/tbe/round_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/rsqrt.py +0 -37
- mindspore/ops/_op_impl/tbe/rsqrt_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/rsqrt_grad.py +0 -40
- mindspore/ops/_op_impl/tbe/rsqrt_grad_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/scatter_add.py +0 -44
- mindspore/ops/_op_impl/tbe/scatter_div.py +0 -46
- mindspore/ops/_op_impl/tbe/scatter_max.py +0 -45
- mindspore/ops/_op_impl/tbe/scatter_min.py +0 -45
- mindspore/ops/_op_impl/tbe/scatter_mul.py +0 -44
- mindspore/ops/_op_impl/tbe/scatter_nd.py +0 -41
- mindspore/ops/_op_impl/tbe/scatter_nd_add.py +0 -45
- mindspore/ops/_op_impl/tbe/scatter_nd_d.py +0 -41
- mindspore/ops/_op_impl/tbe/scatter_nd_ds.py +0 -49
- mindspore/ops/_op_impl/tbe/scatter_nd_sub.py +0 -47
- mindspore/ops/_op_impl/tbe/scatter_nd_sub_ds.py +0 -48
- mindspore/ops/_op_impl/tbe/scatter_nd_update.py +0 -47
- mindspore/ops/_op_impl/tbe/scatter_nd_update_ds.py +0 -48
- mindspore/ops/_op_impl/tbe/scatter_non_aliasing_add.py +0 -39
- mindspore/ops/_op_impl/tbe/scatter_non_aliasing_add_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/scatter_sub.py +0 -47
- mindspore/ops/_op_impl/tbe/scatter_sub_ds.py +0 -48
- mindspore/ops/_op_impl/tbe/scatter_update.py +0 -43
- mindspore/ops/_op_impl/tbe/select.py +0 -38
- mindspore/ops/_op_impl/tbe/select_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/selu.py +0 -39
- mindspore/ops/_op_impl/tbe/selu_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/sgd.py +0 -62
- mindspore/ops/_op_impl/tbe/sigmoid.py +0 -37
- mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits.py +0 -41
- mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits_grad.py +0 -42
- mindspore/ops/_op_impl/tbe/sigmoid_cross_entropy_with_logits_grad_ds.py +0 -43
- mindspore/ops/_op_impl/tbe/sigmoid_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/sigmoid_grad.py +0 -39
- mindspore/ops/_op_impl/tbe/sigmoid_grad_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/sign.py +0 -38
- mindspore/ops/_op_impl/tbe/sign_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/sin.py +0 -37
- mindspore/ops/_op_impl/tbe/sin_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/sinh.py +0 -37
- mindspore/ops/_op_impl/tbe/sinh_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/slice.py +0 -58
- mindspore/ops/_op_impl/tbe/smooth_l1_loss.py +0 -45
- mindspore/ops/_op_impl/tbe/smooth_l1_loss_ds.py +0 -46
- mindspore/ops/_op_impl/tbe/smooth_l1_loss_grad.py +0 -46
- mindspore/ops/_op_impl/tbe/smooth_l1_loss_grad_ds.py +0 -47
- mindspore/ops/_op_impl/tbe/soft_margin_loss.py +0 -38
- mindspore/ops/_op_impl/tbe/soft_margin_loss_grad.py +0 -39
- mindspore/ops/_op_impl/tbe/soft_shrink.py +0 -36
- mindspore/ops/_op_impl/tbe/soft_shrink_grad.py +0 -38
- mindspore/ops/_op_impl/tbe/softmax.py +0 -37
- mindspore/ops/_op_impl/tbe/softmax_cross_entropy_with_logits.py +0 -38
- mindspore/ops/_op_impl/tbe/softmax_cross_entropy_with_logits_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/softmax_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/softmax_grad_ext.py +0 -42
- mindspore/ops/_op_impl/tbe/softmax_v2_with_dropout_do_mask_v3.py +0 -39
- mindspore/ops/_op_impl/tbe/softplus.py +0 -37
- mindspore/ops/_op_impl/tbe/softplus_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/softplus_grad.py +0 -38
- mindspore/ops/_op_impl/tbe/softplus_grad_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/softsign.py +0 -37
- mindspore/ops/_op_impl/tbe/softsign_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/sort.py +0 -38
- mindspore/ops/_op_impl/tbe/sort_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/space_to_batch.py +0 -38
- mindspore/ops/_op_impl/tbe/space_to_batch_nd.py +0 -38
- mindspore/ops/_op_impl/tbe/space_to_depth.py +0 -47
- mindspore/ops/_op_impl/tbe/sparse_apply_adadelta.py +0 -56
- mindspore/ops/_op_impl/tbe/sparse_apply_adagrad.py +0 -45
- mindspore/ops/_op_impl/tbe/sparse_apply_adagrad_ds.py +0 -46
- mindspore/ops/_op_impl/tbe/sparse_apply_adagrad_v2.py +0 -46
- mindspore/ops/_op_impl/tbe/sparse_apply_adagrad_v2_ds.py +0 -47
- mindspore/ops/_op_impl/tbe/sparse_apply_ftrl_d.py +0 -53
- mindspore/ops/_op_impl/tbe/sparse_apply_ftrl_d_ds.py +0 -50
- mindspore/ops/_op_impl/tbe/sparse_apply_ftrl_v2.py +0 -50
- mindspore/ops/_op_impl/tbe/sparse_apply_proximal_adagrad.py +0 -66
- mindspore/ops/_op_impl/tbe/sparse_apply_proximal_adagrad_ds.py +0 -67
- mindspore/ops/_op_impl/tbe/sparse_apply_r_m_s_prop.py +0 -57
- mindspore/ops/_op_impl/tbe/sparse_apply_r_m_s_prop_ds.py +0 -58
- mindspore/ops/_op_impl/tbe/sparse_gather_v2.py +0 -56
- mindspore/ops/_op_impl/tbe/sparse_gather_v2_ds.py +0 -58
- mindspore/ops/_op_impl/tbe/split_d.py +0 -38
- mindspore/ops/_op_impl/tbe/split_d_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/split_v.py +0 -39
- mindspore/ops/_op_impl/tbe/splitv.py +0 -39
- mindspore/ops/_op_impl/tbe/sqrt.py +0 -37
- mindspore/ops/_op_impl/tbe/sqrt_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/sqrt_grad.py +0 -43
- mindspore/ops/_op_impl/tbe/sqrt_grad_ds.py +0 -44
- mindspore/ops/_op_impl/tbe/square.py +0 -38
- mindspore/ops/_op_impl/tbe/square_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/square_sum_all.py +0 -40
- mindspore/ops/_op_impl/tbe/square_sum_all_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/square_sum_v1.py +0 -38
- mindspore/ops/_op_impl/tbe/square_sum_v1_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/square_sum_v2.py +0 -39
- mindspore/ops/_op_impl/tbe/squared_difference.py +0 -39
- mindspore/ops/_op_impl/tbe/squared_difference_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/squeeze.py +0 -37
- mindspore/ops/_op_impl/tbe/strided_read.py +0 -38
- mindspore/ops/_op_impl/tbe/strided_slice_d.py +0 -44
- mindspore/ops/_op_impl/tbe/strided_slice_ds.py +0 -71
- mindspore/ops/_op_impl/tbe/strided_slice_grad_d.py +0 -51
- mindspore/ops/_op_impl/tbe/strided_slice_grad_ds.py +0 -57
- mindspore/ops/_op_impl/tbe/strided_write.py +0 -38
- mindspore/ops/_op_impl/tbe/sub.py +0 -39
- mindspore/ops/_op_impl/tbe/sub_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/tan.py +0 -38
- mindspore/ops/_op_impl/tbe/tan_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/tanh.py +0 -37
- mindspore/ops/_op_impl/tbe/tanh_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/tanh_grad.py +0 -39
- mindspore/ops/_op_impl/tbe/tanh_grad_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/tensor_move.py +0 -49
- mindspore/ops/_op_impl/tbe/tensor_move_ds.py +0 -50
- mindspore/ops/_op_impl/tbe/tensor_scatter_update.py +0 -41
- mindspore/ops/_op_impl/tbe/tile.py +0 -37
- mindspore/ops/_op_impl/tbe/tile_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/top_k.py +0 -42
- mindspore/ops/_op_impl/tbe/top_k_ds.py +0 -43
- mindspore/ops/_op_impl/tbe/trans_data.py +0 -167
- mindspore/ops/_op_impl/tbe/trans_data_ds.py +0 -180
- mindspore/ops/_op_impl/tbe/trans_data_rnn.py +0 -44
- mindspore/ops/_op_impl/tbe/transpose.py +0 -60
- mindspore/ops/_op_impl/tbe/transpose_d.py +0 -47
- mindspore/ops/_op_impl/tbe/transpose_nod.py +0 -60
- mindspore/ops/_op_impl/tbe/trunc.py +0 -39
- mindspore/ops/_op_impl/tbe/truncate_div.py +0 -41
- mindspore/ops/_op_impl/tbe/truncate_div_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/truncate_mod.py +0 -41
- mindspore/ops/_op_impl/tbe/truncate_mod_ds.py +0 -42
- mindspore/ops/_op_impl/tbe/unpack.py +0 -38
- mindspore/ops/_op_impl/tbe/unpack_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/unsorted_segment_max.py +0 -49
- mindspore/ops/_op_impl/tbe/unsorted_segment_max_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/unsorted_segment_min.py +0 -49
- mindspore/ops/_op_impl/tbe/unsorted_segment_min_ds.py +0 -40
- mindspore/ops/_op_impl/tbe/unsorted_segment_prod.py +0 -49
- mindspore/ops/_op_impl/tbe/unsorted_segment_prod_ds.py +0 -38
- mindspore/ops/_op_impl/tbe/unsorted_segment_sum.py +0 -38
- mindspore/ops/_op_impl/tbe/unsorted_segment_sum_ds.py +0 -41
- mindspore/ops/_op_impl/tbe/wts_arq.py +0 -40
- mindspore/ops/_op_impl/tbe/xdivy.py +0 -38
- mindspore/ops/_op_impl/tbe/xdivy_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/xlogy.py +0 -38
- mindspore/ops/_op_impl/tbe/xlogy_ds.py +0 -39
- mindspore/ops/_op_impl/tbe/zeros_like.py +0 -41
- mindspore/ops/_op_impl/tbe/zeros_like_ds.py +0 -42
- mindspore/ops/_tracefunc.py +0 -241
- mindspore/ops/arg_dtype_cast.py +0 -54
- mindspore/rewrite/api/tree_node_helper.py +0 -60
- mindspore/rewrite/ast_helpers/ast_creator.py +0 -115
- mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +0 -267
- mindspore/rewrite/ast_transformers/remove_return_out_of_if.py +0 -228
- mindspore/rewrite/namespace.py +0 -53
- mindspore-2.2.14.dist-info/RECORD +0 -1924
- {mindspore-2.2.14.dist-info → mindspore-2.3.0.dist-info}/WHEEL +0 -0
- {mindspore-2.2.14.dist-info → mindspore-2.3.0.dist-info}/top_level.txt +0 -0
|
@@ -51,17 +51,12 @@ class ReduceOp:
|
|
|
51
51
|
.. note::
|
|
52
52
|
Before running the following examples, you need to configure the communication environment variables.
|
|
53
53
|
|
|
54
|
-
For
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
55
|
+
without any third-party or configuration file dependencies.
|
|
56
|
+
Please see the `msrun start up
|
|
57
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
57
58
|
for more details.
|
|
58
59
|
|
|
59
|
-
For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
|
|
60
|
-
<https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
|
|
61
|
-
|
|
62
|
-
For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
|
|
63
|
-
Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
|
|
64
|
-
|
|
65
60
|
This example should be run with multiple devices.
|
|
66
61
|
|
|
67
62
|
>>> import numpy as np
|
|
@@ -94,7 +89,7 @@ class ReduceOp:
|
|
|
94
89
|
|
|
95
90
|
def check_collective_target_dtype(data_name, data_dtype, prim_name):
|
|
96
91
|
"""Check if data type is valid."""
|
|
97
|
-
default_target_dtypes = (mstype.int8, mstype.
|
|
92
|
+
default_target_dtypes = (mstype.int8, mstype.int32, mstype.float16, mstype.float32, mstype.bfloat16)
|
|
98
93
|
gpu_target_dtypes = (mstype.bool_, mstype.int8, mstype.int32, mstype.int64, mstype.uint32, mstype.uint64,
|
|
99
94
|
mstype.float16, mstype.float32, mstype.float64)
|
|
100
95
|
|
|
@@ -113,15 +108,16 @@ def check_hcom_group_valid(group, prim_name=None):
|
|
|
113
108
|
|
|
114
109
|
class AllReduce(Primitive):
|
|
115
110
|
"""
|
|
116
|
-
Reduces
|
|
111
|
+
Reduces tensors across all devices in such a way that all devices will get the same final result,
|
|
112
|
+
returns the tensor which is all reduced.
|
|
117
113
|
|
|
118
114
|
Note:
|
|
119
115
|
The tensors must have the same shape and format in all processes of the collection.
|
|
120
116
|
|
|
121
117
|
Args:
|
|
122
|
-
op (str): Specifies an operation used for element-wise reductions, like sum, prod, max, and min.
|
|
118
|
+
op (str, optional): Specifies an operation used for element-wise reductions, like sum, prod, max, and min.
|
|
123
119
|
On the CPU, only 'sum' is supported. Default: ``ReduceOp.SUM`` .
|
|
124
|
-
group (str): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
|
|
120
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
|
|
125
121
|
means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
|
|
126
122
|
|
|
127
123
|
Inputs:
|
|
@@ -132,8 +128,8 @@ class AllReduce(Primitive):
|
|
|
132
128
|
The contents depend on the specified operation.
|
|
133
129
|
|
|
134
130
|
Raises:
|
|
135
|
-
TypeError: If any of `op` and `group` is not a str
|
|
136
|
-
|
|
131
|
+
TypeError: If any of `op` and `group` is not a str or the input's dtype is bool.
|
|
132
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
137
133
|
|
|
138
134
|
Supported Platforms:
|
|
139
135
|
``Ascend`` ``GPU`` ``CPU``
|
|
@@ -142,17 +138,12 @@ class AllReduce(Primitive):
|
|
|
142
138
|
.. note::
|
|
143
139
|
Before running the following examples, you need to configure the communication environment variables.
|
|
144
140
|
|
|
145
|
-
For
|
|
146
|
-
|
|
147
|
-
|
|
141
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
142
|
+
without any third-party or configuration file dependencies.
|
|
143
|
+
Please see the `msrun start up
|
|
144
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
148
145
|
for more details.
|
|
149
146
|
|
|
150
|
-
For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
|
|
151
|
-
<https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
|
|
152
|
-
|
|
153
|
-
For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
|
|
154
|
-
Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
|
|
155
|
-
|
|
156
147
|
This example should be run with 2 devices.
|
|
157
148
|
|
|
158
149
|
>>> import numpy as np
|
|
@@ -160,7 +151,7 @@ class AllReduce(Primitive):
|
|
|
160
151
|
>>> from mindspore import Tensor
|
|
161
152
|
>>> from mindspore.ops import ReduceOp
|
|
162
153
|
>>> import mindspore.nn as nn
|
|
163
|
-
>>>
|
|
154
|
+
>>> from mindspore import ops
|
|
164
155
|
>>>
|
|
165
156
|
>>> init()
|
|
166
157
|
>>> class Net(nn.Cell):
|
|
@@ -180,7 +171,7 @@ class AllReduce(Primitive):
|
|
|
180
171
|
|
|
181
172
|
Tutorial Examples:
|
|
182
173
|
- `Distributed Set Communication Primitives - AllReduce
|
|
183
|
-
<https://www.mindspore.cn/docs/en/
|
|
174
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#allreduce>`_
|
|
184
175
|
|
|
185
176
|
"""
|
|
186
177
|
|
|
@@ -200,16 +191,104 @@ class AllReduce(Primitive):
|
|
|
200
191
|
self.add_prim_attr('no_eliminate', True)
|
|
201
192
|
|
|
202
193
|
|
|
194
|
+
class Reduce(PrimitiveWithInfer):
|
|
195
|
+
"""
|
|
196
|
+
Reduces tensors across the processes in the specified communication group, sends the result
|
|
197
|
+
to the target dest_rank(local rank), and returns the tensor which is sent to the target process.
|
|
198
|
+
|
|
199
|
+
Note:
|
|
200
|
+
Only process with destination rank receives the reduced output.
|
|
201
|
+
Support PyNative mode and Graph mode, but Graph mode only supports scenes with a graph compilation level of O0.
|
|
202
|
+
Other processes only get a tensor with shape [1], which has no mathematical meaning.
|
|
203
|
+
|
|
204
|
+
Args:
|
|
205
|
+
dest_rank (int): The target process(local rank) in the specific group that receives the reduced output.
|
|
206
|
+
op (str, optional): Specifies an operation used for element-wise reductions, like sum, prod, max, and min.
|
|
207
|
+
On the CPU, only 'sum' is supported. Default: ``ReduceOp.SUM`` .
|
|
208
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
|
|
209
|
+
means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
|
|
210
|
+
|
|
211
|
+
Inputs:
|
|
212
|
+
- **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
213
|
+
|
|
214
|
+
Outputs:
|
|
215
|
+
Tensor. Return the tensor in the specific rank of the process after reduction.
|
|
216
|
+
The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
217
|
+
|
|
218
|
+
Raises:
|
|
219
|
+
TypeError: If the type of the first input parameter is not Tensor,
|
|
220
|
+
or any of `op` and `group` is not a str.
|
|
221
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
222
|
+
|
|
223
|
+
Supported Platforms:
|
|
224
|
+
``Ascend``
|
|
225
|
+
|
|
226
|
+
Examples:
|
|
227
|
+
.. note::
|
|
228
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
229
|
+
|
|
230
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method without any third-party
|
|
231
|
+
or configuration file dependencies.
|
|
232
|
+
Please see the `msrun start up
|
|
233
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
234
|
+
for more details.
|
|
235
|
+
|
|
236
|
+
This example should be run with 4 devices.
|
|
237
|
+
|
|
238
|
+
>>> from mindspore import ops
|
|
239
|
+
>>> import mindspore.nn as nn
|
|
240
|
+
>>> from mindspore.communication import init
|
|
241
|
+
>>> from mindspore import Tensor
|
|
242
|
+
>>> import numpy as np
|
|
243
|
+
>>> # Launch 4 processes.
|
|
244
|
+
>>> init()
|
|
245
|
+
>>> class ReduceNet(nn.Cell):
|
|
246
|
+
>>> def __init__(self):
|
|
247
|
+
>>> super(Net, self).__init__()
|
|
248
|
+
>>> self.reduce = ops.Reduce(dest_rank=1)
|
|
249
|
+
>>>
|
|
250
|
+
>>> def construct(self, x):
|
|
251
|
+
>>> out = self.reduce(x)
|
|
252
|
+
>>> return out
|
|
253
|
+
>>> input = Tensor(np.ones([2, 8]).astype(np.float32))
|
|
254
|
+
>>> net = ReduceNet()
|
|
255
|
+
>>> output = net(input)
|
|
256
|
+
>>> print(output)
|
|
257
|
+
Process with rank 1: [[4. 4. 4. 4. 4. 4. 4. 4.]
|
|
258
|
+
[4. 4. 4. 4. 4. 4. 4. 4.]],
|
|
259
|
+
Other proesses: [0.].
|
|
260
|
+
"""
|
|
261
|
+
|
|
262
|
+
@prim_attr_register
|
|
263
|
+
def __init__(self, dest_rank, op=ReduceOp.SUM, group=GlobalComm.WORLD_COMM_GROUP):
|
|
264
|
+
validator.check_value_type('group', _get_group(group), (str,), self.name)
|
|
265
|
+
validator.check_value_type('op', op, (type(ReduceOp.SUM),), self.name)
|
|
266
|
+
self.dest_rank = dest_rank
|
|
267
|
+
self.op = op
|
|
268
|
+
self.group = _get_group(group)
|
|
269
|
+
self.add_prim_attr('group', _get_group(group))
|
|
270
|
+
self.add_prim_attr('dest_rank', dest_rank)
|
|
271
|
+
|
|
272
|
+
def infer_shape(self, x_shape):
|
|
273
|
+
# The process with dest_rank returns the reduced output.
|
|
274
|
+
# Other processes only gets a tensor with shape [1], which has no mathematical meaning.
|
|
275
|
+
if self.dest_rank == get_rank():
|
|
276
|
+
return x_shape
|
|
277
|
+
return [1]
|
|
278
|
+
|
|
279
|
+
def infer_dtype(self, x_dtype):
|
|
280
|
+
return x_dtype
|
|
281
|
+
|
|
282
|
+
|
|
203
283
|
class AllGather(PrimitiveWithInfer):
|
|
204
284
|
"""
|
|
205
|
-
Gathers tensors from the specified communication group.
|
|
285
|
+
Gathers tensors from the specified communication group and returns the tensor which is all gathered.
|
|
206
286
|
|
|
207
287
|
Note:
|
|
208
288
|
- The tensors must have the same shape and format in all processes of the collection.
|
|
209
|
-
- Currently only supports GRAPH_MODE and it should be called in Cell.
|
|
210
289
|
|
|
211
290
|
Args:
|
|
212
|
-
group (str): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
|
|
291
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
|
|
213
292
|
means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
|
|
214
293
|
|
|
215
294
|
Inputs:
|
|
@@ -223,6 +302,7 @@ class AllGather(PrimitiveWithInfer):
|
|
|
223
302
|
TypeError: If `group` is not a str.
|
|
224
303
|
ValueError: If the local rank id of the calling process in the group
|
|
225
304
|
is larger than the group's rank size.
|
|
305
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
226
306
|
|
|
227
307
|
Supported Platforms:
|
|
228
308
|
``Ascend`` ``GPU``
|
|
@@ -231,22 +311,17 @@ class AllGather(PrimitiveWithInfer):
|
|
|
231
311
|
.. note::
|
|
232
312
|
Before running the following examples, you need to configure the communication environment variables.
|
|
233
313
|
|
|
234
|
-
For
|
|
235
|
-
|
|
236
|
-
|
|
314
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
315
|
+
without any third-party or configuration file dependencies.
|
|
316
|
+
Please see the `msrun start up
|
|
317
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
237
318
|
for more details.
|
|
238
319
|
|
|
239
|
-
For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
|
|
240
|
-
<https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
|
|
241
|
-
|
|
242
|
-
For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
|
|
243
|
-
Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
|
|
244
|
-
|
|
245
320
|
This example should be run with 2 devices.
|
|
246
321
|
|
|
247
322
|
>>> import numpy as np
|
|
248
323
|
>>> import mindspore as ms
|
|
249
|
-
>>>
|
|
324
|
+
>>> from mindspore import ops
|
|
250
325
|
>>> import mindspore.nn as nn
|
|
251
326
|
>>> from mindspore.communication import init
|
|
252
327
|
>>> from mindspore import Tensor
|
|
@@ -272,7 +347,7 @@ class AllGather(PrimitiveWithInfer):
|
|
|
272
347
|
|
|
273
348
|
Tutorial Examples:
|
|
274
349
|
- `Distributed Set Communication Primitives - AllGather
|
|
275
|
-
<https://www.mindspore.cn/docs/en/
|
|
350
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#allgather>`_
|
|
276
351
|
|
|
277
352
|
"""
|
|
278
353
|
|
|
@@ -300,6 +375,25 @@ class AllGather(PrimitiveWithInfer):
|
|
|
300
375
|
return x_dtype
|
|
301
376
|
|
|
302
377
|
|
|
378
|
+
class AShardIdentity(PrimitiveWithInfer):
|
|
379
|
+
"""
|
|
380
|
+
Auto parallel virtual operator. Identity operator only for shard function.
|
|
381
|
+
Do nothing in terms of infer_shape, infer_dtype, and the tensor.
|
|
382
|
+
|
|
383
|
+
It is only for internal use of parallel modules and cannot be called by users.
|
|
384
|
+
"""
|
|
385
|
+
|
|
386
|
+
@prim_attr_register
|
|
387
|
+
def __init__(self):
|
|
388
|
+
pass
|
|
389
|
+
|
|
390
|
+
def infer_shape(self, x_shape):
|
|
391
|
+
return x_shape
|
|
392
|
+
|
|
393
|
+
def infer_dtype(self, x_dtype):
|
|
394
|
+
return x_dtype
|
|
395
|
+
|
|
396
|
+
|
|
303
397
|
class _MiniStepAllGather(PrimitiveWithInfer):
|
|
304
398
|
"""
|
|
305
399
|
Auto parallel virtual operator. Do nothing in forward, do reducescatter in backward in mini-step. It is only for
|
|
@@ -427,7 +521,8 @@ class _HostAllGather(PrimitiveWithInfer):
|
|
|
427
521
|
|
|
428
522
|
class ReduceScatter(Primitive):
|
|
429
523
|
r"""
|
|
430
|
-
Reduces and scatters tensors from the specified communication group
|
|
524
|
+
Reduces and scatters tensors from the specified communication group
|
|
525
|
+
and returns the tensor which is reduced and scattered.
|
|
431
526
|
|
|
432
527
|
Note:
|
|
433
528
|
The tensors must have the same shape and format in all processes of the collection.
|
|
@@ -448,6 +543,7 @@ class ReduceScatter(Primitive):
|
|
|
448
543
|
Raises:
|
|
449
544
|
TypeError: If any of operation and group is not a string.
|
|
450
545
|
ValueError: If the first dimension of the input cannot be divided by the rank_size.
|
|
546
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
451
547
|
|
|
452
548
|
Supported Platforms:
|
|
453
549
|
``Ascend`` ``GPU``
|
|
@@ -456,17 +552,12 @@ class ReduceScatter(Primitive):
|
|
|
456
552
|
.. note::
|
|
457
553
|
Before running the following examples, you need to configure the communication environment variables.
|
|
458
554
|
|
|
459
|
-
For
|
|
460
|
-
|
|
461
|
-
|
|
555
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
556
|
+
without any third-party or configuration file dependencies.
|
|
557
|
+
Please see the `msrun start up
|
|
558
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
462
559
|
for more details.
|
|
463
560
|
|
|
464
|
-
For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
|
|
465
|
-
<https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
|
|
466
|
-
|
|
467
|
-
For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
|
|
468
|
-
Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
|
|
469
|
-
|
|
470
561
|
This example should be run with 2 devices.
|
|
471
562
|
|
|
472
563
|
>>> import mindspore as ms
|
|
@@ -474,7 +565,7 @@ class ReduceScatter(Primitive):
|
|
|
474
565
|
>>> from mindspore.communication import init
|
|
475
566
|
>>> from mindspore.ops import ReduceOp
|
|
476
567
|
>>> import mindspore.nn as nn
|
|
477
|
-
>>>
|
|
568
|
+
>>> from mindspore import ops
|
|
478
569
|
>>> import numpy as np
|
|
479
570
|
>>>
|
|
480
571
|
>>> ms.set_context(mode=ms.GRAPH_MODE)
|
|
@@ -498,7 +589,7 @@ class ReduceScatter(Primitive):
|
|
|
498
589
|
|
|
499
590
|
Tutorial Examples:
|
|
500
591
|
- `Distributed Set Communication Primitives - ReduceScatter
|
|
501
|
-
<https://www.mindspore.cn/docs/en/
|
|
592
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#reducescatter>`_
|
|
502
593
|
|
|
503
594
|
"""
|
|
504
595
|
|
|
@@ -577,12 +668,12 @@ class Broadcast(PrimitiveWithInfer):
|
|
|
577
668
|
The tensors must have the same shape and format in all processes of the collection.
|
|
578
669
|
|
|
579
670
|
Args:
|
|
580
|
-
root_rank (int):
|
|
581
|
-
|
|
671
|
+
root_rank (int): Specifies the rank(global rank) of the process that broadcast the tensor.
|
|
672
|
+
And only process `root_rank` will broadcast the tensor.
|
|
582
673
|
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` .
|
|
583
674
|
|
|
584
675
|
Inputs:
|
|
585
|
-
- **input_x** (
|
|
676
|
+
- **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
586
677
|
|
|
587
678
|
Outputs:
|
|
588
679
|
tuple[Tensor], Tensor has the same shape of the input, i.e., :math:`(x_1, x_2, ..., x_R)`.
|
|
@@ -598,24 +689,19 @@ class Broadcast(PrimitiveWithInfer):
|
|
|
598
689
|
.. note::
|
|
599
690
|
Before running the following examples, you need to configure the communication environment variables.
|
|
600
691
|
|
|
601
|
-
For
|
|
602
|
-
|
|
603
|
-
|
|
692
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
693
|
+
without any third-party or configuration file dependencies.
|
|
694
|
+
Please see the `msrun start up
|
|
695
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
604
696
|
for more details.
|
|
605
697
|
|
|
606
|
-
|
|
607
|
-
<https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
|
|
608
|
-
|
|
609
|
-
For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
|
|
610
|
-
Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
|
|
611
|
-
|
|
612
|
-
This example should be run with multiple devices.
|
|
698
|
+
This example should be run with 2 devices.
|
|
613
699
|
|
|
614
700
|
>>> import mindspore as ms
|
|
615
701
|
>>> from mindspore import Tensor
|
|
616
702
|
>>> from mindspore.communication import init
|
|
617
703
|
>>> import mindspore.nn as nn
|
|
618
|
-
>>>
|
|
704
|
+
>>> from mindspore import ops
|
|
619
705
|
>>> import numpy as np
|
|
620
706
|
>>>
|
|
621
707
|
>>> ms.set_context(mode=ms.GRAPH_MODE)
|
|
@@ -638,7 +724,7 @@ class Broadcast(PrimitiveWithInfer):
|
|
|
638
724
|
|
|
639
725
|
Tutorial Examples:
|
|
640
726
|
- `Distributed Set Communication Primitives - Broadcast
|
|
641
|
-
<https://www.mindspore.cn/docs/en/
|
|
727
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#broadcast>`_
|
|
642
728
|
|
|
643
729
|
"""
|
|
644
730
|
|
|
@@ -651,16 +737,6 @@ class Broadcast(PrimitiveWithInfer):
|
|
|
651
737
|
self.add_prim_attr('group', _get_group(group))
|
|
652
738
|
self.add_prim_attr('no_eliminate', True)
|
|
653
739
|
|
|
654
|
-
def infer_shape(self, x_shape):
|
|
655
|
-
return x_shape
|
|
656
|
-
|
|
657
|
-
def infer_dtype(self, x_dtype):
|
|
658
|
-
if not isinstance(x_dtype, tuple):
|
|
659
|
-
raise TypeError(f"For '{self.name}', the 'input_x' must be a tuple, but got {type(x_dtype).__name__}!")
|
|
660
|
-
for _ele in x_dtype:
|
|
661
|
-
check_collective_target_dtype('tuple input_x', _ele, self.name)
|
|
662
|
-
return x_dtype
|
|
663
|
-
|
|
664
740
|
|
|
665
741
|
class _AllSwap(PrimitiveWithCheck):
|
|
666
742
|
"""
|
|
@@ -728,11 +804,11 @@ class NeighborExchange(Primitive):
|
|
|
728
804
|
The user needs to preset
|
|
729
805
|
communication environment variables before running the following example, please check the details on the
|
|
730
806
|
official website of `MindSpore \
|
|
731
|
-
<https://www.mindspore.cn/docs/en/
|
|
807
|
+
<https://www.mindspore.cn/docs/en/master/api_python/mindspore.ops.primitive.html#communication-operator>`_.
|
|
732
808
|
|
|
733
809
|
This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
|
|
734
810
|
in the same subnet, please check the `details \
|
|
735
|
-
<https://www.mindspore.cn/docs/en/
|
|
811
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
|
|
736
812
|
|
|
737
813
|
Args:
|
|
738
814
|
send_rank_ids (list(int)): Ranks which the data is sent to.
|
|
@@ -758,7 +834,7 @@ class NeighborExchange(Primitive):
|
|
|
758
834
|
>>> from mindspore import Tensor
|
|
759
835
|
>>> from mindspore.communication import init
|
|
760
836
|
>>> import mindspore.nn as nn
|
|
761
|
-
>>>
|
|
837
|
+
>>> from mindspore import ops
|
|
762
838
|
>>> import numpy as np
|
|
763
839
|
>>> class Net(nn.Cell):
|
|
764
840
|
... def __init__(self):
|
|
@@ -781,7 +857,7 @@ class NeighborExchange(Primitive):
|
|
|
781
857
|
|
|
782
858
|
Tutorial Examples:
|
|
783
859
|
- `Distributed Set Communication Primitives - NeighborExchange
|
|
784
|
-
<https://www.mindspore.cn/docs/en/
|
|
860
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#neighborexchange>`_
|
|
785
861
|
|
|
786
862
|
"""
|
|
787
863
|
|
|
@@ -814,7 +890,7 @@ class AlltoAll(PrimitiveWithInfer):
|
|
|
814
890
|
Note:
|
|
815
891
|
This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
|
|
816
892
|
in the same subnet, please check the `details \
|
|
817
|
-
<https://www.mindspore.cn/docs/en/
|
|
893
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
|
|
818
894
|
|
|
819
895
|
Args:
|
|
820
896
|
split_count (int): On each process, divide blocks into split_count number.
|
|
@@ -843,17 +919,12 @@ class AlltoAll(PrimitiveWithInfer):
|
|
|
843
919
|
.. note::
|
|
844
920
|
Before running the following examples, you need to configure the communication environment variables.
|
|
845
921
|
|
|
846
|
-
For
|
|
847
|
-
|
|
848
|
-
|
|
922
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
923
|
+
without any third-party or configuration file dependencies.
|
|
924
|
+
Please see the `msrun start up
|
|
925
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
849
926
|
for more details.
|
|
850
927
|
|
|
851
|
-
For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
|
|
852
|
-
<https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
|
|
853
|
-
|
|
854
|
-
For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
|
|
855
|
-
Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
|
|
856
|
-
|
|
857
928
|
This example should be run with 8 devices.
|
|
858
929
|
|
|
859
930
|
>>> import os
|
|
@@ -861,7 +932,7 @@ class AlltoAll(PrimitiveWithInfer):
|
|
|
861
932
|
>>> from mindspore import Tensor
|
|
862
933
|
>>> from mindspore.communication import init
|
|
863
934
|
>>> import mindspore.nn as nn
|
|
864
|
-
>>>
|
|
935
|
+
>>> from mindspore import ops
|
|
865
936
|
>>> import numpy as np
|
|
866
937
|
>>> class Net(nn.Cell):
|
|
867
938
|
... def __init__(self):
|
|
@@ -883,7 +954,7 @@ class AlltoAll(PrimitiveWithInfer):
|
|
|
883
954
|
|
|
884
955
|
Tutorial Examples:
|
|
885
956
|
- `Distributed Set Communication Primitives - AlltoAll
|
|
886
|
-
<https://www.mindspore.cn/docs/en/
|
|
957
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#alltoall>`_
|
|
887
958
|
|
|
888
959
|
"""
|
|
889
960
|
|
|
@@ -905,20 +976,20 @@ class AlltoAll(PrimitiveWithInfer):
|
|
|
905
976
|
if self.split_count != rank_size:
|
|
906
977
|
raise ValueError(f"For '{self.name}', the 'split_count' must be equal to 'rank_size', "
|
|
907
978
|
f"but got 'split_count': {self.split_count}, 'rank_size': {rank_size}.")
|
|
908
|
-
if x_shape[self.split_dim] % self.split_count != 0:
|
|
909
|
-
raise ValueError(f"For '{self.name}', the '
|
|
910
|
-
f"but got '
|
|
911
|
-
|
|
912
|
-
|
|
979
|
+
if x_shape[self.split_dim] >= 0 and x_shape[self.split_dim] % self.split_count != 0:
|
|
980
|
+
raise ValueError(f"For '{self.name}', the 'x_shape[self.split_dim]' must be divisible by 'split_count', "
|
|
981
|
+
f"but got 'x_shape[self.split_dim]' {x_shape[self.split_dim]}, "
|
|
982
|
+
f"'split_count' {self.split_count}.")
|
|
983
|
+
if x_shape[self.concat_dim] >= 0:
|
|
984
|
+
x_shape[self.concat_dim] = x_shape[self.concat_dim] * self.split_count
|
|
985
|
+
if x_shape[self.split_dim] >= 0:
|
|
986
|
+
x_shape[self.split_dim] = int(x_shape[self.split_dim] / self.split_count)
|
|
913
987
|
return x_shape
|
|
914
988
|
|
|
915
989
|
def infer_dtype(self, x_dtype):
|
|
916
990
|
check_collective_target_dtype('x', x_dtype, self.name)
|
|
917
991
|
return x_dtype
|
|
918
992
|
|
|
919
|
-
def __call__(self, tensor):
|
|
920
|
-
raise NotImplementedError
|
|
921
|
-
|
|
922
993
|
|
|
923
994
|
class NeighborExchangeV2(Primitive):
|
|
924
995
|
r"""
|
|
@@ -931,7 +1002,7 @@ class NeighborExchangeV2(Primitive):
|
|
|
931
1002
|
Note:
|
|
932
1003
|
This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
|
|
933
1004
|
in the same subnet, please check the `details \
|
|
934
|
-
<https://www.mindspore.cn/docs/en/
|
|
1005
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
|
|
935
1006
|
|
|
936
1007
|
Args:
|
|
937
1008
|
send_rank_ids (list(int)): Ranks which the data is sent to. 8 rank_ids represents 8 directions, if one
|
|
@@ -967,24 +1038,19 @@ class NeighborExchangeV2(Primitive):
|
|
|
967
1038
|
.. note::
|
|
968
1039
|
Before running the following examples, you need to configure the communication environment variables.
|
|
969
1040
|
|
|
970
|
-
For
|
|
971
|
-
|
|
972
|
-
|
|
1041
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1042
|
+
without any third-party or configuration file dependencies.
|
|
1043
|
+
Please see the `msrun start up
|
|
1044
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
973
1045
|
for more details.
|
|
974
1046
|
|
|
975
|
-
For the GPU devices, users need to prepare the host file and mpi, please see the `mpirun Startup
|
|
976
|
-
<https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/mpirun.html>`_ .
|
|
977
|
-
|
|
978
|
-
For the CPU device, users need to write a dynamic cluster startup script, please see the `Dynamic Cluster
|
|
979
|
-
Startup <https://www.mindspore.cn/tutorials/experts/en/r2.2/parallel/dynamic_cluster.html>`_ .
|
|
980
|
-
|
|
981
1047
|
This example should be run with 2 devices.
|
|
982
1048
|
|
|
983
1049
|
>>> import os
|
|
984
1050
|
>>> import mindspore as ms
|
|
985
1051
|
>>> from mindspore.communication import init
|
|
986
1052
|
>>> import mindspore.nn as nn
|
|
987
|
-
>>>
|
|
1053
|
+
>>> from mindspore import ops
|
|
988
1054
|
>>> import numpy as np
|
|
989
1055
|
>>>
|
|
990
1056
|
>>> class Net0(nn.Cell):
|
|
@@ -998,7 +1064,6 @@ class NeighborExchangeV2(Primitive):
|
|
|
998
1064
|
... def construct(self, x):
|
|
999
1065
|
... out = self.neighbor_exchangev2(x)
|
|
1000
1066
|
... return out
|
|
1001
|
-
>>>
|
|
1002
1067
|
... class Net1(nn.Cell):
|
|
1003
1068
|
... def __init__(self):
|
|
1004
1069
|
... super(Net1, self).__init__()
|
|
@@ -1028,7 +1093,7 @@ class NeighborExchangeV2(Primitive):
|
|
|
1028
1093
|
|
|
1029
1094
|
Tutorial Examples:
|
|
1030
1095
|
- `Distributed Set Communication Primitives - NeighborExchangeV2
|
|
1031
|
-
<https://www.mindspore.cn/docs/en/
|
|
1096
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#neighborexchangev2>`_
|
|
1032
1097
|
|
|
1033
1098
|
"""
|
|
1034
1099
|
|
|
@@ -1057,6 +1122,416 @@ class NeighborExchangeV2(Primitive):
|
|
|
1057
1122
|
raise NotImplementedError
|
|
1058
1123
|
|
|
1059
1124
|
|
|
1125
|
+
class CollectiveScatter(Primitive):
|
|
1126
|
+
r"""
|
|
1127
|
+
Scatter tensor evently across the processes in the specified communication group.
|
|
1128
|
+
|
|
1129
|
+
Note:
|
|
1130
|
+
The interface behavior only support Tensor input and scatter evenly.
|
|
1131
|
+
Only the tensor in process `src_rank` (global rank) will do scatter.
|
|
1132
|
+
|
|
1133
|
+
Args:
|
|
1134
|
+
src_rank (int, optional): Specifies the rank of the process that send the tensor.
|
|
1135
|
+
And only process `src_rank` will send the tensor.
|
|
1136
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1137
|
+
|
|
1138
|
+
Inputs:
|
|
1139
|
+
- **input_x** (Tensor) - The input tensor to be scattered. The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
1140
|
+
|
|
1141
|
+
Outputs:
|
|
1142
|
+
Tensor, the shape of output is :math:`(x_1/src\_rank, x_2, ..., x_R)`. The dimension 0 of data is equal to
|
|
1143
|
+
the dimension of input tensor divided by `src`, and the other dimension keep the same.
|
|
1144
|
+
|
|
1145
|
+
Raises:
|
|
1146
|
+
TypeError: If `group` is not a str.
|
|
1147
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
1148
|
+
ValueError: If the local rank id of the calling process in the group
|
|
1149
|
+
is larger than the group's rank size.
|
|
1150
|
+
|
|
1151
|
+
Supported Platforms:
|
|
1152
|
+
``Ascend``
|
|
1153
|
+
|
|
1154
|
+
Examples:
|
|
1155
|
+
.. note::
|
|
1156
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1157
|
+
|
|
1158
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1159
|
+
without any third-party or configuration file dependencies.
|
|
1160
|
+
Please see the `msrun start up
|
|
1161
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
1162
|
+
for more details.
|
|
1163
|
+
|
|
1164
|
+
This example should be run with 2 devices.
|
|
1165
|
+
|
|
1166
|
+
>>> import numpy as np
|
|
1167
|
+
>>> import mindspore.nn as nn
|
|
1168
|
+
>>> from mindspore import Tensor
|
|
1169
|
+
>>> from mindspore.communication.management import init, get_rank
|
|
1170
|
+
>>> from mindspore import ops
|
|
1171
|
+
>>> # Launch 2 processes.
|
|
1172
|
+
>>> init()
|
|
1173
|
+
>>> class CollectiveScatterNet(nn.Cell):
|
|
1174
|
+
>>> def __init__(self):
|
|
1175
|
+
>>> super(CollectiveScatter, self).__init__()
|
|
1176
|
+
>>> self.collective_scatter = ops.CollectiveScatter(src_rank=0)
|
|
1177
|
+
>>>
|
|
1178
|
+
>>> def construct(self, x):
|
|
1179
|
+
>>> return self.collective_scatter(x)
|
|
1180
|
+
>>>
|
|
1181
|
+
>>> input = Tensor(np.arange(8).reshape([4, 2]).astype(np.float32))
|
|
1182
|
+
>>> net = CollectiveScatterNet()
|
|
1183
|
+
>>> output = net(input)
|
|
1184
|
+
>>> print(output)
|
|
1185
|
+
Process with rank 0: [[0. 1.],
|
|
1186
|
+
[2. 3.]]
|
|
1187
|
+
Process with rank 1: [[4. 5.],
|
|
1188
|
+
[6. 7.]]
|
|
1189
|
+
|
|
1190
|
+
Tutorial Examples:
|
|
1191
|
+
- `Distributed Set Communication Primitives - CollectiveScatter
|
|
1192
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#reducescatter>`_
|
|
1193
|
+
|
|
1194
|
+
"""
|
|
1195
|
+
|
|
1196
|
+
@prim_attr_register
|
|
1197
|
+
def __init__(self, src_rank=0, group=GlobalComm.WORLD_COMM_GROUP):
|
|
1198
|
+
validator.check_value_type('group', _get_group(group), (str,), self.name)
|
|
1199
|
+
self.rank_id = get_rank(_get_group(group))
|
|
1200
|
+
self.src_rank = src_rank
|
|
1201
|
+
self.rank_size = get_group_size(_get_group(group))
|
|
1202
|
+
validator.check('rank', self.rank_id, 'rank_size', self.rank_size, validator.LT, self.name)
|
|
1203
|
+
self.add_prim_attr('rank_id', self.rank_id)
|
|
1204
|
+
self.add_prim_attr('src_rank', self.src_rank)
|
|
1205
|
+
self.add_prim_attr('rank_size', self.rank_size)
|
|
1206
|
+
self.add_prim_attr('group', _get_group(group))
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
class CollectiveGather(Primitive):
|
|
1210
|
+
r"""
|
|
1211
|
+
Gathers tensors from the specified communication group. The operation will gather the tensor
|
|
1212
|
+
from processes according to dimension 0.
|
|
1213
|
+
|
|
1214
|
+
Note:
|
|
1215
|
+
Only the tensor in process `dest_rank` (global rank) will keep the gathered tensor. The other process
|
|
1216
|
+
will keep a tensor with shape [1], which has no mathematical meaning.
|
|
1217
|
+
|
|
1218
|
+
Args:
|
|
1219
|
+
dest_rank(int): Specifies the rank of the process that receive the tensor.
|
|
1220
|
+
And only process `dest_rank` will receive the gathered tensor.
|
|
1221
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1222
|
+
|
|
1223
|
+
Inputs:
|
|
1224
|
+
- **input_x** (Tensor) - The tensor to be gathered. The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
1225
|
+
|
|
1226
|
+
Outputs:
|
|
1227
|
+
Tensor, the shape of output is :math:`(\sum x_1, x_2, ..., x_R)`. The dimension 0 of data is equal to
|
|
1228
|
+
sum of the dimension of input tensor, and the other dimension keep the same.
|
|
1229
|
+
|
|
1230
|
+
Raises:
|
|
1231
|
+
TypeError: If `group` is not a str.
|
|
1232
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
1233
|
+
ValueError: If the local rank id of the calling process in the group
|
|
1234
|
+
is larger than the group's rank size.
|
|
1235
|
+
|
|
1236
|
+
Supported Platforms:
|
|
1237
|
+
``Ascend``
|
|
1238
|
+
|
|
1239
|
+
Examples:
|
|
1240
|
+
.. note::
|
|
1241
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1242
|
+
|
|
1243
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1244
|
+
without any third-party or configuration file dependencies.
|
|
1245
|
+
Please see the `msrun start up
|
|
1246
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
1247
|
+
for more details.
|
|
1248
|
+
|
|
1249
|
+
This example should be run with 4 devices.
|
|
1250
|
+
|
|
1251
|
+
>>> import numpy as np
|
|
1252
|
+
>>> import mindspore as ms
|
|
1253
|
+
>>> import mindspore.nn as nn
|
|
1254
|
+
>>> from mindspore.communication import init
|
|
1255
|
+
>>> from mindspore import Tensor
|
|
1256
|
+
>>> from mindspore import ops
|
|
1257
|
+
>>> # Launch 2 processes.
|
|
1258
|
+
>>>
|
|
1259
|
+
>>> ms.set_context(mode=ms.GRAPH_MODE)
|
|
1260
|
+
>>> init()
|
|
1261
|
+
>>> class CollectiveGatherNet(nn.Cell):
|
|
1262
|
+
... def __init__(self):
|
|
1263
|
+
... super(CollectiveGatherNet, self).__init__()
|
|
1264
|
+
... self.collective_gather = ops.CollectiveGather(dest_rank=0)
|
|
1265
|
+
...
|
|
1266
|
+
... def construct(self, x):
|
|
1267
|
+
... return self.collective_gather(x)
|
|
1268
|
+
...
|
|
1269
|
+
>>> input = Tensor(np.arange(4).reshape([2, 2]).astype(np.float32))
|
|
1270
|
+
>>> net = CollectiveGatherNet()
|
|
1271
|
+
>>> output = net(input)
|
|
1272
|
+
>>> print(output)
|
|
1273
|
+
Process with rank 0: [[0. 1.],
|
|
1274
|
+
[2. 3.],
|
|
1275
|
+
[0. 1.],
|
|
1276
|
+
[2. 3.]]
|
|
1277
|
+
Process with rank 1: [0.]
|
|
1278
|
+
|
|
1279
|
+
Tutorial Examples:
|
|
1280
|
+
- `Distributed Set Communication Primitives - CollectiveGather
|
|
1281
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#collectivegather>`_
|
|
1282
|
+
|
|
1283
|
+
"""
|
|
1284
|
+
|
|
1285
|
+
@prim_attr_register
|
|
1286
|
+
def __init__(self, dest_rank, group=GlobalComm.WORLD_COMM_GROUP):
|
|
1287
|
+
"""Initialize Gather."""
|
|
1288
|
+
validator.check_value_type('group', _get_group(group), (str,), self.name)
|
|
1289
|
+
self.rank_id = get_rank(_get_group(group))
|
|
1290
|
+
self.dest_rank = dest_rank
|
|
1291
|
+
self.rank_size = get_group_size(_get_group(group))
|
|
1292
|
+
validator.check('rank', self.rank_id, 'rank_size', self.rank_size, validator.LT, self.name)
|
|
1293
|
+
self.add_prim_attr('rank_size', self.rank_size)
|
|
1294
|
+
self.add_prim_attr('group', _get_group(group))
|
|
1295
|
+
self.add_prim_attr('dest_rank', self.dest_rank)
|
|
1296
|
+
self.add_prim_attr('rank_id', self.rank_id)
|
|
1297
|
+
|
|
1298
|
+
|
|
1299
|
+
class Barrier(PrimitiveWithInfer):
|
|
1300
|
+
"""
|
|
1301
|
+
Synchronizes all processes in the specified group. Once the process call this operation, it will be blocked until
|
|
1302
|
+
all processes call this operation. After all processes finish calling the operations, the blocked processes
|
|
1303
|
+
will be waken and continue their task.
|
|
1304
|
+
|
|
1305
|
+
Args:
|
|
1306
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1307
|
+
|
|
1308
|
+
Raises:
|
|
1309
|
+
TypeError: If `group` is not a str.
|
|
1310
|
+
RuntimeError: If backend is invalid, or distributed initialization fails.
|
|
1311
|
+
ValueError: If the local rank id of the calling process in the group
|
|
1312
|
+
is larger than the group's rank size.
|
|
1313
|
+
|
|
1314
|
+
Supported Platforms:
|
|
1315
|
+
``Ascend``
|
|
1316
|
+
|
|
1317
|
+
Examples:
|
|
1318
|
+
.. note::
|
|
1319
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1320
|
+
|
|
1321
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1322
|
+
without any third-party or configuration file dependencies.
|
|
1323
|
+
Please see the `msrun start up
|
|
1324
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
1325
|
+
for more details.
|
|
1326
|
+
|
|
1327
|
+
This example should be run with 2 devices.
|
|
1328
|
+
|
|
1329
|
+
>>> import numpy as np
|
|
1330
|
+
>>> import mindspore.nn as nn
|
|
1331
|
+
>>> from mindspore.communication import init
|
|
1332
|
+
>>> from mindspore import Tensor
|
|
1333
|
+
>>> from mindspore import ops
|
|
1334
|
+
>>> # Launch 4 processes.
|
|
1335
|
+
>>> init()
|
|
1336
|
+
>>> class BarrierNet(nn.Cell):
|
|
1337
|
+
>>> def __init__(self):
|
|
1338
|
+
>>> super(BarrierNet, self).__init__()
|
|
1339
|
+
>>> self.barrier = ops.Barrier()
|
|
1340
|
+
>>>
|
|
1341
|
+
>>> def construct(self):
|
|
1342
|
+
>>> self.barrier()
|
|
1343
|
+
>>> net = BarrierNet()
|
|
1344
|
+
>>> net()
|
|
1345
|
+
|
|
1346
|
+
Tutorial Examples:
|
|
1347
|
+
- `Distributed Set Communication Primitives - Barrier
|
|
1348
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#barrier>`_
|
|
1349
|
+
|
|
1350
|
+
"""
|
|
1351
|
+
|
|
1352
|
+
@prim_attr_register
|
|
1353
|
+
def __init__(self, group=GlobalComm.WORLD_COMM_GROUP):
|
|
1354
|
+
self.group = group
|
|
1355
|
+
self.add_prim_attr("side_effect_mem", True)
|
|
1356
|
+
|
|
1357
|
+
def infer_shape(self):
|
|
1358
|
+
return [1]
|
|
1359
|
+
|
|
1360
|
+
def infer_dtype(self):
|
|
1361
|
+
return mstype.float32
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
class Send(PrimitiveWithInfer):
|
|
1365
|
+
"""
|
|
1366
|
+
Send tensors to the specified dest_rank.
|
|
1367
|
+
|
|
1368
|
+
Note:
|
|
1369
|
+
Send and Receive must be used in combination and have same sr_tag.
|
|
1370
|
+
|
|
1371
|
+
Args:
|
|
1372
|
+
sr_tag (int): The tag to identify the send/recv message. The message will
|
|
1373
|
+
be received by the Receive op with the same "sr_tag".
|
|
1374
|
+
dest_rank (int): A required integer identifying the destination rank.
|
|
1375
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1376
|
+
group_back (str, optional): The communication group for backpropagation.
|
|
1377
|
+
Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1378
|
+
|
|
1379
|
+
Inputs:
|
|
1380
|
+
- **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
1381
|
+
|
|
1382
|
+
Raises:
|
|
1383
|
+
TypeError: If `group` is not a str.
|
|
1384
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
1385
|
+
ValueError: If the local rank id of the calling process in the group
|
|
1386
|
+
is larger than the group's rank size.
|
|
1387
|
+
|
|
1388
|
+
Supported Platforms:
|
|
1389
|
+
``Ascend`` ``GPU``
|
|
1390
|
+
|
|
1391
|
+
Examples:
|
|
1392
|
+
.. note::
|
|
1393
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1394
|
+
|
|
1395
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1396
|
+
without any third-party or configuration file dependencies.
|
|
1397
|
+
Please see the `msrun start up
|
|
1398
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
1399
|
+
for more details.
|
|
1400
|
+
|
|
1401
|
+
This example should be run with 2 devices.
|
|
1402
|
+
|
|
1403
|
+
>>> import numpy as np
|
|
1404
|
+
>>> import mindspore.nn as nn
|
|
1405
|
+
>>> from mindspore.communication import init
|
|
1406
|
+
>>> from mindspore import Tensor
|
|
1407
|
+
>>> from mindspore import ops
|
|
1408
|
+
>>>
|
|
1409
|
+
>>> init()
|
|
1410
|
+
>>> class SendNet(nn.Cell):
|
|
1411
|
+
>>> def __init__(self):
|
|
1412
|
+
>>> super(SendNet, self).__init__()
|
|
1413
|
+
>>> self.depend = ops.Depend()
|
|
1414
|
+
>>> self.send = ops.Send(st_tag=0, dest_rank=8, group="hccl_world_group")
|
|
1415
|
+
>>>
|
|
1416
|
+
>>> def construct(self, x):
|
|
1417
|
+
>>> out = self.depend(x, self.send(x))
|
|
1418
|
+
>>> return out
|
|
1419
|
+
>>>
|
|
1420
|
+
>>> input_ = Tensor(np.ones([2, 8]).astype(np.float32))
|
|
1421
|
+
>>> net = Net()
|
|
1422
|
+
>>> output = net(input_)
|
|
1423
|
+
|
|
1424
|
+
Tutorial Examples:
|
|
1425
|
+
- `Distributed Set Communication Primitives - Send
|
|
1426
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#send>`_
|
|
1427
|
+
|
|
1428
|
+
"""
|
|
1429
|
+
|
|
1430
|
+
@prim_attr_register
|
|
1431
|
+
def __init__(self, sr_tag, dest_rank, group=GlobalComm.WORLD_COMM_GROUP, group_back=GlobalComm.WORLD_COMM_GROUP):
|
|
1432
|
+
self.rank = dest_rank
|
|
1433
|
+
self.sr_tag = sr_tag
|
|
1434
|
+
self.group = group
|
|
1435
|
+
self.add_prim_attr("no_eliminate", True)
|
|
1436
|
+
|
|
1437
|
+
def infer_shape(self, x_shape):
|
|
1438
|
+
self.add_prim_attr("shape", x_shape)
|
|
1439
|
+
return x_shape
|
|
1440
|
+
|
|
1441
|
+
def infer_dtype(self, x_dtype):
|
|
1442
|
+
return x_dtype
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
class Receive(PrimitiveWithInfer):
|
|
1446
|
+
"""
|
|
1447
|
+
Receive tensors from src_rank.
|
|
1448
|
+
|
|
1449
|
+
Note:
|
|
1450
|
+
Send and Receive must be used in combination and have same sr_tag.
|
|
1451
|
+
|
|
1452
|
+
Args:
|
|
1453
|
+
sr_tag (int): A required integer identifying the send/recv message tag. The message will
|
|
1454
|
+
will be send by the Send op with the same "sr_tag".
|
|
1455
|
+
src_rank (int): A required integer identifying the source rank.
|
|
1456
|
+
shape (list[int]): A required list identifying the shape of the tensor to be received.
|
|
1457
|
+
dtype (Type): A required Type identifying the type of the tensor to be received. The supported types:
|
|
1458
|
+
int8/int16/int32/float16/float32.
|
|
1459
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1460
|
+
group_back (str, optional): The communication group for backpropagation.
|
|
1461
|
+
Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1462
|
+
|
|
1463
|
+
Outputs:
|
|
1464
|
+
Tensor, output has the same shape as the Tensor sent by `Send` operation.
|
|
1465
|
+
|
|
1466
|
+
Raises:
|
|
1467
|
+
TypeError: If `group` is not a str.
|
|
1468
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
1469
|
+
ValueError: If the local rank id of the calling process in the group
|
|
1470
|
+
is larger than the group's rank size.
|
|
1471
|
+
|
|
1472
|
+
Supported Platforms:
|
|
1473
|
+
``Ascend`` ``GPU``
|
|
1474
|
+
|
|
1475
|
+
Examples:
|
|
1476
|
+
.. note::
|
|
1477
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1478
|
+
|
|
1479
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1480
|
+
without any third-party or configuration file dependencies.
|
|
1481
|
+
Please see the `msrun start up
|
|
1482
|
+
<https://www.mindspore.cn/tutorials/experts/zh-CN/master/parallel/msrun_launcher.html>`_
|
|
1483
|
+
for more details.
|
|
1484
|
+
|
|
1485
|
+
This example should be run with 2 devices.
|
|
1486
|
+
|
|
1487
|
+
>>> import numpy as np
|
|
1488
|
+
>>> import mindspore.nn as nn
|
|
1489
|
+
>>> from mindspore.communication import init
|
|
1490
|
+
>>> from mindspore import Tensor
|
|
1491
|
+
>>> from mindspore import ops
|
|
1492
|
+
>>>
|
|
1493
|
+
>>> init()
|
|
1494
|
+
>>> class ReceiveNet(nn.Cell):
|
|
1495
|
+
>>> def __init__(self):
|
|
1496
|
+
>>> super(ReceiveNet, self).__init__()
|
|
1497
|
+
>>> self.recv = ops.Receive(sr_tag=0, src_rank=0, shape=[2, 8], dtype=ms.float32,
|
|
1498
|
+
>>> group="hccl_world_group")
|
|
1499
|
+
>>>
|
|
1500
|
+
>>> def construct(self):
|
|
1501
|
+
>>> out = self.recv()
|
|
1502
|
+
>>> return out
|
|
1503
|
+
>>>
|
|
1504
|
+
>>> net = Net()
|
|
1505
|
+
>>> output = net()
|
|
1506
|
+
|
|
1507
|
+
Tutorial Examples:
|
|
1508
|
+
- `Distributed Set Communication Primitives - Receive
|
|
1509
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#receive>`_
|
|
1510
|
+
|
|
1511
|
+
"""
|
|
1512
|
+
|
|
1513
|
+
@prim_attr_register
|
|
1514
|
+
def __init__(self, sr_tag, src_rank, shape, dtype, group=GlobalComm.WORLD_COMM_GROUP,
|
|
1515
|
+
group_back=GlobalComm.WORLD_COMM_GROUP):
|
|
1516
|
+
self.rank = src_rank
|
|
1517
|
+
self.tag = sr_tag
|
|
1518
|
+
self.shape = shape
|
|
1519
|
+
self.dtype = dtype
|
|
1520
|
+
self.group = group
|
|
1521
|
+
self.add_prim_attr("no_eliminate", True)
|
|
1522
|
+
valid_type = [mstype.float16, mstype.float32, mstype.float64, mstype.bfloat16,
|
|
1523
|
+
mstype.int8, mstype.int16, mstype.int32, mstype.int64,
|
|
1524
|
+
mstype.uint8, mstype.uint16, mstype.uint32, mstype.uint64]
|
|
1525
|
+
args = {"dtype": dtype}
|
|
1526
|
+
validator.check_scalar_or_tensor_types_same(args, valid_type, self.name)
|
|
1527
|
+
|
|
1528
|
+
def infer_shape(self, x_shape=None):
|
|
1529
|
+
return self.get_attr_dict()['shape']
|
|
1530
|
+
|
|
1531
|
+
def infer_dtype(self, x_dtype=None):
|
|
1532
|
+
return self.get_attr_dict()['dtype']
|
|
1533
|
+
|
|
1534
|
+
|
|
1060
1535
|
class _MirrorOperator(PrimitiveWithInfer):
|
|
1061
1536
|
"""
|
|
1062
1537
|
Auto parallel virtual operator. Do nothing in forward, do all reduce and mean in backward. It is only for
|
|
@@ -1220,8 +1695,6 @@ class _VirtualAssignAdd(PrimitiveWithInfer):
|
|
|
1220
1695
|
|
|
1221
1696
|
def infer_dtype(self, x_dtype, y_dtype):
|
|
1222
1697
|
return x_dtype
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
1698
|
virtual_assign_add = _VirtualAssignAdd()
|
|
1226
1699
|
|
|
1227
1700
|
|
|
@@ -1306,8 +1779,218 @@ class _GetTensorSlice(PrimitiveWithInfer):
|
|
|
1306
1779
|
"""Initialize _GetTensorSlice."""
|
|
1307
1780
|
self.add_prim_attr('order_enforce_skip', True)
|
|
1308
1781
|
|
|
1309
|
-
def infer_value(self, x, dev_mat, tensor_map):
|
|
1782
|
+
def infer_value(self, x, dev_mat, tensor_map, slice_shape, full_shape):
|
|
1310
1783
|
from mindspore.parallel._tensor import _load_tensor
|
|
1311
1784
|
validator.check_value_type("dev_mat", dev_mat, [tuple], self.name)
|
|
1312
1785
|
validator.check_value_type("tensor_map", tensor_map, [tuple], self.name)
|
|
1313
|
-
|
|
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)
|