mindspore 2.1.0__cp37-cp37m-manylinux1_x86_64.whl → 2.2.10__cp37-cp37m-manylinux1_x86_64.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/__init__.py +4 -1
- mindspore/_akg/akg/build_module.py +5 -6
- mindspore/_akg/akg/composite/build_module.py +46 -19
- mindspore/_akg/akg/composite/split_stitch.py +10 -11
- mindspore/_akg/akg/ms/info_version_adapt.py +67 -1
- mindspore/_akg/akg/tvm/api.py +4 -3
- mindspore/_akg/akg/tvm/autotvm/__init__.py +1 -2
- mindspore/_akg/akg/tvm/autotvm/graph_tuner/base_graph_tuner.py +1 -5
- mindspore/_akg/akg/tvm/autotvm/measure/__init__.py +1 -1
- mindspore/_akg/akg/tvm/autotvm/measure/measure.py +1 -10
- mindspore/_akg/akg/tvm/autotvm/measure/measure_methods.py +1 -372
- mindspore/_akg/akg/tvm/build_module.py +16 -1
- mindspore/_akg/akg/tvm/contrib/graph_runtime.py +0 -53
- mindspore/_akg/akg/tvm/hybrid/parser.py +7 -6
- mindspore/_akg/akg/tvm/ir_builder.py +1 -1
- mindspore/_akg/akg/tvm/module.py +1 -2
- mindspore/_akg/akg/tvm/stmt.py +2 -2
- mindspore/_akg/akg/utils/ascend_profilier/__init__.py +0 -0
- mindspore/_akg/akg/utils/ascend_profilier/cann_file_parser.py +76 -0
- mindspore/_akg/akg/utils/ascend_profilier/file_manager.py +56 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_bean.py +23 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_headers.py +8 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_parser.py +42 -0
- mindspore/_akg/akg/utils/ascend_profilier/path_manager.py +65 -0
- mindspore/_akg/akg/utils/composite_op_helper.py +9 -10
- mindspore/_akg/akg/utils/kernel_exec.py +98 -274
- mindspore/_akg/akg/utils/result_analysis.py +4 -24
- mindspore/_akg/akg/utils/tbe_codegen_utils.py +219 -0
- mindspore/_akg/akg/utils/util.py +38 -0
- mindspore/_c_dataengine.cpython-37m-x86_64-linux-gnu.so +0 -0
- mindspore/_c_expression.cpython-37m-x86_64-linux-gnu.so +0 -0
- mindspore/_c_mindrecord.cpython-37m-x86_64-linux-gnu.so +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -1
- mindspore/_checkparam.py +23 -29
- mindspore/_extends/graph_kernel/__init__.py +0 -1
- mindspore/_extends/graph_kernel/model/graph_split.py +84 -76
- mindspore/_extends/graph_kernel/model/model_builder.py +9 -50
- mindspore/_extends/graph_kernel/splitter.py +4 -11
- mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +122 -15
- mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +84 -67
- mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +4 -2
- mindspore/_extends/parallel_compile/akg_compiler/util.py +10 -7
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +2 -2
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +6 -5
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +1 -1
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -1
- mindspore/_extends/parse/__init__.py +12 -15
- mindspore/_extends/parse/namespace.py +7 -33
- mindspore/_extends/parse/parser.py +61 -71
- mindspore/_extends/parse/resources.py +1 -1
- mindspore/_extends/parse/standard_method.py +74 -104
- mindspore/_extends/parse/trope.py +1 -1
- mindspore/_extends/remote/kernel_build_server.py +25 -7
- mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
- mindspore/_install_custom.py +43 -0
- mindspore/_mindspore_offline_debug.cpython-37m-x86_64-linux-gnu.so +0 -0
- mindspore/amp.py +47 -11
- mindspore/bin/cache_admin +0 -0
- mindspore/bin/cache_server +0 -0
- mindspore/boost/boost.py +1 -8
- mindspore/boost/boost_cell_wrapper.py +3 -2
- mindspore/boost/grad_accumulation.py +1 -1
- mindspore/boost/group_loss_scale_manager.py +8 -7
- mindspore/common/__init__.py +5 -3
- mindspore/common/_jit_fallback_utils.py +6 -0
- mindspore/common/_register_for_adapter.py +2 -0
- mindspore/common/_register_for_tensor.py +2 -2
- mindspore/common/_stub_tensor.py +13 -0
- mindspore/common/_utils.py +13 -0
- mindspore/common/api.py +174 -259
- mindspore/common/auto_dynamic_shape.py +494 -0
- mindspore/common/dtype.py +18 -11
- mindspore/common/dump.py +6 -4
- mindspore/common/initializer.py +14 -14
- mindspore/common/jit_config.py +33 -15
- mindspore/common/lazy_inline.py +126 -7
- mindspore/common/mindir_util.py +101 -0
- mindspore/common/parameter.py +51 -41
- mindspore/common/seed.py +4 -4
- mindspore/common/sparse_tensor.py +13 -14
- mindspore/common/tensor.py +243 -165
- mindspore/communication/__init__.py +7 -4
- mindspore/communication/_comm_helper.py +83 -4
- mindspore/communication/management.py +152 -84
- mindspore/config/op_info.config +14 -3
- mindspore/config/super_bar_config.json +4 -2
- mindspore/context.py +152 -61
- mindspore/dataset/__init__.py +5 -5
- mindspore/dataset/audio/__init__.py +2 -2
- mindspore/dataset/audio/transforms.py +52 -52
- mindspore/dataset/callback/ds_callback.py +16 -2
- mindspore/dataset/core/config.py +68 -51
- mindspore/dataset/engine/cache_client.py +28 -5
- mindspore/dataset/engine/datasets.py +250 -112
- mindspore/dataset/engine/datasets_audio.py +43 -211
- mindspore/dataset/engine/datasets_standard_format.py +16 -35
- mindspore/dataset/engine/datasets_text.py +43 -67
- mindspore/dataset/engine/datasets_user_defined.py +86 -100
- mindspore/dataset/engine/datasets_vision.py +219 -1029
- mindspore/dataset/engine/iterators.py +11 -4
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +4 -0
- mindspore/dataset/engine/obs/util.py +3 -0
- mindspore/dataset/engine/samplers.py +1 -1
- mindspore/dataset/engine/validators.py +19 -5
- mindspore/dataset/text/__init__.py +3 -3
- mindspore/dataset/text/transforms.py +101 -127
- mindspore/dataset/text/utils.py +205 -138
- mindspore/dataset/transforms/__init__.py +1 -1
- mindspore/dataset/transforms/py_transforms_util.py +40 -12
- mindspore/dataset/transforms/transforms.py +95 -40
- mindspore/dataset/utils/browse_dataset.py +8 -2
- mindspore/dataset/utils/line_reader.py +17 -19
- mindspore/dataset/vision/__init__.py +3 -3
- mindspore/dataset/vision/c_transforms.py +6 -3
- mindspore/dataset/vision/transforms.py +409 -287
- mindspore/dataset/vision/utils.py +13 -14
- mindspore/dataset/vision/validators.py +11 -1
- mindspore/experimental/map_parameter.py +14 -0
- mindspore/{nn/optim_ex → experimental/optim}/__init__.py +30 -29
- mindspore/{nn/optim_ex → experimental/optim}/adam.py +60 -67
- mindspore/{nn/optim_ex → experimental/optim}/adamw.py +181 -203
- mindspore/experimental/optim/lr_scheduler.py +1427 -0
- mindspore/{nn/optim_ex → experimental/optim}/optimizer.py +252 -259
- mindspore/{nn/optim_ex → experimental/optim}/sgd.py +147 -152
- mindspore/gen_ops.py +273 -0
- mindspore/include/OWNERS +0 -1
- mindspore/include/api/data_type.h +2 -1
- mindspore/include/api/graph.h +0 -15
- mindspore/include/api/kernel.h +2 -0
- mindspore/include/api/kernel_api.h +37 -12
- mindspore/include/api/model.h +17 -14
- mindspore/include/api/status.h +8 -3
- mindspore/include/api/types.h +37 -4
- mindspore/include/c_api/ms/abstract.h +67 -0
- mindspore/include/c_api/ms/attribute.h +197 -0
- mindspore/include/c_api/ms/base/handle_types.h +43 -0
- mindspore/include/c_api/ms/base/macros.h +32 -0
- mindspore/include/c_api/ms/base/status.h +33 -0
- mindspore/include/c_api/ms/base/types.h +282 -0
- mindspore/include/c_api/ms/context.h +102 -0
- mindspore/include/c_api/ms/graph.h +160 -0
- mindspore/include/c_api/ms/node.h +606 -0
- mindspore/include/c_api/ms/tensor.h +161 -0
- mindspore/include/c_api/ms/value.h +84 -0
- mindspore/include/dataset/constants.h +6 -5
- mindspore/include/dataset/execute.h +23 -13
- mindspore/include/dataset/text.h +26 -26
- mindspore/include/dataset/transforms.h +13 -13
- mindspore/include/dataset/vision.h +60 -60
- mindspore/include/dataset/vision_ascend.h +5 -6
- mindspore/include/dataset/vision_lite.h +17 -17
- mindspore/include/mindapi/base/type_id.h +1 -0
- mindspore/include/mindapi/base/types.h +1 -0
- mindspore/lib/libdnnl.so.2 +0 -0
- mindspore/lib/libjemalloc.so.2 +0 -0
- mindspore/lib/libmindspore.so +0 -0
- mindspore/lib/libmindspore_backend.so +0 -0
- mindspore/lib/libmindspore_common.so +0 -0
- mindspore/lib/libmindspore_core.so +0 -0
- mindspore/lib/libmindspore_glog.so.0 +0 -0
- mindspore/lib/libmindspore_gpr.so.15 +0 -0
- mindspore/lib/libmindspore_grpc++.so.1 +0 -0
- mindspore/lib/libmindspore_grpc.so.15 +0 -0
- mindspore/lib/libmindspore_shared_lib.so +0 -0
- mindspore/lib/libnnacl.so +0 -0
- mindspore/lib/libopencv_core.so.4.5 +0 -0
- mindspore/lib/libopencv_imgcodecs.so.4.5 +0 -0
- mindspore/lib/libopencv_imgproc.so.4.5 +0 -0
- mindspore/lib/libps_cache.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend310/aic-ascend310-ops-info.json +123 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend310p/aic-ascend310p-ops-info.json +123 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910/aic-ascend910-ops-info.json +158 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910b/aic-ascend910b-ops-info.json +37 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/add_dsl.py +46 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/add_tik.py +51 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +241 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/matmul_tik.py +212 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/add_dsl.py +46 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/add_tik.py +51 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +241 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/matmul_tik.py +212 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_proto/libop_proto.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_aicpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_cpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/config/cust_aicpu_kernel.json +8928 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_proto/libcust_op_proto.so +0 -0
- mindspore/lib/plugin/ascend/libakg.so +0 -0
- mindspore/lib/plugin/ascend/libascend_collective.so +0 -0
- mindspore/lib/plugin/ascend/libdvpp_utils.so +0 -0
- mindspore/lib/plugin/ascend/libhccl_plugin.so +0 -0
- mindspore/lib/plugin/ascend/libmindspore_aicpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/libmindspore_cpu_kernels.so +0 -0
- mindspore/lib/plugin/cpu/libakg.so +0 -0
- mindspore/lib/plugin/gpu/libcuda_ops.so.10 +0 -0
- mindspore/lib/plugin/gpu/libcuda_ops.so.11 +0 -0
- mindspore/lib/plugin/gpu10.1/libakg.so +0 -0
- mindspore/lib/plugin/gpu10.1/libnccl.so.2 +0 -0
- mindspore/lib/plugin/gpu11.1/libakg.so +0 -0
- mindspore/lib/plugin/gpu11.1/libnccl.so.2 +0 -0
- mindspore/lib/plugin/gpu11.6/libakg.so +0 -0
- mindspore/lib/plugin/gpu11.6/libnccl.so.2 +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.1 +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.2 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.10.1 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.11.1 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.11.6 +0 -0
- mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
- mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
- mindspore/nn/__init__.py +0 -2
- mindspore/nn/cell.py +313 -74
- mindspore/nn/dynamic_lr.py +21 -21
- mindspore/nn/layer/activation.py +22 -30
- mindspore/nn/layer/basic.py +15 -13
- mindspore/nn/layer/channel_shuffle.py +1 -1
- mindspore/nn/layer/container.py +271 -9
- mindspore/nn/layer/conv.py +323 -204
- mindspore/nn/layer/dense.py +8 -5
- mindspore/nn/layer/embedding.py +33 -27
- mindspore/nn/layer/flash_attention.py +141 -88
- mindspore/nn/layer/image.py +8 -6
- mindspore/nn/layer/math.py +16 -25
- mindspore/nn/layer/normalization.py +107 -66
- mindspore/nn/layer/padding.py +1 -1
- mindspore/nn/layer/pooling.py +131 -109
- mindspore/nn/layer/rnn_cells.py +27 -22
- mindspore/nn/layer/rnns.py +13 -16
- mindspore/nn/layer/thor_layer.py +1 -1
- mindspore/nn/layer/transformer.py +221 -154
- mindspore/nn/learning_rate_schedule.py +9 -1
- mindspore/nn/loss/loss.py +235 -174
- mindspore/nn/optim/ada_grad.py +2 -1
- mindspore/nn/optim/adadelta.py +1 -0
- mindspore/nn/optim/adafactor.py +2 -1
- mindspore/nn/optim/adam.py +7 -4
- mindspore/nn/optim/adamax.py +3 -2
- mindspore/nn/optim/adasum.py +2 -2
- mindspore/nn/optim/asgd.py +2 -3
- mindspore/nn/optim/ftrl.py +6 -5
- mindspore/nn/optim/lamb.py +7 -4
- mindspore/nn/optim/lars.py +1 -1
- mindspore/nn/optim/lazyadam.py +5 -3
- mindspore/nn/optim/momentum.py +2 -1
- mindspore/nn/optim/optimizer.py +53 -4
- mindspore/nn/optim/proximal_ada_grad.py +3 -4
- mindspore/nn/optim/rmsprop.py +4 -3
- mindspore/nn/optim/rprop.py +23 -12
- mindspore/nn/optim/sgd.py +26 -11
- mindspore/nn/optim/thor.py +9 -7
- mindspore/nn/probability/bijector/bijector.py +5 -5
- mindspore/nn/probability/bijector/power_transform.py +27 -27
- mindspore/nn/probability/bijector/softplus.py +3 -3
- mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -3
- mindspore/nn/probability/distribution/bernoulli.py +5 -5
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +7 -7
- mindspore/nn/probability/distribution/cauchy.py +0 -1
- mindspore/nn/probability/distribution/distribution.py +3 -3
- mindspore/nn/probability/distribution/gamma.py +3 -3
- mindspore/nn/probability/distribution/geometric.py +4 -4
- mindspore/nn/probability/distribution/gumbel.py +4 -4
- mindspore/nn/probability/distribution/log_normal.py +2 -2
- mindspore/nn/probability/distribution/logistic.py +2 -2
- mindspore/nn/probability/distribution/poisson.py +4 -4
- mindspore/nn/probability/distribution/transformed_distribution.py +3 -3
- mindspore/nn/probability/distribution/uniform.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +84 -34
- mindspore/nn/wrap/grad_reducer.py +8 -5
- mindspore/nn/wrap/loss_scale.py +105 -42
- mindspore/numpy/array_creations.py +1 -2
- mindspore/numpy/array_ops.py +3 -2
- mindspore/numpy/utils_const.py +5 -5
- mindspore/offline_debug/convert_async.py +2 -2
- mindspore/ops/_grad_experimental/__init__.py +0 -5
- mindspore/ops/_grad_experimental/grad_array_ops.py +2 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +15 -2
- mindspore/ops/_grad_experimental/grad_debug_ops.py +0 -37
- mindspore/ops/_grad_experimental/grad_implementations.py +11 -1
- mindspore/ops/_grad_experimental/grad_inner_ops.py +2 -216
- mindspore/ops/_grad_experimental/grad_math_ops.py +19 -199
- mindspore/ops/_grad_experimental/grad_sparse.py +15 -0
- mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -3
- mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +165 -109
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +144 -86
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +172 -187
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +51 -57
- mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +6 -17
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +1 -1
- mindspore/ops/_op_impl/aicpu/__init__.py +14 -2
- mindspore/ops/_op_impl/aicpu/add.py +3 -3
- mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
- mindspore/ops/_op_impl/aicpu/eps.py +32 -0
- mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
- mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
- mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/multinomial.py +3 -3
- mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +15 -7
- mindspore/ops/_op_impl/aicpu/random_categorical.py +39 -19
- mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +5 -2
- mindspore/ops/_op_impl/aicpu/random_poisson.py +103 -52
- mindspore/ops/_op_impl/aicpu/random_shuffle.py +17 -15
- mindspore/ops/_op_impl/aicpu/{sparseaddmm.py → sparse_addmm.py} +2 -2
- mindspore/ops/_op_impl/aicpu/{sparsesparsemaximum.py → sparse_sparse_maximum.py} +4 -4
- mindspore/ops/_op_impl/aicpu/standard_laplace.py +5 -5
- mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -5
- mindspore/ops/_op_impl/aicpu/truncated_normal.py +9 -7
- mindspore/ops/_op_impl/aicpu/uniform.py +5 -3
- mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +8 -4
- mindspore/ops/_op_impl/aicpu/uniform_int.py +5 -5
- mindspore/ops/_op_impl/aicpu/uniform_real.py +4 -4
- mindspore/ops/_op_impl/tbe/__init__.py +4 -4
- mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
- mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
- mindspore/ops/_primitive_cache.py +1 -1
- mindspore/ops/_tracefunc.py +45 -13
- mindspore/ops/_utils/utils.py +6 -1
- mindspore/ops/_vmap/vmap_array_ops.py +3 -3
- mindspore/ops/_vmap/vmap_base.py +3 -3
- mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
- mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
- mindspore/ops/_vmap/vmap_math_ops.py +5 -2
- mindspore/ops/_vmap/vmap_nn_ops.py +61 -7
- mindspore/ops/arg_dtype_cast.py +54 -0
- mindspore/ops/composite/base.py +37 -10
- mindspore/ops/composite/math_ops.py +5 -4
- mindspore/ops/composite/multitype_ops/_compile_utils.py +275 -73
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +16 -9
- mindspore/ops/composite/multitype_ops/add_impl.py +43 -4
- mindspore/ops/composite/multitype_ops/getitem_impl.py +42 -4
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
- mindspore/ops/deprecated.py +304 -0
- mindspore/ops/function/__init__.py +4 -1
- mindspore/ops/function/array_func.py +174 -193
- mindspore/ops/function/clip_func.py +81 -13
- mindspore/ops/function/debug_func.py +1 -1
- mindspore/ops/function/grad/grad_func.py +18 -9
- mindspore/ops/function/image_func.py +10 -4
- mindspore/ops/function/linalg_func.py +5 -5
- mindspore/ops/function/math_func.py +575 -386
- mindspore/ops/function/nn_func.py +568 -260
- mindspore/ops/function/random_func.py +88 -57
- mindspore/ops/function/sparse_func.py +1 -1
- mindspore/ops/function/sparse_unary_func.py +14 -12
- mindspore/ops/function/vmap_func.py +6 -5
- mindspore/ops/functional.py +15 -10
- mindspore/ops/op_info_register.py +244 -25
- mindspore/ops/operations/__init__.py +28 -19
- mindspore/ops/operations/_grad_ops.py +72 -7
- mindspore/ops/operations/_inner_ops.py +350 -17
- mindspore/ops/operations/_quant_ops.py +4 -8
- mindspore/ops/operations/_sequence_ops.py +42 -0
- mindspore/ops/operations/array_ops.py +68 -282
- mindspore/ops/operations/comm_ops.py +107 -59
- mindspore/ops/operations/custom_ops.py +94 -70
- mindspore/ops/operations/debug_ops.py +8 -4
- mindspore/ops/operations/image_ops.py +18 -12
- mindspore/ops/operations/inner_ops.py +26 -3
- mindspore/ops/operations/math_ops.py +189 -141
- mindspore/ops/operations/nn_ops.py +794 -489
- mindspore/ops/operations/other_ops.py +0 -22
- mindspore/ops/operations/random_ops.py +53 -111
- mindspore/ops/operations/sparse_ops.py +3 -1
- mindspore/ops/primitive.py +24 -18
- mindspore/parallel/_auto_parallel_context.py +68 -8
- mindspore/parallel/_cost_model_context.py +2 -2
- mindspore/parallel/_offload_context.py +17 -3
- mindspore/parallel/_parallel_serialization.py +12 -5
- mindspore/parallel/_ps_context.py +12 -0
- mindspore/parallel/_tensor.py +18 -13
- mindspore/parallel/_transformer/layers.py +5 -3
- mindspore/parallel/_transformer/loss.py +1 -0
- mindspore/parallel/_transformer/moe.py +2 -2
- mindspore/parallel/_transformer/op_parallel_config.py +12 -1
- mindspore/parallel/_transformer/transformer.py +23 -3
- mindspore/parallel/_utils.py +11 -7
- mindspore/parallel/algo_parameter_config.py +85 -5
- mindspore/parallel/checkpoint_transform.py +19 -12
- mindspore/parallel/shard.py +21 -14
- mindspore/profiler/common/struct_type.py +3 -3
- mindspore/profiler/common/util.py +4 -2
- mindspore/profiler/envprofiling.py +1 -1
- mindspore/profiler/parser/aicpu_data_parser.py +5 -3
- mindspore/profiler/parser/ascend_flops_generator.py +2 -2
- mindspore/profiler/parser/ascend_fpbp_generator.py +1 -1
- mindspore/profiler/parser/ascend_hccl_generator.py +249 -12
- mindspore/profiler/parser/ascend_msprof_exporter.py +150 -255
- mindspore/profiler/parser/ascend_msprof_generator.py +204 -17
- mindspore/profiler/parser/ascend_op_generator.py +6 -6
- mindspore/profiler/parser/ascend_steptrace_generator.py +6 -4
- mindspore/profiler/parser/ascend_timeline_generator.py +14 -187
- mindspore/profiler/parser/base_timeline_generator.py +10 -8
- mindspore/profiler/parser/cpu_gpu_timeline_generator.py +16 -12
- mindspore/profiler/parser/flops_parser.py +15 -11
- mindspore/profiler/parser/framework_parser.py +38 -22
- mindspore/profiler/parser/hccl_parser.py +16 -12
- mindspore/profiler/parser/integrator.py +22 -11
- mindspore/profiler/parser/memory_usage_parser.py +2 -2
- mindspore/profiler/parser/minddata_analyzer.py +12 -14
- mindspore/profiler/parser/minddata_pipeline_parser.py +1 -1
- mindspore/profiler/parser/msadvisor_parser.py +8 -4
- mindspore/profiler/parser/op_intermediate_parser.py +5 -2
- mindspore/profiler/parser/optime_parser.py +1 -1
- mindspore/profiler/parser/profiler_info.py +21 -2
- mindspore/profiler/parser/step_trace_parser.py +11 -14
- mindspore/profiler/profiling.py +179 -89
- mindspore/rewrite/api/node.py +102 -19
- mindspore/rewrite/api/node_type.py +5 -1
- mindspore/rewrite/api/pattern_engine.py +1 -1
- mindspore/rewrite/api/scoped_value.py +9 -17
- mindspore/rewrite/api/symbol_tree.py +131 -47
- mindspore/rewrite/ast_helpers/__init__.py +2 -1
- mindspore/rewrite/ast_helpers/ast_finder.py +129 -0
- mindspore/rewrite/ast_helpers/ast_modifier.py +116 -104
- mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +93 -46
- mindspore/rewrite/common/rewrite_elog.py +5 -1
- mindspore/rewrite/namer.py +33 -24
- mindspore/rewrite/namespace.py +14 -5
- mindspore/{_extends/graph_kernel/expanders/complex → rewrite/node}/__init__.py +9 -9
- mindspore/rewrite/node/call_function.py +79 -0
- mindspore/rewrite/node/cell_container.py +135 -0
- mindspore/rewrite/node/control_flow.py +88 -0
- mindspore/rewrite/{node.py → node/node.py} +273 -234
- mindspore/rewrite/node/node_manager.py +254 -0
- mindspore/rewrite/{topological_manager.py → node/node_topological_manager.py} +13 -46
- mindspore/rewrite/parsers/arguments_parser.py +22 -21
- mindspore/rewrite/parsers/assign_parser.py +216 -221
- mindspore/rewrite/parsers/attribute_parser.py +9 -7
- mindspore/rewrite/parsers/class_def_parser.py +174 -113
- mindspore/rewrite/parsers/constant_parser.py +9 -6
- mindspore/rewrite/parsers/container_parser.py +9 -7
- mindspore/rewrite/parsers/for_parser.py +36 -15
- mindspore/rewrite/parsers/function_def_parser.py +24 -16
- mindspore/rewrite/parsers/if_parser.py +28 -24
- mindspore/rewrite/parsers/module_parser.py +196 -25
- mindspore/rewrite/{parser.py → parsers/parser.py} +4 -2
- mindspore/rewrite/{parser_register.py → parsers/parser_register.py} +1 -1
- mindspore/rewrite/parsers/return_parser.py +6 -6
- mindspore/rewrite/sparsify/sparse_transformer.py +12 -3
- mindspore/rewrite/sparsify/utils.py +1 -1
- mindspore/rewrite/symbol_tree.py +523 -578
- mindspore/rewrite/symbol_tree_builder.py +9 -193
- mindspore/rewrite/symbol_tree_dumper.py +2 -2
- mindspore/run_check/_check_version.py +6 -4
- mindspore/{ops/bprop_mindir → safeguard}/__init__.py +4 -3
- mindspore/safeguard/rewrite_obfuscation.py +541 -0
- mindspore/scipy/linalg.py +1 -1
- mindspore/scipy/optimize/minimize.py +7 -3
- mindspore/train/_utils.py +7 -3
- mindspore/train/amp.py +323 -123
- mindspore/train/anf_ir_pb2.py +14 -2
- mindspore/train/callback/_backup_and_restore.py +2 -12
- mindspore/train/callback/_callback.py +29 -4
- mindspore/train/callback/_checkpoint.py +23 -8
- mindspore/train/callback/_early_stop.py +2 -2
- mindspore/train/callback/_landscape.py +4 -4
- mindspore/train/callback/_loss_monitor.py +2 -2
- mindspore/train/callback/_on_request_exit.py +2 -2
- mindspore/train/callback/_reduce_lr_on_plateau.py +3 -4
- mindspore/train/callback/_summary_collector.py +15 -8
- mindspore/train/callback/_time_monitor.py +58 -5
- mindspore/train/data_sink.py +5 -11
- mindspore/train/dataset_helper.py +84 -57
- mindspore/train/loss_scale_manager.py +2 -2
- mindspore/train/metrics/__init__.py +3 -3
- mindspore/train/metrics/cosine_similarity.py +1 -1
- mindspore/train/metrics/hausdorff_distance.py +3 -2
- mindspore/train/metrics/mean_surface_distance.py +3 -2
- mindspore/train/metrics/metric.py +39 -19
- mindspore/train/metrics/roc.py +2 -2
- mindspore/train/metrics/root_mean_square_surface_distance.py +4 -3
- mindspore/train/mind_ir_pb2.py +85 -36
- mindspore/train/model.py +187 -47
- mindspore/train/serialization.py +487 -161
- mindspore/train/summary/_summary_adapter.py +1 -1
- mindspore/train/summary/_writer_pool.py +3 -2
- mindspore/train/summary/summary_record.py +37 -17
- mindspore/train/train_thor/convert_utils.py +3 -3
- mindspore/train/train_thor/dataset_helper.py +1 -1
- mindspore/version.py +1 -1
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/METADATA +6 -7
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/RECORD +488 -528
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/entry_points.txt +0 -1
- mindspore/_akg/akg/tvm/contrib/debugger/__init__.py +0 -16
- mindspore/_akg/akg/tvm/contrib/debugger/debug_result.py +0 -274
- mindspore/_akg/akg/tvm/contrib/debugger/debug_runtime.py +0 -259
- mindspore/_akg/akg/tvm/contrib/peak.py +0 -341
- mindspore/_akg/akg/tvm/contrib/rpc.py +0 -25
- mindspore/_akg/akg/tvm/contrib/xcode.py +0 -257
- mindspore/_akg/akg/tvm/exec/__init__.py +0 -17
- mindspore/_akg/akg/tvm/exec/autotvm_log_editor.py +0 -60
- mindspore/_akg/akg/tvm/exec/measure_peak.py +0 -48
- mindspore/_akg/akg/tvm/exec/query_rpc_tracker.py +0 -48
- mindspore/_akg/akg/tvm/exec/rpc_proxy.py +0 -98
- mindspore/_akg/akg/tvm/exec/rpc_server.py +0 -88
- mindspore/_akg/akg/tvm/exec/rpc_tracker.py +0 -62
- mindspore/_akg/akg/tvm/rpc/__init__.py +0 -29
- mindspore/_akg/akg/tvm/rpc/base.py +0 -182
- mindspore/_akg/akg/tvm/rpc/client.py +0 -436
- mindspore/_akg/akg/tvm/rpc/proxy.py +0 -595
- mindspore/_akg/akg/tvm/rpc/server.py +0 -413
- mindspore/_akg/akg/tvm/rpc/tornado_util.py +0 -121
- mindspore/_akg/akg/tvm/rpc/tracker.py +0 -431
- mindspore/_extends/graph_kernel/expander.py +0 -80
- mindspore/_extends/graph_kernel/expanders/__init__.py +0 -54
- mindspore/_extends/graph_kernel/expanders/_utils.py +0 -269
- mindspore/_extends/graph_kernel/expanders/addn.py +0 -33
- mindspore/_extends/graph_kernel/expanders/batchnorm.py +0 -152
- mindspore/_extends/graph_kernel/expanders/batchnorm_grad.py +0 -105
- mindspore/_extends/graph_kernel/expanders/clip_by_norm_no_div_sum.py +0 -33
- mindspore/_extends/graph_kernel/expanders/complex/abs.py +0 -30
- mindspore/_extends/graph_kernel/expanders/complex/add.py +0 -44
- mindspore/_extends/graph_kernel/expanders/complex/div.py +0 -62
- mindspore/_extends/graph_kernel/expanders/complex/mul.py +0 -52
- mindspore/_extends/graph_kernel/expanders/complex/real_div.py +0 -62
- mindspore/_extends/graph_kernel/expanders/complex/sub.py +0 -45
- mindspore/_extends/graph_kernel/expanders/conv2d.py +0 -200
- mindspore/_extends/graph_kernel/expanders/dropout_grad.py +0 -30
- mindspore/_extends/graph_kernel/expanders/equal_count.py +0 -50
- mindspore/_extends/graph_kernel/expanders/erfc.py +0 -35
- mindspore/_extends/graph_kernel/expanders/expand_dims.py +0 -50
- mindspore/_extends/graph_kernel/expanders/fused_adam.py +0 -44
- mindspore/_extends/graph_kernel/expanders/fused_adam_weight_decay.py +0 -47
- mindspore/_extends/graph_kernel/expanders/fused_mul_add.py +0 -28
- mindspore/_extends/graph_kernel/expanders/gelu_grad.py +0 -70
- mindspore/_extends/graph_kernel/expanders/gkdropout.py +0 -40
- mindspore/_extends/graph_kernel/expanders/identity.py +0 -25
- mindspore/_extends/graph_kernel/expanders/layernorm.py +0 -93
- mindspore/_extends/graph_kernel/expanders/layernorm_grad.py +0 -113
- mindspore/_extends/graph_kernel/expanders/logsoftmax.py +0 -46
- mindspore/_extends/graph_kernel/expanders/logsoftmax_grad.py +0 -36
- mindspore/_extends/graph_kernel/expanders/matmul.py +0 -80
- mindspore/_extends/graph_kernel/expanders/maximum_grad.py +0 -59
- mindspore/_extends/graph_kernel/expanders/minimum_grad.py +0 -80
- mindspore/_extends/graph_kernel/expanders/oneslike.py +0 -26
- mindspore/_extends/graph_kernel/expanders/reduce_mean.py +0 -43
- mindspore/_extends/graph_kernel/expanders/relu_grad.py +0 -32
- mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits.py +0 -41
- mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits_grad.py +0 -35
- mindspore/_extends/graph_kernel/expanders/sigmoid_grad.py +0 -31
- mindspore/_extends/graph_kernel/expanders/slice.py +0 -35
- mindspore/_extends/graph_kernel/expanders/softmax_cross_entropy_with_logits.py +0 -42
- mindspore/_extends/graph_kernel/expanders/softmax_grad_ext.py +0 -41
- mindspore/_extends/graph_kernel/expanders/softsign.py +0 -28
- mindspore/_extends/graph_kernel/expanders/sqrt_grad.py +0 -29
- mindspore/_extends/graph_kernel/expanders/square_sum_all.py +0 -44
- mindspore/_extends/graph_kernel/expanders/square_sum_v1.py +0 -37
- mindspore/_extends/graph_kernel/expanders/squared_difference.py +0 -43
- mindspore/_extends/graph_kernel/expanders/tanh_grad.py +0 -31
- mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
- mindspore/dataset/datapreprocess/__init__.py +0 -20
- mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
- mindspore/include/api/net.h +0 -142
- mindspore/nn/lr_scheduler.py +0 -262
- mindspore/ops/_grad_experimental/grad_image_ops.py +0 -248
- mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -181
- mindspore/ops/_grad_experimental/grad_other_ops.py +0 -72
- mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
- mindspore/ops/_grad_experimental/grad_sequence_ops.py +0 -351
- mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
- mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
- mindspore/rewrite/node_visitor.py +0 -44
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/WHEEL +0 -0
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/top_level.txt +0 -0
|
@@ -1,413 +0,0 @@
|
|
|
1
|
-
# Licensed to the Apache Software Foundation (ASF) under one
|
|
2
|
-
# or more contributor license agreements. See the NOTICE file
|
|
3
|
-
# distributed with this work for additional information
|
|
4
|
-
# regarding copyright ownership. The ASF licenses this file
|
|
5
|
-
# to you under the Apache License, Version 2.0 (the
|
|
6
|
-
# "License"); you may not use this file except in compliance
|
|
7
|
-
# with the License. You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing,
|
|
12
|
-
# software distributed under the License is distributed on an
|
|
13
|
-
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
-
# KIND, either express or implied. See the License for the
|
|
15
|
-
# specific language governing permissions and limitations
|
|
16
|
-
# under the License.
|
|
17
|
-
"""RPC server implementation.
|
|
18
|
-
|
|
19
|
-
Note
|
|
20
|
-
----
|
|
21
|
-
Server is TCP based with the following protocol:
|
|
22
|
-
- Initial handshake to the peer
|
|
23
|
-
- [RPC_MAGIC, keysize(int32), key-bytes]
|
|
24
|
-
- The key is in format
|
|
25
|
-
- {server|client}:device-type[:random-key] [-timeout=timeout]
|
|
26
|
-
"""
|
|
27
|
-
# pylint: disable=invalid-name
|
|
28
|
-
|
|
29
|
-
from __future__ import absolute_import
|
|
30
|
-
|
|
31
|
-
import os
|
|
32
|
-
import ctypes
|
|
33
|
-
import socket
|
|
34
|
-
import select
|
|
35
|
-
import struct
|
|
36
|
-
import logging
|
|
37
|
-
import multiprocessing
|
|
38
|
-
import subprocess
|
|
39
|
-
import time
|
|
40
|
-
import sys
|
|
41
|
-
import signal
|
|
42
|
-
|
|
43
|
-
from .._ffi.function import register_func
|
|
44
|
-
from .._ffi.base import py_str
|
|
45
|
-
from .._ffi.libinfo import find_lib_path
|
|
46
|
-
from ..module import load as _load_module
|
|
47
|
-
from ..contrib import util
|
|
48
|
-
from . import base
|
|
49
|
-
from . base import TrackerCode
|
|
50
|
-
|
|
51
|
-
logger = logging.getLogger('RPCServer')
|
|
52
|
-
|
|
53
|
-
def _server_env(load_library, work_path=None):
|
|
54
|
-
"""Server environment function return temp dir"""
|
|
55
|
-
if work_path:
|
|
56
|
-
temp = work_path
|
|
57
|
-
else:
|
|
58
|
-
temp = util.tempdir()
|
|
59
|
-
|
|
60
|
-
# pylint: disable=unused-variable
|
|
61
|
-
@register_func("tvm.rpc.server.workpath")
|
|
62
|
-
def get_workpath(path):
|
|
63
|
-
return temp.relpath(path)
|
|
64
|
-
|
|
65
|
-
@register_func("tvm.rpc.server.load_module", override=True)
|
|
66
|
-
def load_module(file_name):
|
|
67
|
-
"""Load module from remote side."""
|
|
68
|
-
path = temp.relpath(file_name)
|
|
69
|
-
m = _load_module(path)
|
|
70
|
-
logger.info("load_module %s", path)
|
|
71
|
-
return m
|
|
72
|
-
|
|
73
|
-
libs = []
|
|
74
|
-
load_library = load_library.split(":") if load_library else []
|
|
75
|
-
for file_name in load_library:
|
|
76
|
-
file_name = find_lib_path(file_name)[0]
|
|
77
|
-
libs.append(ctypes.CDLL(file_name, ctypes.RTLD_GLOBAL))
|
|
78
|
-
logger.info("Load additional library %s", file_name)
|
|
79
|
-
temp.libs = libs
|
|
80
|
-
return temp
|
|
81
|
-
|
|
82
|
-
def _serve_loop(sock, addr, load_library, work_path=None):
|
|
83
|
-
"""Server loop"""
|
|
84
|
-
sockfd = sock.fileno()
|
|
85
|
-
temp = _server_env(load_library, work_path)
|
|
86
|
-
base._ServerLoop(sockfd)
|
|
87
|
-
if not work_path:
|
|
88
|
-
temp.remove()
|
|
89
|
-
logger.info("Finish serving %s", addr)
|
|
90
|
-
|
|
91
|
-
def _parse_server_opt(opts):
|
|
92
|
-
# parse client options
|
|
93
|
-
ret = {}
|
|
94
|
-
for kv in opts:
|
|
95
|
-
if kv.startswith("-timeout="):
|
|
96
|
-
ret["timeout"] = float(kv[9:])
|
|
97
|
-
return ret
|
|
98
|
-
|
|
99
|
-
def _listen_loop(sock, port, rpc_key, tracker_addr, load_library, custom_addr):
|
|
100
|
-
"""Listening loop of the server master."""
|
|
101
|
-
def _accept_conn(listen_sock, tracker_conn, ping_period=2):
|
|
102
|
-
"""Accept connection from the other places.
|
|
103
|
-
|
|
104
|
-
Parameters
|
|
105
|
-
----------
|
|
106
|
-
listen_sock: Socket
|
|
107
|
-
The socket used by listening process.
|
|
108
|
-
|
|
109
|
-
tracker_conn : connnection to tracker
|
|
110
|
-
Tracker connection
|
|
111
|
-
|
|
112
|
-
ping_period : float, optional
|
|
113
|
-
ping tracker every k seconds if no connection is accepted.
|
|
114
|
-
"""
|
|
115
|
-
old_keyset = set()
|
|
116
|
-
# Report resource to tracker
|
|
117
|
-
if tracker_conn:
|
|
118
|
-
matchkey = base.random_key(rpc_key + ":")
|
|
119
|
-
base.sendjson(tracker_conn,
|
|
120
|
-
[TrackerCode.PUT, rpc_key, (port, matchkey), custom_addr])
|
|
121
|
-
assert base.recvjson(tracker_conn) == TrackerCode.SUCCESS
|
|
122
|
-
else:
|
|
123
|
-
matchkey = rpc_key
|
|
124
|
-
|
|
125
|
-
unmatch_period_count = 0
|
|
126
|
-
unmatch_timeout = 4
|
|
127
|
-
# Wait until we get a valid connection
|
|
128
|
-
while True:
|
|
129
|
-
if tracker_conn:
|
|
130
|
-
trigger = select.select([listen_sock], [], [], ping_period)
|
|
131
|
-
if not listen_sock in trigger[0]:
|
|
132
|
-
base.sendjson(tracker_conn, [TrackerCode.GET_PENDING_MATCHKEYS])
|
|
133
|
-
pending_keys = base.recvjson(tracker_conn)
|
|
134
|
-
old_keyset.add(matchkey)
|
|
135
|
-
# if match key not in pending key set
|
|
136
|
-
# it means the key is acquired by a client but not used.
|
|
137
|
-
if matchkey not in pending_keys:
|
|
138
|
-
unmatch_period_count += 1
|
|
139
|
-
else:
|
|
140
|
-
unmatch_period_count = 0
|
|
141
|
-
# regenerate match key if key is acquired but not used for a while
|
|
142
|
-
if unmatch_period_count * ping_period > unmatch_timeout + ping_period:
|
|
143
|
-
logger.info("no incoming connections, regenerate key ...")
|
|
144
|
-
matchkey = base.random_key(rpc_key + ":", old_keyset)
|
|
145
|
-
base.sendjson(tracker_conn,
|
|
146
|
-
[TrackerCode.PUT, rpc_key, (port, matchkey),
|
|
147
|
-
custom_addr])
|
|
148
|
-
assert base.recvjson(tracker_conn) == TrackerCode.SUCCESS
|
|
149
|
-
unmatch_period_count = 0
|
|
150
|
-
continue
|
|
151
|
-
conn, addr = listen_sock.accept()
|
|
152
|
-
magic = struct.unpack("<i", base.recvall(conn, 4))[0]
|
|
153
|
-
if magic != base.RPC_MAGIC:
|
|
154
|
-
conn.close()
|
|
155
|
-
continue
|
|
156
|
-
keylen = struct.unpack("<i", base.recvall(conn, 4))[0]
|
|
157
|
-
key = py_str(base.recvall(conn, keylen))
|
|
158
|
-
arr = key.split()
|
|
159
|
-
expect_header = "client:" + matchkey
|
|
160
|
-
server_key = "server:" + rpc_key
|
|
161
|
-
if arr[0] != expect_header:
|
|
162
|
-
conn.sendall(struct.pack("<i", base.RPC_CODE_MISMATCH))
|
|
163
|
-
conn.close()
|
|
164
|
-
logger.warning("mismatch key from %s", addr)
|
|
165
|
-
continue
|
|
166
|
-
else:
|
|
167
|
-
conn.sendall(struct.pack("<i", base.RPC_CODE_SUCCESS))
|
|
168
|
-
conn.sendall(struct.pack("<i", len(server_key)))
|
|
169
|
-
conn.sendall(server_key.encode("utf-8"))
|
|
170
|
-
return conn, addr, _parse_server_opt(arr[1:])
|
|
171
|
-
|
|
172
|
-
# Server logic
|
|
173
|
-
tracker_conn = None
|
|
174
|
-
while True:
|
|
175
|
-
try:
|
|
176
|
-
# step 1: setup tracker and report to tracker
|
|
177
|
-
if tracker_addr and tracker_conn is None:
|
|
178
|
-
tracker_conn = base.connect_with_retry(tracker_addr)
|
|
179
|
-
tracker_conn.sendall(struct.pack("<i", base.RPC_TRACKER_MAGIC))
|
|
180
|
-
magic = struct.unpack("<i", base.recvall(tracker_conn, 4))[0]
|
|
181
|
-
if magic != base.RPC_TRACKER_MAGIC:
|
|
182
|
-
raise RuntimeError("%s is not RPC Tracker" % str(tracker_addr))
|
|
183
|
-
# report status of current queue
|
|
184
|
-
cinfo = {"key" : "server:" + rpc_key}
|
|
185
|
-
base.sendjson(tracker_conn,
|
|
186
|
-
[TrackerCode.UPDATE_INFO, cinfo])
|
|
187
|
-
assert base.recvjson(tracker_conn) == TrackerCode.SUCCESS
|
|
188
|
-
|
|
189
|
-
# step 2: wait for in-coming connections
|
|
190
|
-
conn, addr, opts = _accept_conn(sock, tracker_conn)
|
|
191
|
-
except (socket.error, IOError):
|
|
192
|
-
# retry when tracker is dropped
|
|
193
|
-
if tracker_conn:
|
|
194
|
-
tracker_conn.close()
|
|
195
|
-
tracker_conn = None
|
|
196
|
-
continue
|
|
197
|
-
except RuntimeError as exc:
|
|
198
|
-
raise exc
|
|
199
|
-
|
|
200
|
-
# step 3: serving
|
|
201
|
-
work_path = util.tempdir()
|
|
202
|
-
logger.info("connection from %s", addr)
|
|
203
|
-
server_proc = multiprocessing.Process(target=_serve_loop,
|
|
204
|
-
args=(conn, addr, load_library, work_path))
|
|
205
|
-
server_proc.deamon = True
|
|
206
|
-
server_proc.start()
|
|
207
|
-
# close from our side.
|
|
208
|
-
conn.close()
|
|
209
|
-
# wait until server process finish or timeout
|
|
210
|
-
server_proc.join(opts.get("timeout", None))
|
|
211
|
-
if server_proc.is_alive():
|
|
212
|
-
logger.info("Timeout in RPC session, kill..")
|
|
213
|
-
import psutil
|
|
214
|
-
parent = psutil.Process(server_proc.pid)
|
|
215
|
-
# terminate worker childs
|
|
216
|
-
for child in parent.children(recursive=True):
|
|
217
|
-
child.terminate()
|
|
218
|
-
# terminate the worker
|
|
219
|
-
server_proc.terminate()
|
|
220
|
-
work_path.remove()
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
def _connect_proxy_loop(addr, key, load_library):
|
|
224
|
-
key = "server:" + key
|
|
225
|
-
retry_count = 0
|
|
226
|
-
max_retry = 5
|
|
227
|
-
retry_period = 5
|
|
228
|
-
while True:
|
|
229
|
-
try:
|
|
230
|
-
sock = socket.socket(base.get_addr_family(addr), socket.SOCK_STREAM)
|
|
231
|
-
sock.connect(addr)
|
|
232
|
-
sock.sendall(struct.pack("<i", base.RPC_MAGIC))
|
|
233
|
-
sock.sendall(struct.pack("<i", len(key)))
|
|
234
|
-
sock.sendall(key.encode("utf-8"))
|
|
235
|
-
magic = struct.unpack("<i", base.recvall(sock, 4))[0]
|
|
236
|
-
if magic == base.RPC_CODE_DUPLICATE:
|
|
237
|
-
raise RuntimeError("key: %s has already been used in proxy" % key)
|
|
238
|
-
elif magic == base.RPC_CODE_MISMATCH:
|
|
239
|
-
logger.warning("RPCProxy do not have matching client key %s", key)
|
|
240
|
-
elif magic != base.RPC_CODE_SUCCESS:
|
|
241
|
-
raise RuntimeError("%s is not RPC Proxy" % str(addr))
|
|
242
|
-
keylen = struct.unpack("<i", base.recvall(sock, 4))[0]
|
|
243
|
-
remote_key = py_str(base.recvall(sock, keylen))
|
|
244
|
-
opts = _parse_server_opt(remote_key.split()[1:])
|
|
245
|
-
logger.info("connected to %s", str(addr))
|
|
246
|
-
process = multiprocessing.Process(
|
|
247
|
-
target=_serve_loop, args=(sock, addr, load_library))
|
|
248
|
-
process.deamon = True
|
|
249
|
-
process.start()
|
|
250
|
-
sock.close()
|
|
251
|
-
process.join(opts.get("timeout", None))
|
|
252
|
-
if process.is_alive():
|
|
253
|
-
logger.info("Timeout in RPC session, kill..")
|
|
254
|
-
process.terminate()
|
|
255
|
-
retry_count = 0
|
|
256
|
-
except (socket.error, IOError) as err:
|
|
257
|
-
retry_count += 1
|
|
258
|
-
logger.warning("Error encountered %s, retry in %g sec", str(err), retry_period)
|
|
259
|
-
if retry_count > max_retry:
|
|
260
|
-
raise RuntimeError("Maximum retry error: last error: %s" % str(err))
|
|
261
|
-
time.sleep(retry_period)
|
|
262
|
-
|
|
263
|
-
def _popen(cmd):
|
|
264
|
-
proc = subprocess.Popen(cmd,
|
|
265
|
-
stdout=subprocess.PIPE,
|
|
266
|
-
stderr=subprocess.STDOUT,
|
|
267
|
-
env=os.environ)
|
|
268
|
-
(out, _) = proc.communicate()
|
|
269
|
-
if proc.returncode != 0:
|
|
270
|
-
msg = "Server invoke error:\n"
|
|
271
|
-
msg += out
|
|
272
|
-
raise RuntimeError(msg)
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
class Server(object):
|
|
276
|
-
"""Start RPC server on a separate process.
|
|
277
|
-
|
|
278
|
-
This is a simple python implementation based on multi-processing.
|
|
279
|
-
It is also possible to implement a similar C based server with
|
|
280
|
-
TVM runtime which does not depend on the python.
|
|
281
|
-
|
|
282
|
-
Parameters
|
|
283
|
-
----------
|
|
284
|
-
host : str
|
|
285
|
-
The host url of the server.
|
|
286
|
-
|
|
287
|
-
port : int
|
|
288
|
-
The port to be bind to
|
|
289
|
-
|
|
290
|
-
port_end : int, optional
|
|
291
|
-
The end port to search
|
|
292
|
-
|
|
293
|
-
is_proxy : bool, optional
|
|
294
|
-
Whether the address specified is a proxy.
|
|
295
|
-
If this is true, the host and port actually corresponds to the
|
|
296
|
-
address of the proxy server.
|
|
297
|
-
|
|
298
|
-
use_popen : bool, optional
|
|
299
|
-
Whether to use Popen to start a fresh new process instead of fork.
|
|
300
|
-
This is recommended to switch on if we want to do local RPC demonstration
|
|
301
|
-
for GPU devices to avoid fork safety issues.
|
|
302
|
-
|
|
303
|
-
tracker_addr: Tuple (str, int) , optional
|
|
304
|
-
The address of RPC Tracker in tuple(host, ip) format.
|
|
305
|
-
If is not None, the server will register itself to the tracker.
|
|
306
|
-
|
|
307
|
-
key : str, optional
|
|
308
|
-
The key used to identify the device type in tracker.
|
|
309
|
-
|
|
310
|
-
load_library : str, optional
|
|
311
|
-
List of additional libraries to be loaded during execution.
|
|
312
|
-
|
|
313
|
-
custom_addr: str, optional
|
|
314
|
-
Custom IP Address to Report to RPC Tracker
|
|
315
|
-
|
|
316
|
-
silent: bool, optional
|
|
317
|
-
Whether run this server in silent mode.
|
|
318
|
-
"""
|
|
319
|
-
def __init__(self,
|
|
320
|
-
host,
|
|
321
|
-
port=9091,
|
|
322
|
-
port_end=9199,
|
|
323
|
-
is_proxy=False,
|
|
324
|
-
use_popen=False,
|
|
325
|
-
tracker_addr=None,
|
|
326
|
-
key="",
|
|
327
|
-
load_library=None,
|
|
328
|
-
custom_addr=None,
|
|
329
|
-
silent=False):
|
|
330
|
-
try:
|
|
331
|
-
if base._ServerLoop is None:
|
|
332
|
-
raise RuntimeError("Please compile with USE_RPC=1")
|
|
333
|
-
except NameError:
|
|
334
|
-
raise RuntimeError("Please compile with USE_RPC=1")
|
|
335
|
-
self.host = host
|
|
336
|
-
self.port = port
|
|
337
|
-
self.libs = []
|
|
338
|
-
self.custom_addr = custom_addr
|
|
339
|
-
self.use_popen = use_popen
|
|
340
|
-
|
|
341
|
-
if silent:
|
|
342
|
-
logger.setLevel(logging.ERROR)
|
|
343
|
-
|
|
344
|
-
if use_popen:
|
|
345
|
-
cmd = [sys.executable,
|
|
346
|
-
"-m", "tvm.exec.rpc_server",
|
|
347
|
-
"--host=%s" % host,
|
|
348
|
-
"--port=%s" % port]
|
|
349
|
-
if tracker_addr:
|
|
350
|
-
assert key
|
|
351
|
-
cmd += ["--tracker=%s:%d" % tracker_addr,
|
|
352
|
-
"--key=%s" % key]
|
|
353
|
-
if load_library:
|
|
354
|
-
cmd += ["--load-library", load_library]
|
|
355
|
-
if custom_addr:
|
|
356
|
-
cmd += ["--custom-addr", custom_addr]
|
|
357
|
-
if silent:
|
|
358
|
-
cmd += ["--silent"]
|
|
359
|
-
|
|
360
|
-
# prexec_fn is not thread safe and may result in deadlock.
|
|
361
|
-
# python 3.2 introduced the start_new_session parameter as
|
|
362
|
-
# an alternative to the common use case of
|
|
363
|
-
# prexec_fn=os.setsid. Once the minimum version of python
|
|
364
|
-
# supported by TVM reaches python 3.2 this code can be
|
|
365
|
-
# rewritten in favour of start_new_session. In the
|
|
366
|
-
# interim, stop the pylint diagnostic.
|
|
367
|
-
#
|
|
368
|
-
# pylint: disable=subprocess-popen-preexec-fn
|
|
369
|
-
self.proc = subprocess.Popen(cmd, preexec_fn=os.setsid)
|
|
370
|
-
time.sleep(0.5)
|
|
371
|
-
elif not is_proxy:
|
|
372
|
-
sock = socket.socket(base.get_addr_family((host, port)), socket.SOCK_STREAM)
|
|
373
|
-
self.port = None
|
|
374
|
-
for my_port in range(port, port_end):
|
|
375
|
-
try:
|
|
376
|
-
sock.bind((host, my_port))
|
|
377
|
-
self.port = my_port
|
|
378
|
-
break
|
|
379
|
-
except socket.error as sock_err:
|
|
380
|
-
if sock_err.errno in [98, 48]:
|
|
381
|
-
continue
|
|
382
|
-
else:
|
|
383
|
-
raise sock_err
|
|
384
|
-
if not self.port:
|
|
385
|
-
raise ValueError("cannot bind to any port in [%d, %d)" % (port, port_end))
|
|
386
|
-
logger.info("bind to %s:%d", host, self.port)
|
|
387
|
-
sock.listen(1)
|
|
388
|
-
self.sock = sock
|
|
389
|
-
self.proc = multiprocessing.Process(
|
|
390
|
-
target=_listen_loop, args=(
|
|
391
|
-
self.sock, self.port, key, tracker_addr, load_library,
|
|
392
|
-
self.custom_addr))
|
|
393
|
-
self.proc.deamon = True
|
|
394
|
-
self.proc.start()
|
|
395
|
-
else:
|
|
396
|
-
self.proc = multiprocessing.Process(
|
|
397
|
-
target=_connect_proxy_loop, args=((host, port), key, load_library))
|
|
398
|
-
self.proc.deamon = True
|
|
399
|
-
self.proc.start()
|
|
400
|
-
|
|
401
|
-
def terminate(self):
|
|
402
|
-
"""Terminate the server process"""
|
|
403
|
-
if self.use_popen:
|
|
404
|
-
if self.proc:
|
|
405
|
-
os.killpg(self.proc.pid, signal.SIGTERM)
|
|
406
|
-
self.proc = None
|
|
407
|
-
else:
|
|
408
|
-
if self.proc:
|
|
409
|
-
self.proc.terminate()
|
|
410
|
-
self.proc = None
|
|
411
|
-
|
|
412
|
-
def __del__(self):
|
|
413
|
-
self.terminate()
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
# Licensed to the Apache Software Foundation (ASF) under one
|
|
2
|
-
# or more contributor license agreements. See the NOTICE file
|
|
3
|
-
# distributed with this work for additional information
|
|
4
|
-
# regarding copyright ownership. The ASF licenses this file
|
|
5
|
-
# to you under the Apache License, Version 2.0 (the
|
|
6
|
-
# "License"); you may not use this file except in compliance
|
|
7
|
-
# with the License. You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing,
|
|
12
|
-
# software distributed under the License is distributed on an
|
|
13
|
-
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
-
# KIND, either express or implied. See the License for the
|
|
15
|
-
# specific language governing permissions and limitations
|
|
16
|
-
# under the License.
|
|
17
|
-
"""Utilities used in tornado."""
|
|
18
|
-
|
|
19
|
-
import socket
|
|
20
|
-
import errno
|
|
21
|
-
from tornado import ioloop
|
|
22
|
-
|
|
23
|
-
class TCPHandler(object):
|
|
24
|
-
"""TCP socket handler backed tornado event loop.
|
|
25
|
-
|
|
26
|
-
Parameters
|
|
27
|
-
----------
|
|
28
|
-
sock : Socket
|
|
29
|
-
The TCP socket, will set it to non-blocking mode.
|
|
30
|
-
"""
|
|
31
|
-
def __init__(self, sock):
|
|
32
|
-
self._sock = sock
|
|
33
|
-
self._ioloop = ioloop.IOLoop.current()
|
|
34
|
-
self._sock.setblocking(0)
|
|
35
|
-
self._pending_write = []
|
|
36
|
-
self._signal_close = False
|
|
37
|
-
def _event_handler(_, events):
|
|
38
|
-
self._event_handler(events)
|
|
39
|
-
self._ioloop.add_handler(
|
|
40
|
-
self._sock.fileno(), _event_handler,
|
|
41
|
-
self._ioloop.READ | self._ioloop.ERROR)
|
|
42
|
-
|
|
43
|
-
def signal_close(self):
|
|
44
|
-
"""Signal the handler to close.
|
|
45
|
-
|
|
46
|
-
The handler will be closed after the existing
|
|
47
|
-
pending message are sent to the peer.
|
|
48
|
-
"""
|
|
49
|
-
if not self._pending_write:
|
|
50
|
-
self.close()
|
|
51
|
-
else:
|
|
52
|
-
self._signal_close = True
|
|
53
|
-
|
|
54
|
-
def close(self):
|
|
55
|
-
"""Close the socket"""
|
|
56
|
-
if self._sock is not None:
|
|
57
|
-
try:
|
|
58
|
-
self._ioloop.remove_handler(self._sock.fileno())
|
|
59
|
-
self._sock.close()
|
|
60
|
-
except socket.error:
|
|
61
|
-
pass
|
|
62
|
-
self._sock = None
|
|
63
|
-
self.on_close()
|
|
64
|
-
|
|
65
|
-
def write_message(self, message, binary=True):
|
|
66
|
-
assert binary
|
|
67
|
-
if self._sock is None:
|
|
68
|
-
raise IOError("socket is already closed")
|
|
69
|
-
self._pending_write.append(message)
|
|
70
|
-
self._update_write()
|
|
71
|
-
|
|
72
|
-
def _event_handler(self, events):
|
|
73
|
-
"""centeral event handler"""
|
|
74
|
-
if (events & self._ioloop.ERROR) or (events & self._ioloop.READ):
|
|
75
|
-
if self._update_read() and (events & self._ioloop.WRITE):
|
|
76
|
-
self._update_write()
|
|
77
|
-
elif events & self._ioloop.WRITE:
|
|
78
|
-
self._update_write()
|
|
79
|
-
|
|
80
|
-
def _update_write(self):
|
|
81
|
-
"""Update the state on write"""
|
|
82
|
-
while self._pending_write:
|
|
83
|
-
try:
|
|
84
|
-
msg = self._pending_write[0]
|
|
85
|
-
if self._sock is None:
|
|
86
|
-
return
|
|
87
|
-
nsend = self._sock.send(msg)
|
|
88
|
-
if nsend != len(msg):
|
|
89
|
-
self._pending_write[0] = msg[nsend:]
|
|
90
|
-
else:
|
|
91
|
-
self._pending_write.pop(0)
|
|
92
|
-
except socket.error as err:
|
|
93
|
-
if err.args[0] in (errno.EAGAIN, errno.EWOULDBLOCK):
|
|
94
|
-
break
|
|
95
|
-
else:
|
|
96
|
-
self.on_error(err)
|
|
97
|
-
if self._pending_write:
|
|
98
|
-
self._ioloop.update_handler(
|
|
99
|
-
self._sock.fileno(), self._ioloop.READ | self._ioloop.ERROR | self._ioloop.WRITE)
|
|
100
|
-
else:
|
|
101
|
-
if self._signal_close:
|
|
102
|
-
self.close()
|
|
103
|
-
else:
|
|
104
|
-
self._ioloop.update_handler(
|
|
105
|
-
self._sock.fileno(), self._ioloop.READ | self._ioloop.ERROR)
|
|
106
|
-
|
|
107
|
-
def _update_read(self):
|
|
108
|
-
"""Update state when there is read event"""
|
|
109
|
-
try:
|
|
110
|
-
msg = bytes(self._sock.recv(4096))
|
|
111
|
-
if msg:
|
|
112
|
-
self.on_message(msg)
|
|
113
|
-
return True
|
|
114
|
-
# normal close, remote is closed
|
|
115
|
-
self.close()
|
|
116
|
-
except socket.error as err:
|
|
117
|
-
if err.args[0] in (errno.EAGAIN, errno.EWOULDBLOCK):
|
|
118
|
-
pass
|
|
119
|
-
else:
|
|
120
|
-
self.on_error(err)
|
|
121
|
-
return False
|