mindspore 2.1.0__cp39-cp39-win_amd64.whl → 2.2.10__cp39-cp39-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +4 -1
- mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
- mindspore/_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/amp.py +47 -11
- mindspore/atlprov.dll +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/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- 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/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/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- 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/jpeg62.dll +0 -0
- mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
- mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
- mindspore/mindspore_backend.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_shared_lib.dll +0 -0
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/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/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- 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/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- 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/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- 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/turbojpeg.dll +0 -0
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/METADATA +5 -3
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/RECORD +433 -479
- 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}/entry_points.txt +0 -0
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# Copyright 2022 Huawei Technologies Co., Ltd
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ============================================================================
|
|
15
|
+
"""SymbolTree nodes manager."""
|
|
16
|
+
import sys
|
|
17
|
+
from typing import Optional
|
|
18
|
+
import ast
|
|
19
|
+
from .node import Node
|
|
20
|
+
from .node_topological_manager import TopoManager
|
|
21
|
+
from ..api.node_type import NodeType
|
|
22
|
+
|
|
23
|
+
if sys.version_info >= (3, 9):
|
|
24
|
+
import ast as astunparse # pylint: disable=reimported, ungrouped-imports
|
|
25
|
+
else:
|
|
26
|
+
import astunparse
|
|
27
|
+
|
|
28
|
+
class NodeManager:
|
|
29
|
+
"""
|
|
30
|
+
NodeManager saves nodes and manager nodes' topological relationship.
|
|
31
|
+
"""
|
|
32
|
+
def __init__(self, node_namer):
|
|
33
|
+
"""Initializer of NodeManager"""
|
|
34
|
+
self._topo_mgr = TopoManager()
|
|
35
|
+
self._nodes: {str, Node} = {}
|
|
36
|
+
self._manager_node_namer = node_namer
|
|
37
|
+
# record all tree nodes, which is used when generating codes
|
|
38
|
+
self._tree_nodes: [Node] = []
|
|
39
|
+
# head node is always point to the first node of nodes
|
|
40
|
+
self._head = None
|
|
41
|
+
# tail node is always point to the last node of nodes
|
|
42
|
+
self._tail = None
|
|
43
|
+
# nodes of Input type
|
|
44
|
+
self._inputs: [Node] = []
|
|
45
|
+
# nodes of Output type
|
|
46
|
+
self._returns: [Node] = []
|
|
47
|
+
# ast of ast.FunctionDef
|
|
48
|
+
self._ast_functiondef = None
|
|
49
|
+
# name of manager
|
|
50
|
+
self._manager_name = "OriginNodeManager"
|
|
51
|
+
|
|
52
|
+
@property
|
|
53
|
+
def node_list(self):
|
|
54
|
+
""" Get node list. """
|
|
55
|
+
nodes = []
|
|
56
|
+
node = self._head
|
|
57
|
+
while node is not None:
|
|
58
|
+
nodes.append(node)
|
|
59
|
+
node = node.get_next()
|
|
60
|
+
return nodes
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def node_count(self):
|
|
64
|
+
"""Number of nodes."""
|
|
65
|
+
node_num = 0
|
|
66
|
+
node = self._head
|
|
67
|
+
while node is not None:
|
|
68
|
+
node_num = node_num + 1
|
|
69
|
+
node = node.get_next()
|
|
70
|
+
return node_num
|
|
71
|
+
|
|
72
|
+
def insert_node(self, new_node: Node, base_node: Node, before_node: bool):
|
|
73
|
+
"""
|
|
74
|
+
Insert a node before or after base_node.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
new_node (Node): Node to be inserted.
|
|
78
|
+
base_node (Node): New node will be inserted before or after base_node.
|
|
79
|
+
before_node (bool): Indicate whether new node is inserted before base_node.
|
|
80
|
+
"""
|
|
81
|
+
# update node name
|
|
82
|
+
new_node_name = self._manager_node_namer.get_name(new_node)
|
|
83
|
+
new_node.set_name(new_node_name)
|
|
84
|
+
if isinstance(new_node, NodeManager):
|
|
85
|
+
new_node.set_manager_name(new_node_name)
|
|
86
|
+
# insert node to list table
|
|
87
|
+
if base_node is None:
|
|
88
|
+
if self._nodes:
|
|
89
|
+
raise ValueError("base_node cannot be None when node inserted is not the first node.")
|
|
90
|
+
self._head = new_node
|
|
91
|
+
self._tail = new_node
|
|
92
|
+
elif before_node:
|
|
93
|
+
base_node.insert_before(new_node)
|
|
94
|
+
if self._head == base_node:
|
|
95
|
+
self._head = new_node
|
|
96
|
+
else:
|
|
97
|
+
base_node.insert_after(new_node)
|
|
98
|
+
if self._tail == base_node:
|
|
99
|
+
self._tail = new_node
|
|
100
|
+
self._add_node_to_nodes(new_node)
|
|
101
|
+
self._topo_mgr.on_insert_node(new_node)
|
|
102
|
+
new_node.set_node_manager(self)
|
|
103
|
+
# record Input nodes, Output nodes and tree nodes
|
|
104
|
+
if new_node.get_node_type() == NodeType.Output:
|
|
105
|
+
self._returns.append(new_node)
|
|
106
|
+
elif new_node.get_node_type() == NodeType.Input:
|
|
107
|
+
self._inputs.append(new_node)
|
|
108
|
+
elif new_node.get_node_type() == NodeType.Tree:
|
|
109
|
+
self._tree_nodes.append(new_node)
|
|
110
|
+
|
|
111
|
+
def erase_node(self, node: Node):
|
|
112
|
+
"""
|
|
113
|
+
Erase a node from nodes.
|
|
114
|
+
|
|
115
|
+
Args:
|
|
116
|
+
node (Node): _description_
|
|
117
|
+
"""
|
|
118
|
+
self._topo_mgr.on_erase_node(node)
|
|
119
|
+
for key, value in self._nodes.items():
|
|
120
|
+
if id(value) == id(node):
|
|
121
|
+
# update self._head and self._tail
|
|
122
|
+
if self._head == node:
|
|
123
|
+
self._head = node.get_next()
|
|
124
|
+
if self._tail == node:
|
|
125
|
+
self._tail = node.get_prev()
|
|
126
|
+
# erase node
|
|
127
|
+
self._nodes.pop(key)
|
|
128
|
+
value.isolate()
|
|
129
|
+
break
|
|
130
|
+
|
|
131
|
+
def nodes(self):
|
|
132
|
+
"""
|
|
133
|
+
Get nodes.
|
|
134
|
+
|
|
135
|
+
Returns:
|
|
136
|
+
A list of nodes.
|
|
137
|
+
"""
|
|
138
|
+
# If iterating nodes directly without new list, iteration may stuck caused
|
|
139
|
+
# by node topology being modified during iteration.
|
|
140
|
+
nodes = []
|
|
141
|
+
node = self._head
|
|
142
|
+
while node is not None:
|
|
143
|
+
nodes.append(node)
|
|
144
|
+
node = node.get_next()
|
|
145
|
+
return nodes
|
|
146
|
+
|
|
147
|
+
def get_node(self, node_name: str) -> Optional[Node]:
|
|
148
|
+
"""
|
|
149
|
+
Get node of current NodeManager by `node_name`.
|
|
150
|
+
|
|
151
|
+
Args:
|
|
152
|
+
node_name (str): A str represents name of node as key of query.
|
|
153
|
+
|
|
154
|
+
Returns:
|
|
155
|
+
An instance of Node if found else None.
|
|
156
|
+
"""
|
|
157
|
+
return self._nodes.get(node_name)
|
|
158
|
+
|
|
159
|
+
def append_python_node(self, new_node: Node):
|
|
160
|
+
"""Append python node"""
|
|
161
|
+
NodeManager.insert_node(self, new_node, self._tail, False)
|
|
162
|
+
|
|
163
|
+
def get_head(self):
|
|
164
|
+
"""Get head node of nodes"""
|
|
165
|
+
return self._head
|
|
166
|
+
|
|
167
|
+
def get_tail(self):
|
|
168
|
+
"""Get tail node of nodes"""
|
|
169
|
+
return self._tail
|
|
170
|
+
|
|
171
|
+
def reg_observer(self, observer):
|
|
172
|
+
"""Register observer to monitor code changes."""
|
|
173
|
+
self._topo_mgr.reg_observer(observer)
|
|
174
|
+
for node in self.nodes():
|
|
175
|
+
if isinstance(node, NodeManager):
|
|
176
|
+
node.reg_observer(observer)
|
|
177
|
+
if node.get_node_type() == NodeType.Tree:
|
|
178
|
+
node.symbol_tree.reg_observer(observer)
|
|
179
|
+
|
|
180
|
+
def get_tree_nodes(self):
|
|
181
|
+
"""Get tree nodes inserted into symbol tree, include nodes later erased by user."""
|
|
182
|
+
tree_nodes = []
|
|
183
|
+
tree_nodes.extend(self._tree_nodes)
|
|
184
|
+
for node in self.nodes():
|
|
185
|
+
if isinstance(node, NodeManager):
|
|
186
|
+
tree_nodes.extend(node.get_tree_nodes())
|
|
187
|
+
return tree_nodes
|
|
188
|
+
|
|
189
|
+
def set_ast_functiondef(self, ast_functiondef: ast.FunctionDef):
|
|
190
|
+
"""Set _ast_functiondef."""
|
|
191
|
+
self._ast_functiondef = ast_functiondef
|
|
192
|
+
|
|
193
|
+
def get_ast_functiondef(self):
|
|
194
|
+
"""Get _ast_functiondef."""
|
|
195
|
+
return self._ast_functiondef
|
|
196
|
+
|
|
197
|
+
def get_inputs(self):
|
|
198
|
+
"""Get _inputs"""
|
|
199
|
+
return self._inputs
|
|
200
|
+
|
|
201
|
+
def get_returns(self):
|
|
202
|
+
"""Get _returns"""
|
|
203
|
+
return self._returns
|
|
204
|
+
|
|
205
|
+
def set_manager_name(self, name: str):
|
|
206
|
+
"""Set _manager_name"""
|
|
207
|
+
self._manager_name = name
|
|
208
|
+
|
|
209
|
+
def get_manager_name(self):
|
|
210
|
+
"""Get _manager_name"""
|
|
211
|
+
return self._manager_name
|
|
212
|
+
|
|
213
|
+
def dump(self, title="") -> str:
|
|
214
|
+
"""
|
|
215
|
+
Dump topological relation.
|
|
216
|
+
|
|
217
|
+
title (str): A string as a title will be printed before dumping topological relation.
|
|
218
|
+
"""
|
|
219
|
+
try:
|
|
220
|
+
from tabulate import tabulate # pylint: disable=unused-import,reportMissingModuleSource
|
|
221
|
+
except ImportError:
|
|
222
|
+
return ""
|
|
223
|
+
dump_str = "=" * 40 + title + "=" * 40 + '\n'
|
|
224
|
+
node_specs = [[
|
|
225
|
+
n.get_node_type(),
|
|
226
|
+
n.get_name(),
|
|
227
|
+
astunparse.unparse(n.get_ast()).strip(),
|
|
228
|
+
[[key, ((value[0].get_name(), value[1]) if value else ())]
|
|
229
|
+
for key, value in n.get_arg_providers().items()],
|
|
230
|
+
[[
|
|
231
|
+
key,
|
|
232
|
+
[(val[0].get_name(), val[1]) if val else ()
|
|
233
|
+
for val in value] if value else []
|
|
234
|
+
] for key, value in n.get_target_users().items()]
|
|
235
|
+
] for n in NodeManager.nodes(self)]
|
|
236
|
+
dump_str += tabulate(node_specs, headers=['node type', 'name', 'codes', 'arg providers', 'target users'])
|
|
237
|
+
dump_str += '\n' + "=" * (82 + len(title)) + '\n'
|
|
238
|
+
return dump_str
|
|
239
|
+
|
|
240
|
+
def _add_node_to_nodes(self, node: Node):
|
|
241
|
+
"""
|
|
242
|
+
Add `node` to `_nodes` dict.
|
|
243
|
+
|
|
244
|
+
Args:
|
|
245
|
+
node (Node): A Node to be added into `_nodes`.
|
|
246
|
+
|
|
247
|
+
Raises:
|
|
248
|
+
RuntimeError: If name of the node is duplicated.
|
|
249
|
+
"""
|
|
250
|
+
node_name = node.get_name()
|
|
251
|
+
if self._nodes.get(node_name) is not None:
|
|
252
|
+
raise ValueError(f"Duplicated node name: {node_name} in"
|
|
253
|
+
f"{self.get_name() if isinstance(self, Node) else 'construct'}")
|
|
254
|
+
self._nodes[node_name] = node
|
|
@@ -12,25 +12,20 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ============================================================================
|
|
15
|
-
"""SymbolTree topological
|
|
16
|
-
from typing import Tuple
|
|
17
|
-
import astunparse
|
|
15
|
+
"""SymbolTree nodes topological relationship manager."""
|
|
16
|
+
from typing import Tuple, List
|
|
18
17
|
from mindspore import log as logger
|
|
19
|
-
from
|
|
18
|
+
from ..api.scoped_value import ScopedValue
|
|
20
19
|
from .node import Node
|
|
21
|
-
from
|
|
22
|
-
from
|
|
20
|
+
from ..common.observable import Observable
|
|
21
|
+
from ..common.event import Event
|
|
23
22
|
|
|
24
23
|
|
|
25
24
|
class TopoManager(Observable):
|
|
26
25
|
"""SymbolTree topological-relationship manager."""
|
|
27
|
-
def __init__(self, symbol_tree):
|
|
28
|
-
super().__init__()
|
|
29
|
-
# symbol_tree is used for dump() to use nodes(), so it can be symbol tree or cell container.
|
|
30
|
-
self.symbol_tree = symbol_tree
|
|
31
26
|
|
|
32
27
|
@staticmethod
|
|
33
|
-
def get_node_users(node: Node) -> [Tuple[Node, int]]:
|
|
28
|
+
def get_node_users(node: Node) -> List[Tuple[Node, int]]:
|
|
34
29
|
"""
|
|
35
30
|
Get all nodes which depend on node.
|
|
36
31
|
|
|
@@ -98,11 +93,13 @@ class TopoManager(Observable):
|
|
|
98
93
|
return
|
|
99
94
|
|
|
100
95
|
@staticmethod
|
|
101
|
-
def _update_target_users_by_node(node, index, provider:
|
|
96
|
+
def _update_target_users_by_node(node, index, provider: Tuple[Node, int]):
|
|
102
97
|
"""
|
|
103
98
|
Update node's _target_users by previous node when insert a new node.
|
|
104
99
|
This function is called when target is found in previous nodes, which means a repeat target name is set.
|
|
105
100
|
"""
|
|
101
|
+
# Args of nodes which are between node and provider should not be changed
|
|
102
|
+
# [last provider] -> no change args -> [insert node] -> need change args -> [next provider] -> no change args
|
|
106
103
|
nodes_before_insert = []
|
|
107
104
|
search_node = provider[0].get_next()
|
|
108
105
|
while search_node is not None:
|
|
@@ -111,7 +108,7 @@ class TopoManager(Observable):
|
|
|
111
108
|
break
|
|
112
109
|
search_node = search_node.get_next()
|
|
113
110
|
provider_target_users = provider[0].get_target_users(provider[1])
|
|
114
|
-
for user in provider_target_users:
|
|
111
|
+
for user in provider_target_users[:]: # copy list by slice to support remove item during iterating
|
|
115
112
|
if user[0] not in nodes_before_insert:
|
|
116
113
|
node.append_target_users(index, user)
|
|
117
114
|
provider_target_users.remove(user)
|
|
@@ -171,7 +168,7 @@ class TopoManager(Observable):
|
|
|
171
168
|
continue
|
|
172
169
|
prev_provider = TopoManager._get_value_provider(node, node.get_targets()[index])
|
|
173
170
|
if not prev_provider:
|
|
174
|
-
logger.warning(f"Node {node.get_name()}'s target {index} is used in node "
|
|
171
|
+
logger.warning(f"Node {node.get_name()}'s target {index}({node.get_targets()[index]}) is used in node "
|
|
175
172
|
f"{target_users[0][0].get_name()}'s arg {target_users[0][1]}, "
|
|
176
173
|
f"no other node provides this target if node {node.get_name()} is erased.")
|
|
177
174
|
prev_providers[index] = None
|
|
@@ -190,7 +187,7 @@ class TopoManager(Observable):
|
|
|
190
187
|
if not arg_providers:
|
|
191
188
|
continue
|
|
192
189
|
provider_target_users = arg_providers[0].get_target_users(arg_providers[1])
|
|
193
|
-
for target_user in provider_target_users:
|
|
190
|
+
for target_user in reversed(provider_target_users):
|
|
194
191
|
if target_user[0] == node:
|
|
195
192
|
provider_target_users.remove(target_user)
|
|
196
193
|
self.topo_changed()
|
|
@@ -210,7 +207,7 @@ class TopoManager(Observable):
|
|
|
210
207
|
old_provider = TopoManager._get_value_provider(node, old_arg)
|
|
211
208
|
if old_provider:
|
|
212
209
|
old_provider_target_users = old_provider[0].get_target_users(old_provider[1])
|
|
213
|
-
for target_user in old_provider_target_users:
|
|
210
|
+
for target_user in reversed(old_provider_target_users):
|
|
214
211
|
if target_user[0] == node and target_user[1] == arg_idx:
|
|
215
212
|
old_provider_target_users.remove(target_user)
|
|
216
213
|
break
|
|
@@ -244,33 +241,3 @@ class TopoManager(Observable):
|
|
|
244
241
|
# Update current node's arg_providers.
|
|
245
242
|
dst_node.set_arg_providers(arg_idx, (src_node, out_idx))
|
|
246
243
|
self.topo_changed()
|
|
247
|
-
|
|
248
|
-
def dump(self, title="") -> str:
|
|
249
|
-
"""
|
|
250
|
-
Dump topological relation.
|
|
251
|
-
|
|
252
|
-
title (str): A string as a title will be printed before dumping topological relation.
|
|
253
|
-
"""
|
|
254
|
-
try:
|
|
255
|
-
from tabulate import tabulate
|
|
256
|
-
except ImportError:
|
|
257
|
-
print("`topologival_manager:dump()` relies on the library `tabulate`, "
|
|
258
|
-
"which could not be found on this machine. Run `pip "
|
|
259
|
-
"install tabulate` to install the library.")
|
|
260
|
-
return ""
|
|
261
|
-
dump_str = "=" * 40 + title + "=" * 40 + '\n'
|
|
262
|
-
node_specs = [[
|
|
263
|
-
n.get_node_type(),
|
|
264
|
-
n.get_name(),
|
|
265
|
-
astunparse.unparse(n.get_ast()).strip(),
|
|
266
|
-
[[key, ((value[0].get_name(), value[1]) if value else ())]
|
|
267
|
-
for key, value in n.get_arg_providers().items()],
|
|
268
|
-
[[
|
|
269
|
-
key,
|
|
270
|
-
[(val[0].get_name(), val[1]) if val else ()
|
|
271
|
-
for val in value] if value else []
|
|
272
|
-
] for key, value in n.get_target_users().items()]
|
|
273
|
-
] for n in self.symbol_tree.nodes()]
|
|
274
|
-
dump_str += tabulate(node_specs, headers=['node type', 'name', 'codes', 'arg providers', 'target users'])
|
|
275
|
-
dump_str += '\n' + "=" * (82 + len(title)) + '\n'
|
|
276
|
-
return dump_str
|
|
@@ -15,10 +15,11 @@
|
|
|
15
15
|
"""Parse ast.arguments to input-node of SymbolTree."""
|
|
16
16
|
import ast
|
|
17
17
|
|
|
18
|
-
from
|
|
19
|
-
from
|
|
18
|
+
from .parser import Parser
|
|
19
|
+
from .parser_register import reg_parser
|
|
20
20
|
from ..symbol_tree import SymbolTree
|
|
21
21
|
from ..common import error_str
|
|
22
|
+
from ..node.node_manager import NodeManager
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
class ArgumentsParser(Parser):
|
|
@@ -28,36 +29,36 @@ class ArgumentsParser(Parser):
|
|
|
28
29
|
"""Parse target type"""
|
|
29
30
|
return ast.arguments
|
|
30
31
|
|
|
31
|
-
def process(self, stree: SymbolTree,
|
|
32
|
+
def process(self, stree: SymbolTree, ast_node: ast.arguments, node_manager: NodeManager):
|
|
32
33
|
"""
|
|
33
34
|
Parse ast.arguments and create input-node to stree.
|
|
34
35
|
|
|
35
36
|
Args:
|
|
36
37
|
stree (SymbolTree): symbol tree under parsing.
|
|
37
|
-
|
|
38
|
+
ast_node (ast.arguments): ast argument node in construct.
|
|
39
|
+
node_manager (NodeManager): NodeManager those asts belong to.
|
|
38
40
|
|
|
39
41
|
Raises:
|
|
40
|
-
RuntimeError: Types of
|
|
42
|
+
RuntimeError: Types of ast_node.args elements are not ast.arg.
|
|
41
43
|
"""
|
|
42
|
-
if hasattr(
|
|
43
|
-
stree.try_append_python_node(
|
|
44
|
+
if hasattr(ast_node, "posonlyargs"):
|
|
45
|
+
stree.try_append_python_node(ast_node, ast_node.posonlyargs, node_manager)
|
|
44
46
|
|
|
45
|
-
for arg in
|
|
47
|
+
for arg in ast_node.args:
|
|
46
48
|
if not isinstance(arg, ast.arg):
|
|
47
49
|
raise RuntimeError(error_str(f"only support ast.arg in arguments arg, but got '{type(arg).__name__}'",
|
|
48
|
-
|
|
49
|
-
stree.append_input_node(arg, arg.arg)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
stree.try_append_python_node(node, node.defaults)
|
|
50
|
+
arg, ast_node))
|
|
51
|
+
stree.append_input_node(arg, arg.arg, node_manager=node_manager)
|
|
52
|
+
if hasattr(ast_node, "vararg"):
|
|
53
|
+
stree.try_append_python_node(ast_node, ast_node.vararg, node_manager)
|
|
54
|
+
if hasattr(ast_node, "kwonlyargs"):
|
|
55
|
+
stree.try_append_python_node(ast_node, ast_node.kwonlyargs, node_manager)
|
|
56
|
+
if hasattr(ast_node, "kw_defaults"):
|
|
57
|
+
stree.try_append_python_node(ast_node, ast_node.kw_defaults, node_manager)
|
|
58
|
+
if hasattr(ast_node, "kwarg"):
|
|
59
|
+
stree.try_append_python_node(ast_node, ast_node.kwarg, node_manager)
|
|
60
|
+
if hasattr(ast_node, "defaults"):
|
|
61
|
+
stree.try_append_python_node(ast_node, ast_node.defaults, node_manager)
|
|
61
62
|
|
|
62
63
|
|
|
63
64
|
g_arguments_parser = reg_parser(ArgumentsParser())
|