mindspore 2.2.14__cp39-cp39-win_amd64.whl → 2.4.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 +8 -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 +124 -25
- 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 +299 -0
- mindspore/_extends/parse/namespace.py +2 -2
- mindspore/_extends/parse/parser.py +182 -68
- mindspore/_extends/parse/resources.py +45 -14
- mindspore/_extends/parse/standard_method.py +192 -252
- mindspore/{ops/_op_impl/tbe/atomic_addr_clean.py → _extends/pijit/__init__.py} +6 -16
- mindspore/_extends/pijit/pijit_func_white_list.py +669 -0
- mindspore/_extends/remote/kernel_build_server.py +2 -0
- mindspore/_profiler.py +30 -0
- mindspore/amp.py +67 -26
- 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 +20 -7
- mindspore/common/_jit_fallback_utils.py +2 -3
- mindspore/common/_pijit_context.py +190 -0
- mindspore/common/_register_for_adapter.py +7 -0
- mindspore/common/_register_for_recompute.py +48 -0
- mindspore/common/_register_for_tensor.py +10 -10
- mindspore/common/_stub_tensor.py +7 -1
- mindspore/common/_tensor_overload.py +139 -0
- mindspore/common/_utils.py +5 -17
- mindspore/common/api.py +449 -129
- mindspore/common/auto_dynamic_shape.py +27 -14
- mindspore/common/dtype.py +17 -10
- mindspore/common/dump.py +8 -11
- mindspore/common/file_system.py +48 -0
- mindspore/common/generator.py +254 -0
- mindspore/common/hook_handle.py +65 -30
- 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 +73 -21
- mindspore/common/recompute.py +292 -0
- mindspore/common/seed.py +9 -9
- mindspore/common/sparse_tensor.py +276 -24
- mindspore/common/symbol.py +122 -0
- mindspore/common/tensor.py +668 -514
- mindspore/communication/__init__.py +6 -11
- mindspore/communication/_comm_helper.py +43 -3
- mindspore/communication/comm_func.py +1395 -0
- mindspore/communication/management.py +117 -104
- mindspore/config/op_info.config +22 -54
- mindspore/context.py +455 -71
- 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/core/config.py +7 -0
- mindspore/dataset/core/validator_helpers.py +7 -0
- mindspore/dataset/engine/cache_client.py +2 -2
- mindspore/dataset/engine/datasets.py +201 -116
- mindspore/dataset/engine/datasets_audio.py +14 -14
- mindspore/dataset/engine/datasets_standard_format.py +83 -3
- mindspore/dataset/engine/datasets_text.py +39 -39
- mindspore/dataset/engine/datasets_user_defined.py +230 -141
- mindspore/dataset/engine/datasets_vision.py +78 -74
- mindspore/dataset/engine/iterators.py +29 -0
- mindspore/dataset/engine/obs/util.py +7 -0
- mindspore/dataset/engine/offload.py +5 -7
- mindspore/dataset/engine/queue.py +138 -66
- mindspore/dataset/engine/serializer_deserializer.py +2 -2
- mindspore/dataset/engine/validators.py +41 -15
- mindspore/dataset/text/__init__.py +2 -5
- mindspore/dataset/text/transforms.py +408 -121
- mindspore/dataset/text/utils.py +9 -9
- mindspore/dataset/transforms/__init__.py +0 -3
- mindspore/dataset/transforms/transforms.py +261 -76
- mindspore/dataset/utils/browse_dataset.py +9 -9
- mindspore/dataset/utils/line_reader.py +2 -0
- mindspore/dataset/vision/__init__.py +7 -10
- 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 +16 -3
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/{rewrite/ast_creator_register.py → experimental/es/__init__.py} +5 -20
- mindspore/experimental/es/embedding_service.py +883 -0
- mindspore/experimental/es/embedding_service_layer.py +581 -0
- mindspore/experimental/llm_boost/__init__.py +21 -0
- mindspore/experimental/llm_boost/atb/__init__.py +23 -0
- mindspore/experimental/llm_boost/atb/boost_base.py +211 -0
- mindspore/experimental/llm_boost/atb/llama_boost.py +115 -0
- mindspore/experimental/llm_boost/atb/qwen_boost.py +101 -0
- mindspore/experimental/llm_boost/register.py +129 -0
- mindspore/experimental/llm_boost/utils.py +31 -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 +124 -15
- 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 +18 -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/contiguous_tensors_handle.py +175 -0
- mindspore/hal/device.py +356 -0
- mindspore/hal/event.py +179 -0
- mindspore/hal/memory.py +326 -0
- mindspore/hal/stream.py +357 -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/model_group.h +13 -1
- mindspore/include/api/status.h +14 -0
- mindspore/include/api/types.h +10 -10
- mindspore/include/c_api/model_c.h +173 -0
- mindspore/include/c_api/types_c.h +19 -0
- mindspore/include/dataset/config.h +2 -2
- mindspore/include/dataset/constants.h +2 -2
- mindspore/include/dataset/execute.h +3 -5
- mindspore/include/dataset/vision.h +58 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +3 -3
- mindspore/mindrecord/__init__.py +5 -1
- mindspore/mindrecord/config.py +809 -0
- mindspore/mindrecord/filereader.py +25 -0
- mindspore/mindrecord/filewriter.py +138 -103
- 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_ops.dll +0 -0
- mindspore/mint/__init__.py +1586 -0
- mindspore/mint/distributed/__init__.py +31 -0
- mindspore/mint/distributed/distributed.py +254 -0
- mindspore/{rewrite/ast_transformers → mint/linalg}/__init__.py +9 -4
- mindspore/mint/nn/__init__.py +757 -0
- mindspore/mint/nn/functional.py +679 -0
- mindspore/mint/nn/layer/__init__.py +39 -0
- mindspore/mint/nn/layer/activation.py +133 -0
- mindspore/mint/nn/layer/normalization.py +477 -0
- mindspore/mint/nn/layer/pooling.py +110 -0
- mindspore/mint/optim/__init__.py +24 -0
- mindspore/mint/optim/adamw.py +206 -0
- mindspore/mint/special/__init__.py +63 -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 +73 -0
- mindspore/nn/cell.py +461 -323
- mindspore/nn/dynamic_lr.py +2 -2
- mindspore/nn/layer/activation.py +292 -135
- mindspore/nn/layer/basic.py +288 -83
- 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 +221 -45
- mindspore/nn/layer/image.py +4 -7
- mindspore/nn/layer/math.py +1 -1
- mindspore/nn/layer/normalization.py +150 -68
- mindspore/nn/layer/padding.py +64 -87
- mindspore/nn/layer/pooling.py +175 -12
- 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 +55 -53
- mindspore/nn/learning_rate_schedule.py +6 -5
- mindspore/nn/loss/__init__.py +2 -2
- mindspore/nn/loss/loss.py +145 -88
- mindspore/nn/optim/__init__.py +2 -1
- mindspore/nn/optim/ada_grad.py +4 -2
- mindspore/nn/optim/adadelta.py +4 -2
- 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/tft_wrapper.py +127 -0
- 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 +46 -12
- mindspore/nn/wrap/grad_reducer.py +148 -8
- mindspore/nn/wrap/loss_scale.py +44 -7
- mindspore/numpy/__init__.py +2 -0
- mindspore/numpy/array_creations.py +67 -68
- mindspore/numpy/array_ops.py +70 -66
- mindspore/numpy/dtypes.py +3 -3
- mindspore/numpy/fft.py +966 -0
- mindspore/numpy/logic_ops.py +11 -10
- mindspore/numpy/math_ops.py +147 -152
- mindspore/numpy/utils.py +3 -0
- mindspore/numpy/utils_const.py +4 -4
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +9 -6
- mindspore/ops/_grad_experimental/grad_array_ops.py +4 -129
- mindspore/ops/_grad_experimental/grad_comm_ops.py +135 -36
- mindspore/ops/_grad_experimental/grad_math_ops.py +61 -298
- 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 +162 -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 +147 -59
- mindspore/ops/_vmap/vmap_nn_ops.py +292 -117
- 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 +309 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +252 -0
- mindspore/ops/auto_generate/gen_arg_handler.py +197 -0
- mindspore/ops/auto_generate/gen_extend_func.py +1701 -0
- mindspore/ops/auto_generate/gen_ops_def.py +8482 -0
- mindspore/ops/auto_generate/gen_ops_prim.py +16704 -0
- mindspore/ops/auto_generate/pyboost_inner_prim.py +549 -0
- mindspore/ops/composite/__init__.py +5 -2
- mindspore/ops/composite/base.py +201 -66
- mindspore/ops/composite/math_ops.py +10 -49
- mindspore/ops/composite/multitype_ops/_compile_utils.py +192 -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 +8 -3
- 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/function/__init__.py +53 -11
- mindspore/ops/function/array_func.py +1269 -1821
- mindspore/ops/function/clip_func.py +19 -31
- mindspore/ops/function/debug_func.py +114 -5
- mindspore/ops/function/fft_func.py +44 -0
- mindspore/ops/function/grad/grad_func.py +30 -22
- mindspore/ops/function/image_func.py +27 -21
- mindspore/ops/function/linalg_func.py +35 -68
- mindspore/ops/function/math_func.py +1170 -2697
- mindspore/ops/function/nn_func.py +2116 -1128
- mindspore/ops/function/other_func.py +8 -8
- mindspore/ops/function/parameter_func.py +5 -93
- mindspore/ops/function/random_func.py +435 -113
- mindspore/ops/function/reshard_func.py +104 -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 +16 -15
- mindspore/ops/functional.py +355 -346
- mindspore/ops/op_info_register.py +18 -45
- mindspore/ops/operations/__init__.py +38 -24
- mindspore/ops/operations/_grad_ops.py +21 -927
- mindspore/ops/operations/_infer_ops.py +19 -0
- mindspore/ops/operations/_inner_ops.py +173 -607
- 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 +106 -2837
- mindspore/ops/operations/comm_ops.py +799 -127
- mindspore/ops/operations/custom_ops.py +124 -119
- mindspore/ops/operations/debug_ops.py +142 -41
- 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 +73 -0
- mindspore/ops/operations/manually_defined/ops_def.py +2271 -0
- mindspore/ops/operations/math_ops.py +666 -4972
- mindspore/ops/operations/nn_ops.py +205 -2213
- mindspore/ops/operations/other_ops.py +60 -49
- mindspore/ops/operations/random_ops.py +50 -54
- mindspore/ops/operations/reshard_ops.py +53 -0
- mindspore/ops/operations/sparse_ops.py +4 -4
- mindspore/ops/primitive.py +216 -103
- mindspore/ops_generate/__init__.py +27 -0
- mindspore/ops_generate/arg_dtype_cast.py +252 -0
- mindspore/ops_generate/arg_handler.py +197 -0
- mindspore/ops_generate/gen_aclnn_implement.py +263 -0
- mindspore/ops_generate/gen_constants.py +36 -0
- mindspore/ops_generate/gen_ops.py +1099 -0
- mindspore/ops_generate/gen_ops_inner_prim.py +131 -0
- mindspore/ops_generate/gen_pyboost_func.py +1052 -0
- mindspore/ops_generate/gen_utils.py +209 -0
- mindspore/ops_generate/op_proto.py +145 -0
- mindspore/ops_generate/pyboost_utils.py +367 -0
- mindspore/ops_generate/template.py +261 -0
- mindspore/parallel/__init__.py +8 -4
- mindspore/parallel/_auto_parallel_context.py +100 -10
- mindspore/parallel/_cell_wrapper.py +99 -9
- mindspore/parallel/_cost_model_context.py +1 -1
- mindspore/parallel/_dp_allreduce_fusion.py +159 -159
- mindspore/parallel/_parallel_serialization.py +67 -23
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +1 -1
- mindspore/parallel/_tensor.py +99 -22
- 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 +173 -6
- mindspore/parallel/algo_parameter_config.py +8 -10
- mindspore/parallel/checkpoint_transform.py +204 -38
- mindspore/parallel/cluster/__init__.py +15 -0
- mindspore/parallel/cluster/process_entity/__init__.py +18 -0
- mindspore/parallel/cluster/process_entity/_api.py +352 -0
- mindspore/parallel/cluster/process_entity/_utils.py +101 -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 +151 -0
- mindspore/parallel/shard.py +279 -37
- mindspore/parallel/transform_safetensors.py +993 -0
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +4 -2
- mindspore/profiler/common/constant.py +29 -0
- mindspore/profiler/common/process_pool.py +41 -0
- mindspore/profiler/common/registry.py +47 -0
- mindspore/profiler/common/singleton.py +28 -0
- mindspore/profiler/common/util.py +153 -0
- mindspore/profiler/dynamic_profiler.py +694 -0
- mindspore/profiler/envprofiling.py +18 -20
- mindspore/{_extends/parallel_compile/tbe_compiler → profiler/parser/ascend_analysis}/__init__.py +1 -1
- mindspore/profiler/parser/ascend_analysis/constant.py +71 -0
- mindspore/profiler/parser/ascend_analysis/file_manager.py +180 -0
- mindspore/profiler/parser/ascend_analysis/function_event.py +185 -0
- mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +136 -0
- mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +131 -0
- mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +104 -0
- mindspore/profiler/parser/ascend_analysis/path_manager.py +313 -0
- mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +123 -0
- mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +86 -0
- mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +75 -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 +148 -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 +298 -133
- mindspore/profiler/parser/base_timeline_generator.py +25 -25
- mindspore/profiler/parser/cpu_gpu_timeline_generator.py +25 -12
- mindspore/profiler/parser/framework_parser.py +4 -393
- mindspore/profiler/parser/gpu_analysis/__init__.py +14 -0
- mindspore/profiler/parser/gpu_analysis/function_event.py +44 -0
- mindspore/profiler/parser/gpu_analysis/fwk_file_parser.py +89 -0
- mindspore/profiler/parser/gpu_analysis/profiler_info_parser.py +72 -0
- mindspore/profiler/parser/integrator.py +3 -1
- mindspore/profiler/parser/memory_usage_parser.py +0 -154
- mindspore/profiler/parser/minddata_parser.py +72 -3
- mindspore/profiler/parser/profiler_info.py +94 -7
- mindspore/profiler/profiler.py +153 -0
- mindspore/profiler/profiling.py +631 -508
- mindspore/rewrite/__init__.py +2 -14
- 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} +705 -186
- 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 +40 -115
- mindspore/run_check/run_check.py +1 -1
- mindspore/safeguard/rewrite_obfuscation.py +597 -263
- 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 +7 -5
- mindspore/train/_utils.py +204 -4
- mindspore/train/amp.py +335 -295
- 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 +220 -43
- mindspore/train/callback/_cluster_monitor.py +201 -0
- mindspore/train/callback/_early_stop.py +2 -2
- mindspore/train/callback/_flops_collector.py +239 -0
- mindspore/train/callback/_landscape.py +15 -9
- mindspore/train/callback/_loss_monitor.py +5 -5
- mindspore/train/callback/_on_request_exit.py +136 -33
- mindspore/train/callback/_reduce_lr_on_plateau.py +2 -2
- mindspore/train/callback/_summary_collector.py +12 -12
- mindspore/train/callback/_tft_register.py +352 -0
- mindspore/train/callback/_time_monitor.py +3 -3
- mindspore/train/data_sink.py +6 -5
- mindspore/train/dataset_helper.py +66 -23
- 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/roc.py +4 -4
- mindspore/train/metrics/topk.py +2 -2
- mindspore/train/mind_ir_pb2.py +116 -37
- mindspore/train/model.py +382 -76
- mindspore/train/serialization.py +787 -288
- 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/utils/__init__.py +21 -0
- mindspore/utils/utils.py +60 -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.4.0.dist-info}/METADATA +8 -4
- mindspore-2.4.0.dist-info/RECORD +1406 -0
- {mindspore-2.2.14.dist-info → mindspore-2.4.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/include/c_api/ms/abstract.h +0 -67
- mindspore/include/c_api/ms/attribute.h +0 -197
- mindspore/include/c_api/ms/base/handle_types.h +0 -43
- mindspore/include/c_api/ms/base/macros.h +0 -32
- mindspore/include/c_api/ms/base/status.h +0 -33
- mindspore/include/c_api/ms/base/types.h +0 -282
- mindspore/include/c_api/ms/context.h +0 -102
- mindspore/include/c_api/ms/graph.h +0 -160
- mindspore/include/c_api/ms/node.h +0 -606
- mindspore/include/c_api/ms/tensor.h +0 -161
- mindspore/include/c_api/ms/value.h +0 -84
- mindspore/mindspore_shared_lib.dll +0 -0
- mindspore/nn/layer/flash_attention.py +0 -189
- mindspore/ops/_op_impl/aicpu/strided_slice_v2.py +0 -93
- mindspore/ops/_op_impl/aicpu/strided_slice_v2_grad.py +0 -66
- 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/ops/silent_check.py +0 -162
- mindspore/profiler/parser/msadvisor_analyzer.py +0 -82
- mindspore/profiler/parser/msadvisor_parser.py +0 -240
- 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.4.0.dist-info}/WHEEL +0 -0
- {mindspore-2.2.14.dist-info → mindspore-2.4.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/docs/zh-CN/master/model_train/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/docs/zh-CN/master/model_train/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,36 +171,125 @@ 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
|
|
|
187
178
|
@prim_attr_register
|
|
188
179
|
def __init__(self, op=ReduceOp.SUM, group=GlobalComm.WORLD_COMM_GROUP):
|
|
189
180
|
"""Initialize AllReduce."""
|
|
181
|
+
self.group = _get_group(group)
|
|
190
182
|
if not isinstance(op, type(ReduceOp.SUM)):
|
|
191
183
|
raise TypeError(f"For '{self.name}', the 'op' must be str, but got {type(op).__name__}.")
|
|
192
|
-
if not isinstance(
|
|
184
|
+
if not isinstance(self.group, str):
|
|
193
185
|
raise TypeError(f"For '{self.name}', the 'group' must be str, "
|
|
194
|
-
f"but got {type(
|
|
195
|
-
check_hcom_group_valid(group, prim_name=self.name)
|
|
186
|
+
f"but got {type(self.group).__name__}.")
|
|
187
|
+
check_hcom_group_valid(self.group, prim_name=self.name)
|
|
196
188
|
self.op = op
|
|
197
|
-
self.add_prim_attr('group',
|
|
189
|
+
self.add_prim_attr('group', self.group)
|
|
198
190
|
self.add_prim_attr('fusion', 0)
|
|
199
191
|
self.add_prim_attr('index', 0)
|
|
200
192
|
self.add_prim_attr('no_eliminate', True)
|
|
201
193
|
|
|
202
194
|
|
|
195
|
+
class Reduce(PrimitiveWithInfer):
|
|
196
|
+
"""
|
|
197
|
+
Reduces tensors across the processes in the specified communication group, sends the result
|
|
198
|
+
to the target dest_rank(local rank), and returns the tensor which is sent to the target process.
|
|
199
|
+
|
|
200
|
+
Note:
|
|
201
|
+
Only process with destination rank receives the reduced output.
|
|
202
|
+
Support PyNative mode and Graph mode, but Graph mode only supports scenes with a graph compilation level of O0.
|
|
203
|
+
Other processes only get a tensor with shape [1], which has no mathematical meaning.
|
|
204
|
+
|
|
205
|
+
Args:
|
|
206
|
+
dest_rank (int): The target process(local rank) in the specific group that receives the reduced output.
|
|
207
|
+
op (str, optional): Specifies an operation used for element-wise reductions, like sum, prod, max, and min.
|
|
208
|
+
On the CPU, only 'sum' is supported. Default: ``ReduceOp.SUM`` .
|
|
209
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
|
|
210
|
+
means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
|
|
211
|
+
|
|
212
|
+
Inputs:
|
|
213
|
+
- **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
214
|
+
|
|
215
|
+
Outputs:
|
|
216
|
+
Tensor. Return the tensor in the specific rank of the process after reduction.
|
|
217
|
+
The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
218
|
+
|
|
219
|
+
Raises:
|
|
220
|
+
TypeError: If the type of the first input parameter is not Tensor,
|
|
221
|
+
or any of `op` and `group` is not a str.
|
|
222
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
223
|
+
|
|
224
|
+
Supported Platforms:
|
|
225
|
+
``Ascend``
|
|
226
|
+
|
|
227
|
+
Examples:
|
|
228
|
+
.. note::
|
|
229
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
230
|
+
|
|
231
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method without any third-party
|
|
232
|
+
or configuration file dependencies.
|
|
233
|
+
Please see the `msrun start up
|
|
234
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
235
|
+
for more details.
|
|
236
|
+
|
|
237
|
+
This example should be run with 4 devices.
|
|
238
|
+
|
|
239
|
+
>>> from mindspore import ops
|
|
240
|
+
>>> import mindspore.nn as nn
|
|
241
|
+
>>> from mindspore.communication import init
|
|
242
|
+
>>> from mindspore import Tensor
|
|
243
|
+
>>> import numpy as np
|
|
244
|
+
>>> # Launch 4 processes.
|
|
245
|
+
>>> init()
|
|
246
|
+
>>> class ReduceNet(nn.Cell):
|
|
247
|
+
>>> def __init__(self):
|
|
248
|
+
>>> super(Net, self).__init__()
|
|
249
|
+
>>> self.reduce = ops.Reduce(dest_rank=1)
|
|
250
|
+
>>>
|
|
251
|
+
>>> def construct(self, x):
|
|
252
|
+
>>> out = self.reduce(x)
|
|
253
|
+
>>> return out
|
|
254
|
+
>>> input = Tensor(np.ones([2, 8]).astype(np.float32))
|
|
255
|
+
>>> net = ReduceNet()
|
|
256
|
+
>>> output = net(input)
|
|
257
|
+
>>> print(output)
|
|
258
|
+
Process with rank 1: [[4. 4. 4. 4. 4. 4. 4. 4.]
|
|
259
|
+
[4. 4. 4. 4. 4. 4. 4. 4.]],
|
|
260
|
+
Other proesses: [0.].
|
|
261
|
+
"""
|
|
262
|
+
|
|
263
|
+
@prim_attr_register
|
|
264
|
+
def __init__(self, dest_rank, op=ReduceOp.SUM, group=GlobalComm.WORLD_COMM_GROUP):
|
|
265
|
+
validator.check_value_type('group', _get_group(group), (str,), self.name)
|
|
266
|
+
validator.check_value_type('op', op, (type(ReduceOp.SUM),), self.name)
|
|
267
|
+
self.dest_rank = dest_rank
|
|
268
|
+
self.op = op
|
|
269
|
+
self.group = _get_group(group)
|
|
270
|
+
self.add_prim_attr('group', _get_group(group))
|
|
271
|
+
self.add_prim_attr('dest_rank', dest_rank)
|
|
272
|
+
|
|
273
|
+
def infer_shape(self, x_shape):
|
|
274
|
+
# The process with dest_rank returns the reduced output.
|
|
275
|
+
# Other processes only gets a tensor with shape [1], which has no mathematical meaning.
|
|
276
|
+
if self.dest_rank == get_rank():
|
|
277
|
+
return x_shape
|
|
278
|
+
return [1]
|
|
279
|
+
|
|
280
|
+
def infer_dtype(self, x_dtype):
|
|
281
|
+
return x_dtype
|
|
282
|
+
|
|
283
|
+
|
|
203
284
|
class AllGather(PrimitiveWithInfer):
|
|
204
285
|
"""
|
|
205
|
-
Gathers tensors from the specified communication group.
|
|
286
|
+
Gathers tensors from the specified communication group and returns the tensor which is all gathered.
|
|
206
287
|
|
|
207
288
|
Note:
|
|
208
289
|
- 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
290
|
|
|
211
291
|
Args:
|
|
212
|
-
group (str): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
|
|
292
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` , which
|
|
213
293
|
means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
|
|
214
294
|
|
|
215
295
|
Inputs:
|
|
@@ -223,6 +303,7 @@ class AllGather(PrimitiveWithInfer):
|
|
|
223
303
|
TypeError: If `group` is not a str.
|
|
224
304
|
ValueError: If the local rank id of the calling process in the group
|
|
225
305
|
is larger than the group's rank size.
|
|
306
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
226
307
|
|
|
227
308
|
Supported Platforms:
|
|
228
309
|
``Ascend`` ``GPU``
|
|
@@ -231,22 +312,17 @@ class AllGather(PrimitiveWithInfer):
|
|
|
231
312
|
.. note::
|
|
232
313
|
Before running the following examples, you need to configure the communication environment variables.
|
|
233
314
|
|
|
234
|
-
For
|
|
235
|
-
|
|
236
|
-
|
|
315
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
316
|
+
without any third-party or configuration file dependencies.
|
|
317
|
+
Please see the `msrun start up
|
|
318
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
237
319
|
for more details.
|
|
238
320
|
|
|
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
321
|
This example should be run with 2 devices.
|
|
246
322
|
|
|
247
323
|
>>> import numpy as np
|
|
248
324
|
>>> import mindspore as ms
|
|
249
|
-
>>>
|
|
325
|
+
>>> from mindspore import ops
|
|
250
326
|
>>> import mindspore.nn as nn
|
|
251
327
|
>>> from mindspore.communication import init
|
|
252
328
|
>>> from mindspore import Tensor
|
|
@@ -272,19 +348,20 @@ class AllGather(PrimitiveWithInfer):
|
|
|
272
348
|
|
|
273
349
|
Tutorial Examples:
|
|
274
350
|
- `Distributed Set Communication Primitives - AllGather
|
|
275
|
-
<https://www.mindspore.cn/docs/en/
|
|
351
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#allgather>`_
|
|
276
352
|
|
|
277
353
|
"""
|
|
278
354
|
|
|
279
355
|
@prim_attr_register
|
|
280
356
|
def __init__(self, group=GlobalComm.WORLD_COMM_GROUP):
|
|
281
357
|
"""Initialize AllGather."""
|
|
282
|
-
|
|
283
|
-
self.
|
|
284
|
-
self.
|
|
358
|
+
self.group = _get_group(group)
|
|
359
|
+
validator.check_value_type('group', self.group, (str,), self.name)
|
|
360
|
+
self.rank = get_rank(self.group)
|
|
361
|
+
self.rank_size = get_group_size(self.group)
|
|
285
362
|
validator.check('rank', self.rank, 'rank_size', self.rank_size, validator.LT, self.name)
|
|
286
363
|
self.add_prim_attr('rank_size', self.rank_size)
|
|
287
|
-
self.add_prim_attr('group',
|
|
364
|
+
self.add_prim_attr('group', self.group)
|
|
288
365
|
self.add_prim_attr('fusion', 0)
|
|
289
366
|
self.add_prim_attr('mean_flag', False)
|
|
290
367
|
self.add_prim_attr('no_eliminate', True)
|
|
@@ -427,7 +504,8 @@ class _HostAllGather(PrimitiveWithInfer):
|
|
|
427
504
|
|
|
428
505
|
class ReduceScatter(Primitive):
|
|
429
506
|
r"""
|
|
430
|
-
Reduces and scatters tensors from the specified communication group
|
|
507
|
+
Reduces and scatters tensors from the specified communication group
|
|
508
|
+
and returns the tensor which is reduced and scattered.
|
|
431
509
|
|
|
432
510
|
Note:
|
|
433
511
|
The tensors must have the same shape and format in all processes of the collection.
|
|
@@ -448,6 +526,7 @@ class ReduceScatter(Primitive):
|
|
|
448
526
|
Raises:
|
|
449
527
|
TypeError: If any of operation and group is not a string.
|
|
450
528
|
ValueError: If the first dimension of the input cannot be divided by the rank_size.
|
|
529
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
451
530
|
|
|
452
531
|
Supported Platforms:
|
|
453
532
|
``Ascend`` ``GPU``
|
|
@@ -456,17 +535,12 @@ class ReduceScatter(Primitive):
|
|
|
456
535
|
.. note::
|
|
457
536
|
Before running the following examples, you need to configure the communication environment variables.
|
|
458
537
|
|
|
459
|
-
For
|
|
460
|
-
|
|
461
|
-
|
|
538
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
539
|
+
without any third-party or configuration file dependencies.
|
|
540
|
+
Please see the `msrun start up
|
|
541
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
462
542
|
for more details.
|
|
463
543
|
|
|
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
544
|
This example should be run with 2 devices.
|
|
471
545
|
|
|
472
546
|
>>> import mindspore as ms
|
|
@@ -474,7 +548,7 @@ class ReduceScatter(Primitive):
|
|
|
474
548
|
>>> from mindspore.communication import init
|
|
475
549
|
>>> from mindspore.ops import ReduceOp
|
|
476
550
|
>>> import mindspore.nn as nn
|
|
477
|
-
>>>
|
|
551
|
+
>>> from mindspore import ops
|
|
478
552
|
>>> import numpy as np
|
|
479
553
|
>>>
|
|
480
554
|
>>> ms.set_context(mode=ms.GRAPH_MODE)
|
|
@@ -498,7 +572,7 @@ class ReduceScatter(Primitive):
|
|
|
498
572
|
|
|
499
573
|
Tutorial Examples:
|
|
500
574
|
- `Distributed Set Communication Primitives - ReduceScatter
|
|
501
|
-
<https://www.mindspore.cn/docs/en/
|
|
575
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#reducescatter>`_
|
|
502
576
|
|
|
503
577
|
"""
|
|
504
578
|
|
|
@@ -506,11 +580,12 @@ class ReduceScatter(Primitive):
|
|
|
506
580
|
def __init__(self, op=ReduceOp.SUM, group=GlobalComm.WORLD_COMM_GROUP):
|
|
507
581
|
"""Initialize ReduceScatter."""
|
|
508
582
|
validator.check_value_type('op', op, (type(ReduceOp.SUM),), self.name)
|
|
509
|
-
|
|
583
|
+
self.group = _get_group(group)
|
|
584
|
+
validator.check_value_type('group', self.group, (str,), self.name)
|
|
510
585
|
self.op = op
|
|
511
|
-
self.rank_size = get_group_size(
|
|
586
|
+
self.rank_size = get_group_size(self.group)
|
|
512
587
|
self.add_prim_attr('rank_size', self.rank_size)
|
|
513
|
-
self.add_prim_attr('group',
|
|
588
|
+
self.add_prim_attr('group', self.group)
|
|
514
589
|
self.add_prim_attr('fusion', 0)
|
|
515
590
|
self.add_prim_attr('no_eliminate', True)
|
|
516
591
|
|
|
@@ -577,12 +652,12 @@ class Broadcast(PrimitiveWithInfer):
|
|
|
577
652
|
The tensors must have the same shape and format in all processes of the collection.
|
|
578
653
|
|
|
579
654
|
Args:
|
|
580
|
-
root_rank (int):
|
|
581
|
-
|
|
655
|
+
root_rank (int): Specifies the rank(global rank) of the process that broadcast the tensor.
|
|
656
|
+
And only process `root_rank` will broadcast the tensor.
|
|
582
657
|
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP`` .
|
|
583
658
|
|
|
584
659
|
Inputs:
|
|
585
|
-
- **input_x** (
|
|
660
|
+
- **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
586
661
|
|
|
587
662
|
Outputs:
|
|
588
663
|
tuple[Tensor], Tensor has the same shape of the input, i.e., :math:`(x_1, x_2, ..., x_R)`.
|
|
@@ -598,24 +673,19 @@ class Broadcast(PrimitiveWithInfer):
|
|
|
598
673
|
.. note::
|
|
599
674
|
Before running the following examples, you need to configure the communication environment variables.
|
|
600
675
|
|
|
601
|
-
For
|
|
602
|
-
|
|
603
|
-
|
|
676
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
677
|
+
without any third-party or configuration file dependencies.
|
|
678
|
+
Please see the `msrun start up
|
|
679
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
604
680
|
for more details.
|
|
605
681
|
|
|
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.
|
|
682
|
+
This example should be run with 2 devices.
|
|
613
683
|
|
|
614
684
|
>>> import mindspore as ms
|
|
615
685
|
>>> from mindspore import Tensor
|
|
616
686
|
>>> from mindspore.communication import init
|
|
617
687
|
>>> import mindspore.nn as nn
|
|
618
|
-
>>>
|
|
688
|
+
>>> from mindspore import ops
|
|
619
689
|
>>> import numpy as np
|
|
620
690
|
>>>
|
|
621
691
|
>>> ms.set_context(mode=ms.GRAPH_MODE)
|
|
@@ -638,7 +708,7 @@ class Broadcast(PrimitiveWithInfer):
|
|
|
638
708
|
|
|
639
709
|
Tutorial Examples:
|
|
640
710
|
- `Distributed Set Communication Primitives - Broadcast
|
|
641
|
-
<https://www.mindspore.cn/docs/en/
|
|
711
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#broadcast>`_
|
|
642
712
|
|
|
643
713
|
"""
|
|
644
714
|
|
|
@@ -651,16 +721,6 @@ class Broadcast(PrimitiveWithInfer):
|
|
|
651
721
|
self.add_prim_attr('group', _get_group(group))
|
|
652
722
|
self.add_prim_attr('no_eliminate', True)
|
|
653
723
|
|
|
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
724
|
|
|
665
725
|
class _AllSwap(PrimitiveWithCheck):
|
|
666
726
|
"""
|
|
@@ -728,11 +788,11 @@ class NeighborExchange(Primitive):
|
|
|
728
788
|
The user needs to preset
|
|
729
789
|
communication environment variables before running the following example, please check the details on the
|
|
730
790
|
official website of `MindSpore \
|
|
731
|
-
<https://www.mindspore.cn/docs/en/
|
|
791
|
+
<https://www.mindspore.cn/docs/en/master/api_python/mindspore.ops.primitive.html#communication-operator>`_.
|
|
732
792
|
|
|
733
793
|
This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
|
|
734
794
|
in the same subnet, please check the `details \
|
|
735
|
-
<https://www.mindspore.cn/docs/en/
|
|
795
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
|
|
736
796
|
|
|
737
797
|
Args:
|
|
738
798
|
send_rank_ids (list(int)): Ranks which the data is sent to.
|
|
@@ -758,7 +818,7 @@ class NeighborExchange(Primitive):
|
|
|
758
818
|
>>> from mindspore import Tensor
|
|
759
819
|
>>> from mindspore.communication import init
|
|
760
820
|
>>> import mindspore.nn as nn
|
|
761
|
-
>>>
|
|
821
|
+
>>> from mindspore import ops
|
|
762
822
|
>>> import numpy as np
|
|
763
823
|
>>> class Net(nn.Cell):
|
|
764
824
|
... def __init__(self):
|
|
@@ -781,7 +841,7 @@ class NeighborExchange(Primitive):
|
|
|
781
841
|
|
|
782
842
|
Tutorial Examples:
|
|
783
843
|
- `Distributed Set Communication Primitives - NeighborExchange
|
|
784
|
-
<https://www.mindspore.cn/docs/en/
|
|
844
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#neighborexchange>`_
|
|
785
845
|
|
|
786
846
|
"""
|
|
787
847
|
|
|
@@ -814,7 +874,7 @@ class AlltoAll(PrimitiveWithInfer):
|
|
|
814
874
|
Note:
|
|
815
875
|
This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
|
|
816
876
|
in the same subnet, please check the `details \
|
|
817
|
-
<https://www.mindspore.cn/docs/en/
|
|
877
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
|
|
818
878
|
|
|
819
879
|
Args:
|
|
820
880
|
split_count (int): On each process, divide blocks into split_count number.
|
|
@@ -843,17 +903,12 @@ class AlltoAll(PrimitiveWithInfer):
|
|
|
843
903
|
.. note::
|
|
844
904
|
Before running the following examples, you need to configure the communication environment variables.
|
|
845
905
|
|
|
846
|
-
For
|
|
847
|
-
|
|
848
|
-
|
|
906
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
907
|
+
without any third-party or configuration file dependencies.
|
|
908
|
+
Please see the `msrun start up
|
|
909
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
849
910
|
for more details.
|
|
850
911
|
|
|
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
912
|
This example should be run with 8 devices.
|
|
858
913
|
|
|
859
914
|
>>> import os
|
|
@@ -861,7 +916,7 @@ class AlltoAll(PrimitiveWithInfer):
|
|
|
861
916
|
>>> from mindspore import Tensor
|
|
862
917
|
>>> from mindspore.communication import init
|
|
863
918
|
>>> import mindspore.nn as nn
|
|
864
|
-
>>>
|
|
919
|
+
>>> from mindspore import ops
|
|
865
920
|
>>> import numpy as np
|
|
866
921
|
>>> class Net(nn.Cell):
|
|
867
922
|
... def __init__(self):
|
|
@@ -883,7 +938,7 @@ class AlltoAll(PrimitiveWithInfer):
|
|
|
883
938
|
|
|
884
939
|
Tutorial Examples:
|
|
885
940
|
- `Distributed Set Communication Primitives - AlltoAll
|
|
886
|
-
<https://www.mindspore.cn/docs/en/
|
|
941
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#alltoall>`_
|
|
887
942
|
|
|
888
943
|
"""
|
|
889
944
|
|
|
@@ -905,20 +960,20 @@ class AlltoAll(PrimitiveWithInfer):
|
|
|
905
960
|
if self.split_count != rank_size:
|
|
906
961
|
raise ValueError(f"For '{self.name}', the 'split_count' must be equal to 'rank_size', "
|
|
907
962
|
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
|
-
|
|
963
|
+
if x_shape[self.split_dim] >= 0 and x_shape[self.split_dim] % self.split_count != 0:
|
|
964
|
+
raise ValueError(f"For '{self.name}', the 'x_shape[self.split_dim]' must be divisible by 'split_count', "
|
|
965
|
+
f"but got 'x_shape[self.split_dim]' {x_shape[self.split_dim]}, "
|
|
966
|
+
f"'split_count' {self.split_count}.")
|
|
967
|
+
if x_shape[self.concat_dim] >= 0:
|
|
968
|
+
x_shape[self.concat_dim] = x_shape[self.concat_dim] * self.split_count
|
|
969
|
+
if x_shape[self.split_dim] >= 0:
|
|
970
|
+
x_shape[self.split_dim] = int(x_shape[self.split_dim] / self.split_count)
|
|
913
971
|
return x_shape
|
|
914
972
|
|
|
915
973
|
def infer_dtype(self, x_dtype):
|
|
916
974
|
check_collective_target_dtype('x', x_dtype, self.name)
|
|
917
975
|
return x_dtype
|
|
918
976
|
|
|
919
|
-
def __call__(self, tensor):
|
|
920
|
-
raise NotImplementedError
|
|
921
|
-
|
|
922
977
|
|
|
923
978
|
class NeighborExchangeV2(Primitive):
|
|
924
979
|
r"""
|
|
@@ -931,7 +986,7 @@ class NeighborExchangeV2(Primitive):
|
|
|
931
986
|
Note:
|
|
932
987
|
This operator requires a full-mesh network topology, each device has the same vlan id, and the ip & mask are
|
|
933
988
|
in the same subnet, please check the `details \
|
|
934
|
-
<https://www.mindspore.cn/docs/en/
|
|
989
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#notes>`_.
|
|
935
990
|
|
|
936
991
|
Args:
|
|
937
992
|
send_rank_ids (list(int)): Ranks which the data is sent to. 8 rank_ids represents 8 directions, if one
|
|
@@ -967,24 +1022,19 @@ class NeighborExchangeV2(Primitive):
|
|
|
967
1022
|
.. note::
|
|
968
1023
|
Before running the following examples, you need to configure the communication environment variables.
|
|
969
1024
|
|
|
970
|
-
For
|
|
971
|
-
|
|
972
|
-
|
|
1025
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1026
|
+
without any third-party or configuration file dependencies.
|
|
1027
|
+
Please see the `msrun start up
|
|
1028
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
973
1029
|
for more details.
|
|
974
1030
|
|
|
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
1031
|
This example should be run with 2 devices.
|
|
982
1032
|
|
|
983
1033
|
>>> import os
|
|
984
1034
|
>>> import mindspore as ms
|
|
985
1035
|
>>> from mindspore.communication import init
|
|
986
1036
|
>>> import mindspore.nn as nn
|
|
987
|
-
>>>
|
|
1037
|
+
>>> from mindspore import ops
|
|
988
1038
|
>>> import numpy as np
|
|
989
1039
|
>>>
|
|
990
1040
|
>>> class Net0(nn.Cell):
|
|
@@ -998,7 +1048,6 @@ class NeighborExchangeV2(Primitive):
|
|
|
998
1048
|
... def construct(self, x):
|
|
999
1049
|
... out = self.neighbor_exchangev2(x)
|
|
1000
1050
|
... return out
|
|
1001
|
-
>>>
|
|
1002
1051
|
... class Net1(nn.Cell):
|
|
1003
1052
|
... def __init__(self):
|
|
1004
1053
|
... super(Net1, self).__init__()
|
|
@@ -1028,7 +1077,7 @@ class NeighborExchangeV2(Primitive):
|
|
|
1028
1077
|
|
|
1029
1078
|
Tutorial Examples:
|
|
1030
1079
|
- `Distributed Set Communication Primitives - NeighborExchangeV2
|
|
1031
|
-
<https://www.mindspore.cn/docs/en/
|
|
1080
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#neighborexchangev2>`_
|
|
1032
1081
|
|
|
1033
1082
|
"""
|
|
1034
1083
|
|
|
@@ -1057,6 +1106,414 @@ class NeighborExchangeV2(Primitive):
|
|
|
1057
1106
|
raise NotImplementedError
|
|
1058
1107
|
|
|
1059
1108
|
|
|
1109
|
+
class CollectiveScatter(Primitive):
|
|
1110
|
+
r"""
|
|
1111
|
+
Scatter tensor evently across the processes in the specified communication group.
|
|
1112
|
+
|
|
1113
|
+
Note:
|
|
1114
|
+
The interface behavior only support Tensor input and scatter evenly.
|
|
1115
|
+
Only the tensor in process `src_rank` (global rank) will do scatter.
|
|
1116
|
+
|
|
1117
|
+
Args:
|
|
1118
|
+
src_rank (int, optional): Specifies the rank of the process that send the tensor.
|
|
1119
|
+
And only process `src_rank` will send the tensor.
|
|
1120
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1121
|
+
|
|
1122
|
+
Inputs:
|
|
1123
|
+
- **input_x** (Tensor) - The input tensor to be scattered. The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
1124
|
+
|
|
1125
|
+
Outputs:
|
|
1126
|
+
Tensor, the shape of output is :math:`(x_1/src\_rank, x_2, ..., x_R)`. The dimension 0 of data is equal to
|
|
1127
|
+
the dimension of input tensor divided by `src`, and the other dimension keep the same.
|
|
1128
|
+
|
|
1129
|
+
Raises:
|
|
1130
|
+
TypeError: If `group` is not a str.
|
|
1131
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
1132
|
+
ValueError: If the local rank id of the calling process in the group
|
|
1133
|
+
is larger than the group's rank size.
|
|
1134
|
+
|
|
1135
|
+
Supported Platforms:
|
|
1136
|
+
``Ascend``
|
|
1137
|
+
|
|
1138
|
+
Examples:
|
|
1139
|
+
.. note::
|
|
1140
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1141
|
+
|
|
1142
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1143
|
+
without any third-party or configuration file dependencies.
|
|
1144
|
+
Please see the `msrun start up
|
|
1145
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
1146
|
+
for more details.
|
|
1147
|
+
|
|
1148
|
+
This example should be run with 2 devices.
|
|
1149
|
+
|
|
1150
|
+
>>> import numpy as np
|
|
1151
|
+
>>> import mindspore.nn as nn
|
|
1152
|
+
>>> from mindspore import Tensor
|
|
1153
|
+
>>> from mindspore.communication.management import init, get_rank
|
|
1154
|
+
>>> from mindspore import ops
|
|
1155
|
+
>>> # Launch 2 processes.
|
|
1156
|
+
>>> init()
|
|
1157
|
+
>>> class CollectiveScatterNet(nn.Cell):
|
|
1158
|
+
>>> def __init__(self):
|
|
1159
|
+
>>> super(CollectiveScatter, self).__init__()
|
|
1160
|
+
>>> self.collective_scatter = ops.CollectiveScatter(src_rank=0)
|
|
1161
|
+
>>>
|
|
1162
|
+
>>> def construct(self, x):
|
|
1163
|
+
>>> return self.collective_scatter(x)
|
|
1164
|
+
>>>
|
|
1165
|
+
>>> input = Tensor(np.arange(8).reshape([4, 2]).astype(np.float32))
|
|
1166
|
+
>>> net = CollectiveScatterNet()
|
|
1167
|
+
>>> output = net(input)
|
|
1168
|
+
>>> print(output)
|
|
1169
|
+
Process with rank 0: [[0. 1.],
|
|
1170
|
+
[2. 3.]]
|
|
1171
|
+
Process with rank 1: [[4. 5.],
|
|
1172
|
+
[6. 7.]]
|
|
1173
|
+
|
|
1174
|
+
Tutorial Examples:
|
|
1175
|
+
- `Distributed Set Communication Primitives - CollectiveScatter
|
|
1176
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#reducescatter>`_
|
|
1177
|
+
|
|
1178
|
+
"""
|
|
1179
|
+
|
|
1180
|
+
@prim_attr_register
|
|
1181
|
+
def __init__(self, src_rank=0, group=GlobalComm.WORLD_COMM_GROUP):
|
|
1182
|
+
validator.check_value_type('group', _get_group(group), (str,), self.name)
|
|
1183
|
+
self.rank_id = get_rank(_get_group(group))
|
|
1184
|
+
self.src_rank = src_rank
|
|
1185
|
+
self.rank_size = get_group_size(_get_group(group))
|
|
1186
|
+
validator.check('rank', self.rank_id, 'rank_size', self.rank_size, validator.LT, self.name)
|
|
1187
|
+
self.add_prim_attr('rank_id', self.rank_id)
|
|
1188
|
+
self.add_prim_attr('src_rank', self.src_rank)
|
|
1189
|
+
self.add_prim_attr('rank_size', self.rank_size)
|
|
1190
|
+
self.add_prim_attr('group', _get_group(group))
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
class CollectiveGather(Primitive):
|
|
1194
|
+
r"""
|
|
1195
|
+
Gathers tensors from the specified communication group. The operation will gather the tensor
|
|
1196
|
+
from processes according to dimension 0.
|
|
1197
|
+
|
|
1198
|
+
Note:
|
|
1199
|
+
Only the tensor in process `dest_rank` (global rank) will keep the gathered tensor. The other process
|
|
1200
|
+
will keep a tensor with shape [1], which has no mathematical meaning.
|
|
1201
|
+
|
|
1202
|
+
Args:
|
|
1203
|
+
dest_rank(int): Specifies the rank of the process that receive the tensor.
|
|
1204
|
+
And only process `dest_rank` will receive the gathered tensor.
|
|
1205
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1206
|
+
|
|
1207
|
+
Inputs:
|
|
1208
|
+
- **input_x** (Tensor) - The tensor to be gathered. The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
1209
|
+
|
|
1210
|
+
Outputs:
|
|
1211
|
+
Tensor, the shape of output is :math:`(\sum x_1, x_2, ..., x_R)`. The dimension 0 of data is equal to
|
|
1212
|
+
sum of the dimension of input tensor, and the other dimension keep the same.
|
|
1213
|
+
|
|
1214
|
+
Raises:
|
|
1215
|
+
TypeError: If `group` is not a str.
|
|
1216
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
1217
|
+
ValueError: If the local rank id of the calling process in the group
|
|
1218
|
+
is larger than the group's rank size.
|
|
1219
|
+
|
|
1220
|
+
Supported Platforms:
|
|
1221
|
+
``Ascend``
|
|
1222
|
+
|
|
1223
|
+
Examples:
|
|
1224
|
+
.. note::
|
|
1225
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1226
|
+
|
|
1227
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1228
|
+
without any third-party or configuration file dependencies.
|
|
1229
|
+
Please see the `msrun start up
|
|
1230
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
1231
|
+
for more details.
|
|
1232
|
+
|
|
1233
|
+
This example should be run with 4 devices.
|
|
1234
|
+
|
|
1235
|
+
>>> import numpy as np
|
|
1236
|
+
>>> import mindspore as ms
|
|
1237
|
+
>>> import mindspore.nn as nn
|
|
1238
|
+
>>> from mindspore.communication import init
|
|
1239
|
+
>>> from mindspore import Tensor
|
|
1240
|
+
>>> from mindspore import ops
|
|
1241
|
+
>>> # Launch 2 processes.
|
|
1242
|
+
>>>
|
|
1243
|
+
>>> ms.set_context(mode=ms.GRAPH_MODE)
|
|
1244
|
+
>>> init()
|
|
1245
|
+
>>> class CollectiveGatherNet(nn.Cell):
|
|
1246
|
+
... def __init__(self):
|
|
1247
|
+
... super(CollectiveGatherNet, self).__init__()
|
|
1248
|
+
... self.collective_gather = ops.CollectiveGather(dest_rank=0)
|
|
1249
|
+
...
|
|
1250
|
+
... def construct(self, x):
|
|
1251
|
+
... return self.collective_gather(x)
|
|
1252
|
+
...
|
|
1253
|
+
>>> input = Tensor(np.arange(4).reshape([2, 2]).astype(np.float32))
|
|
1254
|
+
>>> net = CollectiveGatherNet()
|
|
1255
|
+
>>> output = net(input)
|
|
1256
|
+
>>> print(output)
|
|
1257
|
+
Process with rank 0: [[0. 1.],
|
|
1258
|
+
[2. 3.],
|
|
1259
|
+
[0. 1.],
|
|
1260
|
+
[2. 3.]]
|
|
1261
|
+
Process with rank 1: [0.]
|
|
1262
|
+
|
|
1263
|
+
Tutorial Examples:
|
|
1264
|
+
- `Distributed Set Communication Primitives - CollectiveGather
|
|
1265
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#collectivegather>`_
|
|
1266
|
+
|
|
1267
|
+
"""
|
|
1268
|
+
|
|
1269
|
+
@prim_attr_register
|
|
1270
|
+
def __init__(self, dest_rank, group=GlobalComm.WORLD_COMM_GROUP):
|
|
1271
|
+
"""Initialize Gather."""
|
|
1272
|
+
validator.check_value_type('group', _get_group(group), (str,), self.name)
|
|
1273
|
+
self.rank_id = get_rank(_get_group(group))
|
|
1274
|
+
self.dest_rank = dest_rank
|
|
1275
|
+
self.rank_size = get_group_size(_get_group(group))
|
|
1276
|
+
validator.check('rank', self.rank_id, 'rank_size', self.rank_size, validator.LT, self.name)
|
|
1277
|
+
self.add_prim_attr('rank_size', self.rank_size)
|
|
1278
|
+
self.add_prim_attr('group', _get_group(group))
|
|
1279
|
+
self.add_prim_attr('dest_rank', self.dest_rank)
|
|
1280
|
+
self.add_prim_attr('rank_id', self.rank_id)
|
|
1281
|
+
|
|
1282
|
+
|
|
1283
|
+
class Barrier(PrimitiveWithInfer):
|
|
1284
|
+
"""
|
|
1285
|
+
Synchronizes all processes in the specified group. Once the process call this operation, it will be blocked until
|
|
1286
|
+
all processes call this operation. After all processes finish calling the operations, the blocked processes
|
|
1287
|
+
will be waken and continue their task.
|
|
1288
|
+
|
|
1289
|
+
Args:
|
|
1290
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1291
|
+
|
|
1292
|
+
Raises:
|
|
1293
|
+
TypeError: If `group` is not a str.
|
|
1294
|
+
RuntimeError: If backend is invalid, or distributed initialization fails.
|
|
1295
|
+
|
|
1296
|
+
Supported Platforms:
|
|
1297
|
+
``Ascend``
|
|
1298
|
+
|
|
1299
|
+
Examples:
|
|
1300
|
+
.. note::
|
|
1301
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1302
|
+
|
|
1303
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1304
|
+
without any third-party or configuration file dependencies.
|
|
1305
|
+
Please see the `msrun start up
|
|
1306
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
1307
|
+
for more details.
|
|
1308
|
+
|
|
1309
|
+
This example should be run with 2 devices.
|
|
1310
|
+
|
|
1311
|
+
>>> import numpy as np
|
|
1312
|
+
>>> import mindspore.nn as nn
|
|
1313
|
+
>>> from mindspore.communication import init
|
|
1314
|
+
>>> from mindspore import Tensor
|
|
1315
|
+
>>> from mindspore import ops
|
|
1316
|
+
>>> # Launch 4 processes.
|
|
1317
|
+
>>> init()
|
|
1318
|
+
>>> class BarrierNet(nn.Cell):
|
|
1319
|
+
>>> def __init__(self):
|
|
1320
|
+
>>> super(BarrierNet, self).__init__()
|
|
1321
|
+
>>> self.barrier = ops.Barrier()
|
|
1322
|
+
>>>
|
|
1323
|
+
>>> def construct(self):
|
|
1324
|
+
>>> self.barrier()
|
|
1325
|
+
>>> net = BarrierNet()
|
|
1326
|
+
>>> net()
|
|
1327
|
+
|
|
1328
|
+
Tutorial Examples:
|
|
1329
|
+
- `Distributed Set Communication Primitives - Barrier
|
|
1330
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#barrier>`_
|
|
1331
|
+
|
|
1332
|
+
"""
|
|
1333
|
+
|
|
1334
|
+
@prim_attr_register
|
|
1335
|
+
def __init__(self, group=GlobalComm.WORLD_COMM_GROUP):
|
|
1336
|
+
self.group = group
|
|
1337
|
+
self.add_prim_attr("side_effect_mem", True)
|
|
1338
|
+
|
|
1339
|
+
def infer_shape(self):
|
|
1340
|
+
return [1]
|
|
1341
|
+
|
|
1342
|
+
def infer_dtype(self):
|
|
1343
|
+
return mstype.float32
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
class Send(PrimitiveWithInfer):
|
|
1347
|
+
"""
|
|
1348
|
+
Send tensors to the specified dest_rank.
|
|
1349
|
+
|
|
1350
|
+
Note:
|
|
1351
|
+
Send and Receive must be used in combination and have same sr_tag.
|
|
1352
|
+
|
|
1353
|
+
Args:
|
|
1354
|
+
sr_tag (int): The tag to identify the send/recv message. The message will
|
|
1355
|
+
be received by the Receive op with the same "sr_tag".
|
|
1356
|
+
dest_rank (int): A required integer identifying the destination rank.
|
|
1357
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1358
|
+
group_back (str, optional): The communication group for backpropagation.
|
|
1359
|
+
Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1360
|
+
|
|
1361
|
+
Inputs:
|
|
1362
|
+
- **input_x** (Tensor) - The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
1363
|
+
|
|
1364
|
+
Raises:
|
|
1365
|
+
TypeError: If `group` is not a str.
|
|
1366
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
1367
|
+
ValueError: If the local rank id of the calling process in the group
|
|
1368
|
+
is larger than the group's rank size.
|
|
1369
|
+
|
|
1370
|
+
Supported Platforms:
|
|
1371
|
+
``Ascend`` ``GPU``
|
|
1372
|
+
|
|
1373
|
+
Examples:
|
|
1374
|
+
.. note::
|
|
1375
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1376
|
+
|
|
1377
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1378
|
+
without any third-party or configuration file dependencies.
|
|
1379
|
+
Please see the `msrun start up
|
|
1380
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
1381
|
+
for more details.
|
|
1382
|
+
|
|
1383
|
+
This example should be run with 2 devices.
|
|
1384
|
+
|
|
1385
|
+
>>> import numpy as np
|
|
1386
|
+
>>> import mindspore.nn as nn
|
|
1387
|
+
>>> from mindspore.communication import init
|
|
1388
|
+
>>> from mindspore import Tensor
|
|
1389
|
+
>>> from mindspore import ops
|
|
1390
|
+
>>>
|
|
1391
|
+
>>> init()
|
|
1392
|
+
>>> class SendNet(nn.Cell):
|
|
1393
|
+
>>> def __init__(self):
|
|
1394
|
+
>>> super(SendNet, self).__init__()
|
|
1395
|
+
>>> self.depend = ops.Depend()
|
|
1396
|
+
>>> self.send = ops.Send(st_tag=0, dest_rank=8, group="hccl_world_group")
|
|
1397
|
+
>>>
|
|
1398
|
+
>>> def construct(self, x):
|
|
1399
|
+
>>> out = self.depend(x, self.send(x))
|
|
1400
|
+
>>> return out
|
|
1401
|
+
>>>
|
|
1402
|
+
>>> input_ = Tensor(np.ones([2, 8]).astype(np.float32))
|
|
1403
|
+
>>> net = Net()
|
|
1404
|
+
>>> output = net(input_)
|
|
1405
|
+
|
|
1406
|
+
Tutorial Examples:
|
|
1407
|
+
- `Distributed Set Communication Primitives - Send
|
|
1408
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#send>`_
|
|
1409
|
+
|
|
1410
|
+
"""
|
|
1411
|
+
|
|
1412
|
+
@prim_attr_register
|
|
1413
|
+
def __init__(self, sr_tag, dest_rank, group=GlobalComm.WORLD_COMM_GROUP, group_back=GlobalComm.WORLD_COMM_GROUP):
|
|
1414
|
+
self.rank = dest_rank
|
|
1415
|
+
self.sr_tag = sr_tag
|
|
1416
|
+
self.group = _get_group(group)
|
|
1417
|
+
self.add_prim_attr("no_eliminate", True)
|
|
1418
|
+
|
|
1419
|
+
def infer_shape(self, x_shape):
|
|
1420
|
+
self.add_prim_attr("shape", x_shape)
|
|
1421
|
+
return x_shape
|
|
1422
|
+
|
|
1423
|
+
def infer_dtype(self, x_dtype):
|
|
1424
|
+
return x_dtype
|
|
1425
|
+
|
|
1426
|
+
|
|
1427
|
+
class Receive(PrimitiveWithInfer):
|
|
1428
|
+
"""
|
|
1429
|
+
Receive tensors from src_rank.
|
|
1430
|
+
|
|
1431
|
+
Note:
|
|
1432
|
+
Send and Receive must be used in combination and have same sr_tag.
|
|
1433
|
+
|
|
1434
|
+
Args:
|
|
1435
|
+
sr_tag (int): A required integer identifying the send/recv message tag. The message will
|
|
1436
|
+
will be send by the Send op with the same "sr_tag".
|
|
1437
|
+
src_rank (int): A required integer identifying the source rank.
|
|
1438
|
+
shape (list[int]): A required list identifying the shape of the tensor to be received.
|
|
1439
|
+
dtype (Type): A required Type identifying the type of the tensor to be received. The supported types:
|
|
1440
|
+
int8/int16/int32/float16/float32.
|
|
1441
|
+
group (str, optional): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1442
|
+
group_back (str, optional): The communication group for backpropagation.
|
|
1443
|
+
Default: ``GlobalComm.WORLD_COMM_GROUP``.
|
|
1444
|
+
|
|
1445
|
+
Outputs:
|
|
1446
|
+
Tensor, output has the same shape as the Tensor sent by `Send` operation.
|
|
1447
|
+
|
|
1448
|
+
Raises:
|
|
1449
|
+
TypeError: If `group` is not a str.
|
|
1450
|
+
RuntimeError: If device target is invalid, or backend is invalid, or distributed initialization fails.
|
|
1451
|
+
ValueError: If the local rank id of the calling process in the group
|
|
1452
|
+
is larger than the group's rank size.
|
|
1453
|
+
|
|
1454
|
+
Supported Platforms:
|
|
1455
|
+
``Ascend`` ``GPU``
|
|
1456
|
+
|
|
1457
|
+
Examples:
|
|
1458
|
+
.. note::
|
|
1459
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1460
|
+
|
|
1461
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1462
|
+
without any third-party or configuration file dependencies.
|
|
1463
|
+
Please see the `msrun start up
|
|
1464
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
1465
|
+
for more details.
|
|
1466
|
+
|
|
1467
|
+
This example should be run with 2 devices.
|
|
1468
|
+
|
|
1469
|
+
>>> import numpy as np
|
|
1470
|
+
>>> import mindspore.nn as nn
|
|
1471
|
+
>>> from mindspore.communication import init
|
|
1472
|
+
>>> from mindspore import Tensor
|
|
1473
|
+
>>> from mindspore import ops
|
|
1474
|
+
>>>
|
|
1475
|
+
>>> init()
|
|
1476
|
+
>>> class ReceiveNet(nn.Cell):
|
|
1477
|
+
>>> def __init__(self):
|
|
1478
|
+
>>> super(ReceiveNet, self).__init__()
|
|
1479
|
+
>>> self.recv = ops.Receive(sr_tag=0, src_rank=0, shape=[2, 8], dtype=ms.float32,
|
|
1480
|
+
>>> group="hccl_world_group")
|
|
1481
|
+
>>>
|
|
1482
|
+
>>> def construct(self):
|
|
1483
|
+
>>> out = self.recv()
|
|
1484
|
+
>>> return out
|
|
1485
|
+
>>>
|
|
1486
|
+
>>> net = Net()
|
|
1487
|
+
>>> output = net()
|
|
1488
|
+
|
|
1489
|
+
Tutorial Examples:
|
|
1490
|
+
- `Distributed Set Communication Primitives - Receive
|
|
1491
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#receive>`_
|
|
1492
|
+
|
|
1493
|
+
"""
|
|
1494
|
+
|
|
1495
|
+
@prim_attr_register
|
|
1496
|
+
def __init__(self, sr_tag, src_rank, shape, dtype, group=GlobalComm.WORLD_COMM_GROUP,
|
|
1497
|
+
group_back=GlobalComm.WORLD_COMM_GROUP):
|
|
1498
|
+
self.rank = src_rank
|
|
1499
|
+
self.tag = sr_tag
|
|
1500
|
+
self.shape = shape
|
|
1501
|
+
self.dtype = dtype
|
|
1502
|
+
self.group = _get_group(group)
|
|
1503
|
+
self.add_prim_attr("no_eliminate", True)
|
|
1504
|
+
valid_type = [mstype.float16, mstype.float32, mstype.float64, mstype.bfloat16,
|
|
1505
|
+
mstype.int8, mstype.int16, mstype.int32, mstype.int64,
|
|
1506
|
+
mstype.uint8, mstype.uint16, mstype.uint32, mstype.uint64]
|
|
1507
|
+
args = {"dtype": dtype}
|
|
1508
|
+
validator.check_scalar_or_tensor_types_same(args, valid_type, self.name)
|
|
1509
|
+
|
|
1510
|
+
def infer_shape(self, x_shape=None):
|
|
1511
|
+
return self.get_attr_dict()['shape']
|
|
1512
|
+
|
|
1513
|
+
def infer_dtype(self, x_dtype=None):
|
|
1514
|
+
return self.get_attr_dict()['dtype']
|
|
1515
|
+
|
|
1516
|
+
|
|
1060
1517
|
class _MirrorOperator(PrimitiveWithInfer):
|
|
1061
1518
|
"""
|
|
1062
1519
|
Auto parallel virtual operator. Do nothing in forward, do all reduce and mean in backward. It is only for
|
|
@@ -1306,8 +1763,223 @@ class _GetTensorSlice(PrimitiveWithInfer):
|
|
|
1306
1763
|
"""Initialize _GetTensorSlice."""
|
|
1307
1764
|
self.add_prim_attr('order_enforce_skip', True)
|
|
1308
1765
|
|
|
1309
|
-
def infer_value(self, x, dev_mat, tensor_map):
|
|
1766
|
+
def infer_value(self, x, dev_mat, tensor_map, slice_shape, full_shape):
|
|
1310
1767
|
from mindspore.parallel._tensor import _load_tensor
|
|
1311
1768
|
validator.check_value_type("dev_mat", dev_mat, [tuple], self.name)
|
|
1312
1769
|
validator.check_value_type("tensor_map", tensor_map, [tuple], self.name)
|
|
1313
|
-
|
|
1770
|
+
tensor_slice = _load_tensor(x, dev_mat, tensor_map, full_shape)
|
|
1771
|
+
if tensor_slice.shape != slice_shape:
|
|
1772
|
+
tensor_slice = tensor_slice.reshape(slice_shape)
|
|
1773
|
+
return Tensor(tensor_slice, x.dtype)
|
|
1774
|
+
|
|
1775
|
+
|
|
1776
|
+
class BatchISendIRecv(PrimitiveWithInfer):
|
|
1777
|
+
"""
|
|
1778
|
+
Batch send and recv tensors asynchronously.
|
|
1779
|
+
|
|
1780
|
+
Note:
|
|
1781
|
+
- The ``isend`` and ``irecv`` in ``op_types`` between ranks need to match each other.
|
|
1782
|
+
- ``isend`` and ``irecv`` in a batch can only be used in the same communication group.
|
|
1783
|
+
|
|
1784
|
+
Args:
|
|
1785
|
+
op_types(Union[tuple[str], list[str]]): "isend" or "irecv" to indicate the order and number of communication.
|
|
1786
|
+
remote_ranks(Union[tuple[int], list[int]]): src or dst rank that matches the op_types.
|
|
1787
|
+
receive_shapes(Union[tuple[int], list[int]]): receive tensor shapes that matches "irecv" in op_types.
|
|
1788
|
+
receive_types(Union[tuple[mindspore.dtype], list[mindspore.dtype]]): receive tensor dtype
|
|
1789
|
+
that matches "irecv" in op_types.
|
|
1790
|
+
group (str): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``, which
|
|
1791
|
+
means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
|
|
1792
|
+
|
|
1793
|
+
Inputs:
|
|
1794
|
+
- **input_x** (Union[tuple[Tensor], list[Tensor], tuple(None)]) -
|
|
1795
|
+
The shape of tensor is :math:`(x_1, x_2, ..., x_R)`.
|
|
1796
|
+
|
|
1797
|
+
Outputs:
|
|
1798
|
+
tuple(Tensor). Output tensors is corresponding to ``op_types``:
|
|
1799
|
+
At ``"isend"`` position, output tensor is a fake tensor with scalar, which has no meaning.
|
|
1800
|
+
At ``"irecv"`` position, output tensor is a tensor received from remote end.
|
|
1801
|
+
|
|
1802
|
+
|
|
1803
|
+
Raises:
|
|
1804
|
+
TypeError: If ``group`` is not a str.
|
|
1805
|
+
TypeError: If ``op_types``, ``receive_shapes``, ``receive_dtypes``, ``remote_ranks`` are not tuple or list.
|
|
1806
|
+
ValueError: If the length of ``receive_shapes`` and ``receive_dtypes`` are not the same.
|
|
1807
|
+
ValueError: If the length of ``op_types`` and ``remote_ranks`` are not the same.
|
|
1808
|
+
RuntimeError: If the length of input tensors and ``"isend"`` count are not the same.
|
|
1809
|
+
|
|
1810
|
+
Supported Platforms:
|
|
1811
|
+
``Ascend``
|
|
1812
|
+
|
|
1813
|
+
Examples:
|
|
1814
|
+
.. note::
|
|
1815
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1816
|
+
|
|
1817
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1818
|
+
without any third-party or configuration file dependencies.
|
|
1819
|
+
|
|
1820
|
+
Please see the `msrun start up
|
|
1821
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
1822
|
+
for more details.
|
|
1823
|
+
|
|
1824
|
+
This example should be run with 2 devices.
|
|
1825
|
+
|
|
1826
|
+
>>> import numpy as np
|
|
1827
|
+
>>> import mindspore as ms
|
|
1828
|
+
>>> from mindspore import ops
|
|
1829
|
+
>>> import mindspore.nn as nn
|
|
1830
|
+
>>> from mindspore.communication import init, get_rank
|
|
1831
|
+
>>> from mindspore import Tensor
|
|
1832
|
+
>>>
|
|
1833
|
+
>>> init()
|
|
1834
|
+
>>> rank = get_rank()
|
|
1835
|
+
>>> class Net(nn.Cell):
|
|
1836
|
+
... def __init__(self):
|
|
1837
|
+
... super(Net, self).__init__()
|
|
1838
|
+
... if rank == 0:
|
|
1839
|
+
... remote_rank = [1, 1]
|
|
1840
|
+
... else:
|
|
1841
|
+
... remote_rank = [0, 0]
|
|
1842
|
+
... self.batchisendirecv = ops.BatchISendIRecv(("isend", "irecv"), remote_rank, [()], (ms.float32,))
|
|
1843
|
+
...
|
|
1844
|
+
... def construct(self, x):
|
|
1845
|
+
... if isinstance(x, Tensor):
|
|
1846
|
+
... x = (x,)
|
|
1847
|
+
... return self.batchisendirecv(x)
|
|
1848
|
+
...
|
|
1849
|
+
>>> send_x = Tensor(rank + 1).astype(ms.float32)
|
|
1850
|
+
>>> net = Net()
|
|
1851
|
+
>>> output = net(send_x)
|
|
1852
|
+
>>> print(output)
|
|
1853
|
+
rank 0:
|
|
1854
|
+
(Tensor(shape=[], dtype=Float32, value= 0), Tensor(shape=[], dtype=Float32, value= 2))
|
|
1855
|
+
rank 1:
|
|
1856
|
+
(Tensor(shape=[], dtype=Float32, value= 0), Tensor(shape=[], dtype=Float32, value= 1))
|
|
1857
|
+
|
|
1858
|
+
Tutorial Examples:
|
|
1859
|
+
- `Distributed Set Communication Primitives - BatchISendIRecv
|
|
1860
|
+
<https://www.mindspore.cn/docs/en/master/api_python/samples/ops/communicate_ops.html#allgather>`_
|
|
1861
|
+
|
|
1862
|
+
"""
|
|
1863
|
+
|
|
1864
|
+
@prim_attr_register
|
|
1865
|
+
def __init__(self, op_types, remote_ranks, receive_shapes=None,
|
|
1866
|
+
receive_dtypes=None, group=GlobalComm.WORLD_COMM_GROUP):
|
|
1867
|
+
if receive_shapes is None:
|
|
1868
|
+
receive_shapes = ()
|
|
1869
|
+
else:
|
|
1870
|
+
validator.check_value_type("receive_shapes", receive_shapes, [tuple, list], self.name)
|
|
1871
|
+
|
|
1872
|
+
if receive_dtypes is None:
|
|
1873
|
+
receive_dtypes = ()
|
|
1874
|
+
else:
|
|
1875
|
+
validator.check_value_type("receive_dtypes", receive_dtypes, [tuple, list], self.name)
|
|
1876
|
+
|
|
1877
|
+
validator.check_value_type("op_types", op_types, [tuple, list], self.name)
|
|
1878
|
+
validator.check_value_type("remote_ranks", remote_ranks, [tuple, list], self.name)
|
|
1879
|
+
|
|
1880
|
+
if len(receive_shapes) != len(receive_dtypes):
|
|
1881
|
+
raise ValueError("length of receive_shapes and receive_shapes must be the same, "
|
|
1882
|
+
f"but got receive_shapes: {len(receive_shapes)} "
|
|
1883
|
+
f" and receive_shapes: {receive_dtypes}")
|
|
1884
|
+
|
|
1885
|
+
if len(op_types) != len(remote_ranks):
|
|
1886
|
+
raise ValueError("length of op_types and remote_ranks must be the same.")
|
|
1887
|
+
|
|
1888
|
+
if group is None:
|
|
1889
|
+
group = GlobalComm.WORLD_COMM_GROUP
|
|
1890
|
+
self.add_prim_attr('group', group)
|
|
1891
|
+
self.add_prim_attr('op_types', op_types)
|
|
1892
|
+
self.add_prim_attr('remote_ranks', remote_ranks)
|
|
1893
|
+
self.add_prim_attr('receive_shapes', receive_shapes)
|
|
1894
|
+
self.add_prim_attr('receive_dtypes', receive_dtypes)
|
|
1895
|
+
self.add_prim_attr('no_eliminate', True)
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
class AlltoAllV(PrimitiveWithInfer):
|
|
1899
|
+
"""
|
|
1900
|
+
AllToAll which support uneven split.
|
|
1901
|
+
|
|
1902
|
+
Note:
|
|
1903
|
+
- Only support flatten tensor as input. input tensor should be flattened and
|
|
1904
|
+
concatenated before call this primitive.
|
|
1905
|
+
|
|
1906
|
+
Args:
|
|
1907
|
+
send_numel_list(Union[tuple[int], list[int]]): split numel to scatter to different remote rank.
|
|
1908
|
+
recv_numel_list(Union[tuple[int], list[int]]): split numel to gather from different remote rank.
|
|
1909
|
+
group (str): The communication group to work on. Default: ``GlobalComm.WORLD_COMM_GROUP``, which
|
|
1910
|
+
means ``"hccl_world_group"`` in Ascend, and ``"nccl_world_group"`` in GPU.
|
|
1911
|
+
TODO:
|
|
1912
|
+
|
|
1913
|
+
Inputs:
|
|
1914
|
+
- **input_x** (Tensor) - flatten tensor to scatter. The shape of tensor is :math:`(x_1)`.
|
|
1915
|
+
|
|
1916
|
+
Outputs:
|
|
1917
|
+
Tensor. flattened and concatenated tensor gather from remote ranks.
|
|
1918
|
+
If gather result is empty, it will return a Tensor with value 0, which has no actual meaning.
|
|
1919
|
+
|
|
1920
|
+
Raises:
|
|
1921
|
+
TypeError: If 'send_numel_list' or 'recv_numel_list' is not type of tuple and list.
|
|
1922
|
+
|
|
1923
|
+
Supported Platforms:
|
|
1924
|
+
``Ascend``
|
|
1925
|
+
|
|
1926
|
+
Examples:
|
|
1927
|
+
.. note::
|
|
1928
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
1929
|
+
|
|
1930
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
1931
|
+
without any third-party or configuration file dependencies.
|
|
1932
|
+
|
|
1933
|
+
Please see the `msrun start up
|
|
1934
|
+
<https://www.mindspore.cn/docs/zh-CN/master/model_train/parallel/msrun_launcher.html>`_
|
|
1935
|
+
for more details.
|
|
1936
|
+
|
|
1937
|
+
This example should be run with 2 devices.
|
|
1938
|
+
|
|
1939
|
+
>>> import numpy as np
|
|
1940
|
+
>>> import mindspore as ms
|
|
1941
|
+
>>> from mindspore import ops
|
|
1942
|
+
>>> import mindspore.nn as nn
|
|
1943
|
+
>>> from mindspore.communication import init, get_rank
|
|
1944
|
+
>>> from mindspore import Tensor
|
|
1945
|
+
>>>
|
|
1946
|
+
>>> init()
|
|
1947
|
+
>>> rank = get_rank()
|
|
1948
|
+
>>> class Net(nn.Cell):
|
|
1949
|
+
... def __init__(self):
|
|
1950
|
+
... super(Net, self).__init__()
|
|
1951
|
+
... if rank == 0:
|
|
1952
|
+
... self.all_to_all = ops.AlltoAllV([1, 2], [1, 2])
|
|
1953
|
+
... else:
|
|
1954
|
+
... self.all_to_all = ops.AlltoAllV([2, 1], [2, 1])
|
|
1955
|
+
...
|
|
1956
|
+
... def construct(self, x):
|
|
1957
|
+
... return self.all_to_all(x)
|
|
1958
|
+
...
|
|
1959
|
+
>>> if rank == 0:
|
|
1960
|
+
>>> send_tensor = Tensor([0, 1, 2.])
|
|
1961
|
+
>>> elif rank == 1:
|
|
1962
|
+
>>> send_tensor = Tensor([3, 4, 5.])
|
|
1963
|
+
>>> net = Net()
|
|
1964
|
+
>>> output = net(send_tensor)
|
|
1965
|
+
>>> print(output)
|
|
1966
|
+
rank 0:
|
|
1967
|
+
[0. 3. 4]
|
|
1968
|
+
rank 1:
|
|
1969
|
+
[1. 2. 5]
|
|
1970
|
+
|
|
1971
|
+
"""
|
|
1972
|
+
|
|
1973
|
+
@prim_attr_register
|
|
1974
|
+
def __init__(self, send_numel_list, recv_numel_list, group=None, split_sizes_empty=False):
|
|
1975
|
+
validator.check_value_type("send_numel_list", send_numel_list, [tuple, list], self.name)
|
|
1976
|
+
validator.check_value_type("recv_numel_list", recv_numel_list, [tuple, list], self.name)
|
|
1977
|
+
self.group = GlobalComm.WORLD_COMM_GROUP if group is None else _get_group(group)
|
|
1978
|
+
self.send_numel_list = send_numel_list
|
|
1979
|
+
self.recv_numel_list = recv_numel_list
|
|
1980
|
+
self.split_sizes_empty = split_sizes_empty
|
|
1981
|
+
self.rank_size = get_group_size(self.group)
|
|
1982
|
+
|
|
1983
|
+
self.add_prim_attr('group', self.group)
|
|
1984
|
+
self.add_prim_attr('send_numel_list', send_numel_list)
|
|
1985
|
+
self.add_prim_attr('recv_numel_list', recv_numel_list)
|