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
|
@@ -14,27 +14,28 @@
|
|
|
14
14
|
# ============================================================================
|
|
15
15
|
"""The parser for parsing framework files."""
|
|
16
16
|
import csv
|
|
17
|
+
import glob
|
|
18
|
+
import json
|
|
17
19
|
import os
|
|
20
|
+
import stat
|
|
18
21
|
import re
|
|
19
22
|
import struct
|
|
20
|
-
import json
|
|
21
|
-
from pathlib import Path
|
|
22
|
-
from typing import List
|
|
23
23
|
from collections import defaultdict
|
|
24
24
|
from collections import namedtuple
|
|
25
|
-
import
|
|
26
|
-
|
|
25
|
+
from pathlib import Path
|
|
26
|
+
from typing import List
|
|
27
27
|
|
|
28
|
+
import numpy as np
|
|
28
29
|
from mindspore import log as logger
|
|
29
|
-
from mindspore.profiler.parser.framework_struct import TASK_DESC_STRUCT, TENSOR_DATA_STRUCT, STEP_INFO_STRUCT
|
|
30
|
-
from mindspore.profiler.parser.framework_enum import VmDataType, VmFormat, FileDataType, MSPROF_DIFFERENCE
|
|
31
|
-
from mindspore.profiler.parser.framework_enum import MSPROF_MIX_DATA_STRING
|
|
32
|
-
from mindspore.profiler.common.struct_type import StructType
|
|
33
|
-
from mindspore.profiler.common.util import combine_stream_task_id
|
|
34
30
|
from mindspore.profiler.common.exceptions.exceptions import ProfilerDirNotFoundException
|
|
35
31
|
from mindspore.profiler.common.exceptions.exceptions import ProfilerFileNotFoundException
|
|
36
32
|
from mindspore.profiler.common.exceptions.exceptions import ProfilerParamValueErrorException
|
|
33
|
+
from mindspore.profiler.common.struct_type import StructType
|
|
34
|
+
from mindspore.profiler.common.util import combine_stream_task_id
|
|
37
35
|
from mindspore.profiler.common.validator.validate_path import validate_and_normalize_path
|
|
36
|
+
from mindspore.profiler.parser.framework_enum import MSPROF_MIX_DATA_STRING
|
|
37
|
+
from mindspore.profiler.parser.framework_enum import VmDataType, VmFormat, FileDataType, MSPROF_DIFFERENCE
|
|
38
|
+
from mindspore.profiler.parser.framework_struct import TASK_DESC_STRUCT, TENSOR_DATA_STRUCT, STEP_INFO_STRUCT
|
|
38
39
|
from mindspore.profiler.parser.profiler_info import ProfilerInfo
|
|
39
40
|
|
|
40
41
|
FILE_DATA_STRUCT_DICT = {
|
|
@@ -43,8 +44,19 @@ FILE_DATA_STRUCT_DICT = {
|
|
|
43
44
|
FileDataType.TASK_DESC_INFO.value: TASK_DESC_STRUCT
|
|
44
45
|
}
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
TASK_TYPE_TO_KERNEL_TYPE = {
|
|
48
|
+
0: 'AI_CORE',
|
|
49
|
+
1: 'AI_CPU',
|
|
50
|
+
2: 'MSPROF_AIV',
|
|
51
|
+
10: 'MSPROF_HCCL',
|
|
52
|
+
11: 'MSPROF_RTS',
|
|
53
|
+
1000: 'MSPROF_UNKNOWN_TYPE'
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
COL_NAMES = [
|
|
57
|
+
'task_id', 'stream_id', 'block_dim', 'full_op_name', 'op_name', 'op_type', 'subgraph', 'op_info',
|
|
58
|
+
'graph_id', 'kernel_type'
|
|
59
|
+
]
|
|
48
60
|
OpData = namedtuple('OpData', field_names=COL_NAMES)
|
|
49
61
|
|
|
50
62
|
|
|
@@ -58,6 +70,8 @@ class FrameworkParser:
|
|
|
58
70
|
output_path (str): The directory of the parsed file. Default: `./`.
|
|
59
71
|
"""
|
|
60
72
|
_regex_framework = r'Framework\.(?P<data_type>.+)\.(?P<device_id>\d).+'
|
|
73
|
+
_host_regex_framework = r'Framework\.(?P<data_type>.+)\.+'
|
|
74
|
+
_match_framework_file = r'Framework*[0-9]'
|
|
61
75
|
_graph_attr_name = [
|
|
62
76
|
'input_format', 'input_data_type', 'input_shape', 'output_format',
|
|
63
77
|
'output_data_type', 'output_shape'
|
|
@@ -211,10 +225,11 @@ class FrameworkParser:
|
|
|
211
225
|
|
|
212
226
|
@staticmethod
|
|
213
227
|
def _write_framework_to_file(all_op_data: List[OpData], output_file):
|
|
214
|
-
with open(output_file, 'w') as file_handler:
|
|
228
|
+
with os.fdopen(os.open(output_file, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as file_handler:
|
|
215
229
|
csv_writer = csv.writer(file_handler)
|
|
216
230
|
csv_writer.writerow(COL_NAMES)
|
|
217
231
|
csv_writer.writerows(all_op_data)
|
|
232
|
+
os.chmod(output_file, stat.S_IREAD | stat.S_IWRITE)
|
|
218
233
|
|
|
219
234
|
@staticmethod
|
|
220
235
|
def _get_subgraph_name(full_op_name):
|
|
@@ -239,7 +254,7 @@ class FrameworkParser:
|
|
|
239
254
|
Args:
|
|
240
255
|
op_name (str): The operator name or operator name prefix.
|
|
241
256
|
is_prefix (bool): `True` if the op_name is prefix, else `False`.
|
|
242
|
-
Default: True
|
|
257
|
+
Default: ``True``.
|
|
243
258
|
|
|
244
259
|
Returns:
|
|
245
260
|
bool, `True` if the operator name does exist in framework file, else
|
|
@@ -297,17 +312,25 @@ class FrameworkParser:
|
|
|
297
312
|
ProfilerFileNotFoundException: If the framework files are not found.
|
|
298
313
|
"""
|
|
299
314
|
data_dir = os.path.join(profiling_path, 'data')
|
|
300
|
-
|
|
315
|
+
host_data_dir = os.path.join(profiling_path, '../host/data')
|
|
316
|
+
if not os.path.isdir(data_dir) and not os.path.isdir(host_data_dir):
|
|
301
317
|
raise ProfilerDirNotFoundException(data_dir)
|
|
302
318
|
|
|
303
319
|
framework_path_dict = defaultdict(list)
|
|
304
|
-
for
|
|
320
|
+
file_list = [f for f in Path(data_dir).glob(self._match_framework_file)]
|
|
321
|
+
if not file_list:
|
|
322
|
+
file_list = [f for f in Path(host_data_dir).glob(self._match_framework_file)]
|
|
323
|
+
|
|
324
|
+
for file in file_list:
|
|
305
325
|
file_name = file.name
|
|
326
|
+
|
|
306
327
|
match = re.search(self._regex_framework, file_name)
|
|
307
328
|
if match is None:
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
329
|
+
match = re.search(self._host_regex_framework, file_name)
|
|
330
|
+
if match is None:
|
|
331
|
+
logger.warning("Profiler does not support to analyse file(%s), this file name format is not %s, "
|
|
332
|
+
"skip this file.", file.resolve(), self._regex_framework)
|
|
333
|
+
continue
|
|
311
334
|
|
|
312
335
|
if match['data_type'] not in FileDataType.members():
|
|
313
336
|
logger.warning("Profiler does not support to analyse file(%s), this file data type is %s, "
|
|
@@ -405,8 +428,10 @@ class FrameworkParser:
|
|
|
405
428
|
op_type=task_desc['opType'],
|
|
406
429
|
subgraph=subgraph,
|
|
407
430
|
op_info=json.dumps(task_id_op_attr_dict.get(combined_task_id, {})),
|
|
408
|
-
graph_id=task_desc['modelId']
|
|
409
|
-
|
|
431
|
+
graph_id=task_desc['modelId'],
|
|
432
|
+
kernel_type=TASK_TYPE_TO_KERNEL_TYPE.get(task_desc.get('taskType')))
|
|
433
|
+
if not task_desc['opType'].startswith("InitDataSetQueue") and not task_desc['opType'].startswith("GetNext"):
|
|
434
|
+
graph_ids.add(task_desc['modelId'])
|
|
410
435
|
all_op_data.append(op_data)
|
|
411
436
|
ProfilerInfo.set_graph_ids(list(graph_ids))
|
|
412
437
|
return all_op_data
|
|
@@ -524,14 +549,18 @@ class GpuFrameWorkParser:
|
|
|
524
549
|
op_total_time = float(line_info[-4])
|
|
525
550
|
if not self.op_detail.get(op_name):
|
|
526
551
|
# line_info[4]: op_occurrences, line_info[5]: op_detail_time(us), line_info[6]: op_avg_time(us);
|
|
527
|
-
self.op_detail[op_name] = [
|
|
528
|
-
|
|
552
|
+
self.op_detail[op_name] = [
|
|
553
|
+
op_occurrences, op_total_time,
|
|
554
|
+
round(op_total_time / op_occurrences, 4), op_side
|
|
555
|
+
]
|
|
529
556
|
else:
|
|
530
557
|
self.op_detail.get(op_name)[1] += op_total_time
|
|
531
558
|
self.op_detail.get(op_name)[2] = self.op_detail.get(op_name)[1] / self.op_detail.get(op_name)[0]
|
|
532
|
-
self.op_detail[op_name] = [
|
|
533
|
-
|
|
534
|
-
|
|
559
|
+
self.op_detail[op_name] = [
|
|
560
|
+
self.op_detail.get(op_name)[0],
|
|
561
|
+
round(self.op_detail.get(op_name)[1], 4),
|
|
562
|
+
round(self.op_detail.get(op_name)[2], 4), op_side
|
|
563
|
+
]
|
|
535
564
|
|
|
536
565
|
def combine_performance_data(self, op_name):
|
|
537
566
|
"""Combine operator detail info with framework info."""
|
|
@@ -554,8 +583,10 @@ class GpuFrameWorkParser:
|
|
|
554
583
|
op_shape_dict.get(op_shape)[0] += op_occurrences
|
|
555
584
|
op_shape_dict.get(op_shape)[1] += op_total_time
|
|
556
585
|
op_shape_dict.get(op_shape)[2] = op_shape_dict.get(op_shape)[1] / op_shape_dict.get(op_shape)[0]
|
|
557
|
-
op_shape_dict[op_shape] = [
|
|
558
|
-
|
|
586
|
+
op_shape_dict[op_shape] = [
|
|
587
|
+
op_shape_dict.get(op_shape)[0], round(op_shape_dict.get(op_shape)[1], 4),
|
|
588
|
+
round(op_shape_dict.get(op_shape)[2], 4), op_side
|
|
589
|
+
]
|
|
559
590
|
else:
|
|
560
591
|
op_shape_dict[op_shape] = [op_occurrences, op_total_time, op_avg_time, op_side]
|
|
561
592
|
|
|
@@ -648,8 +679,9 @@ class GpuFrameWorkParser:
|
|
|
648
679
|
"kernel_type": kernel_type_step_time,
|
|
649
680
|
}
|
|
650
681
|
dynamic_shape_file_path = os.path.join(self._output_path, output_dynamic_shape_file_name)
|
|
651
|
-
with os.fdopen(os.open(dynamic_shape_file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC,
|
|
682
|
+
with os.fdopen(os.open(dynamic_shape_file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as fp:
|
|
652
683
|
json.dump(result, fp)
|
|
684
|
+
os.chmod(dynamic_shape_file_path, stat.S_IREAD | stat.S_IWRITE)
|
|
653
685
|
|
|
654
686
|
def get_graph_ids(self):
|
|
655
687
|
"""Get gpu graph ids."""
|
|
@@ -661,7 +693,7 @@ class GpuFrameWorkParser:
|
|
|
661
693
|
with open(gpu_framework_file[0], 'r') as f_obj:
|
|
662
694
|
framework_info = f_obj.readlines()
|
|
663
695
|
for line_info in framework_info:
|
|
664
|
-
if line_info.startswith("InitDataSetQueue"):
|
|
696
|
+
if line_info.startswith("InitDataSetQueue") or line_info.startswith("GetNext"):
|
|
665
697
|
continue
|
|
666
698
|
line_info = line_info.strip(' ').strip('\n').split(';')
|
|
667
699
|
if len(line_info) > 2 and line_info[2].isdigit():
|
|
@@ -681,13 +713,14 @@ class GpuFrameWorkParser:
|
|
|
681
713
|
"grid_dim": args.get('grid_dim')
|
|
682
714
|
}
|
|
683
715
|
else:
|
|
716
|
+
op_step_shape = self.op_step_shape_info.get(op_info.get('name'))
|
|
684
717
|
item = {
|
|
685
718
|
"step": step,
|
|
686
719
|
"op_side": self.op_step_shape_info.get(op_info.get('name'))[0],
|
|
687
720
|
"op_type": op_info.get('name').split('-')[0],
|
|
688
721
|
"op_name": op_info.get('name'),
|
|
689
722
|
"dur": op_info.get('dur'),
|
|
690
|
-
"shape_info":
|
|
723
|
+
"shape_info": op_step_shape[step] if len(op_step_shape) > step else [],
|
|
691
724
|
}
|
|
692
725
|
return item
|
|
693
726
|
|
|
@@ -702,10 +735,12 @@ class GpuFrameWorkParser:
|
|
|
702
735
|
else:
|
|
703
736
|
self.one_step_op_time[sort_type][0] += duration
|
|
704
737
|
self.one_step_op_time[sort_type][1] += 1
|
|
705
|
-
self.one_step_op_time[sort_type] = [
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
738
|
+
self.one_step_op_time[sort_type] = [
|
|
739
|
+
self.one_step_op_time[sort_type][0],
|
|
740
|
+
self.one_step_op_time[sort_type][1],
|
|
741
|
+
round(self.one_step_op_time[sort_type][0] /
|
|
742
|
+
self.one_step_op_time[sort_type][1], 4)
|
|
743
|
+
]
|
|
709
744
|
else:
|
|
710
745
|
sort_type = item.get("op_name")
|
|
711
746
|
op_full_name = item.get("op_full_name")
|
|
@@ -715,11 +750,13 @@ class GpuFrameWorkParser:
|
|
|
715
750
|
else:
|
|
716
751
|
self.one_step_kernel_time[sort_type][0] += duration
|
|
717
752
|
self.one_step_kernel_time[sort_type][1] += 1
|
|
718
|
-
self.one_step_kernel_time[sort_type] = [
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
753
|
+
self.one_step_kernel_time[sort_type] = [
|
|
754
|
+
self.one_step_kernel_time[sort_type][0],
|
|
755
|
+
self.one_step_kernel_time[sort_type][1],
|
|
756
|
+
round(self.one_step_kernel_time[sort_type][0] /
|
|
757
|
+
self.one_step_kernel_time[sort_type][1], 4),
|
|
758
|
+
op_full_name
|
|
759
|
+
]
|
|
723
760
|
|
|
724
761
|
|
|
725
762
|
class DynamicFrameWorkParser:
|
|
@@ -743,9 +780,9 @@ class DynamicFrameWorkParser:
|
|
|
743
780
|
self._dynamic_shape_info = defaultdict(list)
|
|
744
781
|
self._step = 0
|
|
745
782
|
|
|
746
|
-
def write_dynamic_shape_data(self):
|
|
783
|
+
def write_dynamic_shape_data(self, df_op_summary):
|
|
747
784
|
"""Analyze dynamic shape data and write to dynamic shape file."""
|
|
748
|
-
self._get_total_step_num()
|
|
785
|
+
self._get_total_step_num(df_op_summary)
|
|
749
786
|
output_dynamic_shape_file_name = f'dynamic_shape_info_{self._rank_id}.json'
|
|
750
787
|
for op_name in self._exe_time_and_shape_detail:
|
|
751
788
|
if self._exe_time_and_shape_detail[op_name]['op_exe_occurrences'] == self._step:
|
|
@@ -766,41 +803,23 @@ class DynamicFrameWorkParser:
|
|
|
766
803
|
len(self._op_type_exe_time[op_type]), 4)).tolist()
|
|
767
804
|
self._dynamic_shape_info['op_type'] = self._op_info.get("op_type")
|
|
768
805
|
dynamic_shape_file_path = os.path.join(self._output_path, output_dynamic_shape_file_name)
|
|
769
|
-
with os.fdopen(os.open(dynamic_shape_file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC,
|
|
806
|
+
with os.fdopen(os.open(dynamic_shape_file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as fp:
|
|
770
807
|
json.dump(self._dynamic_shape_info, fp)
|
|
808
|
+
os.chmod(dynamic_shape_file_path, stat.S_IREAD | stat.S_IWRITE)
|
|
771
809
|
|
|
772
|
-
def _analyse_op_execute_time(self):
|
|
810
|
+
def _analyse_op_execute_time(self, op_summary):
|
|
773
811
|
"""Obtain the execution time of aicpu operator and aicore operator."""
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
def read_file(file_path):
|
|
781
|
-
"""Read file data."""
|
|
782
|
-
with open(file_path, 'r') as fp:
|
|
783
|
-
file_info = fp.readlines()[1:]
|
|
784
|
-
return file_info
|
|
785
|
-
|
|
786
|
-
timeline_info = read_file(timeline_origin_file_path)
|
|
787
|
-
for line_info in timeline_info:
|
|
788
|
-
line_info = line_info.strip('\n').split(',')
|
|
789
|
-
op_name = line_info[0].split('/')[-1]
|
|
790
|
-
op_exe_time = float(line_info[3])
|
|
791
|
-
self._all_op_exe_time[op_name].append(op_exe_time)
|
|
792
|
-
if os.path.exists(aicpu_file_path):
|
|
793
|
-
aicpu_info = read_file(aicpu_file_path)
|
|
794
|
-
for line_info in aicpu_info:
|
|
795
|
-
line_info = line_info.strip('\n').split(',')
|
|
796
|
-
op_name = line_info[1]
|
|
797
|
-
op_exe_time = float(line_info[3])
|
|
798
|
-
self._all_op_exe_time[op_name].append(op_exe_time)
|
|
812
|
+
timeline_info = defaultdict(list)
|
|
813
|
+
for row in op_summary:
|
|
814
|
+
key = row['Op Name'].split('/')[-1]
|
|
815
|
+
timeline_info[key].append(row['Task Duration'])
|
|
816
|
+
|
|
817
|
+
self._all_op_exe_time = timeline_info
|
|
799
818
|
|
|
800
|
-
def _get_dynamic_shape_info(self):
|
|
819
|
+
def _get_dynamic_shape_info(self, op_summary):
|
|
801
820
|
"""Get the shape information of AICPU and aicore."""
|
|
802
821
|
framework_file_name = f'framework_raw_{self._rank_id}.csv'
|
|
803
|
-
self._analyse_op_execute_time()
|
|
822
|
+
self._analyse_op_execute_time(op_summary)
|
|
804
823
|
framework_file_path = os.path.join(self._output_path, framework_file_name)
|
|
805
824
|
framework_file_path = validate_and_normalize_path(framework_file_path)
|
|
806
825
|
with open(framework_file_path, 'r') as f_obj:
|
|
@@ -811,9 +830,9 @@ class DynamicFrameWorkParser:
|
|
|
811
830
|
shape_info = ','.join(line_info[7:]).replace('"', '')
|
|
812
831
|
self._op_shape_info[op_name].append(shape_info)
|
|
813
832
|
|
|
814
|
-
def _get_total_step_num(self):
|
|
833
|
+
def _get_total_step_num(self, op_summary):
|
|
815
834
|
"""Get the number of steps."""
|
|
816
|
-
self._get_dynamic_shape_info()
|
|
835
|
+
self._get_dynamic_shape_info(op_summary)
|
|
817
836
|
all_exe_occurrences = list()
|
|
818
837
|
for op_name in self._all_op_exe_time:
|
|
819
838
|
op_shape = self._op_shape_info.get(op_name)
|
|
@@ -36,9 +36,9 @@ class CommunicationInfo(Enum):
|
|
|
36
36
|
RDMA: Communication link between servers in cluster training.
|
|
37
37
|
SDMA: Communication link inside server in cluster training.
|
|
38
38
|
LOCAL: The operation of this card has no transmission process.
|
|
39
|
-
RDMASEND
|
|
40
|
-
REDUCE_INLINE
|
|
41
|
-
MEMCPY
|
|
39
|
+
RDMASEND: Communication operator of RDMA link.
|
|
40
|
+
REDUCE_INLINE: Communication operator of SDMA link.
|
|
41
|
+
MEMCPY: Communication operator of SDMA link.
|
|
42
42
|
NOTIFY_RECORD: Communication operator of SDMA link.
|
|
43
43
|
NOTIFY_WAIT: operator of LOCAL.
|
|
44
44
|
"""
|
|
@@ -269,15 +269,17 @@ class HcclParser:
|
|
|
269
269
|
|
|
270
270
|
# index_0:step_num, index_1:start_point, index_2:end_point
|
|
271
271
|
# The unit of time stamp is 10ns. To convert it to μs, you need to divide it by 100.
|
|
272
|
-
step_timestamps_info = [
|
|
273
|
-
|
|
272
|
+
step_timestamps_info = [
|
|
273
|
+
[info[0], float(info[1]) / 100, float(info[2]) / 100]
|
|
274
|
+
for info in csv_reader if info[0].isdigit()
|
|
275
|
+
]
|
|
274
276
|
|
|
275
277
|
return [communication_operators_names, step_timestamps_info]
|
|
276
278
|
|
|
277
279
|
def _get_communication_operator_name_mapping_info(self):
|
|
278
280
|
"""Get the name of communication operators mapping between hccl and step trace."""
|
|
279
281
|
dir_path = self._validate_dir_path(self._source_dir)
|
|
280
|
-
# The name of the operator in hccl is like
|
|
282
|
+
# The name of the operator in hccl is like: operatorName_{Ordered_number}_xx_xx.
|
|
281
283
|
operators_names_in_hccl = [entry.name for entry in os.scandir(dir_path) if entry.is_dir()]
|
|
282
284
|
operators_names_in_hccl_set = set({i.split('_')[0] for i in operators_names_in_hccl})
|
|
283
285
|
op_names_in_hccl_dic = dict()
|
|
@@ -294,8 +296,10 @@ class HcclParser:
|
|
|
294
296
|
for op_name in operators_names_in_step_trace})
|
|
295
297
|
op_names_in_step_trace_dic = dict()
|
|
296
298
|
for item in op_names_in_step_trace_set:
|
|
297
|
-
op_names_in_step_trace_dic[item] = [
|
|
298
|
-
|
|
299
|
+
op_names_in_step_trace_dic[item] = [
|
|
300
|
+
op_name for op_name in operators_names_in_step_trace
|
|
301
|
+
if op_name.split('/')[-1].split('-')[0].split('_')[-1] == item
|
|
302
|
+
]
|
|
299
303
|
|
|
300
304
|
communication_operator_mapping_info = dict()
|
|
301
305
|
for hccl_key, hccl_value in op_names_in_hccl_dic.items():
|
|
@@ -548,9 +552,9 @@ class HcclParser:
|
|
|
548
552
|
"""Validate file path."""
|
|
549
553
|
try:
|
|
550
554
|
file_path = validate_and_normalize_path(file_path)
|
|
551
|
-
except RuntimeError:
|
|
555
|
+
except RuntimeError as err:
|
|
552
556
|
logger.warning('file path is invalid.')
|
|
553
|
-
raise ProfilerPathErrorException('file path is invalid.')
|
|
557
|
+
raise ProfilerPathErrorException('file path is invalid.') from err
|
|
554
558
|
if not os.path.isfile(file_path):
|
|
555
559
|
logger.warning('The file <%s> not found.', file_path)
|
|
556
560
|
raise ProfilerFileNotFoundException(file_path)
|
|
@@ -560,9 +564,9 @@ class HcclParser:
|
|
|
560
564
|
"""Validate dir path."""
|
|
561
565
|
try:
|
|
562
566
|
dir_path = validate_and_normalize_path(dir_path)
|
|
563
|
-
except RuntimeError:
|
|
567
|
+
except RuntimeError as err:
|
|
564
568
|
logger.warning('dir path is invalid.')
|
|
565
|
-
raise ProfilerPathErrorException('dir path is invalid.')
|
|
569
|
+
raise ProfilerPathErrorException('dir path is invalid.') from err
|
|
566
570
|
if not os.path.isdir(dir_path):
|
|
567
571
|
logger.warning('The dir <%s> not found.', dir_path)
|
|
568
572
|
raise ProfilerDirNotFoundException(dir_path)
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import csv
|
|
17
17
|
import json
|
|
18
18
|
import os
|
|
19
|
+
import stat
|
|
19
20
|
from decimal import Decimal
|
|
20
21
|
from enum import Enum
|
|
21
22
|
import sys
|
|
@@ -39,8 +40,10 @@ class Integrator:
|
|
|
39
40
|
_file_name_framework = 'framework_raw_{}.csv'
|
|
40
41
|
_header_aicore_type = ['op_type', 'total_time', 'execution_frequency', 'percent']
|
|
41
42
|
_header_aicore_detail = ['full_op_name', 'execution_time', 'execution_frequency']
|
|
42
|
-
_header_aicpu = [
|
|
43
|
-
|
|
43
|
+
_header_aicpu = [
|
|
44
|
+
'serial_number', 'op_type', 'total_time', 'dispatch_time',
|
|
45
|
+
'execution_time', 'run_start', 'run_end'
|
|
46
|
+
]
|
|
44
47
|
|
|
45
48
|
_file_name_aicore_type_time = 'aicore_intermediate_{}_type.csv'
|
|
46
49
|
_file_name_aicore_detail_info = 'aicore_intermediate_{}_detail.csv'
|
|
@@ -153,7 +156,7 @@ class Integrator:
|
|
|
153
156
|
op_type_time[1] += op_info[1]
|
|
154
157
|
op_type_file_name = 'aicore_intermediate_' + self._device_id + '_type.csv'
|
|
155
158
|
op_type_file_path = os.path.join(self._profiling_dir, op_type_file_name)
|
|
156
|
-
with open(op_type_file_path, 'w') as type_file:
|
|
159
|
+
with os.fdopen(os.open(op_type_file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as type_file:
|
|
157
160
|
csv_writer = csv.writer(type_file)
|
|
158
161
|
csv_writer.writerow(self._header_aicore_type)
|
|
159
162
|
|
|
@@ -164,6 +167,7 @@ class Integrator:
|
|
|
164
167
|
round((op_type_time_info[0] / total_time) * 100, 2)
|
|
165
168
|
]
|
|
166
169
|
csv_writer.writerow(type_info)
|
|
170
|
+
os.chmod(op_type_file_path, stat.S_IREAD | stat.S_IWRITE)
|
|
167
171
|
|
|
168
172
|
def _parse_aicore_detail_time(self):
|
|
169
173
|
"""Parse the parsed AICORE operator time file."""
|
|
@@ -188,8 +192,8 @@ class Integrator:
|
|
|
188
192
|
_ = src_file.readline()
|
|
189
193
|
else:
|
|
190
194
|
return
|
|
191
|
-
|
|
192
|
-
|
|
195
|
+
with os.fdopen(os.open(op_detail_file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600),
|
|
196
|
+
'w') as detail_file:
|
|
193
197
|
csv_writer = csv.writer(detail_file)
|
|
194
198
|
csv_writer.writerow(self._header_aicore_detail)
|
|
195
199
|
|
|
@@ -204,6 +208,7 @@ class Integrator:
|
|
|
204
208
|
continue
|
|
205
209
|
self._op_time_cache[op_infos[0]] = [Decimal(op_infos[1]), int(op_infos[3])]
|
|
206
210
|
csv_writer.writerow([op_infos[0], op_infos[1], op_infos[3]])
|
|
211
|
+
os.chmod(op_detail_file_path, stat.S_IREAD | stat.S_IWRITE)
|
|
207
212
|
|
|
208
213
|
def _parse_aicpu_time(self):
|
|
209
214
|
"""Parse the parsed AICPU operator time file."""
|
|
@@ -221,7 +226,7 @@ class Integrator:
|
|
|
221
226
|
row = src_file.readline()
|
|
222
227
|
if not row.startswith('serial_number'):
|
|
223
228
|
return
|
|
224
|
-
with open(save_file_path, 'w') as save_file:
|
|
229
|
+
with os.fdopen(os.open(save_file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as save_file:
|
|
225
230
|
csv_writer = csv.writer(save_file)
|
|
226
231
|
csv_writer.writerow(self._header_aicpu)
|
|
227
232
|
|
|
@@ -233,6 +238,7 @@ class Integrator:
|
|
|
233
238
|
if infos[0] == 'AI':
|
|
234
239
|
continue
|
|
235
240
|
csv_writer.writerow(infos)
|
|
241
|
+
os.chmod(save_file_path, stat.S_IREAD | stat.S_IWRITE)
|
|
236
242
|
|
|
237
243
|
def _aicore_data_load(self):
|
|
238
244
|
"""Load data according to the parsed AICORE operator types file."""
|
|
@@ -276,7 +282,8 @@ class Integrator:
|
|
|
276
282
|
_ = next(csv_reader)
|
|
277
283
|
for info in csv_reader:
|
|
278
284
|
framework_infos[info[3]] = [
|
|
279
|
-
info[3], info[4], info[5], info[6], json.loads(info[7]) if info[7] else None
|
|
285
|
+
info[3], info[4], info[5], info[6], json.loads(info[7]) if info[7] else None
|
|
286
|
+
]
|
|
280
287
|
|
|
281
288
|
with open(op_detail_file_path, 'r') as file:
|
|
282
289
|
csv_reader = csv.reader(file)
|
|
@@ -374,8 +381,10 @@ class Integrator:
|
|
|
374
381
|
factor = 1e5 # convert time unit from 10ns to 1ms
|
|
375
382
|
reduce_pid = 10000
|
|
376
383
|
reduce_info = []
|
|
377
|
-
reduce_fields = [
|
|
378
|
-
|
|
384
|
+
reduce_fields = [
|
|
385
|
+
field_name for field_name in self._column
|
|
386
|
+
if field_name.startswith('stream_') and not field_name.endswith('point')
|
|
387
|
+
]
|
|
379
388
|
for reduce_field in reduce_fields:
|
|
380
389
|
reduce_start = row_info_dict.get(reduce_field + '_start_point')
|
|
381
390
|
reduce_start = reduce_start / factor \
|
|
@@ -388,8 +397,10 @@ class Integrator:
|
|
|
388
397
|
cur_stream_id = reduce_field.split('_', 3)[1]
|
|
389
398
|
if reduce_field.split('_', 2)[1] == 'ops':
|
|
390
399
|
cur_stream_id = reduce_field.split('_', 3)[2]
|
|
391
|
-
reduce_meta = [
|
|
392
|
-
|
|
400
|
+
reduce_meta = [
|
|
401
|
+
reduce_field, int(cur_stream_id), reduce_start,
|
|
402
|
+
reduce_duration, reduce_pid
|
|
403
|
+
]
|
|
393
404
|
reduce_info.append(reduce_meta)
|
|
394
405
|
|
|
395
406
|
return reduce_info
|
|
@@ -147,9 +147,9 @@ class MemoryUsageParser:
|
|
|
147
147
|
continue
|
|
148
148
|
|
|
149
149
|
graph_parser = GraphMemoryParser(graph_proto, self._points, self._framework)
|
|
150
|
-
graph = graph_parser.parse_graph()
|
|
151
|
-
if graph:
|
|
152
|
-
self._graphs_dict[
|
|
150
|
+
graph, model_id = graph_parser.parse_graph()
|
|
151
|
+
if graph and model_id != -1:
|
|
152
|
+
self._graphs_dict[model_id] = graph
|
|
153
153
|
|
|
154
154
|
# update global memory usage data
|
|
155
155
|
self._peak_mem = max(self._peak_mem, graph_parser.peak_mem)
|
|
@@ -163,9 +163,9 @@ class MemoryUsageParser:
|
|
|
163
163
|
file_path = validate_and_normalize_path(file_path)
|
|
164
164
|
|
|
165
165
|
try:
|
|
166
|
-
with open(file_path, 'w') as json_file:
|
|
166
|
+
with os.fdopen(os.open(file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as json_file:
|
|
167
167
|
json.dump(content, json_file)
|
|
168
|
-
|
|
168
|
+
os.chmod(file_path, stat.S_IREAD | stat.S_IWRITE)
|
|
169
169
|
except (IOError, OSError) as err:
|
|
170
170
|
logger.critical('Fail to write memory file.\n%s', err)
|
|
171
171
|
raise ProfilerIOException from err
|
|
@@ -191,6 +191,12 @@ class GraphMemoryParser:
|
|
|
191
191
|
self._mem_change = []
|
|
192
192
|
self.breakdowns = []
|
|
193
193
|
self._lifetime = []
|
|
194
|
+
# compatible with original mode
|
|
195
|
+
self._multi_graph = False
|
|
196
|
+
if not isinstance(self._points, dict):
|
|
197
|
+
raise TypeError("Input points data must be dict!")
|
|
198
|
+
if not self._points.get("fp_start"):
|
|
199
|
+
self._multi_graph = True
|
|
194
200
|
|
|
195
201
|
@staticmethod
|
|
196
202
|
def _remove_duplicate_tensors(node):
|
|
@@ -221,12 +227,13 @@ class GraphMemoryParser:
|
|
|
221
227
|
def parse_graph(self):
|
|
222
228
|
"""Parse memory usage data for subgraphs."""
|
|
223
229
|
graph_dict = {}
|
|
230
|
+
model_id = -1
|
|
224
231
|
self.graph = Graph(self._graph_proto)
|
|
225
232
|
# process tensors in the graph
|
|
226
233
|
tensors_proto = self._graph_proto.tensor_mems
|
|
227
234
|
if not tensors_proto:
|
|
228
235
|
logger.info('No tensor in graph %s, skipped.', self.graph.graph_id)
|
|
229
|
-
return graph_dict
|
|
236
|
+
return graph_dict, model_id
|
|
230
237
|
self._parse_tensors(tensors_proto)
|
|
231
238
|
|
|
232
239
|
# calculate memory usage of the graph by number of nodes and details of tensors
|
|
@@ -251,7 +258,7 @@ class GraphMemoryParser:
|
|
|
251
258
|
self.graph.breakdowns = [self.breakdowns[self.tensor_node_id]]
|
|
252
259
|
|
|
253
260
|
# update fp_start and bp_end
|
|
254
|
-
point_id = self._locate_fp_bp_id()
|
|
261
|
+
point_id, model_id = self._locate_fp_bp_id()
|
|
255
262
|
self.graph.fp_start = point_id.get('fp_start')
|
|
256
263
|
self.graph.bp_end = point_id.get('bp_end')
|
|
257
264
|
|
|
@@ -262,7 +269,7 @@ class GraphMemoryParser:
|
|
|
262
269
|
self.deallocations = len(self.tensors)
|
|
263
270
|
self.peak_mem = max(max(self._mem_change), self.peak_mem)
|
|
264
271
|
|
|
265
|
-
return graph_dict
|
|
272
|
+
return graph_dict, model_id
|
|
266
273
|
|
|
267
274
|
def _parse_tensors(self, tensors_proto):
|
|
268
275
|
"""Parse tensors."""
|
|
@@ -371,12 +378,30 @@ class GraphMemoryParser:
|
|
|
371
378
|
|
|
372
379
|
def _locate_fp_bp_id(self):
|
|
373
380
|
"""Locate the node id of fp_start and bp_end in graph."""
|
|
381
|
+
model_id = 0
|
|
382
|
+
if not self._multi_graph:
|
|
383
|
+
point_id = self._match_graph_fpbp(self._points)
|
|
384
|
+
else:
|
|
385
|
+
for mod_id, points in self._points.items():
|
|
386
|
+
if not isinstance(points, dict) or not mod_id.startswith("model"):
|
|
387
|
+
raise RuntimeError("Inputs points is invalid!")
|
|
388
|
+
point_id = self._match_graph_fpbp(points)
|
|
389
|
+
if point_id.get("fp_start"):
|
|
390
|
+
model_id = int(mod_id.split("_")[-1])
|
|
391
|
+
break
|
|
392
|
+
if not point_id.get("fp_start") or not point_id.get("bp_end"):
|
|
393
|
+
model_id = -1
|
|
394
|
+
|
|
395
|
+
return point_id, model_id
|
|
396
|
+
|
|
397
|
+
def _match_graph_fpbp(self, points):
|
|
398
|
+
"Match model_id and graph_id"
|
|
374
399
|
point_id = {
|
|
375
400
|
'fp_start': None,
|
|
376
401
|
'bp_end': None
|
|
377
402
|
}
|
|
378
|
-
fp_start =
|
|
379
|
-
bp_end =
|
|
403
|
+
fp_start = points.get('fp_start')
|
|
404
|
+
bp_end = points.get('bp_end')
|
|
380
405
|
fp_name = fp_start.split('/')[-1] if fp_start else ""
|
|
381
406
|
bp_name = bp_end.split('/')[-1] if bp_end else ""
|
|
382
407
|
if fp_name in self.nodes:
|
|
@@ -388,7 +413,7 @@ class GraphMemoryParser:
|
|
|
388
413
|
|
|
389
414
|
def _process_memory_breakdowns(self):
|
|
390
415
|
"""Process memory breakdowns for each node."""
|
|
391
|
-
self.breakdowns = [[] for _ in range(len(self.
|
|
416
|
+
self.breakdowns = [[] for _ in range(len(self._lifetime))]
|
|
392
417
|
for index, breakdown in enumerate(self._lifetime):
|
|
393
418
|
for t_id in breakdown:
|
|
394
419
|
tensor = self.tensors.get(t_id)
|
|
@@ -557,21 +557,19 @@ class MinddataProfilingAnalyzer:
|
|
|
557
557
|
output_csv_path_filename = os.path.join(self._output_path, summary_templatename.format(self._device_id))
|
|
558
558
|
|
|
559
559
|
# Open file for writing
|
|
560
|
-
|
|
560
|
+
with os.fdopen(os.open(output_csv_path_filename, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600),
|
|
561
|
+
'w') as data_file:
|
|
561
562
|
|
|
562
|
-
|
|
563
|
-
|
|
563
|
+
# Create CSV writer object
|
|
564
|
+
csv_writer = csv.writer(data_file)
|
|
564
565
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
# Close file for writing
|
|
574
|
-
data_file.close()
|
|
566
|
+
# Write the dictionary information to CSV file
|
|
567
|
+
# Create deepcopy of input data_dict so zip processing in this function does NOT change the data_dict
|
|
568
|
+
temp_dict = copy.deepcopy(data_dict)
|
|
569
|
+
for data_key, data_value in zip(temp_dict.keys(), temp_dict.values()):
|
|
570
|
+
# Begin/prefix the data value with the data key
|
|
571
|
+
data_value.insert(0, data_key)
|
|
572
|
+
csv_writer.writerow(data_value)
|
|
575
573
|
|
|
576
574
|
# Update file permissions
|
|
577
575
|
os.chmod(output_csv_path_filename, stat.S_IREAD | stat.S_IWRITE)
|
|
@@ -625,7 +623,7 @@ class MinddataProfilingAnalyzer:
|
|
|
625
623
|
logger.warning(warning_msg)
|
|
626
624
|
|
|
627
625
|
# Save summary output dictionary to JSON output file (format#1)
|
|
628
|
-
with open(self._save_path, 'w') as save_file:
|
|
626
|
+
with os.fdopen(os.open(self._save_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as save_file:
|
|
629
627
|
json.dump(summary_dict, save_file)
|
|
630
628
|
|
|
631
629
|
os.chmod(self._save_path, stat.S_IREAD | stat.S_IWRITE)
|
|
@@ -166,7 +166,7 @@ class MinddataPipelineParser:
|
|
|
166
166
|
)
|
|
167
167
|
op_id_info_cache[item.get('op_id')] = item
|
|
168
168
|
|
|
169
|
-
with open(self._save_path, 'w') as save_file:
|
|
169
|
+
with os.fdopen(os.open(self._save_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as save_file:
|
|
170
170
|
csv_writer = csv.writer(save_file)
|
|
171
171
|
csv_writer.writerow(self._col_names)
|
|
172
172
|
self._parse_and_save_op_info(
|