mindspore 2.0.0rc1__cp38-none-any.whl → 2.2.0__cp38-none-any.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/Third_Party_Open_Source_Software_Notice +2 -2
- mindspore/__init__.py +5 -2
- mindspore/_akg/akg/build_module.py +5 -6
- mindspore/_akg/akg/composite/build_module.py +49 -16
- mindspore/_akg/akg/composite/split_stitch.py +10 -11
- mindspore/_akg/akg/config/repository.json +195 -0
- mindspore/_akg/akg/global_configs.py +5 -1
- 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/composite_op_helper.py +9 -10
- mindspore/_akg/akg/utils/kernel_exec.py +58 -260
- mindspore/_akg/akg/utils/op_dsl.py +17 -1
- mindspore/_akg/akg/utils/result_analysis.py +4 -24
- mindspore/_akg/akg/utils/tbe_codegen_utils.py +198 -0
- mindspore/_c_dataengine.cpython-38-aarch64-linux-gnu.so +0 -0
- mindspore/_c_expression.cpython-38-aarch64-linux-gnu.so +0 -0
- mindspore/_c_mindrecord.cpython-38-aarch64-linux-gnu.so +0 -0
- mindspore/_check_jit_forbidden_api.py +5 -1
- mindspore/_checkparam.py +79 -62
- mindspore/_extends/graph_kernel/__init__.py +0 -1
- mindspore/_extends/graph_kernel/model/graph_split.py +2 -0
- mindspore/_extends/graph_kernel/model/model_builder.py +9 -50
- mindspore/_extends/graph_kernel/splitter.py +1 -9
- mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +128 -21
- mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +2 -2
- mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +4 -2
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +18 -13
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +13 -9
- 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 +19 -17
- mindspore/_extends/parse/namespace.py +7 -36
- mindspore/_extends/parse/parser.py +375 -189
- mindspore/_extends/parse/resources.py +36 -41
- mindspore/_extends/parse/standard_method.py +350 -245
- mindspore/_extends/parse/trope.py +2 -12
- mindspore/_extends/remote/kernel_build_server.py +24 -7
- mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
- mindspore/_install_custom.py +43 -0
- mindspore/_mindspore_offline_debug.cpython-38-aarch64-linux-gnu.so +0 -0
- mindspore/amp.py +85 -19
- mindspore/bin/cache_admin +0 -0
- mindspore/bin/cache_server +0 -0
- mindspore/boost/base.py +2 -2
- mindspore/boost/boost.py +27 -32
- mindspore/boost/boost_cell_wrapper.py +37 -13
- mindspore/boost/grad_accumulation.py +1 -1
- mindspore/boost/grad_freeze.py +34 -6
- mindspore/boost/group_loss_scale_manager.py +15 -14
- mindspore/boost/less_batch_normalization.py +28 -3
- mindspore/common/__init__.py +15 -11
- mindspore/common/_auto_dynamic.py +68 -0
- mindspore/common/_jit_fallback_utils.py +111 -0
- mindspore/common/_register_for_adapter.py +17 -5
- mindspore/common/_register_for_tensor.py +2 -2
- mindspore/common/_stub_tensor.py +18 -15
- mindspore/common/_utils.py +31 -7
- mindspore/common/api.py +269 -101
- mindspore/common/auto_dynamic_shape.py +498 -0
- mindspore/common/dtype.py +61 -21
- mindspore/common/dump.py +9 -7
- mindspore/common/initializer.py +106 -76
- mindspore/common/jit_config.py +35 -14
- mindspore/common/lazy_inline.py +187 -0
- mindspore/common/mindir_util.py +101 -0
- mindspore/common/mutable.py +10 -13
- mindspore/common/parameter.py +246 -55
- mindspore/common/seed.py +13 -7
- mindspore/common/sparse_tensor.py +29 -33
- mindspore/common/tensor.py +907 -251
- mindspore/communication/__init__.py +7 -4
- mindspore/communication/_comm_helper.py +84 -4
- mindspore/communication/management.py +160 -88
- mindspore/config/op_info.config +99 -75
- mindspore/config/super_bar_config.json +36 -4
- mindspore/context.py +526 -219
- mindspore/dataset/__init__.py +9 -46
- mindspore/dataset/audio/__init__.py +4 -19
- mindspore/dataset/audio/transforms.py +545 -233
- mindspore/dataset/audio/utils.py +21 -18
- mindspore/dataset/callback/ds_callback.py +42 -13
- mindspore/dataset/core/config.py +158 -100
- mindspore/dataset/core/validator_helpers.py +1 -63
- mindspore/dataset/debug/debug_hook.py +45 -13
- mindspore/dataset/debug/pre_defined_hook.py +5 -5
- mindspore/dataset/engine/__init__.py +0 -5
- mindspore/dataset/engine/cache_client.py +38 -15
- mindspore/dataset/engine/datasets.py +615 -278
- mindspore/dataset/engine/datasets_audio.py +154 -283
- mindspore/dataset/engine/datasets_standard_format.py +104 -116
- mindspore/dataset/engine/datasets_text.py +443 -326
- mindspore/dataset/engine/datasets_user_defined.py +251 -164
- mindspore/dataset/engine/datasets_vision.py +839 -1443
- mindspore/dataset/engine/iterators.py +11 -4
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +7 -3
- mindspore/dataset/engine/obs/util.py +3 -0
- mindspore/dataset/engine/offload.py +6 -6
- mindspore/dataset/engine/queue.py +15 -14
- mindspore/dataset/engine/samplers.py +39 -23
- mindspore/dataset/engine/serializer_deserializer.py +22 -6
- mindspore/dataset/engine/validators.py +21 -331
- mindspore/dataset/text/__init__.py +5 -33
- mindspore/dataset/text/transforms.py +334 -165
- mindspore/dataset/text/utils.py +215 -145
- mindspore/dataset/transforms/__init__.py +1 -1
- mindspore/dataset/transforms/c_transforms.py +3 -2
- mindspore/dataset/transforms/py_transforms_util.py +40 -12
- mindspore/dataset/transforms/transforms.py +174 -71
- mindspore/dataset/utils/browse_dataset.py +25 -17
- mindspore/dataset/utils/line_reader.py +24 -21
- mindspore/dataset/vision/__init__.py +5 -26
- mindspore/dataset/vision/c_transforms.py +177 -165
- mindspore/dataset/vision/py_transforms.py +114 -119
- mindspore/dataset/vision/py_transforms_util.py +54 -51
- mindspore/dataset/vision/transforms.py +1127 -381
- mindspore/dataset/vision/utils.py +54 -38
- mindspore/dataset/vision/validators.py +12 -2
- mindspore/experimental/map_parameter.py +38 -4
- mindspore/{dataset/datapreprocess → experimental/optim}/__init__.py +14 -4
- mindspore/experimental/optim/adam.py +192 -0
- mindspore/experimental/optim/adamw.py +181 -0
- mindspore/experimental/optim/lr_scheduler.py +1427 -0
- mindspore/experimental/optim/optimizer.py +252 -0
- mindspore/experimental/optim/sgd.py +147 -0
- mindspore/gen_ops.py +273 -0
- mindspore/include/OWNERS +1 -2
- mindspore/include/api/context.h +21 -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 +29 -42
- mindspore/include/api/model_group.h +14 -3
- mindspore/include/api/model_parallel_runner.h +18 -2
- mindspore/include/api/serialization.h +26 -0
- mindspore/include/api/status.h +1 -0
- mindspore/include/api/types.h +38 -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/c_api/status_c.h +3 -0
- mindspore/include/dataset/constants.h +6 -12
- mindspore/include/dataset/execute.h +23 -13
- mindspore/include/dataset/text.h +26 -26
- mindspore/include/dataset/transforms.h +25 -31
- 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/format.h +0 -1
- mindspore/include/mindapi/base/type_id.h +2 -1
- mindspore/include/mindapi/base/types.h +5 -1
- 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/libmpi_adapter.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_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 +9000 -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/libmindspore_ascend.so.1 +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.2 +0 -0
- mindspore/log.py +9 -6
- mindspore/mindrecord/filereader.py +33 -4
- mindspore/mindrecord/filewriter.py +70 -35
- mindspore/mindrecord/mindpage.py +40 -34
- mindspore/mindrecord/shardreader.py +1 -1
- mindspore/mindrecord/shardsegment.py +1 -1
- mindspore/mindrecord/tools/cifar100_to_mr.py +25 -18
- mindspore/mindrecord/tools/cifar10_to_mr.py +25 -18
- mindspore/mindrecord/tools/csv_to_mr.py +29 -13
- mindspore/mindrecord/tools/imagenet_to_mr.py +24 -10
- mindspore/mindrecord/tools/mnist_to_mr.py +24 -11
- mindspore/mindrecord/tools/tfrecord_to_mr.py +31 -26
- mindspore/nn/cell.py +463 -169
- mindspore/nn/dynamic_lr.py +47 -43
- mindspore/nn/layer/activation.py +225 -82
- mindspore/nn/layer/basic.py +121 -79
- mindspore/nn/layer/channel_shuffle.py +21 -21
- mindspore/nn/layer/combined.py +33 -26
- mindspore/nn/layer/container.py +277 -22
- mindspore/nn/layer/conv.py +441 -304
- mindspore/nn/layer/dense.py +19 -13
- mindspore/nn/layer/embedding.py +62 -49
- mindspore/nn/layer/flash_attention.py +264 -0
- mindspore/nn/layer/image.py +50 -39
- mindspore/nn/layer/math.py +62 -51
- mindspore/nn/layer/normalization.py +219 -167
- mindspore/nn/layer/padding.py +58 -70
- mindspore/nn/layer/pooling.py +334 -287
- mindspore/nn/layer/rnn_cells.py +53 -38
- mindspore/nn/layer/rnns.py +59 -56
- mindspore/nn/layer/thor_layer.py +52 -44
- mindspore/nn/layer/timedistributed.py +6 -4
- mindspore/nn/layer/transformer.py +284 -164
- mindspore/nn/learning_rate_schedule.py +34 -25
- mindspore/nn/loss/__init__.py +3 -2
- mindspore/nn/loss/loss.py +554 -311
- mindspore/nn/optim/ada_grad.py +12 -9
- mindspore/nn/optim/adadelta.py +14 -11
- mindspore/nn/optim/adafactor.py +19 -16
- mindspore/nn/optim/adam.py +62 -47
- mindspore/nn/optim/adamax.py +13 -10
- mindspore/nn/optim/adasum.py +12 -8
- mindspore/nn/optim/asgd.py +10 -9
- mindspore/nn/optim/ftrl.py +20 -17
- mindspore/nn/optim/lamb.py +16 -12
- mindspore/nn/optim/lars.py +8 -6
- mindspore/nn/optim/lazyadam.py +25 -20
- mindspore/nn/optim/momentum.py +10 -7
- mindspore/nn/optim/optimizer.py +61 -9
- mindspore/nn/optim/proximal_ada_grad.py +14 -13
- mindspore/nn/optim/rmsprop.py +17 -13
- mindspore/nn/optim/rprop.py +30 -17
- mindspore/nn/optim/sgd.py +40 -23
- mindspore/nn/optim/thor.py +24 -26
- mindspore/nn/probability/bijector/bijector.py +11 -11
- mindspore/nn/probability/bijector/exp.py +1 -1
- mindspore/nn/probability/bijector/gumbel_cdf.py +3 -3
- mindspore/nn/probability/bijector/invert.py +1 -1
- mindspore/nn/probability/bijector/power_transform.py +29 -29
- mindspore/nn/probability/bijector/scalar_affine.py +3 -3
- mindspore/nn/probability/bijector/softplus.py +5 -5
- mindspore/nn/probability/bnn_layers/bnn_cell_wrapper.py +4 -2
- mindspore/nn/probability/bnn_layers/conv_variational.py +13 -13
- mindspore/nn/probability/bnn_layers/dense_variational.py +12 -12
- mindspore/nn/probability/bnn_layers/layer_distribution.py +9 -8
- mindspore/nn/probability/distribution/_utils/custom_ops.py +19 -3
- mindspore/nn/probability/distribution/_utils/utils.py +1 -1
- mindspore/nn/probability/distribution/bernoulli.py +9 -9
- mindspore/nn/probability/distribution/beta.py +8 -8
- mindspore/nn/probability/distribution/categorical.py +23 -15
- mindspore/nn/probability/distribution/cauchy.py +5 -6
- mindspore/nn/probability/distribution/distribution.py +3 -3
- mindspore/nn/probability/distribution/exponential.py +4 -4
- mindspore/nn/probability/distribution/gamma.py +10 -10
- mindspore/nn/probability/distribution/geometric.py +8 -8
- mindspore/nn/probability/distribution/gumbel.py +8 -9
- mindspore/nn/probability/distribution/half_normal.py +5 -5
- mindspore/nn/probability/distribution/laplace.py +5 -5
- mindspore/nn/probability/distribution/log_normal.py +12 -11
- mindspore/nn/probability/distribution/logistic.py +8 -8
- mindspore/nn/probability/distribution/normal.py +6 -5
- mindspore/nn/probability/distribution/poisson.py +10 -11
- mindspore/nn/probability/distribution/student_t.py +8 -9
- mindspore/nn/probability/distribution/transformed_distribution.py +5 -5
- mindspore/nn/probability/distribution/uniform.py +11 -11
- mindspore/nn/reinforcement/tensor_array.py +2 -2
- mindspore/nn/sparse/sparse.py +9 -9
- mindspore/nn/wrap/cell_wrapper.py +188 -63
- mindspore/nn/wrap/grad_reducer.py +21 -12
- mindspore/nn/wrap/loss_scale.py +136 -49
- mindspore/numpy/__init__.py +4 -4
- mindspore/numpy/array_creations.py +55 -56
- mindspore/numpy/array_ops.py +134 -35
- mindspore/numpy/logic_ops.py +66 -20
- mindspore/numpy/math_ops.py +142 -139
- mindspore/numpy/utils_const.py +2 -2
- mindspore/offline_debug/convert_async.py +2 -2
- mindspore/ops/_grad_experimental/__init__.py +7 -5
- mindspore/ops/_grad_experimental/grad_array_ops.py +231 -348
- mindspore/ops/{_grad → _grad_experimental}/grad_base.py +1 -33
- mindspore/ops/{_grad → _grad_experimental}/grad_comm_ops.py +25 -13
- mindspore/ops/{_grad/__init__.py → _grad_experimental/grad_debug_ops.py} +15 -7
- mindspore/ops/{_grad → _grad_experimental}/grad_implementations.py +17 -11
- mindspore/ops/_grad_experimental/grad_inner_ops.py +33 -52
- mindspore/ops/_grad_experimental/grad_math_ops.py +151 -1224
- mindspore/ops/_grad_experimental/grad_nn_ops.py +141 -414
- mindspore/ops/{_grad → _grad_experimental}/grad_quant_ops.py +10 -6
- mindspore/ops/_grad_experimental/grad_sparse.py +317 -2
- mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -13
- mindspore/ops/{_grad → _grad_experimental}/taylor_rule.py +1 -1
- mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/flash_attention/__init__.py +0 -0
- mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +406 -0
- mindspore/{_extends/graph_kernel/expanders/complex/__init__.py → ops/_op_impl/_custom_op/flash_attention/constants.py} +27 -8
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +467 -0
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +563 -0
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +193 -0
- mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +435 -0
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/__init__.py +0 -0
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/sparse_tiling.py +45 -0
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/strategy.py +67 -0
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +62 -0
- mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_left_impl.py +2 -2
- mindspore/ops/_op_impl/aicpu/__init__.py +41 -1
- mindspore/ops/_op_impl/aicpu/adaptive_max_pool_2d.py +37 -0
- mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/cast.py +52 -0
- mindspore/ops/_op_impl/aicpu/coalesce.py +2 -0
- mindspore/ops/_op_impl/aicpu/col2im.py +3 -1
- mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
- mindspore/ops/_op_impl/aicpu/dropout_genmask.py +6 -0
- mindspore/ops/_op_impl/aicpu/eps.py +32 -0
- mindspore/ops/_op_impl/aicpu/eye.py +4 -4
- mindspore/ops/_op_impl/aicpu/fft_with_size.py +6 -0
- mindspore/ops/_op_impl/aicpu/fill_diagonal.py +5 -0
- mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
- mindspore/ops/_op_impl/aicpu/im2col.py +3 -5
- mindspore/ops/_op_impl/aicpu/lgamma.py +1 -0
- mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
- mindspore/ops/_op_impl/aicpu/lu.py +39 -0
- mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/masked_scatter.py +1 -0
- mindspore/ops/_op_impl/aicpu/masked_select_grad.py +3 -0
- mindspore/ops/_op_impl/aicpu/matrix_band_part.py +59 -0
- mindspore/ops/_op_impl/aicpu/matrix_power.py +6 -1
- mindspore/ops/_op_impl/aicpu/median.py +1 -0
- mindspore/ops/_op_impl/aicpu/multinomial.py +9 -9
- mindspore/ops/_op_impl/aicpu/not_equal.py +0 -5
- mindspore/ops/_op_impl/aicpu/pad_v3.py +3 -1
- mindspore/ops/_op_impl/aicpu/pad_v3_grad.py +2 -0
- 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/resize_bilinear_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/resize_nearest_neighbor_v2.py +0 -6
- mindspore/ops/_op_impl/aicpu/resize_nearest_neighbor_v2_grad.py +0 -7
- mindspore/ops/_op_impl/aicpu/scatter_nd.py +2 -0
- mindspore/ops/_op_impl/aicpu/sequence_concat.py +40 -0
- mindspore/ops/_op_impl/aicpu/sequence_stack.py +40 -0
- 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 -4
- mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -4
- 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/aicpu/upsample_nearest_3d.py +14 -6
- mindspore/ops/_op_impl/aicpu/upsample_nearest_3d_grad.py +22 -8
- mindspore/ops/_op_impl/aicpu/upsample_trilinear_3d.py +11 -6
- mindspore/ops/_op_impl/aicpu/upsample_trilinear_3d_grad.py +21 -10
- mindspore/ops/_op_impl/tbe/__init__.py +6 -4
- mindspore/ops/_op_impl/tbe/atomic_addr_clean.py +1 -1
- mindspore/ops/_op_impl/tbe/avg_pool.py +2 -2
- mindspore/ops/_op_impl/tbe/avg_pool_3d.py +3 -3
- mindspore/ops/_op_impl/tbe/avg_pool_3d_grad.py +4 -4
- mindspore/ops/_op_impl/tbe/avg_pool_ds.py +2 -2
- mindspore/ops/_op_impl/tbe/avg_pool_grad.py +3 -3
- mindspore/ops/_op_impl/tbe/avg_pool_grad_vm.py +3 -3
- mindspore/ops/_op_impl/tbe/batch_to_space.py +1 -1
- mindspore/ops/_op_impl/tbe/batch_to_space_nd.py +2 -2
- mindspore/ops/_op_impl/tbe/bn_infer.py +2 -2
- mindspore/ops/_op_impl/tbe/bn_infer_ds.py +3 -2
- mindspore/ops/_op_impl/tbe/broadcast_to.py +1 -1
- mindspore/ops/_op_impl/tbe/depthwise_conv2d.py +3 -3
- mindspore/ops/_op_impl/tbe/expand_dims.py +1 -1
- mindspore/ops/_op_impl/tbe/gather_v2.py +56 -0
- mindspore/ops/_op_impl/tbe/im2col.py +4 -4
- mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
- mindspore/ops/_op_impl/tbe/mem_set.py +38 -0
- mindspore/ops/_op_impl/tbe/scatter_nd_add.py +3 -0
- mindspore/ops/_op_impl/tbe/scatter_nd_d.py +1 -1
- mindspore/ops/_op_impl/tbe/space_to_batch.py +1 -1
- mindspore/ops/_op_impl/tbe/space_to_batch_nd.py +2 -2
- mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
- mindspore/ops/_primitive_cache.py +1 -1
- mindspore/ops/_tracefunc.py +241 -0
- mindspore/ops/_utils/utils.py +10 -2
- mindspore/ops/_vmap/vmap_array_ops.py +5 -3
- mindspore/ops/_vmap/vmap_base.py +5 -4
- mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
- mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +11 -6
- mindspore/ops/_vmap/vmap_math_ops.py +5 -2
- mindspore/ops/_vmap/vmap_nn_ops.py +135 -11
- mindspore/ops/arg_dtype_cast.py +54 -0
- mindspore/ops/composite/__init__.py +7 -5
- mindspore/ops/composite/base.py +78 -34
- mindspore/ops/composite/math_ops.py +5 -695
- mindspore/ops/composite/multitype_ops/_compile_utils.py +403 -97
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +28 -22
- mindspore/ops/composite/multitype_ops/add_impl.py +69 -7
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -0
- mindspore/ops/composite/multitype_ops/div_impl.py +1 -0
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +1 -0
- mindspore/ops/composite/multitype_ops/getitem_impl.py +48 -10
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +2 -0
- mindspore/ops/composite/multitype_ops/greater_impl.py +2 -0
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -0
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +2 -0
- mindspore/ops/composite/multitype_ops/less_impl.py +2 -0
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +2 -2
- mindspore/ops/composite/multitype_ops/mod_impl.py +1 -0
- mindspore/ops/composite/multitype_ops/mul_impl.py +1 -0
- mindspore/ops/composite/multitype_ops/negative_impl.py +1 -0
- mindspore/ops/composite/multitype_ops/not_in_impl.py +1 -0
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/pow_impl.py +1 -0
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -0
- mindspore/ops/composite/multitype_ops/setitem_impl.py +10 -7
- mindspore/ops/composite/multitype_ops/sub_impl.py +1 -0
- mindspore/ops/composite/multitype_ops/uadd_impl.py +2 -0
- mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
- mindspore/ops/deprecated.py +304 -0
- mindspore/ops/function/__init__.py +41 -4
- mindspore/ops/function/array_func.py +1108 -467
- mindspore/ops/function/clip_func.py +94 -27
- mindspore/ops/function/debug_func.py +3 -1
- mindspore/ops/function/grad/grad_func.py +82 -73
- mindspore/ops/function/image_func.py +28 -12
- mindspore/ops/function/linalg_func.py +135 -39
- mindspore/ops/function/math_func.py +3779 -894
- mindspore/ops/function/nn_func.py +1584 -657
- mindspore/ops/function/parameter_func.py +13 -3
- mindspore/ops/function/random_func.py +247 -153
- mindspore/ops/function/sparse_func.py +14 -11
- mindspore/ops/function/sparse_unary_func.py +173 -47
- mindspore/ops/function/spectral_func.py +8 -4
- mindspore/ops/function/vmap_func.py +8 -7
- mindspore/ops/functional.py +47 -16
- mindspore/ops/op_info_register.py +346 -86
- mindspore/ops/operations/__init__.py +38 -22
- mindspore/ops/operations/_grad_ops.py +145 -149
- mindspore/ops/operations/_inner_ops.py +298 -56
- mindspore/ops/operations/_ms_kernel.py +3 -3
- mindspore/ops/operations/_quant_ops.py +24 -28
- mindspore/ops/operations/_rl_inner_ops.py +9 -7
- mindspore/ops/operations/_scalar_ops.py +115 -0
- mindspore/ops/operations/_sequence_ops.py +148 -10
- mindspore/ops/operations/_tensor_array.py +1 -1
- mindspore/ops/operations/_thor_ops.py +2 -2
- mindspore/ops/operations/array_ops.py +1239 -561
- mindspore/ops/operations/comm_ops.py +166 -90
- mindspore/ops/operations/control_ops.py +3 -3
- mindspore/ops/operations/custom_ops.py +124 -102
- mindspore/ops/operations/debug_ops.py +24 -11
- mindspore/ops/operations/image_ops.py +86 -71
- mindspore/ops/operations/inner_ops.py +18 -13
- mindspore/ops/operations/linalg_ops.py +30 -11
- mindspore/ops/operations/math_ops.py +1730 -435
- mindspore/ops/operations/nn_ops.py +1953 -943
- mindspore/ops/operations/other_ops.py +65 -43
- mindspore/ops/operations/random_ops.py +258 -98
- mindspore/ops/operations/rl_ops.py +4 -36
- mindspore/ops/operations/sparse_ops.py +38 -33
- mindspore/ops/operations/spectral_ops.py +8 -4
- mindspore/ops/primitive.py +66 -44
- mindspore/ops/signature.py +5 -5
- mindspore/parallel/_auto_parallel_context.py +80 -19
- mindspore/parallel/_cost_model_context.py +42 -0
- mindspore/parallel/_offload_context.py +162 -72
- mindspore/parallel/_parallel_serialization.py +2 -2
- mindspore/parallel/_ps_context.py +16 -4
- mindspore/parallel/_recovery_context.py +2 -1
- mindspore/parallel/_tensor.py +15 -13
- mindspore/parallel/_transformer/layers.py +8 -6
- mindspore/parallel/_transformer/loss.py +1 -0
- mindspore/parallel/_transformer/moe.py +7 -7
- mindspore/parallel/_transformer/op_parallel_config.py +12 -1
- mindspore/parallel/_transformer/transformer.py +34 -14
- mindspore/parallel/_utils.py +36 -14
- mindspore/parallel/algo_parameter_config.py +114 -20
- mindspore/parallel/checkpoint_transform.py +16 -18
- mindspore/parallel/shard.py +16 -13
- mindspore/profiler/__init__.py +1 -1
- mindspore/profiler/common/struct_type.py +3 -3
- mindspore/profiler/common/util.py +3 -2
- mindspore/profiler/envprofiling.py +11 -4
- mindspore/profiler/parser/aicpu_data_parser.py +5 -3
- mindspore/profiler/parser/ascend_flops_generator.py +94 -0
- mindspore/profiler/parser/ascend_fpbp_generator.py +76 -0
- mindspore/profiler/parser/ascend_hccl_generator.py +288 -0
- mindspore/profiler/parser/ascend_msprof_exporter.py +213 -0
- mindspore/profiler/parser/ascend_msprof_generator.py +199 -0
- mindspore/profiler/parser/ascend_op_generator.py +276 -0
- mindspore/profiler/parser/ascend_steptrace_generator.py +94 -0
- mindspore/profiler/parser/ascend_timeline_generator.py +110 -54
- mindspore/profiler/parser/base_timeline_generator.py +11 -7
- mindspore/profiler/parser/cpu_gpu_timeline_generator.py +45 -46
- mindspore/profiler/parser/flops_parser.py +15 -11
- mindspore/profiler/parser/framework_parser.py +92 -73
- mindspore/profiler/parser/hccl_parser.py +16 -12
- mindspore/profiler/parser/integrator.py +22 -11
- mindspore/profiler/parser/memory_usage_parser.py +36 -11
- 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 +4 -5
- mindspore/profiler/parser/step_trace_parser.py +11 -14
- mindspore/profiler/profiling.py +678 -377
- mindspore/rewrite/api/node.py +211 -54
- mindspore/rewrite/api/node_type.py +5 -0
- mindspore/rewrite/api/pattern_engine.py +22 -23
- mindspore/rewrite/api/scoped_value.py +20 -17
- mindspore/rewrite/api/symbol_tree.py +252 -106
- mindspore/rewrite/api/tree_node_helper.py +3 -0
- 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 +97 -46
- mindspore/rewrite/common/rewrite_elog.py +5 -1
- mindspore/rewrite/namer.py +51 -51
- mindspore/rewrite/namespace.py +14 -5
- mindspore/{ops/bprop_mindir → rewrite/node}/__init__.py +9 -4
- 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} +313 -247
- mindspore/rewrite/node/node_manager.py +254 -0
- mindspore/rewrite/node/node_topological_manager.py +243 -0
- mindspore/rewrite/parsers/arguments_parser.py +22 -21
- mindspore/rewrite/parsers/assign_parser.py +225 -239
- mindspore/rewrite/parsers/attribute_parser.py +9 -7
- mindspore/rewrite/parsers/class_def_parser.py +179 -218
- 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 +23 -20
- mindspore/rewrite/parsers/if_parser.py +28 -24
- mindspore/rewrite/parsers/module_parser.py +202 -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/sparsify.py +4 -1
- mindspore/rewrite/sparsify/utils.py +11 -5
- mindspore/rewrite/symbol_tree.py +577 -732
- mindspore/rewrite/symbol_tree_builder.py +9 -175
- mindspore/rewrite/symbol_tree_dumper.py +2 -2
- mindspore/run_check/_check_version.py +46 -39
- mindspore/run_check/run_check.py +3 -2
- mindspore/{scipy/sparse → safeguard}/__init__.py +4 -5
- mindspore/safeguard/rewrite_obfuscation.py +517 -0
- mindspore/scipy/__init__.py +1 -1
- mindspore/scipy/linalg.py +67 -61
- mindspore/scipy/ops.py +5 -41
- mindspore/scipy/ops_grad.py +3 -2
- mindspore/scipy/ops_wrapper.py +5 -5
- mindspore/scipy/optimize/line_search.py +8 -8
- mindspore/scipy/optimize/linear_sum_assignment.py +4 -4
- mindspore/scipy/optimize/minimize.py +16 -12
- mindspore/scipy/utils.py +1 -52
- mindspore/scipy/utils_const.py +4 -4
- mindspore/train/__init__.py +4 -4
- mindspore/train/_utils.py +13 -5
- mindspore/train/amp.py +410 -148
- mindspore/train/anf_ir_pb2.py +16 -4
- mindspore/train/callback/_backup_and_restore.py +8 -11
- mindspore/train/callback/_callback.py +80 -3
- mindspore/train/callback/_checkpoint.py +82 -51
- mindspore/train/callback/_early_stop.py +12 -15
- mindspore/train/callback/_history.py +1 -1
- mindspore/train/callback/_lambda_callback.py +13 -13
- mindspore/train/callback/_landscape.py +21 -17
- mindspore/train/callback/_loss_monitor.py +9 -10
- mindspore/train/callback/_on_request_exit.py +16 -33
- mindspore/train/callback/_reduce_lr_on_plateau.py +21 -24
- mindspore/train/callback/_summary_collector.py +44 -30
- mindspore/train/callback/_time_monitor.py +62 -12
- mindspore/train/data_sink.py +10 -16
- mindspore/train/dataset_helper.py +154 -86
- mindspore/train/loss_scale_manager.py +14 -9
- mindspore/train/metrics/__init__.py +10 -2
- mindspore/train/metrics/accuracy.py +1 -1
- mindspore/train/metrics/auc.py +1 -1
- mindspore/train/metrics/bleu_score.py +2 -2
- mindspore/train/metrics/confusion_matrix.py +14 -14
- mindspore/train/metrics/cosine_similarity.py +3 -3
- mindspore/train/metrics/dice.py +1 -1
- mindspore/train/metrics/fbeta.py +1 -1
- mindspore/train/metrics/hausdorff_distance.py +8 -6
- mindspore/train/metrics/mean_surface_distance.py +5 -4
- mindspore/train/metrics/metric.py +49 -17
- mindspore/train/metrics/occlusion_sensitivity.py +4 -4
- mindspore/train/metrics/perplexity.py +1 -1
- mindspore/train/metrics/precision.py +2 -2
- mindspore/train/metrics/recall.py +2 -3
- mindspore/train/metrics/roc.py +7 -7
- mindspore/train/metrics/root_mean_square_surface_distance.py +5 -4
- mindspore/train/metrics/topk.py +7 -4
- mindspore/train/mind_ir_pb2.py +193 -48
- mindspore/train/model.py +377 -133
- mindspore/train/serialization.py +697 -245
- mindspore/train/summary/_summary_adapter.py +5 -2
- mindspore/train/summary/_writer_pool.py +4 -3
- mindspore/train/summary/summary_record.py +25 -23
- mindspore/train/train_thor/convert_utils.py +39 -23
- mindspore/train/train_thor/dataset_helper.py +4 -3
- mindspore/train/train_thor/model_thor.py +8 -8
- mindspore/version.py +1 -1
- {mindspore-2.0.0rc1.dist-info → mindspore-2.2.0.dist-info}/METADATA +7 -8
- {mindspore-2.0.0rc1.dist-info → mindspore-2.2.0.dist-info}/RECORD +633 -804
- {mindspore-2.0.0rc1.dist-info → mindspore-2.2.0.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 -57
- 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/bias_add_grad.py +0 -49
- 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/gather.py +0 -43
- 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/expanders/tile.py +0 -54
- mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
- mindspore/_extends/parse/jit_fallback_modules.py +0 -51
- mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
- mindspore/dataset/engine/graphdata.py +0 -1586
- mindspore/include/api/net.h +0 -142
- mindspore/ops/_grad/grad_array_ops.py +0 -1347
- mindspore/ops/_grad/grad_clip_ops.py +0 -84
- mindspore/ops/_grad/grad_debug_ops.py +0 -68
- mindspore/ops/_grad/grad_inner_ops.py +0 -235
- mindspore/ops/_grad/grad_math_ops.py +0 -1684
- mindspore/ops/_grad/grad_nn_ops.py +0 -1529
- mindspore/ops/_grad/grad_other_ops.py +0 -89
- mindspore/ops/_grad/grad_sequence_ops.py +0 -296
- mindspore/ops/_grad/grad_sparse.py +0 -323
- mindspore/ops/_grad_experimental/grad_image_ops.py +0 -249
- mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -195
- mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
- mindspore/ops/bprop_mindir/AdaptiveAvgPool2D_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/AdaptiveMaxPool2D_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ApproximateEqual_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/Argmax_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/Argmin_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/AssignSub_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/Assign_bprop.mindir +0 -17
- mindspore/ops/bprop_mindir/AvgPool3D_bprop.mindir +0 -150
- mindspore/ops/bprop_mindir/AvgPool_bprop.mindir +0 -66
- mindspore/ops/bprop_mindir/BCEWithLogitsLoss_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/BatchNormGrad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/BatchToSpaceND_bprop.mindir +0 -28
- mindspore/ops/bprop_mindir/BiasAddGrad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/BinaryCrossEntropy_bprop.mindir +0 -33
- mindspore/ops/bprop_mindir/BroadcastTo_bprop.mindir +0 -306
- mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -13
- mindspore/ops/bprop_mindir/CTCLoss_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Concat_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Conv2DBackpropFilter_bprop.mindir +0 -240
- mindspore/ops/bprop_mindir/Conv2DBackpropInput_bprop.mindir +0 -247
- mindspore/ops/bprop_mindir/Conv2DTranspose_bprop.mindir +0 -247
- mindspore/ops/bprop_mindir/Conv3DTranspose_bprop.mindir +0 -315
- mindspore/ops/bprop_mindir/Conv3D_bprop.mindir +0 -278
- mindspore/ops/bprop_mindir/DType_bprop.mindir +0 -14
- mindspore/ops/bprop_mindir/DeformableOffsets_bprop.mindir +0 -58
- mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -13
- mindspore/ops/bprop_mindir/DepthToSpace_bprop.mindir +0 -23
- mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
- mindspore/ops/bprop_mindir/DiagPart_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/Dropout2D_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Dropout3D_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DropoutDoMask_bprop.mindir +0 -25
- mindspore/ops/bprop_mindir/DropoutGenMask_bprop.mindir +0 -18
- mindspore/ops/bprop_mindir/DropoutGrad_bprop.mindir +0 -27
- mindspore/ops/bprop_mindir/Dropout_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DynamicGRUV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DynamicRNN_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DynamicShape_bprop.mindir +0 -14
- mindspore/ops/bprop_mindir/Elu_bprop.mindir +0 -16
- mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Equal_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/ExpandDims_bprop.mindir +0 -58
- mindspore/ops/bprop_mindir/FastGeLU_bprop.mindir +0 -16
- mindspore/ops/bprop_mindir/Flatten_bprop.mindir +0 -54
- mindspore/ops/bprop_mindir/FloorDiv_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/GatherD_bprop.mindir +0 -26
- mindspore/ops/bprop_mindir/GatherNd_bprop.mindir +0 -57
- mindspore/ops/bprop_mindir/Gather_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/GreaterEqual_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/Greater_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/HSigmoid_bprop.mindir +0 -16
- mindspore/ops/bprop_mindir/HSwish_bprop.mindir +0 -16
- mindspore/ops/bprop_mindir/IOU_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/InstanceNorm_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/IsFinite_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/IsInf_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/IsNan_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/KLDivLoss_bprop.mindir +0 -126
- mindspore/ops/bprop_mindir/L2Loss_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/L2Normalize_bprop.mindir +0 -30
- mindspore/ops/bprop_mindir/LRN_bprop.mindir +0 -43
- mindspore/ops/bprop_mindir/LayerNormGrad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/LessEqual_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/Less_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/LinSpace_bprop.mindir +0 -23
- mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -13
- mindspore/ops/bprop_mindir/LogSoftmax_bprop.mindir +0 -23
- mindspore/ops/bprop_mindir/LogicalAnd_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/LogicalNot_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/MaskedSelect_bprop.mindir +0 -21
- mindspore/ops/bprop_mindir/MaxPool3DGradGrad_bprop.mindir +0 -74
- mindspore/ops/bprop_mindir/MaxPool3DGrad_bprop.mindir +0 -74
- mindspore/ops/bprop_mindir/MaxPool3D_bprop.mindir +0 -75
- mindspore/ops/bprop_mindir/MaxPoolGradGrad_bprop.mindir +0 -65
- mindspore/ops/bprop_mindir/MaxPoolWithArgmax_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Maximum_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Minimum_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/MirrorPad_bprop.mindir +0 -27
- mindspore/ops/bprop_mindir/Mish_bprop.mindir +0 -35
- mindspore/ops/bprop_mindir/MulNoNan_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/NLLLoss_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/NonZero_bprop.mindir +0 -14
- mindspore/ops/bprop_mindir/NotEqual_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/OneHot_bprop.mindir +0 -26
- mindspore/ops/bprop_mindir/OnesLike_bprop.mindir +0 -14
- mindspore/ops/bprop_mindir/PReLU_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Pad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Padding_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/RNNTLoss_bprop.mindir +0 -29
- mindspore/ops/bprop_mindir/ROIAlign_bprop.mindir +0 -82
- mindspore/ops/bprop_mindir/Range_bprop.mindir +0 -22
- mindspore/ops/bprop_mindir/Rank_bprop.mindir +0 -14
- mindspore/ops/bprop_mindir/ReLU6_bprop.mindir +0 -16
- mindspore/ops/bprop_mindir/ReLUV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ReduceAll_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/ReduceAny_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/ReluGrad_bprop.mindir +0 -20
- mindspore/ops/bprop_mindir/Reshape_bprop.mindir +0 -60
- mindspore/ops/bprop_mindir/ResizeBilinear_bprop.mindir +0 -29
- mindspore/ops/bprop_mindir/ResizeNearestNeighbor_bprop.mindir +0 -89
- mindspore/ops/bprop_mindir/ReverseSequence_bprop.mindir +0 -52
- mindspore/ops/bprop_mindir/ReverseV2_bprop.mindir +0 -22
- mindspore/ops/bprop_mindir/Round_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/ScatterMax_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ScatterMin_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ScatterNdUpdate_bprop.mindir +0 -22
- mindspore/ops/bprop_mindir/ScatterNd_bprop.mindir +0 -24
- mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -22
- mindspore/ops/bprop_mindir/ScatterUpdate_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SeLU_bprop.mindir +0 -21
- mindspore/ops/bprop_mindir/Select_bprop.mindir +0 -31
- mindspore/ops/bprop_mindir/Shape_bprop.mindir +0 -14
- mindspore/ops/bprop_mindir/SigmoidCrossEntropyWithLogits_bprop.mindir +0 -21
- mindspore/ops/bprop_mindir/SigmoidGrad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Sigmoid_bprop.mindir +0 -16
- mindspore/ops/bprop_mindir/Sign_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/Slice_bprop.mindir +0 -26
- mindspore/ops/bprop_mindir/SmoothL1Loss_bprop.mindir +0 -36
- mindspore/ops/bprop_mindir/SoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Softplus_bprop.mindir +0 -16
- mindspore/ops/bprop_mindir/Softsign_bprop.mindir +0 -33
- mindspore/ops/bprop_mindir/Sort_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SpaceToBatchND_bprop.mindir +0 -28
- mindspore/ops/bprop_mindir/SpaceToDepth_bprop.mindir +0 -23
- mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Split_bprop.mindir +0 -22
- mindspore/ops/bprop_mindir/Squeeze_bprop.mindir +0 -54
- mindspore/ops/bprop_mindir/StridedSliceGrad_bprop.mindir +0 -95
- mindspore/ops/bprop_mindir/StridedSlice_bprop.mindir +0 -98
- mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -29
- mindspore/ops/bprop_mindir/TanhGrad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Tanh_bprop.mindir +0 -66
- mindspore/ops/bprop_mindir/TensorScatterAdd_bprop.mindir +0 -22
- mindspore/ops/bprop_mindir/TensorScatterUpdate_bprop.mindir +0 -29
- mindspore/ops/bprop_mindir/TensorShape_bprop.mindir +0 -14
- mindspore/ops/bprop_mindir/Tile_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TopK_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -23
- mindspore/ops/bprop_mindir/TruncateDiv_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -20
- mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -16
- mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -22
- mindspore/ops/bprop_mindir/UpsampleNearest3D_bprop.mindir +0 -32
- mindspore/ops/bprop_mindir/UpsampleTrilinear3D_bprop.mindir +0 -38
- mindspore/ops/bprop_mindir/ZerosLike_bprop.mindir +0 -15
- mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
- mindspore/rewrite/node_visitor.py +0 -44
- mindspore/rewrite/topological_manager.py +0 -203
- mindspore/scipy/sparse/linalg.py +0 -192
- {mindspore-2.0.0rc1.dist-info → mindspore-2.2.0.dist-info}/WHEEL +0 -0
- {mindspore-2.0.0rc1.dist-info → mindspore-2.2.0.dist-info}/top_level.txt +0 -0
|
@@ -15,13 +15,11 @@
|
|
|
15
15
|
"""Parse ast.Assign in construct function to node of SymbolTree."""
|
|
16
16
|
import ast
|
|
17
17
|
|
|
18
|
-
from mindspore.rewrite.parser import Parser
|
|
18
|
+
from mindspore.rewrite.parsers.parser import Parser
|
|
19
19
|
from mindspore.rewrite.symbol_tree import SymbolTree
|
|
20
|
-
from mindspore.rewrite.parser_register import ParserRegister
|
|
21
|
-
|
|
22
|
-
from mindspore.rewrite.parser_register import reg_parser
|
|
20
|
+
from mindspore.rewrite.parsers.parser_register import ParserRegister, reg_parser
|
|
23
21
|
from ..common import error_str
|
|
24
|
-
|
|
22
|
+
from ..node.node_manager import NodeManager
|
|
25
23
|
|
|
26
24
|
class AttributeParser(Parser):
|
|
27
25
|
"""Parse ast.Attribute in construct function to node of SymbolTree."""
|
|
@@ -30,13 +28,14 @@ class AttributeParser(Parser):
|
|
|
30
28
|
"""Parse target type."""
|
|
31
29
|
return ast.Attribute
|
|
32
30
|
|
|
33
|
-
def process(self, stree: SymbolTree, node: ast.Attribute):
|
|
31
|
+
def process(self, stree: SymbolTree, node: ast.Attribute, node_manager: NodeManager):
|
|
34
32
|
"""
|
|
35
33
|
Parse ast.Attribute node.
|
|
36
34
|
|
|
37
35
|
Args:
|
|
38
36
|
stree ([SymbolTree]): Symbol Tree under parsing.
|
|
39
37
|
node ([ast.Attribute]): An ast.Attribute node.
|
|
38
|
+
node_manager (NodeManager): NodeManager those asts belong to.
|
|
40
39
|
|
|
41
40
|
Returns:
|
|
42
41
|
The value of node.
|
|
@@ -47,8 +46,11 @@ class AttributeParser(Parser):
|
|
|
47
46
|
if not isinstance(node, ast.Attribute):
|
|
48
47
|
raise TypeError(error_str(f"Attribute parser only supports parsing ast.Attribute type nodes, but got "
|
|
49
48
|
f"'{type(node).__name__}'", father_node=node))
|
|
49
|
+
if not isinstance(node.value, (ast.Name, ast.Attribute)):
|
|
50
|
+
raise RuntimeError(error_str(f"Attribute parser only supports (ast.Attribute, ast.Name) as value of "
|
|
51
|
+
f"ast.Attribute, but got '{type(node).__name__}'", father_node=node))
|
|
50
52
|
parser = ParserRegister.instance().get_parser(type(node.value))
|
|
51
|
-
value = parser.process(stree, node.value)
|
|
53
|
+
value = parser.process(stree, node.value, node_manager)
|
|
52
54
|
|
|
53
55
|
return ".".join([value, node.attr])
|
|
54
56
|
|
|
@@ -13,18 +13,19 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ============================================================================
|
|
15
15
|
"""Parse ast.ClassDef which is subclass of Cell to SymbolTree."""
|
|
16
|
-
import sys
|
|
17
|
-
import ast
|
|
18
16
|
import inspect
|
|
19
|
-
import
|
|
17
|
+
from typing import Union, Dict
|
|
18
|
+
import ast
|
|
20
19
|
from mindspore import log as logger
|
|
20
|
+
from mindspore.nn import Cell
|
|
21
21
|
from mindspore._extends.parse.namespace import CellNamespace
|
|
22
|
-
from mindspore.rewrite.ast_creator_register import ast_creator_registry
|
|
23
22
|
from ..symbol_tree import SymbolTree
|
|
24
|
-
from
|
|
25
|
-
from
|
|
23
|
+
from .parser import Parser
|
|
24
|
+
from .parser_register import ParserRegister, reg_parser
|
|
26
25
|
from ..ast_helpers import AstReplacer
|
|
27
26
|
from ..common import error_str
|
|
27
|
+
from ..parsers.module_parser import ModuleParser
|
|
28
|
+
from ..node.node_manager import NodeManager
|
|
28
29
|
|
|
29
30
|
|
|
30
31
|
class AstScopeChecker:
|
|
@@ -107,91 +108,58 @@ class AstScopeChecker:
|
|
|
107
108
|
class ClassDefParser(Parser):
|
|
108
109
|
"""Parse ast.ClassDef which is subclass of Cell to SymbolTree."""
|
|
109
110
|
|
|
111
|
+
# a denied_function_decorator_list which is registered by user
|
|
112
|
+
denied_function_decorator_list = []
|
|
113
|
+
# Entry function of the forward computation process
|
|
114
|
+
entry_function = "construct"
|
|
115
|
+
|
|
110
116
|
def __init__(self):
|
|
111
117
|
"""Constructor"""
|
|
112
118
|
super(ClassDefParser, self).__init__()
|
|
113
119
|
self._cell_namespace = CellNamespace('mindspore.nn')
|
|
114
120
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
def handle_father_class(self, stree, node: ast.ClassDef):
|
|
120
|
-
"""Handle father class."""
|
|
121
|
-
for base in node.bases:
|
|
122
|
-
parser: Parser = ParserRegister.instance().get_parser(type(base))
|
|
123
|
-
father_class = parser.process(stree, base)
|
|
124
|
-
if "Cell" not in father_class:
|
|
125
|
-
for k, m in sys.modules.items():
|
|
126
|
-
if k in ("_ast", "ast"):
|
|
127
|
-
continue
|
|
128
|
-
if hasattr(m, father_class):
|
|
129
|
-
cls = getattr(m, father_class)
|
|
130
|
-
source_code = inspect.getsource(cls)
|
|
131
|
-
ast_root: ast.Module = ast.parse(source_code)
|
|
132
|
-
stree._father_class_ast.append(ast_root) # pylint: disable=protected-access
|
|
133
|
-
break
|
|
134
|
-
|
|
135
|
-
def process(self, stree: SymbolTree, node: ast.ClassDef):
|
|
136
|
-
"""
|
|
137
|
-
Parse init and construct in ast.ClassDef.
|
|
138
|
-
|
|
139
|
-
Args:
|
|
140
|
-
stree ([SymbolTree]): Symbol Tree under parsing.
|
|
141
|
-
node ([ast.ClassDef]): An ast.ClassDef node.
|
|
142
|
-
"""
|
|
143
|
-
replacer = AstReplacer(node)
|
|
144
|
-
replacer.replace_all(stree.get_ori_cls_name(), stree.get_opt_cls_name())
|
|
145
|
-
|
|
146
|
-
stree.set_class_ast(node)
|
|
147
|
-
self.handle_father_class(stree, node)
|
|
148
|
-
|
|
149
|
-
if self._need_add_init_func(node):
|
|
150
|
-
self._add_init_func(node)
|
|
151
|
-
|
|
152
|
-
for body in node.body:
|
|
153
|
-
if isinstance(body, ast.FunctionDef):
|
|
154
|
-
if body.name == "__init__":
|
|
155
|
-
self._process_init_func_ast(stree, node, body)
|
|
156
|
-
stree.set_init_func_ast(body)
|
|
157
|
-
elif body.name == "construct":
|
|
158
|
-
parser: Parser = ParserRegister.instance().get_parser(ast.FunctionDef)
|
|
159
|
-
parser.process(stree, body)
|
|
160
|
-
else:
|
|
161
|
-
logger.info(
|
|
162
|
-
"Ignoring ast.FunctionDef in ast.ClassDef except __init__ and construct function: %s",
|
|
163
|
-
body.name)
|
|
164
|
-
else:
|
|
165
|
-
logger.info("Ignoring unsupported node(%s) in ast.ClassDef.", type(body).__name__)
|
|
166
|
-
|
|
167
|
-
def _is_subtree_field(self, ori_net, field) -> bool:
|
|
168
|
-
op = getattr(ori_net, field)
|
|
169
|
-
return not type(op).__name__ in self._cell_namespace
|
|
170
|
-
|
|
171
|
-
def _process_init_func_ast(self, stree: SymbolTree, cls_ast: ast.ClassDef, init_ast: ast.FunctionDef):
|
|
121
|
+
@staticmethod
|
|
122
|
+
def _process_init_func_ast(init_ast: ast.FunctionDef, class_name: str, is_father_class: bool,
|
|
123
|
+
father_classes: dict):
|
|
172
124
|
"""Process init func"""
|
|
173
125
|
ClassDefParser._modify_arguments_of_init_func(init_ast)
|
|
174
|
-
new_bodies =
|
|
126
|
+
new_bodies = ClassDefParser._create_bodys_of_init_func(class_name, is_father_class, father_classes)
|
|
175
127
|
init_ast.body = new_bodies
|
|
176
128
|
|
|
177
129
|
@staticmethod
|
|
178
|
-
def
|
|
179
|
-
"""
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
130
|
+
def _create_bodys_of_init_func(class_name: str, is_father_class: bool, father_classes: dict):
|
|
131
|
+
"""Modify bodys of init func."""
|
|
132
|
+
new_bodies = []
|
|
133
|
+
# update father class init in new class
|
|
134
|
+
father_class_init_bodies = ClassDefParser._father_class_init_process(father_classes, is_father_class)
|
|
135
|
+
new_bodies.extend(father_class_init_bodies)
|
|
136
|
+
# copy variables into new class
|
|
137
|
+
if is_father_class:
|
|
138
|
+
ast_copy_attr = ast.parse(
|
|
139
|
+
"for key, value in obj.__dict__.items():\n"
|
|
140
|
+
" if not key.startswith('__'):\n"
|
|
141
|
+
f" setattr({class_name}, key, value)").body[0]
|
|
142
|
+
new_bodies.append(ast_copy_attr)
|
|
143
|
+
else:
|
|
144
|
+
ast_copy_attr = ast.parse(
|
|
145
|
+
"for key, value in obj.__dict__.items(): setattr(self, key, value)").body[0]
|
|
146
|
+
new_bodies.append(ast_copy_attr)
|
|
147
|
+
return new_bodies
|
|
148
|
+
|
|
149
|
+
@staticmethod
|
|
150
|
+
def _father_class_init_process(father_classes: dict, is_father_class: bool) -> [ast.AST]:
|
|
151
|
+
"""Add ast bodies of code: father_class.__init__(...)"""
|
|
152
|
+
father_class_init_bodies = []
|
|
153
|
+
for idx, father_class in father_classes.items():
|
|
154
|
+
if father_class == "Cell":
|
|
155
|
+
father_class_init_code = "super().__init__()"
|
|
156
|
+
elif is_father_class:
|
|
157
|
+
father_class_init_code = f"{father_class}.__init__(self, obj.__bases__[{idx}])"
|
|
158
|
+
else:
|
|
159
|
+
father_class_init_code = f"{father_class}.__init__(self, obj.__class__.__bases__[{idx}])"
|
|
160
|
+
father_class_init_ast = ast.parse(father_class_init_code).body[0]
|
|
161
|
+
father_class_init_bodies.append(father_class_init_ast)
|
|
162
|
+
return father_class_init_bodies
|
|
195
163
|
|
|
196
164
|
@staticmethod
|
|
197
165
|
def _modify_arguments_of_init_func(ast_init_fn: ast.FunctionDef):
|
|
@@ -203,159 +171,152 @@ class ClassDefParser(Parser):
|
|
|
203
171
|
ast.fix_missing_locations(ast_init_fn)
|
|
204
172
|
|
|
205
173
|
@staticmethod
|
|
206
|
-
def
|
|
207
|
-
"""
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
174
|
+
def get_ast_name(ast_node: Union[ast.Name, ast.Attribute]) -> str:
|
|
175
|
+
"""Get ast id name"""
|
|
176
|
+
if isinstance(ast_node, ast.Name):
|
|
177
|
+
return ast_node.id
|
|
178
|
+
if isinstance(ast_node, ast.Attribute):
|
|
179
|
+
return ast_node.attr
|
|
180
|
+
return ""
|
|
181
|
+
|
|
182
|
+
@staticmethod
|
|
183
|
+
def _process_class_variables(stree: SymbolTree, function_defs: list):
|
|
184
|
+
"""Process class variables of class, only used in child class."""
|
|
185
|
+
init_func_ast = stree.get_init_func_ast()
|
|
186
|
+
for key, value in stree.get_origin_network().__class__.__dict__.items():
|
|
187
|
+
if key.startswith('__'):
|
|
188
|
+
# ignore inner functions
|
|
217
189
|
continue
|
|
218
|
-
if
|
|
219
|
-
|
|
220
|
-
ClassDefParser._remove_empty_ast_in_init_func(body.orelse)
|
|
221
|
-
if not body.body or not body.orelse:
|
|
222
|
-
body_index_to_be_deleted.append(body_index)
|
|
190
|
+
if callable(value) and key in function_defs:
|
|
191
|
+
# ignore functions defined by self
|
|
223
192
|
continue
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
def _handle_tuple_for_replace_ori_field(self, ast_tuple: ast.Tuple, new_bodies):
|
|
232
|
-
""" Handle ast.Assign node with target of ast.Tuple in init func to new ast nodes. """
|
|
233
|
-
for e in ast_tuple.elts:
|
|
234
|
-
if isinstance(e, ast.Attribute):
|
|
235
|
-
field_name = e.attr
|
|
236
|
-
value = ast.Call(ast.Name('getattr', ast.Load()),
|
|
237
|
-
[ast.Name('obj', ast.Load()),
|
|
238
|
-
ast.Constant(value=field_name, kind=None)], [])
|
|
239
|
-
new_assign = ast_creator_registry.get("Assign")(targets=[e], value=value)
|
|
240
|
-
new_bodies.append(new_assign)
|
|
241
|
-
|
|
242
|
-
def _handle_express_for_replace_ori_field(self, cls_ast, ast_expr: ast.Expr, stree, new_bodies):
|
|
243
|
-
""" Handle ast.Expr node in init func to new ast nodes. """
|
|
244
|
-
ast_call = ast_expr.value
|
|
245
|
-
if not isinstance(ast_call.func, ast.Attribute) or not isinstance(ast_call.func.value, ast.Name)\
|
|
246
|
-
or ast_call.func.value.id != 'self':
|
|
247
|
-
return
|
|
248
|
-
for func_def in cls_ast.body:
|
|
249
|
-
if isinstance(func_def, ast.FunctionDef) and func_def.name == ast_call.func.attr:
|
|
250
|
-
for func_def_body in func_def.body:
|
|
251
|
-
self._handle_bodies_for_replace_ori_field(cls_ast, func_def_body, stree, new_bodies)
|
|
252
|
-
return
|
|
253
|
-
|
|
254
|
-
def _handle_assign_for_replace_ori_field(self, ast_assign: ast.Assign, stree, new_bodies):
|
|
255
|
-
""" Handle ast.Assign node in init func to new ast nodes. """
|
|
256
|
-
if len(ast_assign.targets) != 1:
|
|
257
|
-
raise RuntimeError("not support multi-targets in assign now!", father_node=ast_assign)
|
|
258
|
-
target = ast_assign.targets[0]
|
|
259
|
-
if isinstance(target, ast.Tuple):
|
|
260
|
-
self._handle_tuple_for_replace_ori_field(target, new_bodies)
|
|
261
|
-
return
|
|
262
|
-
if not isinstance(target, ast.Attribute) or not isinstance(target.value, ast.Name)\
|
|
263
|
-
or target.value.id != 'self':
|
|
264
|
-
logger.info(f"Ignoring {astunparse.unparse(target)} in __init__ function.")
|
|
265
|
-
return
|
|
266
|
-
field_name = target.attr
|
|
267
|
-
# Ensure that the instance has corresponding attribute
|
|
268
|
-
if not hasattr(stree.get_origin_network(), field_name):
|
|
269
|
-
return
|
|
270
|
-
# Check to avoid repeat code
|
|
271
|
-
for new_ast in new_bodies:
|
|
272
|
-
if isinstance(new_ast, ast.Assign) and isinstance(new_ast.targets[0], ast.Attribute)\
|
|
273
|
-
and new_ast.targets[0].attr == field_name:
|
|
274
|
-
return
|
|
275
|
-
value = ast.Call(ast.Name('getattr', ast.Load()),
|
|
276
|
-
[ast.Name('obj', ast.Load()),
|
|
277
|
-
ast.Constant(value=field_name, kind=None)], [])
|
|
278
|
-
new_assign = ast_creator_registry.get("Assign")(targets=[target], value=value)
|
|
279
|
-
new_bodies.append(new_assign)
|
|
280
|
-
|
|
281
|
-
def _handle_bodies_for_replace_ori_field(self, cls_ast, body, stree, new_bodies):
|
|
282
|
-
""" handle_bodies_for_replace_ori_field. """
|
|
283
|
-
if self._is_super_expr(body):
|
|
284
|
-
new_bodies.append(body)
|
|
285
|
-
return
|
|
286
|
-
if isinstance(body, ast.If):
|
|
287
|
-
for if_body in body.body + body.orelse:
|
|
288
|
-
self._handle_bodies_for_replace_ori_field(cls_ast, if_body, stree, new_bodies)
|
|
289
|
-
return
|
|
290
|
-
if isinstance(body, ast.Expr) and isinstance(body.value, ast.Call):
|
|
291
|
-
self._handle_express_for_replace_ori_field(cls_ast, body, stree, new_bodies)
|
|
292
|
-
return
|
|
293
|
-
if isinstance(body, ast.Assign): # if not assign node, delete
|
|
294
|
-
self._handle_assign_for_replace_ori_field(body, stree, new_bodies)
|
|
295
|
-
return
|
|
296
|
-
|
|
297
|
-
def _need_add_init_func(self, cls_ast: ast.ClassDef) -> bool:
|
|
298
|
-
"""If class has base nn.Cell but not have init func, then we need to add init func"""
|
|
299
|
-
base_nn_cell = False
|
|
300
|
-
for base in cls_ast.bases:
|
|
301
|
-
if isinstance(base, ast.Name) and base.id == 'Cell'\
|
|
302
|
-
or isinstance(base, ast.Attribute) and isinstance(base.value, ast.Name)\
|
|
303
|
-
and base.value.id == "nn" and base.attr == 'Cell':
|
|
304
|
-
base_nn_cell = True
|
|
305
|
-
break
|
|
306
|
-
if not base_nn_cell:
|
|
307
|
-
return False
|
|
193
|
+
assign_code = f"self.__class__.{key} = obj.__class__.{key}"
|
|
194
|
+
assign_ast = ast.parse(assign_code).body[0]
|
|
195
|
+
init_func_ast.body.append(assign_ast)
|
|
196
|
+
|
|
197
|
+
@staticmethod
|
|
198
|
+
def _need_add_init_func(cls_ast: ast.ClassDef) -> bool:
|
|
199
|
+
"""If the class don't have init func, we need to add an init func"""
|
|
308
200
|
for body in cls_ast.body:
|
|
309
201
|
if isinstance(body, ast.FunctionDef) and body.name == '__init__':
|
|
310
202
|
return False
|
|
311
203
|
return True
|
|
312
204
|
|
|
313
|
-
|
|
205
|
+
@staticmethod
|
|
206
|
+
def _add_init_func(cls_ast: ast.ClassDef):
|
|
314
207
|
"""Add init func with super().__init__()"""
|
|
315
|
-
init_func_ast = ast.
|
|
316
|
-
name='__init__',
|
|
317
|
-
args=ast.arguments(
|
|
318
|
-
posonlyargs=[],
|
|
319
|
-
args=[
|
|
320
|
-
ast.arg(arg='self')],
|
|
321
|
-
kwonlyargs=[],
|
|
322
|
-
kw_defaults=[],
|
|
323
|
-
defaults=[]),
|
|
324
|
-
body=[
|
|
325
|
-
ast.Expr(
|
|
326
|
-
value=ast.Call(
|
|
327
|
-
func=ast.Attribute(
|
|
328
|
-
value=ast.Call(
|
|
329
|
-
func=ast.Name(id='super', ctx=ast.Load()),
|
|
330
|
-
args=[],
|
|
331
|
-
keywords=[]),
|
|
332
|
-
attr='__init__',
|
|
333
|
-
ctx=ast.Load()),
|
|
334
|
-
args=[],
|
|
335
|
-
keywords=[]))],
|
|
336
|
-
decorator_list=[])
|
|
208
|
+
init_func_ast = ast.parse("def __init__(self): super().__init__()").body[0]
|
|
337
209
|
cls_ast.body.insert(0, init_func_ast)
|
|
338
210
|
ast.fix_missing_locations(cls_ast)
|
|
339
211
|
|
|
340
|
-
|
|
212
|
+
@staticmethod
|
|
213
|
+
def _process_father_classes(stree, node: ast.ClassDef, cur_class_def: type) -> list:
|
|
214
|
+
"""Process father class."""
|
|
215
|
+
father_classes: Dict[int, str] = {}
|
|
216
|
+
for idx, base in enumerate(node.bases):
|
|
217
|
+
father_class_name = ClassDefParser.get_ast_name(base)
|
|
218
|
+
if not father_class_name:
|
|
219
|
+
continue
|
|
220
|
+
father_classes[idx] = father_class_name
|
|
221
|
+
if father_class_name == "Cell":
|
|
222
|
+
continue
|
|
223
|
+
father_class_def = cur_class_def.__bases__[idx]
|
|
224
|
+
ClassDefParser._process_one_father_class(stree, father_class_def, father_class_name)
|
|
225
|
+
node.bases[idx] = ast.Name(id=father_class_name, ctx=ast.Load())
|
|
226
|
+
return father_classes
|
|
227
|
+
|
|
228
|
+
@staticmethod
|
|
229
|
+
def _process_one_father_class(stree: SymbolTree, father_class_def: type, father_class_name: str):
|
|
230
|
+
"""Process one father class"""
|
|
231
|
+
# save father class's file path and imports into symbol tree
|
|
232
|
+
net_path = inspect.getfile(father_class_def)
|
|
233
|
+
ModuleParser.save_file_path_to_sys(stree, 0, net_path)
|
|
234
|
+
ModuleParser.save_imports_from_file(stree, net_path)
|
|
235
|
+
# get father class's ast
|
|
236
|
+
source_code = inspect.getsource(father_class_def)
|
|
237
|
+
father_class_ast: ast.ClassDef = ast.parse(source_code).body[0]
|
|
238
|
+
# process father class's father classes
|
|
239
|
+
father_classes = ClassDefParser._process_father_classes(stree, father_class_ast, father_class_def)
|
|
240
|
+
# process father class's __init__ function
|
|
241
|
+
if ClassDefParser._need_add_init_func(father_class_ast):
|
|
242
|
+
ClassDefParser._add_init_func(father_class_ast)
|
|
243
|
+
for body in father_class_ast.body[:]:
|
|
244
|
+
if isinstance(body, ast.FunctionDef) and body.name == "__init__":
|
|
245
|
+
# Add function decorator
|
|
246
|
+
ClassDefParser._func_decorator_process(body)
|
|
247
|
+
ClassDefParser._process_init_func_ast(body, father_class_name, True, father_classes)
|
|
248
|
+
else:
|
|
249
|
+
# Remove other codes, which are copied in __init__ function.
|
|
250
|
+
father_class_ast.body.remove(body)
|
|
251
|
+
# save father class's ast into symbol tree
|
|
252
|
+
stree.get_father_class_ast().append(father_class_ast)
|
|
253
|
+
|
|
254
|
+
@staticmethod
|
|
255
|
+
def _func_decorator_process(node: ast.FunctionDef):
|
|
256
|
+
"""
|
|
257
|
+
User should set the denied function decorators,
|
|
258
|
+
because the symbol_tree cant pass the correct parameters to decorators but the instance "obj".
|
|
341
259
|
"""
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
260
|
+
for decorator in node.decorator_list[:]:
|
|
261
|
+
decorator_name = ""
|
|
262
|
+
if isinstance(decorator, ast.Call):
|
|
263
|
+
func = decorator.func
|
|
264
|
+
if isinstance(func, ast.Name):
|
|
265
|
+
decorator_name = func.id
|
|
266
|
+
elif isinstance(decorator, ast.Name):
|
|
267
|
+
decorator_name = decorator.id
|
|
268
|
+
if decorator_name in ClassDefParser.denied_function_decorator_list:
|
|
269
|
+
node.decorator_list.remove(decorator)
|
|
346
270
|
|
|
347
|
-
|
|
348
|
-
|
|
271
|
+
def target(self):
|
|
272
|
+
"""Parse target type"""
|
|
273
|
+
return ast.ClassDef
|
|
349
274
|
|
|
350
|
-
|
|
351
|
-
RuntimeError: Not support multi-targets in assign.
|
|
352
|
-
RuntimeError: Only support target.value in [ast.Name] in assign node.
|
|
275
|
+
def process(self, stree: SymbolTree, node: ast.ClassDef, node_manager: NodeManager):
|
|
353
276
|
"""
|
|
277
|
+
Parse init and entry function(default: construct) in ast.ClassDef.
|
|
354
278
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
279
|
+
Args:
|
|
280
|
+
stree ([SymbolTree]): Symbol Tree under parsing.
|
|
281
|
+
node ([ast.ClassDef]): An ast.ClassDef node.
|
|
282
|
+
node_manager (NodeManager): NodeManager those asts belong to.
|
|
283
|
+
"""
|
|
284
|
+
# Update network's class name from xxx to xxxOpt in ast
|
|
285
|
+
replacer = AstReplacer(node)
|
|
286
|
+
replacer.replace_all(stree.get_ori_cls_name(), stree.get_opt_cls_name())
|
|
287
|
+
|
|
288
|
+
# process network's father classes
|
|
289
|
+
stree.set_class_ast(node)
|
|
290
|
+
cur_class_def = type(stree.get_origin_network())
|
|
291
|
+
father_classes = ClassDefParser._process_father_classes(stree, node, cur_class_def)
|
|
292
|
+
|
|
293
|
+
# add __init__ function to network if necessary
|
|
294
|
+
if isinstance(stree.get_origin_network(), Cell) and ClassDefParser._need_add_init_func(node):
|
|
295
|
+
ClassDefParser._add_init_func(node)
|
|
359
296
|
|
|
297
|
+
# save function defs in ast node to filter function class variables.
|
|
298
|
+
function_defs = []
|
|
299
|
+
for body in node.body[:]:
|
|
300
|
+
if isinstance(body, ast.FunctionDef):
|
|
301
|
+
function_defs.append(body.name)
|
|
302
|
+
ClassDefParser._func_decorator_process(body)
|
|
303
|
+
if body.name == "__init__":
|
|
304
|
+
stree.set_init_func_ast(body)
|
|
305
|
+
ClassDefParser._process_init_func_ast(body, stree.get_opt_cls_name(), False, father_classes)
|
|
306
|
+
elif body.name == ClassDefParser.entry_function:
|
|
307
|
+
stree.set_ast_root(body)
|
|
308
|
+
parser: Parser = ParserRegister.instance().get_parser(ast.FunctionDef)
|
|
309
|
+
parser.process(stree, body, stree)
|
|
310
|
+
else:
|
|
311
|
+
logger.info(
|
|
312
|
+
"Ignoring ast.FunctionDef in ast.ClassDef except __init__ and construct function: %s",
|
|
313
|
+
body.name)
|
|
314
|
+
elif isinstance(body, (ast.Assign, ast.If, ast.IfExp)):
|
|
315
|
+
# Remove class variables, which are copied in __init__ function.
|
|
316
|
+
node.body.remove(body)
|
|
317
|
+
else:
|
|
318
|
+
logger.info("Ignoring unsupported node(%s) in ast.ClassDef.", type(body).__name__)
|
|
319
|
+
# Copy function class variables into new network
|
|
320
|
+
ClassDefParser._process_class_variables(stree, function_defs)
|
|
360
321
|
|
|
361
322
|
g_classdef_parser = reg_parser(ClassDefParser())
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
"""Parse ast.Assign in construct function to node of SymbolTree."""
|
|
16
16
|
import ast
|
|
17
17
|
|
|
18
|
-
from mindspore.rewrite.parser import Parser
|
|
18
|
+
from mindspore.rewrite.parsers.parser import Parser
|
|
19
19
|
from mindspore.rewrite.symbol_tree import SymbolTree
|
|
20
|
-
from mindspore.rewrite.parser_register import reg_parser
|
|
20
|
+
from mindspore.rewrite.parsers.parser_register import reg_parser
|
|
21
21
|
from ..common import error_str
|
|
22
|
-
|
|
22
|
+
from ..node.node_manager import NodeManager
|
|
23
23
|
|
|
24
24
|
class NameParser(Parser):
|
|
25
25
|
"""Parse ast.Name in construct function to node of SymbolTree."""
|
|
@@ -28,13 +28,14 @@ class NameParser(Parser):
|
|
|
28
28
|
"""Parse target type."""
|
|
29
29
|
return ast.Name
|
|
30
30
|
|
|
31
|
-
def process(self, stree: SymbolTree, node: ast.Name):
|
|
31
|
+
def process(self, stree: SymbolTree, node: ast.Name, node_manager: NodeManager):
|
|
32
32
|
"""
|
|
33
33
|
Parse ast.Name node.
|
|
34
34
|
|
|
35
35
|
Args:
|
|
36
36
|
stree ([SymbolTree]): Symbol Tree under parsing.
|
|
37
37
|
node ([ast.Name]): An ast.Name node.
|
|
38
|
+
node_manager (NodeManager): NodeManager those asts belong to.
|
|
38
39
|
|
|
39
40
|
Raises:
|
|
40
41
|
TypeError: Name parser only supports parsing ast.Name type nodes.
|
|
@@ -52,13 +53,14 @@ class NumParser(Parser):
|
|
|
52
53
|
"""Parse target type."""
|
|
53
54
|
return ast.Num
|
|
54
55
|
|
|
55
|
-
def process(self, stree: SymbolTree, node: ast.Num):
|
|
56
|
+
def process(self, stree: SymbolTree, node: ast.Num, node_manager: NodeManager):
|
|
56
57
|
"""
|
|
57
58
|
Parse ast.Num node.
|
|
58
59
|
|
|
59
60
|
Args:
|
|
60
61
|
stree ([SymbolTree]): Symbol Tree under parsing.
|
|
61
62
|
node ([ast.Num]): An ast.Num node.
|
|
63
|
+
node_manager (NodeManager): NodeManager those asts belong to.
|
|
62
64
|
|
|
63
65
|
Raises:
|
|
64
66
|
TypeError: Num parser only supports parsing ast.Num type nodes.
|
|
@@ -76,13 +78,14 @@ class StrParser(Parser):
|
|
|
76
78
|
"""Parse target type."""
|
|
77
79
|
return ast.Str
|
|
78
80
|
|
|
79
|
-
def process(self, stree: SymbolTree, node: ast.Str):
|
|
81
|
+
def process(self, stree: SymbolTree, node: ast.Str, node_manager: NodeManager):
|
|
80
82
|
"""
|
|
81
83
|
Parse ast.Str node.
|
|
82
84
|
|
|
83
85
|
Args:
|
|
84
86
|
stree ([SymbolTree]): Symbol Tree under parsing.
|
|
85
87
|
node ([ast.Str]): An ast.Str node.
|
|
88
|
+
node_manager (NodeManager): NodeManager those asts belong to.
|
|
86
89
|
|
|
87
90
|
Returns:
|
|
88
91
|
The value of node.
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"""Parse Container in construct function to node of SymbolTree."""
|
|
16
16
|
import ast
|
|
17
17
|
|
|
18
|
-
from mindspore.rewrite.parser import Parser
|
|
18
|
+
from mindspore.rewrite.parsers.parser import Parser
|
|
19
19
|
from mindspore.rewrite.symbol_tree import SymbolTree
|
|
20
|
-
from mindspore.rewrite.parser_register import ParserRegister
|
|
20
|
+
from mindspore.rewrite.parsers.parser_register import ParserRegister, reg_parser
|
|
21
21
|
|
|
22
|
-
from mindspore.rewrite.parser_register import reg_parser
|
|
23
22
|
from ..common import error_str
|
|
23
|
+
from ..node.node_manager import NodeManager
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class ListParser(Parser):
|
|
@@ -30,13 +30,14 @@ class ListParser(Parser):
|
|
|
30
30
|
"""Parse target type."""
|
|
31
31
|
return list
|
|
32
32
|
|
|
33
|
-
def process(self, stree: SymbolTree, node: list):
|
|
33
|
+
def process(self, stree: SymbolTree, node: list, node_manager: NodeManager):
|
|
34
34
|
"""
|
|
35
35
|
Parse list.
|
|
36
36
|
|
|
37
37
|
Args:
|
|
38
38
|
stree ([SymbolTree]): Symbol Tree under parsing.
|
|
39
39
|
node ([list]): An list of node.
|
|
40
|
+
father_node_managernode (NodeManager): NodeManager those asts belong to.
|
|
40
41
|
|
|
41
42
|
Returns:
|
|
42
43
|
A list of value.
|
|
@@ -50,7 +51,7 @@ class ListParser(Parser):
|
|
|
50
51
|
result = []
|
|
51
52
|
for n in node:
|
|
52
53
|
parser = ParserRegister.instance().get_parser(type(n))
|
|
53
|
-
value = parser.process(stree, n)
|
|
54
|
+
value = parser.process(stree, n, node_manager)
|
|
54
55
|
result.append(value)
|
|
55
56
|
return result
|
|
56
57
|
|
|
@@ -62,13 +63,14 @@ class TupleParser(Parser):
|
|
|
62
63
|
"""Parse target type."""
|
|
63
64
|
return tuple
|
|
64
65
|
|
|
65
|
-
def process(self, stree: SymbolTree, node: tuple):
|
|
66
|
+
def process(self, stree: SymbolTree, node: tuple, node_manager: NodeManager):
|
|
66
67
|
"""
|
|
67
68
|
Parse tuple.
|
|
68
69
|
|
|
69
70
|
Args:
|
|
70
71
|
stree ([SymbolTree]): Symbol Tree under parsing.
|
|
71
72
|
node ([tuple]): An tuple of node.
|
|
73
|
+
node_manager (NodeManager): NodeManager those asts belong to.
|
|
72
74
|
|
|
73
75
|
Returns:
|
|
74
76
|
A tuple of value.
|
|
@@ -79,7 +81,7 @@ class TupleParser(Parser):
|
|
|
79
81
|
result = []
|
|
80
82
|
for n in node:
|
|
81
83
|
parser = ParserRegister.instance().get_parser(type(n))
|
|
82
|
-
value = parser.process(stree, n)
|
|
84
|
+
value = parser.process(stree, n, node_manager)
|
|
83
85
|
result.append(value)
|
|
84
86
|
return tuple(result)
|
|
85
87
|
|