mindspore 2.0.0rc1__cp38-cp38-manylinux1_x86_64.whl → 2.2.0__cp38-cp38-manylinux1_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/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-x86_64-linux-gnu.so +0 -0
- mindspore/_c_expression.cpython-38-x86_64-linux-gnu.so +0 -0
- mindspore/_c_mindrecord.cpython-38-x86_64-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-x86_64-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/gpu/libcuda_ops.so.10 +0 -0
- mindspore/lib/plugin/gpu/libcuda_ops.so.11 +0 -0
- mindspore/lib/plugin/gpu10.1/libakg.so +0 -0
- mindspore/lib/plugin/gpu10.1/libnccl.so.2 +0 -0
- mindspore/lib/plugin/gpu10.1/libnvidia_collective.so +0 -0
- mindspore/lib/plugin/gpu11.1/libakg.so +0 -0
- mindspore/lib/plugin/gpu11.1/libnccl.so.2 +0 -0
- mindspore/lib/plugin/gpu11.1/libnvidia_collective.so +0 -0
- mindspore/lib/plugin/gpu11.6/libakg.so +0 -0
- mindspore/lib/plugin/gpu11.6/libnccl.so.2 +0 -0
- mindspore/lib/plugin/gpu11.6/libnvidia_collective.so +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.1 +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.2 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.10.1 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.11.1 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.11.6 +0 -0
- mindspore/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 +647 -818
- {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
|
@@ -14,37 +14,39 @@
|
|
|
14
14
|
# ============================================================================
|
|
15
15
|
"""Parse ast.Assign in construct function to node of SymbolTree."""
|
|
16
16
|
from typing import Union
|
|
17
|
+
import os
|
|
17
18
|
import ast
|
|
18
19
|
import sys
|
|
19
20
|
import inspect
|
|
20
|
-
import astunparse
|
|
21
21
|
|
|
22
22
|
from mindspore import log as logger
|
|
23
|
-
from mindspore._extends.parse.namespace import CellNamespace
|
|
24
23
|
from mindspore.nn import Cell, SequentialCell
|
|
25
|
-
from mindspore.ops import operations as P
|
|
26
24
|
from mindspore.ops import Primitive
|
|
27
|
-
from mindspore.rewrite.parser_register import ParserRegister
|
|
25
|
+
from mindspore.rewrite.parsers.parser_register import ParserRegister, reg_parser
|
|
28
26
|
from mindspore.rewrite.namespace import is_subtree, is_functional, get_functional
|
|
29
27
|
from mindspore.rewrite.symbol_tree import SymbolTree
|
|
30
|
-
from mindspore.rewrite.node import Node, TreeNode
|
|
31
|
-
from mindspore.rewrite.
|
|
32
|
-
from mindspore.rewrite.
|
|
28
|
+
from mindspore.rewrite.node.node import Node, TreeNode
|
|
29
|
+
from mindspore.rewrite.node.node_manager import NodeManager
|
|
30
|
+
from mindspore.rewrite.node.call_function import CallFunction
|
|
31
|
+
from mindspore.rewrite.node.cell_container import CellContainer
|
|
32
|
+
from mindspore.rewrite.parsers.parser import Parser
|
|
33
33
|
from mindspore.rewrite.api.scoped_value import ScopedValue, ValueType
|
|
34
|
-
from mindspore.rewrite.symbol_tree_builder import SymbolTreeBuilder
|
|
35
|
-
from mindspore.rewrite.
|
|
36
|
-
from mindspore.rewrite.
|
|
34
|
+
from mindspore.rewrite.symbol_tree_builder import SymbolTreeBuilder
|
|
35
|
+
from mindspore.rewrite.ast_transformers.flatten_recursive_stmt import FlattenRecursiveStmt
|
|
36
|
+
from mindspore.rewrite.ast_helpers import AstReplacer
|
|
37
37
|
from ..common import error_str
|
|
38
38
|
|
|
39
|
+
if sys.version_info >= (3, 9):
|
|
40
|
+
import ast as astunparse # pylint: disable=reimported, ungrouped-imports
|
|
41
|
+
else:
|
|
42
|
+
import astunparse
|
|
43
|
+
|
|
39
44
|
|
|
40
45
|
class AssignParser(Parser):
|
|
41
46
|
"""Parse ast.Assign in construct function to node of SymbolTree."""
|
|
42
47
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
super(AssignParser, self).__init__()
|
|
46
|
-
self._cell_namespce = CellNamespace('mindspore.nn')
|
|
47
|
-
self._primitive_namespce = CellNamespace('mindspore.ops.operations')
|
|
48
|
+
# Types for creating Cell Container node
|
|
49
|
+
types_for_cell_container = [SequentialCell,]
|
|
48
50
|
|
|
49
51
|
def target(self):
|
|
50
52
|
"""Parse target type."""
|
|
@@ -68,9 +70,9 @@ class AssignParser(Parser):
|
|
|
68
70
|
tuple_values = []
|
|
69
71
|
for tuple_elt in tuple_elts:
|
|
70
72
|
if not isinstance(tuple_elt, (ast.Constant, ast.Name, ast.Attribute)):
|
|
71
|
-
raise RuntimeError(f"Only support ast.Constant or ast.Name as elts of ast.Tuple, "
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
raise RuntimeError(error_str(f"Only support ast.Constant or ast.Name as elts of ast.Tuple, "
|
|
74
|
+
f"but got ast type {type(tuple_elt).__name__}",
|
|
75
|
+
child_node=tuple_elt, father_node=node))
|
|
74
76
|
if isinstance(tuple_elt, ast.Constant):
|
|
75
77
|
tuple_values.append(tuple_elt.value)
|
|
76
78
|
elif isinstance(tuple_elt, ast.Name):
|
|
@@ -105,7 +107,7 @@ class AssignParser(Parser):
|
|
|
105
107
|
return ScopedValue.create_naming_value(node.attr, scope.id)
|
|
106
108
|
if isinstance(node, ast.Tuple):
|
|
107
109
|
return AssignParser._create_scopedvalue_from_tuple_ast(node)
|
|
108
|
-
if isinstance(node, ast.Constant):
|
|
110
|
+
if isinstance(node, (ast.Constant, ast.NameConstant)):
|
|
109
111
|
return ScopedValue.create_variable_value(node.value)
|
|
110
112
|
if isinstance(node, ast.Num):
|
|
111
113
|
return ScopedValue.create_variable_value(node.n)
|
|
@@ -116,12 +118,12 @@ class AssignParser(Parser):
|
|
|
116
118
|
father_node=node))
|
|
117
119
|
|
|
118
120
|
@staticmethod
|
|
119
|
-
def _get_func_name(
|
|
121
|
+
def _get_func_name(ast_call: ast.Call) -> str:
|
|
120
122
|
"""
|
|
121
123
|
Get the func name from ast.Call.
|
|
122
124
|
|
|
123
125
|
Args:
|
|
124
|
-
|
|
126
|
+
ast_call (ast.Call): Input ast.Call node.
|
|
125
127
|
|
|
126
128
|
Returns:
|
|
127
129
|
Func name.
|
|
@@ -129,7 +131,7 @@ class AssignParser(Parser):
|
|
|
129
131
|
Raises:
|
|
130
132
|
RuntimeError: Func of input ast node is not ast.Name or ast.Attribute.
|
|
131
133
|
"""
|
|
132
|
-
func =
|
|
134
|
+
func = ast_call.func
|
|
133
135
|
if isinstance(func, ast.Name):
|
|
134
136
|
return func.id
|
|
135
137
|
if isinstance(func, ast.Attribute):
|
|
@@ -137,15 +139,16 @@ class AssignParser(Parser):
|
|
|
137
139
|
if isinstance(func, ast.Call):
|
|
138
140
|
return AssignParser._get_func_name(func)
|
|
139
141
|
raise RuntimeError(error_str(f"funcValue should be Name or a Attribute or a Call, but got ast type "
|
|
140
|
-
f"'{type(func).__name__}'", child_node=func, father_node=
|
|
142
|
+
f"'{type(func).__name__}'", child_node=func, father_node=ast_call))
|
|
141
143
|
|
|
142
144
|
@staticmethod
|
|
143
|
-
def _get_func_scope(
|
|
145
|
+
def _get_func_scope(ast_call: ast.Call, node_manager: NodeManager = None) -> str:
|
|
144
146
|
"""
|
|
145
147
|
Get the func scope from ast.Call.
|
|
146
148
|
|
|
147
149
|
Args:
|
|
148
|
-
|
|
150
|
+
ast_call (ast.Call): Input ast.Call node.
|
|
151
|
+
node_manager (NodeManager): NodeManager those asts belong to.
|
|
149
152
|
|
|
150
153
|
Returns:
|
|
151
154
|
Func scope.
|
|
@@ -154,17 +157,17 @@ class AssignParser(Parser):
|
|
|
154
157
|
RuntimeError: FuncValue is not an ast.Name when func is an ast.Attribute.
|
|
155
158
|
RuntimeError: Func of input ast node is not ast.Name or ast.Attribute.
|
|
156
159
|
"""
|
|
157
|
-
func =
|
|
160
|
+
func = ast_call.func
|
|
158
161
|
if isinstance(func, ast.Name):
|
|
159
162
|
return ""
|
|
160
163
|
if isinstance(func, ast.Attribute):
|
|
161
164
|
parser = ParserRegister.instance().get_parser(type(func))
|
|
162
|
-
value = parser.process(None, func)
|
|
165
|
+
value = parser.process(None, func, node_manager)
|
|
163
166
|
return value.rsplit(".", 1)[0]
|
|
164
167
|
if isinstance(func, ast.Call):
|
|
165
|
-
return AssignParser._get_func_scope(func)
|
|
168
|
+
return AssignParser._get_func_scope(func, node_manager)
|
|
166
169
|
raise RuntimeError(error_str(f"funcValue should be Name or a Attribute or a Call, but got ast type "
|
|
167
|
-
f"'{type(func).__name__}'", child_node=func, father_node=
|
|
170
|
+
f"'{type(func).__name__}'", child_node=func, father_node=ast_call))
|
|
168
171
|
|
|
169
172
|
@staticmethod
|
|
170
173
|
def _get_symbol_object(symbol_name, origin_net):
|
|
@@ -205,9 +208,9 @@ class AssignParser(Parser):
|
|
|
205
208
|
return results
|
|
206
209
|
|
|
207
210
|
@staticmethod
|
|
208
|
-
def
|
|
211
|
+
def _get_call_instance(func_scope, func_name, stree: SymbolTree):
|
|
209
212
|
"""
|
|
210
|
-
Get
|
|
213
|
+
Get object instance from ast.Call with type of Cell or Primitive.
|
|
211
214
|
|
|
212
215
|
Args:
|
|
213
216
|
func_scope (str): Func scope.
|
|
@@ -215,21 +218,21 @@ class AssignParser(Parser):
|
|
|
215
218
|
stree (SymbolTree): Belong SymbolTree.
|
|
216
219
|
|
|
217
220
|
Returns:
|
|
218
|
-
|
|
221
|
+
An instance represents operator instance.
|
|
219
222
|
"""
|
|
220
|
-
|
|
221
223
|
if func_scope != "self":
|
|
222
|
-
|
|
223
|
-
func_name)
|
|
224
|
+
return None
|
|
224
225
|
var_dict = stree.get_origin_network().__dict__
|
|
226
|
+
# Instance is of type Cell
|
|
225
227
|
for key, value in var_dict["_cells"].items():
|
|
226
228
|
if key == func_name:
|
|
227
|
-
return
|
|
228
|
-
|
|
229
|
+
return value
|
|
230
|
+
# Instance is of type Primitive
|
|
229
231
|
for key, value in var_dict["_primitives"].items():
|
|
230
232
|
if key == func_name:
|
|
231
|
-
return
|
|
232
|
-
|
|
233
|
+
return value
|
|
234
|
+
# Instance is of other type.
|
|
235
|
+
return None
|
|
233
236
|
|
|
234
237
|
@staticmethod
|
|
235
238
|
def _get_targets(all_targets: ScopedValue) -> [Union[ScopedValue, str]]:
|
|
@@ -240,6 +243,8 @@ class AssignParser(Parser):
|
|
|
240
243
|
if not isinstance(single_target, ScopedValue) and not isinstance(single_target.value, str):
|
|
241
244
|
raise RuntimeError(f"For MindSpore Rewrite, only support str target in tuple, but got type "
|
|
242
245
|
f"{type(single_target).__name__}")
|
|
246
|
+
if single_target.type == ValueType.ConstantValue and isinstance(single_target.value, str):
|
|
247
|
+
single_target.type = ValueType.NamingValue
|
|
243
248
|
targets.append(single_target)
|
|
244
249
|
else:
|
|
245
250
|
targets.append(all_targets)
|
|
@@ -249,18 +254,7 @@ class AssignParser(Parser):
|
|
|
249
254
|
def _update_field_in_init(func_scope, func_name, stree: SymbolTree, sub_tree: SymbolTree) -> bool:
|
|
250
255
|
"""
|
|
251
256
|
When node is an invoking to sub-network, update value of ast.Assign of corresponding field in `__init__` method.
|
|
252
|
-
|
|
253
|
-
Update from:
|
|
254
|
-
|
|
255
|
-
.. code-block::
|
|
256
|
-
|
|
257
|
-
self.field = getattr(self._handler, "field")
|
|
258
|
-
|
|
259
|
-
to:
|
|
260
|
-
|
|
261
|
-
.. code-block::
|
|
262
|
-
|
|
263
|
-
self.field = SubNetwork(global_vars.get("field_args"))
|
|
257
|
+
Add the code like: `self.field = SubNetwork(self.field)`
|
|
264
258
|
|
|
265
259
|
Args:
|
|
266
260
|
func_scope (str): A string represents scope of function symbol.
|
|
@@ -272,53 +266,28 @@ class AssignParser(Parser):
|
|
|
272
266
|
NotImplementedError: If `func_scope` is not "self", it means corresponding op is inited in forward method.
|
|
273
267
|
NotImplementedError: If targets of ast.Assign of corresponding field in `__init__` method.
|
|
274
268
|
"""
|
|
275
|
-
|
|
276
|
-
changed = False
|
|
277
269
|
if func_scope != "self":
|
|
278
270
|
logger.warning("Not support parse operator which is instantiated at runtime now: %s; name: %s", func_scope,
|
|
279
271
|
func_name)
|
|
280
272
|
init_func_ast = stree.get_init_func_ast()
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
continue
|
|
292
|
-
changed = True
|
|
293
|
-
setattr(stree.get_origin_network(), func_name, sub_tree.get_origin_network())
|
|
294
|
-
args_call = AstModifier.create_call(ScopedValue(ValueType.NamingValue, "", "getattr"),
|
|
295
|
-
[ScopedValue(ValueType.NamingValue, "", "obj"),
|
|
296
|
-
ScopedValue(ValueType.StringValue, "", func_name)])
|
|
297
|
-
body.value = ast.Call(func=ast.Name(class_name, ast.Store()), args=[args_call], keywords=[])
|
|
298
|
-
break
|
|
299
|
-
return changed
|
|
273
|
+
sub_net_obj = sub_tree.get_origin_network()
|
|
274
|
+
sub_net_opt_name = sub_tree.get_opt_cls_name()
|
|
275
|
+
# Add .to_float(mindspore.float16) if origin subnet has this attribute
|
|
276
|
+
new_code = f"{func_scope}.{func_name} = {sub_net_opt_name}({func_scope}.{func_name})"
|
|
277
|
+
if hasattr(sub_net_obj, "fp16") and sub_net_obj.fp16:
|
|
278
|
+
new_code = f"{new_code}.to_float(mindspore.float16)"
|
|
279
|
+
elif hasattr(sub_net_obj, "bf16") and sub_net_obj.bf16:
|
|
280
|
+
new_code = f"{new_code}.to_float(mindspore.bfloat16)"
|
|
281
|
+
new_ast = ast.parse(new_code).body[0]
|
|
282
|
+
init_func_ast.body.append(new_ast)
|
|
300
283
|
|
|
301
284
|
@staticmethod
|
|
302
|
-
def
|
|
303
|
-
"""convert ast.BinOp to Node"""
|
|
304
|
-
|
|
305
|
-
# only support ast.Add now
|
|
306
|
-
op = P.Add()
|
|
307
|
-
func_ast = ast.Attribute(value=ast.Name(id='F', ctx=ast.Load()), attr='add', ctx=ast.Load())
|
|
308
|
-
func = ScopedValue.create_naming_value('add', 'F')
|
|
309
|
-
|
|
310
|
-
father_ast_node.value = ast.Call(func=func_ast, args=[ast_node.left, ast_node.right], keywords=[])
|
|
311
|
-
targets = AssignParser._get_targets(AssignParser._create_scopedvalue(father_ast_node.targets[0]))
|
|
312
|
-
call_args = [AssignParser._create_scopedvalue(arg) for arg in father_ast_node.value.args]
|
|
313
|
-
return Node.create_call_buildin_op(op, father_ast_node, targets, func, call_args, {})
|
|
314
|
-
|
|
315
|
-
@staticmethod
|
|
316
|
-
def _create_inputs_for_cell_container(father_ast_node) -> ['Node']:
|
|
285
|
+
def _create_inputs_for_cell_container(ast_assign) -> ['Node']:
|
|
317
286
|
"""Create inputs for cell container first node."""
|
|
318
|
-
call_ast_node =
|
|
287
|
+
call_ast_node = ast_assign.value
|
|
319
288
|
if not isinstance(call_ast_node, ast.Call):
|
|
320
289
|
raise RuntimeError(error_str(f"when creating input node for cellcontainer, value of input father ast node"
|
|
321
|
-
"is not ast.Call!'", child_node=call_ast_node, father_node=
|
|
290
|
+
"is not ast.Call!'", child_node=call_ast_node, father_node=ast_assign))
|
|
322
291
|
first_node_inputs: ['Node'] = []
|
|
323
292
|
exist_param_name = []
|
|
324
293
|
for arg in call_ast_node.args:
|
|
@@ -338,73 +307,114 @@ class AssignParser(Parser):
|
|
|
338
307
|
|
|
339
308
|
if call_ast_node.keywords:
|
|
340
309
|
raise RuntimeError(error_str(f"Not support keyword input for cellcontainer now.",
|
|
341
|
-
child_node=call_ast_node, father_node=
|
|
310
|
+
child_node=call_ast_node, father_node=ast_assign))
|
|
342
311
|
|
|
343
312
|
return first_node_inputs
|
|
344
313
|
|
|
345
|
-
|
|
314
|
+
@staticmethod
|
|
315
|
+
def _update_cell_container_in_init(stree, container_name, container_idx, subnet_opt_name):
|
|
316
|
+
"""
|
|
317
|
+
When nn.SequentialCell include sub-symboltree, the new class definition will be used to create object.
|
|
318
|
+
So the assign code will be got from origin code first, and then be modified to new class name.
|
|
319
|
+
|
|
320
|
+
Codes like:
|
|
321
|
+
|
|
322
|
+
`self.container = nn.SequentialCell([ReLU(), MyNet()])`
|
|
323
|
+
|
|
324
|
+
will be updated by add codes:
|
|
325
|
+
|
|
326
|
+
`self.container[1] = MyNetOpt(self.container[1])`
|
|
327
|
+
|
|
328
|
+
"""
|
|
329
|
+
new_code = f"{container_name}[{container_idx}] = {subnet_opt_name}({container_name}[{container_idx}])"
|
|
330
|
+
new_ast = ast.parse(new_code).body[0]
|
|
331
|
+
stree.get_init_func_ast().body.append(new_ast)
|
|
332
|
+
|
|
333
|
+
@staticmethod
|
|
334
|
+
def cell_container_process(ast_assign, stree, targets, func_scope_name, call_args, call_kwargs,
|
|
335
|
+
op_name, container_obj):
|
|
346
336
|
""" parse cell container object."""
|
|
347
|
-
cell_container = CellContainer(
|
|
348
|
-
|
|
349
|
-
first_node_inputs = AssignParser._create_inputs_for_cell_container(
|
|
337
|
+
cell_container = CellContainer(ast_assign, targets, func_scope_name, call_args, call_kwargs,
|
|
338
|
+
op_name, stree, container_obj)
|
|
339
|
+
first_node_inputs = AssignParser._create_inputs_for_cell_container(ast_assign)
|
|
350
340
|
for i, cell in enumerate(container_obj):
|
|
351
|
-
|
|
341
|
+
cell_name = type(cell).__name__
|
|
342
|
+
is_sub_tree = is_subtree(cell)
|
|
352
343
|
if is_sub_tree:
|
|
353
344
|
stb = SymbolTreeBuilder(cell)
|
|
354
345
|
new_stree = stb.build()
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
type(cell).__name__, cell)
|
|
346
|
+
sub_node = TreeNode.create_tree_node(new_stree, None, targets, cell_name, call_args,
|
|
347
|
+
call_kwargs, cell_name, cell)
|
|
348
|
+
AssignParser._update_cell_container_in_init(stree, func_scope_name, i, new_stree.get_opt_cls_name())
|
|
359
349
|
else:
|
|
360
|
-
sub_node = Node.create_call_buildin_op(cell,
|
|
361
|
-
|
|
350
|
+
sub_node = Node.create_call_buildin_op(cell, None, targets, cell_name, call_args,
|
|
351
|
+
call_kwargs, cell_name)
|
|
362
352
|
# add sub node to cell_container
|
|
363
|
-
cell_container.append(sub_node)
|
|
364
|
-
# set node inputs
|
|
353
|
+
cell_container.append(sub_node, False)
|
|
354
|
+
# set node inputs, those input nodes are NOT inserted in container, only
|
|
355
|
+
# topological relationship is updated.
|
|
365
356
|
if i == 0:
|
|
366
|
-
|
|
357
|
+
for idx, arg_provider in enumerate(first_node_inputs):
|
|
358
|
+
sub_node.set_arg_providers(idx, (arg_provider, 0))
|
|
367
359
|
else:
|
|
368
|
-
sub_node.
|
|
360
|
+
sub_node.set_arg_providers(0, (cell_container.node_list[i-1], 0))
|
|
369
361
|
return cell_container
|
|
370
362
|
|
|
371
|
-
|
|
372
|
-
|
|
363
|
+
@staticmethod
|
|
364
|
+
def process_external_function(stree, func_name, file_path):
|
|
365
|
+
"""
|
|
366
|
+
Process external function.
|
|
367
|
+
Ast of external function defined in specifical file_path will be saved to generate codes.
|
|
368
|
+
"""
|
|
373
369
|
for k, m in sys.modules.items():
|
|
374
370
|
if k in ("_ast", "ast"):
|
|
375
371
|
continue
|
|
376
372
|
if hasattr(m, func_name):
|
|
377
373
|
func = getattr(m, func_name)
|
|
374
|
+
if not inspect.isfunction(func):
|
|
375
|
+
continue
|
|
376
|
+
func_source_code_file = inspect.getfile(func)
|
|
377
|
+
if func_source_code_file != file_path:
|
|
378
|
+
continue
|
|
378
379
|
source_code = inspect.getsource(func)
|
|
379
380
|
ast_root: ast.Module = ast.parse(source_code)
|
|
380
|
-
stree.
|
|
381
|
+
stree.get_external_ast().append(ast_root.body[0])
|
|
381
382
|
return func, ast_root.body[0]
|
|
382
|
-
|
|
383
|
+
logger.info(f"Cannot get ast of function {func_name} from {file_path}.")
|
|
384
|
+
return None, None
|
|
383
385
|
|
|
384
386
|
def _process_internal_function(self, stree: SymbolTree, func_name):
|
|
385
387
|
"""Process internal function."""
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
for body in stree.
|
|
388
|
+
func_inst = getattr(stree.get_origin_network(), func_name)
|
|
389
|
+
ast_functiondef = None
|
|
390
|
+
for body in stree.get_class_ast().body:
|
|
389
391
|
if isinstance(body, ast.FunctionDef) and func_name == body.name:
|
|
390
|
-
|
|
391
|
-
return
|
|
392
|
-
|
|
393
|
-
def
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
392
|
+
ast_functiondef = body
|
|
393
|
+
return func_inst, ast_functiondef
|
|
394
|
+
|
|
395
|
+
def _create_callfunction_node(self, targets: [ScopedValue], func_scope_name: ScopedValue, args: [ScopedValue],
|
|
396
|
+
kwargs: {str: ScopedValue}, node_name: str, ast_assign: ast.Assign,
|
|
397
|
+
ast_functiondef: ast.FunctionDef, stree: SymbolTree, instance):
|
|
398
|
+
"""Create CallFunction node for class internal function."""
|
|
399
|
+
node = CallFunction(targets, func_scope_name, args, kwargs, node_name, ast_assign, ast_functiondef,
|
|
400
|
+
stree, instance)
|
|
401
|
+
# expand ast codes
|
|
402
|
+
ast_functiondef = FlattenRecursiveStmt().transform(ast_functiondef, [func_scope_name.value], stree)
|
|
403
|
+
# parse ast codes into CallFunction Node
|
|
404
|
+
parser = ParserRegister.instance().get_parser(ast.FunctionDef)
|
|
405
|
+
parser.process(stree, ast_functiondef, node_manager=node)
|
|
406
|
+
return node
|
|
407
|
+
|
|
408
|
+
def _convert_ast_call_to_node(self, ast_call: ast.Call, ast_assign: ast.Assign, stree: SymbolTree,
|
|
409
|
+
node_manager: NodeManager) -> Node:
|
|
401
410
|
"""
|
|
402
411
|
Convert ast.Call to a symbol tree node.
|
|
403
412
|
|
|
404
413
|
Args:
|
|
405
|
-
|
|
406
|
-
|
|
414
|
+
ast_call (ast.Call): An ast.Call of assign node in construct.
|
|
415
|
+
ast_assign (ast.Assign): Assign node in construct.
|
|
407
416
|
stree (SymbolTree): Symbol Tree under parsing.
|
|
417
|
+
node_manager (NodeManager): NodeManager those asts belong to.
|
|
408
418
|
|
|
409
419
|
Returns:
|
|
410
420
|
An instance of Node in Symbol Tree.
|
|
@@ -412,86 +422,63 @@ class AssignParser(Parser):
|
|
|
412
422
|
Raises:
|
|
413
423
|
RuntimeError: If operator instance invoked by assign is undefined.
|
|
414
424
|
"""
|
|
415
|
-
targets = AssignParser._get_targets(AssignParser._create_scopedvalue(
|
|
416
|
-
func_name = AssignParser._get_func_name(
|
|
425
|
+
targets = AssignParser._get_targets(AssignParser._create_scopedvalue(ast_assign.targets[0]))
|
|
426
|
+
func_name = AssignParser._get_func_name(ast_call)
|
|
417
427
|
if func_name is None or func_name == "":
|
|
418
428
|
raise RuntimeError("function name not exist")
|
|
419
|
-
func_scope = AssignParser._get_func_scope(
|
|
420
|
-
|
|
421
|
-
call_args = [AssignParser._create_scopedvalue(arg) for arg in
|
|
422
|
-
call_kwargs = AssignParser._create_kwargs(
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
if
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
429
|
+
func_scope = AssignParser._get_func_scope(ast_call, node_manager)
|
|
430
|
+
func_scope_name = ScopedValue.create_naming_value(func_name, func_scope)
|
|
431
|
+
call_args = [AssignParser._create_scopedvalue(arg) for arg in ast_call.args]
|
|
432
|
+
call_kwargs = AssignParser._create_kwargs(ast_call.keywords)
|
|
433
|
+
|
|
434
|
+
func_inst = AssignParser._get_call_instance(func_scope, func_name, stree)
|
|
435
|
+
if func_inst is None:
|
|
436
|
+
# Function is not Cell and Primitive
|
|
437
|
+
if func_scope in ('self', stree.get_opt_cls_name()) and hasattr(stree.get_origin_network(), func_name):
|
|
438
|
+
# Function defined in current class
|
|
439
|
+
func_inst, ast_functiondef = self._process_internal_function(stree, func_name)
|
|
440
|
+
if ast_functiondef is None:
|
|
441
|
+
raise RuntimeError(f"Find ast of function {func_scope}.{func_name} in symbol tree class failed.")
|
|
442
|
+
node = self._create_callfunction_node(targets, func_scope_name, call_args, call_kwargs, func_name,
|
|
443
|
+
ast_assign, ast_functiondef, stree, func_inst)
|
|
444
|
+
elif is_functional(func_name):
|
|
445
|
+
# Function defined in mindspore.ops.functional
|
|
446
|
+
parser = ParserRegister.instance().get_parser(type(ast_call.func)) # ast.Name or ast.Attribute
|
|
447
|
+
func_name = parser.process(stree, ast_call.func, node_manager).split(".")[-1]
|
|
448
|
+
func_inst = get_functional(func_name)
|
|
449
|
+
node = Node.inner_create_call_function(func_name, ast_assign, func_name, func_inst, targets,
|
|
450
|
+
call_args, call_kwargs)
|
|
436
451
|
else:
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
452
|
+
origin_net_file = inspect.getfile(type(stree.get_origin_network()))
|
|
453
|
+
if not os.path.exists(origin_net_file):
|
|
454
|
+
raise RuntimeError(f"For MindSpore Rewrite, in assign parser, origin_net_file "
|
|
455
|
+
f"{origin_net_file} not exist")
|
|
456
|
+
func_inst, ast_functiondef = AssignParser.process_external_function(stree, func_name, origin_net_file)
|
|
457
|
+
node = Node.inner_create_call_function(func_name, ast_assign, func_name, func_inst, targets,
|
|
458
|
+
call_args, call_kwargs)
|
|
440
459
|
return node
|
|
441
|
-
if isinstance(
|
|
442
|
-
node =
|
|
443
|
-
|
|
460
|
+
if isinstance(func_inst, tuple(AssignParser.types_for_cell_container)):
|
|
461
|
+
node = AssignParser.cell_container_process(ast_assign, stree, targets, func_scope_name, call_args,
|
|
462
|
+
call_kwargs, func_name, func_inst)
|
|
444
463
|
return node
|
|
445
|
-
if isinstance(
|
|
446
|
-
return Node.create_call_buildin_op(
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
if
|
|
450
|
-
|
|
464
|
+
if isinstance(func_inst, Primitive):
|
|
465
|
+
return Node.create_call_buildin_op(func_inst, ast_assign, targets, func_scope_name, call_args, call_kwargs,
|
|
466
|
+
func_name)
|
|
467
|
+
if isinstance(func_inst, Cell):
|
|
468
|
+
if is_subtree(func_inst):
|
|
469
|
+
# Instance of function is user custom network, create sub-symboltree
|
|
470
|
+
stb = SymbolTreeBuilder(func_inst)
|
|
451
471
|
new_stree = stb.build()
|
|
452
|
-
|
|
453
|
-
if changed:
|
|
454
|
-
# class SubSubNet:
|
|
455
|
-
# def __init__(self, global_vars):
|
|
456
|
-
# self._handler = global_vars.get("handler")
|
|
457
|
-
#
|
|
458
|
-
# class SubNet:
|
|
459
|
-
# def __init__(self, global_vars):
|
|
460
|
-
# self._handler = global_vars.get("handler")
|
|
461
|
-
# self._subsubnet = None
|
|
462
|
-
# if xxx:
|
|
463
|
-
# self._subsubnet = SubSubNet(xxx)
|
|
464
|
-
#
|
|
465
|
-
# Assuming there are two instance of SubNet A and B. "if xxx" in A is True, and in B is False.
|
|
466
|
-
# So self._subsubnet in A is an instance of SubSubNet, and in B is None.
|
|
467
|
-
# So After rewrite, A's code:
|
|
468
|
-
# class SubNetA:
|
|
469
|
-
# def __init__(self, global_vars):
|
|
470
|
-
# self._handler = global_vars.get("handler")
|
|
471
|
-
# self._subsubnet = SubSubNet(global_vars.get("subsubnet_args"))
|
|
472
|
-
# while B's code:
|
|
473
|
-
# class SubNetB:
|
|
474
|
-
# def __init__(self, global_vars):
|
|
475
|
-
# self._handler = global_vars.get("handler")
|
|
476
|
-
# self._subsubnet = getattr(self._handler, "_subsubnet")
|
|
477
|
-
# So SubNet should use SubNetA as its code when _update_field_in_init return True.
|
|
478
|
-
# So SubNet should use SubNetB as its code when _update_field_in_init return False or undefined
|
|
479
|
-
# error will occur to "global_vars.get("subsubnet_args")".
|
|
480
|
-
stree.on_change(Event.CodeChangeEvent)
|
|
481
|
-
# Sub-network in main-network is expressed as:
|
|
482
|
-
# self._subnet = SubNet(global_vars.get("subnet_args"))
|
|
483
|
-
# when subnet is changed, its class will change, take SubNet1 as new class-name, so code main-network
|
|
484
|
-
# also need to change:
|
|
485
|
-
# self._subnet = SubNet1(global_vars.get("subnet_args"))
|
|
486
|
-
# so a change in sub-network should also be identified as a change in main-network.
|
|
487
|
-
# so main-network should observe sub-network
|
|
472
|
+
AssignParser._update_field_in_init(func_scope, func_name, stree, new_stree)
|
|
488
473
|
replacer = AstReplacer(new_stree.get_class_ast())
|
|
489
474
|
replacer.replace_all(new_stree.get_ori_cls_name(), new_stree.get_opt_cls_name())
|
|
490
|
-
return TreeNode.create_tree_node(new_stree,
|
|
491
|
-
func_name, new_stree.get_origin_network())
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
475
|
+
return TreeNode.create_tree_node(new_stree, ast_assign, targets, func_scope_name, call_args,
|
|
476
|
+
call_kwargs, func_name, new_stree.get_origin_network())
|
|
477
|
+
# Instance of function is buildin cells
|
|
478
|
+
return Node.create_call_buildin_op(func_inst, ast_assign, targets, func_scope_name, call_args, call_kwargs,
|
|
479
|
+
func_name)
|
|
480
|
+
raise RuntimeError("For MindSpore Rewrite, unsupported operation in ast.Call found: ",
|
|
481
|
+
type(func_inst).__name__)
|
|
495
482
|
|
|
496
483
|
@staticmethod
|
|
497
484
|
def _tuple_elts_support_scopledvalue(value: ast.Tuple) -> bool:
|
|
@@ -506,62 +493,62 @@ class AssignParser(Parser):
|
|
|
506
493
|
return True
|
|
507
494
|
|
|
508
495
|
@staticmethod
|
|
509
|
-
def _convert_ast_mathops_to_node(
|
|
510
|
-
|
|
496
|
+
def _convert_ast_mathops_to_node(ast_op: Union[ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare],
|
|
497
|
+
ast_assign: ast.Assign) -> Node:
|
|
511
498
|
"""
|
|
512
499
|
Convert ast node of math operations(ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare) to
|
|
513
500
|
a symbol tree node.
|
|
514
501
|
|
|
515
502
|
Args:
|
|
516
|
-
|
|
503
|
+
ast_op (Union[ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare]): An assign node with mathematival
|
|
517
504
|
operation in construct function.
|
|
518
|
-
|
|
505
|
+
ast_assign (ast.Assign): Assign node in construct.
|
|
519
506
|
|
|
520
507
|
Returns:
|
|
521
508
|
An instance of Node in Symbol Tree.
|
|
522
509
|
|
|
523
510
|
Raises:
|
|
524
|
-
TypeError: The type of parameter '
|
|
511
|
+
TypeError: The type of parameter 'ast_op' is not in (ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare).
|
|
525
512
|
|
|
526
513
|
"""
|
|
527
|
-
if not isinstance(
|
|
528
|
-
raise TypeError("The type of parameter '
|
|
529
|
-
"ast.BoolOp, ast.Compare), but got ", type(
|
|
514
|
+
if not isinstance(ast_op, (ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare)):
|
|
515
|
+
raise TypeError("The type of parameter 'ast_op' must be one of (ast.BinOp, ast.UnaryOp, "
|
|
516
|
+
"ast.BoolOp, ast.Compare), but got ", type(ast_op))
|
|
530
517
|
|
|
531
|
-
targets = AssignParser._get_targets(AssignParser._create_scopedvalue(
|
|
518
|
+
targets = AssignParser._get_targets(AssignParser._create_scopedvalue(ast_assign.targets[0]))
|
|
532
519
|
args = []
|
|
533
|
-
op_type_str = type(
|
|
520
|
+
op_type_str = type(ast_op).__name__
|
|
534
521
|
op_type = ScopedValue.create_naming_value(op_type_str)
|
|
535
522
|
ops = {}
|
|
536
523
|
name = op_type_str
|
|
537
|
-
if isinstance(
|
|
538
|
-
op = type(
|
|
524
|
+
if isinstance(ast_op, ast.BinOp):
|
|
525
|
+
op = type(ast_op.op).__name__
|
|
539
526
|
name = f'{name}_{op}'
|
|
540
527
|
ops['0'] = ScopedValue.create_naming_value(op)
|
|
541
|
-
args.append(AssignParser._create_scopedvalue(
|
|
542
|
-
args.append(AssignParser._create_scopedvalue(
|
|
543
|
-
elif isinstance(
|
|
544
|
-
op = type(
|
|
528
|
+
args.append(AssignParser._create_scopedvalue(ast_op.left))
|
|
529
|
+
args.append(AssignParser._create_scopedvalue(ast_op.right))
|
|
530
|
+
elif isinstance(ast_op, ast.UnaryOp):
|
|
531
|
+
op = type(ast_op.op).__name__
|
|
545
532
|
name = f'{name}_{op}'
|
|
546
533
|
ops['0'] = ScopedValue.create_naming_value(op)
|
|
547
|
-
args.append(AssignParser._create_scopedvalue(
|
|
548
|
-
elif isinstance(
|
|
549
|
-
op = type(
|
|
534
|
+
args.append(AssignParser._create_scopedvalue(ast_op.operand))
|
|
535
|
+
elif isinstance(ast_op, ast.BoolOp):
|
|
536
|
+
op = type(ast_op.op).__name__
|
|
550
537
|
name = f'{name}_{op}'
|
|
551
538
|
ops['0'] = ScopedValue.create_naming_value(op)
|
|
552
|
-
for value in
|
|
539
|
+
for value in ast_op.values:
|
|
553
540
|
args.append(AssignParser._create_scopedvalue(value))
|
|
554
|
-
elif isinstance(
|
|
555
|
-
args.append(AssignParser._create_scopedvalue(
|
|
556
|
-
for idx,
|
|
557
|
-
op = type(
|
|
541
|
+
elif isinstance(ast_op, ast.Compare):
|
|
542
|
+
args.append(AssignParser._create_scopedvalue(ast_op.left))
|
|
543
|
+
for idx, ast_cmp_op in enumerate(ast_op.ops):
|
|
544
|
+
op = type(ast_cmp_op).__name__
|
|
558
545
|
name = f'{name}_{op}'
|
|
559
546
|
ops[str(idx)] = ScopedValue.create_naming_value(op)
|
|
560
|
-
args.append(AssignParser._create_scopedvalue(
|
|
547
|
+
args.append(AssignParser._create_scopedvalue(ast_op.comparators[idx]))
|
|
561
548
|
name = name.lower()
|
|
562
|
-
return Node.create_mathops_node(
|
|
549
|
+
return Node.create_mathops_node(ast_assign, targets, op_type, args, ops, name)
|
|
563
550
|
|
|
564
|
-
def process(self, stree: SymbolTree, node: ast.Assign):
|
|
551
|
+
def process(self, stree: SymbolTree, node: ast.Assign, node_manager: NodeManager):
|
|
565
552
|
"""
|
|
566
553
|
Parse ast.Assign and create a node in symbol tree.
|
|
567
554
|
|
|
@@ -573,6 +560,7 @@ class AssignParser(Parser):
|
|
|
573
560
|
Args:
|
|
574
561
|
stree ([SymbolTree]): Symbol Tree under parsing.
|
|
575
562
|
node ([ast.Assign]): An ast.Assign node.
|
|
563
|
+
node_manager (NodeManager): NodeManager those asts belong to.
|
|
576
564
|
|
|
577
565
|
Raises:
|
|
578
566
|
RuntimeError: Only support one target in assign now.
|
|
@@ -583,19 +571,18 @@ class AssignParser(Parser):
|
|
|
583
571
|
try:
|
|
584
572
|
if len(targets) != 1:
|
|
585
573
|
raise RuntimeError(
|
|
586
|
-
error_str(f"only support one target in assign now.",
|
|
574
|
+
error_str(f"only support one target in assign now.", targets, node))
|
|
587
575
|
value = node.value
|
|
588
576
|
if isinstance(value, ast.Call):
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
stree.append_origin_field(node_)
|
|
577
|
+
node_ = self._convert_ast_call_to_node(value, node, stree, node_manager)
|
|
578
|
+
stree.append_origin_field(node_, node_manager)
|
|
592
579
|
elif isinstance(value, (ast.BinOp, ast.UnaryOp, ast.BoolOp, ast.Compare)):
|
|
593
580
|
node_ = AssignParser._convert_ast_mathops_to_node(value, node)
|
|
594
|
-
stree.append_origin_field(node_)
|
|
581
|
+
stree.append_origin_field(node_, node_manager)
|
|
595
582
|
elif isinstance(value, ast.Subscript):
|
|
596
583
|
logger.info(f"ops-call({astunparse.unparse(node)}) in assign will be supported in near feature, "
|
|
597
584
|
f"ignored as a python node now")
|
|
598
|
-
stree.try_append_python_node(node, node)
|
|
585
|
+
stree.try_append_python_node(node, node, node_manager)
|
|
599
586
|
elif isinstance(value, (ast.Name, ast.Constant, ast.Attribute, ast.Num, ast.NameConstant,
|
|
600
587
|
ast.Bytes, ast.Str)):
|
|
601
588
|
if isinstance(value, ast.Name):
|
|
@@ -604,13 +591,12 @@ class AssignParser(Parser):
|
|
|
604
591
|
node_name = "constant_assign"
|
|
605
592
|
elif isinstance(value, ast.Attribute):
|
|
606
593
|
node_name = "attribute_assign"
|
|
607
|
-
stree.update_scope_for_unique(value)
|
|
608
594
|
else:
|
|
609
595
|
node_name = "other_assign"
|
|
610
596
|
targets = AssignParser._get_targets(AssignParser._create_scopedvalue(node.targets[0]))
|
|
611
597
|
call_args = [AssignParser._create_scopedvalue(value)]
|
|
612
598
|
node_ = Node.create_call_pass_through_method(node, targets, call_args, {}, node_name)
|
|
613
|
-
stree.append_origin_field(node_)
|
|
599
|
+
stree.append_origin_field(node_, node_manager)
|
|
614
600
|
elif isinstance(value, ast.Tuple):
|
|
615
601
|
if AssignParser._tuple_elts_support_scopledvalue(value):
|
|
616
602
|
# ensure that each element's type in tuple is supported by scopled value
|
|
@@ -620,14 +606,14 @@ class AssignParser(Parser):
|
|
|
620
606
|
args.append(AssignParser._create_scopedvalue(elt))
|
|
621
607
|
node_ = Node.create_call_method(node, targets, ScopedValue.create_naming_value("tuple"),
|
|
622
608
|
args, {}, "tuple")
|
|
623
|
-
stree.append_origin_field(node_)
|
|
609
|
+
stree.append_origin_field(node_, node_manager)
|
|
624
610
|
else:
|
|
625
|
-
logger.
|
|
626
|
-
|
|
627
|
-
stree.try_append_python_node(node, node)
|
|
611
|
+
logger.info(f"some elements in Tuple of assign({astunparse.unparse(node)}) are not supported "
|
|
612
|
+
"in rewrite, fallback to python")
|
|
613
|
+
stree.try_append_python_node(node, node, node_manager)
|
|
628
614
|
elif isinstance(value, (ast.List, ast.Dict)):
|
|
629
615
|
# add these as callmethod node if necessary
|
|
630
|
-
stree.try_append_python_node(node, node)
|
|
616
|
+
stree.try_append_python_node(node, node, node_manager)
|
|
631
617
|
else:
|
|
632
618
|
raise RuntimeError(
|
|
633
619
|
error_str(f"only support (ast.Call, ast.BinOp, ast.BoolOp, ast.Subscript, ast.Name, ast.Constant, "
|
|
@@ -635,8 +621,8 @@ class AssignParser(Parser):
|
|
|
635
621
|
f"ast.Dict) as value of ast.assign, but got ast type '{type(value).__name__}'",
|
|
636
622
|
child_node=value, father_node=node))
|
|
637
623
|
except RuntimeError:
|
|
638
|
-
logger.info(f"ops-call({astunparse.unparse(node)}) not supported in rewrite, fallback to python")
|
|
639
|
-
stree.try_append_python_node(node, node)
|
|
624
|
+
logger.info(f"ops-call({astunparse.unparse(node).strip()}) not supported in rewrite, fallback to python")
|
|
625
|
+
stree.try_append_python_node(node, node, node_manager)
|
|
640
626
|
|
|
641
627
|
|
|
642
628
|
g_assign_parser = reg_parser(AssignParser())
|