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,595 +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 proxy, allows both client/server to connect and match connection.
|
|
18
|
-
|
|
19
|
-
In normal RPC, client directly connect to server's IP address.
|
|
20
|
-
Sometimes this cannot be done when server do not have a static address.
|
|
21
|
-
RPCProxy allows both client and server connect to the proxy server,
|
|
22
|
-
the proxy server will forward the message between the client and server.
|
|
23
|
-
"""
|
|
24
|
-
# pylint: disable=unused-variable, unused-argument
|
|
25
|
-
from __future__ import absolute_import
|
|
26
|
-
|
|
27
|
-
import os
|
|
28
|
-
import logging
|
|
29
|
-
import socket
|
|
30
|
-
import multiprocessing
|
|
31
|
-
import errno
|
|
32
|
-
import struct
|
|
33
|
-
import time
|
|
34
|
-
|
|
35
|
-
try:
|
|
36
|
-
import tornado
|
|
37
|
-
from tornado import gen
|
|
38
|
-
from tornado import websocket
|
|
39
|
-
from tornado import ioloop
|
|
40
|
-
from . import tornado_util
|
|
41
|
-
except ImportError as error_msg:
|
|
42
|
-
raise ImportError(
|
|
43
|
-
"RPCProxy module requires tornado package %s. Try 'pip install tornado'." % error_msg)
|
|
44
|
-
|
|
45
|
-
from . import base
|
|
46
|
-
from .base import TrackerCode
|
|
47
|
-
from .server import _server_env
|
|
48
|
-
from .._ffi.base import py_str
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
class ForwardHandler(object):
|
|
52
|
-
"""Forward handler to forward the message."""
|
|
53
|
-
def _init_handler(self):
|
|
54
|
-
"""Initialize handler."""
|
|
55
|
-
self._init_message = bytes()
|
|
56
|
-
self._init_req_nbytes = 4
|
|
57
|
-
self._magic = None
|
|
58
|
-
self.timeout = None
|
|
59
|
-
self._rpc_key_length = None
|
|
60
|
-
self._done = False
|
|
61
|
-
self._proxy = ProxyServerHandler.current
|
|
62
|
-
assert self._proxy
|
|
63
|
-
self.rpc_key = None
|
|
64
|
-
self.match_key = None
|
|
65
|
-
self.forward_proxy = None
|
|
66
|
-
self.alloc_time = None
|
|
67
|
-
|
|
68
|
-
def __del__(self):
|
|
69
|
-
logging.info("Delete %s...", self.name())
|
|
70
|
-
|
|
71
|
-
def name(self):
|
|
72
|
-
"""Name of this connection."""
|
|
73
|
-
return "RPCConnection"
|
|
74
|
-
|
|
75
|
-
def _init_step(self, message):
|
|
76
|
-
if self._magic is None:
|
|
77
|
-
assert len(message) == 4
|
|
78
|
-
self._magic = struct.unpack('<i', message)[0]
|
|
79
|
-
if self._magic != base.RPC_MAGIC:
|
|
80
|
-
logging.info("Invalid RPC magic from %s", self.name())
|
|
81
|
-
self.close()
|
|
82
|
-
self._init_req_nbytes = 4
|
|
83
|
-
elif self._rpc_key_length is None:
|
|
84
|
-
assert len(message) == 4
|
|
85
|
-
self._rpc_key_length = struct.unpack('<i', message)[0]
|
|
86
|
-
self._init_req_nbytes = self._rpc_key_length
|
|
87
|
-
elif self.rpc_key is None:
|
|
88
|
-
assert len(message) == self._rpc_key_length
|
|
89
|
-
self.rpc_key = py_str(message)
|
|
90
|
-
# match key is used to do the matching
|
|
91
|
-
self.match_key = self.rpc_key[7:].split()[0]
|
|
92
|
-
self.on_start()
|
|
93
|
-
else:
|
|
94
|
-
assert False
|
|
95
|
-
|
|
96
|
-
def on_start(self):
|
|
97
|
-
"""Event when the initialization is completed"""
|
|
98
|
-
self._proxy.handler_ready(self)
|
|
99
|
-
|
|
100
|
-
def on_data(self, message):
|
|
101
|
-
"""on data"""
|
|
102
|
-
assert isinstance(message, bytes)
|
|
103
|
-
if self.forward_proxy:
|
|
104
|
-
self.forward_proxy.send_data(message)
|
|
105
|
-
else:
|
|
106
|
-
while message and self._init_req_nbytes > len(self._init_message):
|
|
107
|
-
nbytes = self._init_req_nbytes - len(self._init_message)
|
|
108
|
-
self._init_message += message[:nbytes]
|
|
109
|
-
message = message[nbytes:]
|
|
110
|
-
if self._init_req_nbytes == len(self._init_message):
|
|
111
|
-
temp = self._init_message
|
|
112
|
-
self._init_req_nbytes = 0
|
|
113
|
-
self._init_message = bytes()
|
|
114
|
-
self._init_step(temp)
|
|
115
|
-
if message:
|
|
116
|
-
logging.info("Invalid RPC protocol, too many bytes %s", self.name())
|
|
117
|
-
self.close()
|
|
118
|
-
|
|
119
|
-
def on_error(self, err):
|
|
120
|
-
logging.info("%s: Error in RPC %s", self.name(), err)
|
|
121
|
-
self.close_pair()
|
|
122
|
-
|
|
123
|
-
def close_pair(self):
|
|
124
|
-
if self.forward_proxy:
|
|
125
|
-
self.forward_proxy.signal_close()
|
|
126
|
-
self.forward_proxy = None
|
|
127
|
-
self.close()
|
|
128
|
-
|
|
129
|
-
def on_close_event(self):
|
|
130
|
-
"""on close event"""
|
|
131
|
-
assert not self._done
|
|
132
|
-
logging.info("RPCProxy:on_close %s ...", self.name())
|
|
133
|
-
if self.match_key:
|
|
134
|
-
key = self.match_key
|
|
135
|
-
if self._proxy._client_pool.get(key, None) == self:
|
|
136
|
-
self._proxy._client_pool.pop(key)
|
|
137
|
-
if self._proxy._server_pool.get(key, None) == self:
|
|
138
|
-
self._proxy._server_pool.pop(key)
|
|
139
|
-
self._done = True
|
|
140
|
-
self.forward_proxy = None
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
class TCPHandler(tornado_util.TCPHandler, ForwardHandler):
|
|
144
|
-
"""Event driven TCP handler."""
|
|
145
|
-
def __init__(self, sock, addr):
|
|
146
|
-
super(TCPHandler, self).__init__(sock)
|
|
147
|
-
self._init_handler()
|
|
148
|
-
self.addr = addr
|
|
149
|
-
|
|
150
|
-
def name(self):
|
|
151
|
-
return "TCPSocketProxy:%s:%s" % (str(self.addr[0]), self.rpc_key)
|
|
152
|
-
|
|
153
|
-
def send_data(self, message, binary=True):
|
|
154
|
-
self.write_message(message, True)
|
|
155
|
-
|
|
156
|
-
def on_message(self, message):
|
|
157
|
-
self.on_data(message)
|
|
158
|
-
|
|
159
|
-
def on_close(self):
|
|
160
|
-
if self.forward_proxy:
|
|
161
|
-
self.forward_proxy.signal_close()
|
|
162
|
-
self.forward_proxy = None
|
|
163
|
-
logging.info("%s Close socket..", self.name())
|
|
164
|
-
self.on_close_event()
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
class WebSocketHandler(websocket.WebSocketHandler, ForwardHandler):
|
|
168
|
-
"""Handler for websockets."""
|
|
169
|
-
def __init__(self, *args, **kwargs):
|
|
170
|
-
super(WebSocketHandler, self).__init__(*args, **kwargs)
|
|
171
|
-
self._init_handler()
|
|
172
|
-
|
|
173
|
-
def name(self):
|
|
174
|
-
return "WebSocketProxy:%s" % (self.rpc_key)
|
|
175
|
-
|
|
176
|
-
def on_message(self, message):
|
|
177
|
-
self.on_data(message)
|
|
178
|
-
|
|
179
|
-
def data_received(self, _):
|
|
180
|
-
raise NotImplementedError()
|
|
181
|
-
|
|
182
|
-
def send_data(self, message):
|
|
183
|
-
try:
|
|
184
|
-
self.write_message(message, True)
|
|
185
|
-
except websocket.WebSocketClosedError as err:
|
|
186
|
-
self.on_error(err)
|
|
187
|
-
|
|
188
|
-
def on_close(self):
|
|
189
|
-
if self.forward_proxy:
|
|
190
|
-
self.forward_proxy.signal_close()
|
|
191
|
-
self.forward_proxy = None
|
|
192
|
-
self.on_close_event()
|
|
193
|
-
|
|
194
|
-
def signal_close(self):
|
|
195
|
-
self.close()
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
class RequestHandler(tornado.web.RequestHandler):
|
|
199
|
-
"""Handles html request."""
|
|
200
|
-
def __init__(self, *args, **kwargs):
|
|
201
|
-
file_path = kwargs.pop("file_path")
|
|
202
|
-
if file_path.endswith("html"):
|
|
203
|
-
self.page = open(file_path).read()
|
|
204
|
-
web_port = kwargs.pop("rpc_web_port", None)
|
|
205
|
-
if web_port:
|
|
206
|
-
self.page = self.page.replace(
|
|
207
|
-
"ws://localhost:9190/ws",
|
|
208
|
-
"ws://localhost:%d/ws" % web_port)
|
|
209
|
-
else:
|
|
210
|
-
self.page = open(file_path, "rb").read()
|
|
211
|
-
super(RequestHandler, self).__init__(*args, **kwargs)
|
|
212
|
-
|
|
213
|
-
def data_received(self, _):
|
|
214
|
-
pass
|
|
215
|
-
|
|
216
|
-
def get(self, *args, **kwargs):
|
|
217
|
-
self.write(self.page)
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
class ProxyServerHandler(object):
|
|
221
|
-
"""Internal proxy server handler class."""
|
|
222
|
-
current = None
|
|
223
|
-
def __init__(self,
|
|
224
|
-
sock,
|
|
225
|
-
listen_port,
|
|
226
|
-
web_port,
|
|
227
|
-
timeout_client,
|
|
228
|
-
timeout_server,
|
|
229
|
-
tracker_addr,
|
|
230
|
-
index_page=None,
|
|
231
|
-
resource_files=None):
|
|
232
|
-
assert ProxyServerHandler.current is None
|
|
233
|
-
ProxyServerHandler.current = self
|
|
234
|
-
if web_port:
|
|
235
|
-
handlers = [
|
|
236
|
-
(r"/ws", WebSocketHandler),
|
|
237
|
-
]
|
|
238
|
-
if index_page:
|
|
239
|
-
handlers.append(
|
|
240
|
-
(r"/", RequestHandler, {"file_path": index_page, "rpc_web_port": web_port}))
|
|
241
|
-
logging.info("Serving RPC index html page at http://localhost:%d", web_port)
|
|
242
|
-
resource_files = resource_files if resource_files else []
|
|
243
|
-
for fname in resource_files:
|
|
244
|
-
basename = os.path.basename(fname)
|
|
245
|
-
pair = (r"/%s" % basename, RequestHandler, {"file_path": fname})
|
|
246
|
-
handlers.append(pair)
|
|
247
|
-
logging.info(pair)
|
|
248
|
-
self.app = tornado.web.Application(handlers)
|
|
249
|
-
self.app.listen(web_port)
|
|
250
|
-
self.sock = sock
|
|
251
|
-
self.sock.setblocking(0)
|
|
252
|
-
self.loop = ioloop.IOLoop.current()
|
|
253
|
-
def event_handler(_, events):
|
|
254
|
-
self._on_event(events)
|
|
255
|
-
self.loop.add_handler(
|
|
256
|
-
self.sock.fileno(), event_handler, self.loop.READ)
|
|
257
|
-
self._client_pool = {}
|
|
258
|
-
self._server_pool = {}
|
|
259
|
-
self.timeout_alloc = 5
|
|
260
|
-
self.timeout_client = timeout_client
|
|
261
|
-
self.timeout_server = timeout_server
|
|
262
|
-
# tracker information
|
|
263
|
-
self._listen_port = listen_port
|
|
264
|
-
self._tracker_addr = tracker_addr
|
|
265
|
-
self._tracker_conn = None
|
|
266
|
-
self._tracker_pending_puts = []
|
|
267
|
-
self._key_set = set()
|
|
268
|
-
self.update_tracker_period = 2
|
|
269
|
-
if tracker_addr:
|
|
270
|
-
logging.info("Tracker address:%s", str(tracker_addr))
|
|
271
|
-
def _callback():
|
|
272
|
-
self._update_tracker(True)
|
|
273
|
-
self.loop.call_later(self.update_tracker_period, _callback)
|
|
274
|
-
logging.info("RPCProxy: Websock port bind to %d", web_port)
|
|
275
|
-
|
|
276
|
-
def _on_event(self, _):
|
|
277
|
-
while True:
|
|
278
|
-
try:
|
|
279
|
-
conn, addr = self.sock.accept()
|
|
280
|
-
TCPHandler(conn, addr)
|
|
281
|
-
except socket.error as err:
|
|
282
|
-
if err.args[0] in (errno.EAGAIN, errno.EWOULDBLOCK):
|
|
283
|
-
break
|
|
284
|
-
|
|
285
|
-
def _pair_up(self, lhs, rhs):
|
|
286
|
-
lhs.forward_proxy = rhs
|
|
287
|
-
rhs.forward_proxy = lhs
|
|
288
|
-
|
|
289
|
-
lhs.send_data(struct.pack('<i', base.RPC_CODE_SUCCESS))
|
|
290
|
-
lhs.send_data(struct.pack('<i', len(rhs.rpc_key)))
|
|
291
|
-
lhs.send_data(rhs.rpc_key.encode("utf-8"))
|
|
292
|
-
|
|
293
|
-
rhs.send_data(struct.pack('<i', base.RPC_CODE_SUCCESS))
|
|
294
|
-
rhs.send_data(struct.pack('<i', len(lhs.rpc_key)))
|
|
295
|
-
rhs.send_data(lhs.rpc_key.encode("utf-8"))
|
|
296
|
-
logging.info("Pairup connect %s and %s", lhs.name(), rhs.name())
|
|
297
|
-
|
|
298
|
-
def _regenerate_server_keys(self, keys):
|
|
299
|
-
"""Regenerate keys for server pool"""
|
|
300
|
-
keyset = set(self._server_pool.keys())
|
|
301
|
-
new_keys = []
|
|
302
|
-
# re-generate the server match key, so old information is invalidated.
|
|
303
|
-
for key in keys:
|
|
304
|
-
rpc_key, _ = key.split(":")
|
|
305
|
-
handle = self._server_pool[key]
|
|
306
|
-
del self._server_pool[key]
|
|
307
|
-
new_key = base.random_key(rpc_key + ":", keyset)
|
|
308
|
-
self._server_pool[new_key] = handle
|
|
309
|
-
keyset.add(new_key)
|
|
310
|
-
new_keys.append(new_key)
|
|
311
|
-
return new_keys
|
|
312
|
-
|
|
313
|
-
def _update_tracker(self, period_update=False):
|
|
314
|
-
"""Update information on tracker."""
|
|
315
|
-
try:
|
|
316
|
-
if self._tracker_conn is None:
|
|
317
|
-
self._tracker_conn = socket.socket(base.get_addr_family(self._tracker_addr),
|
|
318
|
-
socket.SOCK_STREAM)
|
|
319
|
-
self._tracker_conn.connect(self._tracker_addr)
|
|
320
|
-
self._tracker_conn.sendall(struct.pack("<i", base.RPC_TRACKER_MAGIC))
|
|
321
|
-
magic = struct.unpack("<i", base.recvall(self._tracker_conn, 4))[0]
|
|
322
|
-
if magic != base.RPC_TRACKER_MAGIC:
|
|
323
|
-
self.loop.stop()
|
|
324
|
-
raise RuntimeError("%s is not RPC Tracker" % str(self._tracker_addr))
|
|
325
|
-
# just connect to tracker, need to update all keys
|
|
326
|
-
self._tracker_pending_puts = self._server_pool.keys()
|
|
327
|
-
|
|
328
|
-
if self._tracker_conn and period_update:
|
|
329
|
-
# periodically update tracker information
|
|
330
|
-
# regenerate key if the key is not in tracker anymore
|
|
331
|
-
# and there is no in-coming connection after timeout_alloc
|
|
332
|
-
base.sendjson(self._tracker_conn, [TrackerCode.GET_PENDING_MATCHKEYS])
|
|
333
|
-
pending_keys = set(base.recvjson(self._tracker_conn))
|
|
334
|
-
update_keys = []
|
|
335
|
-
for k, v in self._server_pool.items():
|
|
336
|
-
if k not in pending_keys:
|
|
337
|
-
if v.alloc_time is None:
|
|
338
|
-
v.alloc_time = time.time()
|
|
339
|
-
elif time.time() - v.alloc_time > self.timeout_alloc:
|
|
340
|
-
update_keys.append(k)
|
|
341
|
-
v.alloc_time = None
|
|
342
|
-
if update_keys:
|
|
343
|
-
logging.info("RPCProxy: No incoming conn on %s, regenerate keys...",
|
|
344
|
-
str(update_keys))
|
|
345
|
-
new_keys = self._regenerate_server_keys(update_keys)
|
|
346
|
-
self._tracker_pending_puts += new_keys
|
|
347
|
-
|
|
348
|
-
need_update_info = False
|
|
349
|
-
# report new connections
|
|
350
|
-
for key in self._tracker_pending_puts:
|
|
351
|
-
rpc_key = key.split(":")[0]
|
|
352
|
-
base.sendjson(self._tracker_conn,
|
|
353
|
-
[TrackerCode.PUT, rpc_key,
|
|
354
|
-
(self._listen_port, key), None])
|
|
355
|
-
assert base.recvjson(self._tracker_conn) == TrackerCode.SUCCESS
|
|
356
|
-
if rpc_key not in self._key_set:
|
|
357
|
-
self._key_set.add(rpc_key)
|
|
358
|
-
need_update_info = True
|
|
359
|
-
|
|
360
|
-
if need_update_info:
|
|
361
|
-
keylist = "[" + ",".join(self._key_set) + "]"
|
|
362
|
-
cinfo = {"key": "server:proxy" + keylist}
|
|
363
|
-
base.sendjson(self._tracker_conn,
|
|
364
|
-
[TrackerCode.UPDATE_INFO, cinfo])
|
|
365
|
-
assert base.recvjson(self._tracker_conn) == TrackerCode.SUCCESS
|
|
366
|
-
self._tracker_pending_puts = []
|
|
367
|
-
except (socket.error, IOError) as err:
|
|
368
|
-
logging.info(
|
|
369
|
-
"Lost tracker connection: %s, try reconnect in %g sec",
|
|
370
|
-
str(err), self.update_tracker_period)
|
|
371
|
-
self._tracker_conn.close()
|
|
372
|
-
self._tracker_conn = None
|
|
373
|
-
self._regenerate_server_keys(self._server_pool.keys())
|
|
374
|
-
|
|
375
|
-
if period_update:
|
|
376
|
-
def _callback():
|
|
377
|
-
self._update_tracker(True)
|
|
378
|
-
self.loop.call_later(self.update_tracker_period, _callback)
|
|
379
|
-
|
|
380
|
-
def _handler_ready_tracker_mode(self, handler):
|
|
381
|
-
"""tracker mode to handle handler ready."""
|
|
382
|
-
if handler.rpc_key.startswith("server:"):
|
|
383
|
-
key = base.random_key(handler.match_key + ":", self._server_pool)
|
|
384
|
-
handler.match_key = key
|
|
385
|
-
self._server_pool[key] = handler
|
|
386
|
-
self._tracker_pending_puts.append(key)
|
|
387
|
-
self._update_tracker()
|
|
388
|
-
else:
|
|
389
|
-
if handler.match_key in self._server_pool:
|
|
390
|
-
self._pair_up(self._server_pool.pop(handler.match_key), handler)
|
|
391
|
-
else:
|
|
392
|
-
handler.send_data(struct.pack('<i', base.RPC_CODE_MISMATCH))
|
|
393
|
-
handler.signal_close()
|
|
394
|
-
|
|
395
|
-
def _handler_ready_proxy_mode(self, handler):
|
|
396
|
-
"""Normal proxy mode when handler is ready."""
|
|
397
|
-
if handler.rpc_key.startswith("server:"):
|
|
398
|
-
pool_src, pool_dst = self._client_pool, self._server_pool
|
|
399
|
-
timeout = self.timeout_server
|
|
400
|
-
else:
|
|
401
|
-
pool_src, pool_dst = self._server_pool, self._client_pool
|
|
402
|
-
timeout = self.timeout_client
|
|
403
|
-
|
|
404
|
-
key = handler.match_key
|
|
405
|
-
if key in pool_src:
|
|
406
|
-
self._pair_up(pool_src.pop(key), handler)
|
|
407
|
-
return
|
|
408
|
-
if key not in pool_dst:
|
|
409
|
-
pool_dst[key] = handler
|
|
410
|
-
def cleanup():
|
|
411
|
-
"""Cleanup client connection if timeout"""
|
|
412
|
-
if pool_dst.get(key, None) == handler:
|
|
413
|
-
logging.info("Timeout client connection %s, cannot find match key=%s",
|
|
414
|
-
handler.name(), key)
|
|
415
|
-
pool_dst.pop(key)
|
|
416
|
-
handler.send_data(struct.pack('<i', base.RPC_CODE_MISMATCH))
|
|
417
|
-
handler.signal_close()
|
|
418
|
-
self.loop.call_later(timeout, cleanup)
|
|
419
|
-
else:
|
|
420
|
-
logging.info("Duplicate connection with same key=%s", key)
|
|
421
|
-
handler.send_data(struct.pack('<i', base.RPC_CODE_DUPLICATE))
|
|
422
|
-
handler.signal_close()
|
|
423
|
-
|
|
424
|
-
def handler_ready(self, handler):
|
|
425
|
-
"""Report handler to be ready."""
|
|
426
|
-
logging.info("Handler ready %s", handler.name())
|
|
427
|
-
if self._tracker_addr:
|
|
428
|
-
self._handler_ready_tracker_mode(handler)
|
|
429
|
-
else:
|
|
430
|
-
self._handler_ready_proxy_mode(handler)
|
|
431
|
-
|
|
432
|
-
def run(self):
|
|
433
|
-
"""Run the proxy server"""
|
|
434
|
-
ioloop.IOLoop.current().start()
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
def _proxy_server(listen_sock,
|
|
438
|
-
listen_port,
|
|
439
|
-
web_port,
|
|
440
|
-
timeout_client,
|
|
441
|
-
timeout_server,
|
|
442
|
-
tracker_addr,
|
|
443
|
-
index_page,
|
|
444
|
-
resource_files):
|
|
445
|
-
handler = ProxyServerHandler(listen_sock,
|
|
446
|
-
listen_port,
|
|
447
|
-
web_port,
|
|
448
|
-
timeout_client,
|
|
449
|
-
timeout_server,
|
|
450
|
-
tracker_addr,
|
|
451
|
-
index_page,
|
|
452
|
-
resource_files)
|
|
453
|
-
handler.run()
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
class Proxy(object):
|
|
457
|
-
"""Start RPC proxy server on a seperate process.
|
|
458
|
-
|
|
459
|
-
Python implementation based on multi-processing.
|
|
460
|
-
|
|
461
|
-
Parameters
|
|
462
|
-
----------
|
|
463
|
-
host : str
|
|
464
|
-
The host url of the server.
|
|
465
|
-
|
|
466
|
-
port : int
|
|
467
|
-
The TCP port to be bind to
|
|
468
|
-
|
|
469
|
-
port_end : int, optional
|
|
470
|
-
The end TCP port to search
|
|
471
|
-
|
|
472
|
-
web_port : int, optional
|
|
473
|
-
The http/websocket port of the server.
|
|
474
|
-
|
|
475
|
-
timeout_client : float, optional
|
|
476
|
-
Timeout of client until it sees a matching connection.
|
|
477
|
-
|
|
478
|
-
timeout_server : float, optional
|
|
479
|
-
Timeout of server until it sees a matching connection.
|
|
480
|
-
|
|
481
|
-
tracker_addr: Tuple (str, int) , optional
|
|
482
|
-
The address of RPC Tracker in tuple (host, ip) format.
|
|
483
|
-
If is not None, the server will register itself to the tracker.
|
|
484
|
-
|
|
485
|
-
index_page : str, optional
|
|
486
|
-
Path to an index page that can be used to display at proxy index.
|
|
487
|
-
|
|
488
|
-
resource_files : str, optional
|
|
489
|
-
Path to local resources that can be included in the http request
|
|
490
|
-
"""
|
|
491
|
-
def __init__(self,
|
|
492
|
-
host,
|
|
493
|
-
port=9091,
|
|
494
|
-
port_end=9199,
|
|
495
|
-
web_port=0,
|
|
496
|
-
timeout_client=600,
|
|
497
|
-
timeout_server=600,
|
|
498
|
-
tracker_addr=None,
|
|
499
|
-
index_page=None,
|
|
500
|
-
resource_files=None):
|
|
501
|
-
sock = socket.socket(base.get_addr_family((host, port)), socket.SOCK_STREAM)
|
|
502
|
-
self.port = None
|
|
503
|
-
for my_port in range(port, port_end):
|
|
504
|
-
try:
|
|
505
|
-
sock.bind((host, my_port))
|
|
506
|
-
self.port = my_port
|
|
507
|
-
break
|
|
508
|
-
except socket.error as sock_err:
|
|
509
|
-
if sock_err.errno in [98, 48]:
|
|
510
|
-
continue
|
|
511
|
-
else:
|
|
512
|
-
raise sock_err
|
|
513
|
-
if not self.port:
|
|
514
|
-
raise ValueError("cannot bind to any port in [%d, %d)" % (port, port_end))
|
|
515
|
-
logging.info("RPCProxy: client port bind to %s:%d", host, self.port)
|
|
516
|
-
sock.listen(1)
|
|
517
|
-
self.proc = multiprocessing.Process(
|
|
518
|
-
target=_proxy_server,
|
|
519
|
-
args=(sock, self.port, web_port,
|
|
520
|
-
timeout_client, timeout_server,
|
|
521
|
-
tracker_addr, index_page, resource_files))
|
|
522
|
-
self.proc.start()
|
|
523
|
-
sock.close()
|
|
524
|
-
self.host = host
|
|
525
|
-
|
|
526
|
-
def terminate(self):
|
|
527
|
-
"""Terminate the server process"""
|
|
528
|
-
if self.proc:
|
|
529
|
-
logging.info("Terminating Proxy Server...")
|
|
530
|
-
self.proc.terminate()
|
|
531
|
-
self.proc = None
|
|
532
|
-
|
|
533
|
-
def __del__(self):
|
|
534
|
-
self.terminate()
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
def websocket_proxy_server(url, key=""):
|
|
538
|
-
"""Create a RPC server that uses an websocket that connects to a proxy.
|
|
539
|
-
|
|
540
|
-
Parameters
|
|
541
|
-
----------
|
|
542
|
-
url : str
|
|
543
|
-
The url to be connected.
|
|
544
|
-
|
|
545
|
-
key : str
|
|
546
|
-
The key to identify the server.
|
|
547
|
-
"""
|
|
548
|
-
def create_on_message(conn):
|
|
549
|
-
def _fsend(data):
|
|
550
|
-
data = bytes(data)
|
|
551
|
-
conn.write_message(data, binary=True)
|
|
552
|
-
return len(data)
|
|
553
|
-
on_message = base._CreateEventDrivenServer(
|
|
554
|
-
_fsend, "WebSocketProxyServer", "%toinit")
|
|
555
|
-
return on_message
|
|
556
|
-
|
|
557
|
-
@gen.coroutine
|
|
558
|
-
def _connect(key):
|
|
559
|
-
conn = yield websocket.websocket_connect(url)
|
|
560
|
-
on_message = create_on_message(conn)
|
|
561
|
-
temp = _server_env(None)
|
|
562
|
-
# Start connecton
|
|
563
|
-
conn.write_message(struct.pack('<i', base.RPC_MAGIC), binary=True)
|
|
564
|
-
key = "server:" + key
|
|
565
|
-
conn.write_message(struct.pack('<i', len(key)), binary=True)
|
|
566
|
-
conn.write_message(key.encode("utf-8"), binary=True)
|
|
567
|
-
msg = yield conn.read_message()
|
|
568
|
-
assert len(msg) >= 4
|
|
569
|
-
magic = struct.unpack('<i', msg[:4])[0]
|
|
570
|
-
if magic == base.RPC_CODE_DUPLICATE:
|
|
571
|
-
raise RuntimeError("key: %s has already been used in proxy" % key)
|
|
572
|
-
elif magic == base.RPC_CODE_MISMATCH:
|
|
573
|
-
logging.info("RPCProxy do not have matching client key %s", key)
|
|
574
|
-
elif magic != base.RPC_CODE_SUCCESS:
|
|
575
|
-
raise RuntimeError("%s is not RPC Proxy" % url)
|
|
576
|
-
msg = msg[4:]
|
|
577
|
-
|
|
578
|
-
logging.info("Connection established with remote")
|
|
579
|
-
|
|
580
|
-
if msg:
|
|
581
|
-
on_message(bytearray(msg), 3)
|
|
582
|
-
|
|
583
|
-
while True:
|
|
584
|
-
try:
|
|
585
|
-
msg = yield conn.read_message()
|
|
586
|
-
if msg is None:
|
|
587
|
-
break
|
|
588
|
-
on_message(bytearray(msg), 3)
|
|
589
|
-
except websocket.WebSocketClosedError as err:
|
|
590
|
-
break
|
|
591
|
-
logging.info("WebSocketProxyServer closed...")
|
|
592
|
-
temp.remove()
|
|
593
|
-
ioloop.IOLoop.current().stop()
|
|
594
|
-
ioloop.IOLoop.current().spawn_callback(_connect, key)
|
|
595
|
-
ioloop.IOLoop.current().start()
|