mindspore 2.1.0__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/__init__.py +4 -1
- 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/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/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 +3 -1
- mindspore/_checkparam.py +26 -32
- mindspore/_extends/graph_kernel/__init__.py +0 -1
- 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 +122 -15
- 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 +2 -2
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +4 -4
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +1 -1
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -1
- mindspore/_extends/parse/__init__.py +12 -15
- mindspore/_extends/parse/namespace.py +7 -33
- mindspore/_extends/parse/parser.py +61 -71
- mindspore/_extends/parse/resources.py +1 -1
- mindspore/_extends/parse/standard_method.py +72 -95
- mindspore/_extends/parse/trope.py +1 -1
- 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 +47 -11
- mindspore/bin/cache_admin +0 -0
- mindspore/bin/cache_server +0 -0
- mindspore/boost/boost.py +1 -8
- mindspore/boost/boost_cell_wrapper.py +3 -2
- mindspore/boost/grad_accumulation.py +1 -1
- mindspore/boost/group_loss_scale_manager.py +8 -7
- mindspore/common/__init__.py +5 -3
- mindspore/common/_jit_fallback_utils.py +6 -0
- mindspore/common/_register_for_adapter.py +2 -0
- mindspore/common/_register_for_tensor.py +2 -2
- mindspore/common/_stub_tensor.py +13 -0
- mindspore/common/_utils.py +13 -0
- mindspore/common/api.py +173 -258
- mindspore/common/auto_dynamic_shape.py +498 -0
- mindspore/common/dtype.py +18 -11
- mindspore/common/dump.py +6 -4
- mindspore/common/initializer.py +14 -14
- mindspore/common/jit_config.py +33 -15
- mindspore/common/lazy_inline.py +126 -7
- mindspore/common/mindir_util.py +101 -0
- mindspore/common/parameter.py +51 -41
- mindspore/common/seed.py +4 -4
- mindspore/common/sparse_tensor.py +13 -14
- mindspore/common/tensor.py +240 -145
- mindspore/communication/__init__.py +7 -4
- mindspore/communication/_comm_helper.py +83 -4
- mindspore/communication/management.py +152 -84
- mindspore/config/op_info.config +13 -2
- mindspore/config/super_bar_config.json +4 -2
- mindspore/context.py +143 -59
- mindspore/dataset/__init__.py +5 -5
- mindspore/dataset/audio/__init__.py +2 -2
- mindspore/dataset/audio/transforms.py +52 -52
- mindspore/dataset/callback/ds_callback.py +16 -2
- mindspore/dataset/core/config.py +68 -51
- mindspore/dataset/engine/cache_client.py +28 -5
- mindspore/dataset/engine/datasets.py +250 -112
- mindspore/dataset/engine/datasets_audio.py +43 -211
- mindspore/dataset/engine/datasets_standard_format.py +11 -35
- mindspore/dataset/engine/datasets_text.py +43 -67
- mindspore/dataset/engine/datasets_user_defined.py +86 -100
- mindspore/dataset/engine/datasets_vision.py +219 -1029
- mindspore/dataset/engine/iterators.py +11 -4
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +4 -0
- mindspore/dataset/engine/obs/util.py +3 -0
- mindspore/dataset/engine/samplers.py +1 -1
- mindspore/dataset/engine/validators.py +19 -5
- mindspore/dataset/text/__init__.py +3 -3
- mindspore/dataset/text/transforms.py +101 -127
- mindspore/dataset/text/utils.py +205 -138
- mindspore/dataset/transforms/__init__.py +1 -1
- mindspore/dataset/transforms/py_transforms_util.py +40 -12
- mindspore/dataset/transforms/transforms.py +95 -40
- mindspore/dataset/utils/browse_dataset.py +8 -2
- mindspore/dataset/utils/line_reader.py +17 -19
- mindspore/dataset/vision/__init__.py +3 -3
- mindspore/dataset/vision/c_transforms.py +6 -3
- mindspore/dataset/vision/transforms.py +409 -287
- mindspore/dataset/vision/utils.py +13 -14
- mindspore/dataset/vision/validators.py +11 -1
- mindspore/experimental/map_parameter.py +14 -0
- mindspore/{nn/optim_ex → experimental/optim}/__init__.py +30 -29
- mindspore/{nn/optim_ex → experimental/optim}/adam.py +59 -66
- mindspore/{nn/optim_ex → experimental/optim}/adamw.py +181 -203
- mindspore/experimental/optim/lr_scheduler.py +1427 -0
- mindspore/{nn/optim_ex → experimental/optim}/optimizer.py +252 -259
- mindspore/{nn/optim_ex → experimental/optim}/sgd.py +147 -152
- mindspore/gen_ops.py +273 -0
- mindspore/include/OWNERS +0 -1
- mindspore/include/api/data_type.h +2 -1
- mindspore/include/api/graph.h +0 -15
- mindspore/include/api/kernel.h +2 -0
- mindspore/include/api/kernel_api.h +37 -12
- mindspore/include/api/model.h +0 -14
- mindspore/include/api/types.h +37 -4
- mindspore/include/c_api/ms/abstract.h +67 -0
- mindspore/include/c_api/ms/attribute.h +197 -0
- mindspore/include/c_api/ms/base/handle_types.h +43 -0
- mindspore/include/c_api/ms/base/macros.h +32 -0
- mindspore/include/c_api/ms/base/status.h +33 -0
- mindspore/include/c_api/ms/base/types.h +282 -0
- mindspore/include/c_api/ms/context.h +102 -0
- mindspore/include/c_api/ms/graph.h +160 -0
- mindspore/include/c_api/ms/node.h +606 -0
- mindspore/include/c_api/ms/tensor.h +161 -0
- mindspore/include/c_api/ms/value.h +84 -0
- mindspore/include/dataset/constants.h +6 -5
- mindspore/include/dataset/execute.h +23 -13
- mindspore/include/dataset/text.h +26 -26
- mindspore/include/dataset/transforms.h +13 -13
- mindspore/include/dataset/vision.h +60 -60
- mindspore/include/dataset/vision_ascend.h +5 -6
- mindspore/include/dataset/vision_lite.h +17 -17
- mindspore/include/mindapi/base/type_id.h +1 -0
- mindspore/include/mindapi/base/types.h +1 -0
- mindspore/lib/libdnnl.so.2 +0 -0
- mindspore/lib/libjemalloc.so.2 +0 -0
- mindspore/lib/libmindspore.so +0 -0
- mindspore/lib/libmindspore_backend.so +0 -0
- mindspore/lib/libmindspore_common.so +0 -0
- mindspore/lib/libmindspore_core.so +0 -0
- mindspore/lib/libmindspore_glog.so.0 +0 -0
- mindspore/lib/libmindspore_gpr.so.15 +0 -0
- mindspore/lib/libmindspore_grpc++.so.1 +0 -0
- mindspore/lib/libmindspore_grpc.so.15 +0 -0
- mindspore/lib/libmindspore_shared_lib.so +0 -0
- mindspore/lib/libnnacl.so +0 -0
- mindspore/lib/libopencv_core.so.4.5 +0 -0
- mindspore/lib/libopencv_imgcodecs.so.4.5 +0 -0
- mindspore/lib/libopencv_imgproc.so.4.5 +0 -0
- mindspore/lib/libps_cache.so +0 -0
- mindspore/lib/plugin/ascend/custom_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/gpu11.1/libakg.so +0 -0
- mindspore/lib/plugin/gpu11.1/libnccl.so.2 +0 -0
- mindspore/lib/plugin/gpu11.6/libakg.so +0 -0
- mindspore/lib/plugin/gpu11.6/libnccl.so.2 +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.1 +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.2 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.10.1 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.11.1 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.11.6 +0 -0
- mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
- mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
- mindspore/nn/__init__.py +0 -2
- mindspore/nn/cell.py +316 -74
- mindspore/nn/dynamic_lr.py +21 -21
- mindspore/nn/layer/activation.py +21 -28
- mindspore/nn/layer/basic.py +15 -13
- mindspore/nn/layer/channel_shuffle.py +1 -1
- mindspore/nn/layer/container.py +271 -9
- mindspore/nn/layer/conv.py +310 -207
- mindspore/nn/layer/dense.py +8 -5
- mindspore/nn/layer/embedding.py +33 -27
- mindspore/nn/layer/flash_attention.py +82 -41
- mindspore/nn/layer/image.py +8 -6
- mindspore/nn/layer/math.py +13 -18
- mindspore/nn/layer/normalization.py +107 -66
- mindspore/nn/layer/padding.py +1 -1
- mindspore/nn/layer/pooling.py +131 -109
- mindspore/nn/layer/rnn_cells.py +22 -17
- mindspore/nn/layer/rnns.py +13 -16
- mindspore/nn/layer/thor_layer.py +1 -1
- mindspore/nn/layer/transformer.py +221 -154
- mindspore/nn/learning_rate_schedule.py +9 -1
- mindspore/nn/loss/loss.py +235 -174
- mindspore/nn/optim/ada_grad.py +2 -1
- mindspore/nn/optim/adadelta.py +1 -0
- mindspore/nn/optim/adafactor.py +2 -1
- mindspore/nn/optim/adam.py +7 -4
- mindspore/nn/optim/adamax.py +3 -2
- mindspore/nn/optim/adasum.py +2 -2
- mindspore/nn/optim/asgd.py +2 -3
- mindspore/nn/optim/ftrl.py +6 -5
- mindspore/nn/optim/lamb.py +7 -4
- mindspore/nn/optim/lars.py +1 -1
- mindspore/nn/optim/lazyadam.py +5 -3
- mindspore/nn/optim/momentum.py +2 -1
- mindspore/nn/optim/optimizer.py +53 -4
- mindspore/nn/optim/proximal_ada_grad.py +3 -4
- mindspore/nn/optim/rmsprop.py +4 -3
- mindspore/nn/optim/rprop.py +23 -12
- mindspore/nn/optim/sgd.py +26 -11
- mindspore/nn/optim/thor.py +9 -7
- mindspore/nn/probability/bijector/bijector.py +5 -5
- mindspore/nn/probability/bijector/power_transform.py +27 -27
- mindspore/nn/probability/bijector/softplus.py +3 -3
- mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -3
- mindspore/nn/probability/distribution/bernoulli.py +5 -5
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +7 -7
- mindspore/nn/probability/distribution/cauchy.py +0 -1
- mindspore/nn/probability/distribution/distribution.py +3 -3
- mindspore/nn/probability/distribution/gamma.py +3 -3
- mindspore/nn/probability/distribution/geometric.py +4 -4
- mindspore/nn/probability/distribution/gumbel.py +4 -4
- mindspore/nn/probability/distribution/log_normal.py +2 -2
- mindspore/nn/probability/distribution/logistic.py +2 -2
- mindspore/nn/probability/distribution/poisson.py +4 -4
- mindspore/nn/probability/distribution/transformed_distribution.py +3 -3
- mindspore/nn/probability/distribution/uniform.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +78 -34
- mindspore/nn/wrap/grad_reducer.py +8 -5
- mindspore/nn/wrap/loss_scale.py +105 -42
- mindspore/numpy/array_creations.py +1 -2
- mindspore/numpy/array_ops.py +3 -2
- mindspore/offline_debug/convert_async.py +2 -2
- mindspore/ops/_grad_experimental/__init__.py +0 -5
- mindspore/ops/_grad_experimental/grad_array_ops.py +1 -2
- mindspore/ops/_grad_experimental/grad_comm_ops.py +15 -2
- mindspore/ops/_grad_experimental/grad_debug_ops.py +0 -37
- mindspore/ops/_grad_experimental/grad_implementations.py +10 -0
- mindspore/ops/_grad_experimental/grad_inner_ops.py +2 -216
- mindspore/ops/_grad_experimental/grad_math_ops.py +0 -181
- mindspore/ops/_grad_experimental/grad_sparse.py +15 -0
- mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +165 -109
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +144 -86
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +172 -187
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +51 -57
- mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +6 -17
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +1 -1
- mindspore/ops/_op_impl/aicpu/__init__.py +14 -2
- mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
- mindspore/ops/_op_impl/aicpu/eps.py +32 -0
- mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
- mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
- mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/multinomial.py +3 -3
- mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +15 -7
- mindspore/ops/_op_impl/aicpu/random_categorical.py +39 -19
- mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +5 -2
- mindspore/ops/_op_impl/aicpu/random_poisson.py +103 -52
- mindspore/ops/_op_impl/aicpu/random_shuffle.py +17 -15
- mindspore/ops/_op_impl/aicpu/{sparseaddmm.py → sparse_addmm.py} +2 -2
- mindspore/ops/_op_impl/aicpu/{sparsesparsemaximum.py → sparse_sparse_maximum.py} +4 -4
- mindspore/ops/_op_impl/aicpu/standard_laplace.py +5 -5
- mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -5
- mindspore/ops/_op_impl/aicpu/truncated_normal.py +9 -7
- mindspore/ops/_op_impl/aicpu/uniform.py +5 -3
- mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +8 -4
- mindspore/ops/_op_impl/aicpu/uniform_int.py +5 -5
- mindspore/ops/_op_impl/aicpu/uniform_real.py +4 -4
- mindspore/ops/_op_impl/tbe/__init__.py +4 -4
- mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
- mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
- mindspore/ops/_primitive_cache.py +1 -1
- mindspore/ops/_tracefunc.py +45 -13
- mindspore/ops/_utils/utils.py +4 -1
- mindspore/ops/_vmap/vmap_array_ops.py +3 -3
- mindspore/ops/_vmap/vmap_base.py +3 -3
- mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
- mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
- mindspore/ops/_vmap/vmap_math_ops.py +5 -2
- mindspore/ops/_vmap/vmap_nn_ops.py +61 -7
- mindspore/ops/arg_dtype_cast.py +54 -0
- mindspore/ops/composite/base.py +37 -10
- mindspore/ops/composite/math_ops.py +5 -4
- mindspore/ops/composite/multitype_ops/_compile_utils.py +273 -72
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +16 -9
- mindspore/ops/composite/multitype_ops/add_impl.py +43 -4
- mindspore/ops/composite/multitype_ops/getitem_impl.py +40 -2
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
- mindspore/ops/deprecated.py +304 -0
- mindspore/ops/function/__init__.py +4 -1
- mindspore/ops/function/array_func.py +167 -189
- mindspore/ops/function/clip_func.py +81 -13
- mindspore/ops/function/debug_func.py +1 -1
- mindspore/ops/function/grad/grad_func.py +18 -8
- mindspore/ops/function/image_func.py +10 -4
- mindspore/ops/function/linalg_func.py +5 -5
- mindspore/ops/function/math_func.py +575 -386
- mindspore/ops/function/nn_func.py +470 -251
- mindspore/ops/function/random_func.py +86 -56
- mindspore/ops/function/sparse_func.py +1 -1
- mindspore/ops/function/sparse_unary_func.py +14 -12
- mindspore/ops/function/vmap_func.py +6 -5
- mindspore/ops/functional.py +15 -10
- mindspore/ops/op_info_register.py +235 -19
- mindspore/ops/operations/__init__.py +25 -17
- mindspore/ops/operations/_grad_ops.py +52 -7
- mindspore/ops/operations/_inner_ops.py +213 -12
- mindspore/ops/operations/_quant_ops.py +4 -8
- mindspore/ops/operations/_sequence_ops.py +42 -0
- mindspore/ops/operations/array_ops.py +64 -280
- mindspore/ops/operations/comm_ops.py +105 -57
- mindspore/ops/operations/custom_ops.py +10 -3
- mindspore/ops/operations/debug_ops.py +8 -4
- mindspore/ops/operations/image_ops.py +18 -12
- mindspore/ops/operations/math_ops.py +185 -138
- mindspore/ops/operations/nn_ops.py +716 -492
- mindspore/ops/operations/other_ops.py +0 -22
- mindspore/ops/operations/random_ops.py +53 -111
- mindspore/ops/operations/sparse_ops.py +3 -1
- mindspore/ops/primitive.py +24 -18
- mindspore/parallel/_auto_parallel_context.py +68 -8
- mindspore/parallel/_cost_model_context.py +2 -2
- mindspore/parallel/_offload_context.py +17 -3
- mindspore/parallel/_parallel_serialization.py +2 -2
- mindspore/parallel/_ps_context.py +12 -0
- mindspore/parallel/_tensor.py +14 -12
- mindspore/parallel/_transformer/layers.py +5 -3
- mindspore/parallel/_transformer/loss.py +1 -0
- mindspore/parallel/_transformer/moe.py +2 -2
- mindspore/parallel/_transformer/op_parallel_config.py +12 -1
- mindspore/parallel/_transformer/transformer.py +23 -3
- mindspore/parallel/_utils.py +11 -7
- mindspore/parallel/algo_parameter_config.py +85 -5
- mindspore/parallel/checkpoint_transform.py +6 -10
- mindspore/parallel/shard.py +4 -4
- mindspore/profiler/common/struct_type.py +3 -3
- mindspore/profiler/common/util.py +3 -2
- mindspore/profiler/envprofiling.py +1 -1
- mindspore/profiler/parser/aicpu_data_parser.py +5 -3
- mindspore/profiler/parser/ascend_flops_generator.py +2 -2
- mindspore/profiler/parser/ascend_fpbp_generator.py +1 -1
- mindspore/profiler/parser/ascend_hccl_generator.py +17 -12
- mindspore/profiler/parser/ascend_msprof_exporter.py +104 -252
- mindspore/profiler/parser/ascend_msprof_generator.py +8 -8
- mindspore/profiler/parser/ascend_op_generator.py +5 -5
- mindspore/profiler/parser/ascend_steptrace_generator.py +6 -4
- mindspore/profiler/parser/ascend_timeline_generator.py +9 -6
- mindspore/profiler/parser/base_timeline_generator.py +9 -7
- mindspore/profiler/parser/cpu_gpu_timeline_generator.py +14 -10
- mindspore/profiler/parser/flops_parser.py +15 -11
- mindspore/profiler/parser/framework_parser.py +37 -21
- mindspore/profiler/parser/hccl_parser.py +16 -12
- mindspore/profiler/parser/integrator.py +22 -11
- mindspore/profiler/parser/memory_usage_parser.py +2 -2
- mindspore/profiler/parser/minddata_analyzer.py +12 -14
- mindspore/profiler/parser/minddata_pipeline_parser.py +1 -1
- mindspore/profiler/parser/msadvisor_parser.py +8 -4
- mindspore/profiler/parser/op_intermediate_parser.py +5 -2
- mindspore/profiler/parser/optime_parser.py +1 -1
- mindspore/profiler/parser/profiler_info.py +2 -2
- mindspore/profiler/parser/step_trace_parser.py +11 -14
- mindspore/profiler/profiling.py +139 -71
- mindspore/rewrite/api/node.py +102 -19
- mindspore/rewrite/api/node_type.py +5 -1
- mindspore/rewrite/api/scoped_value.py +9 -17
- mindspore/rewrite/api/symbol_tree.py +131 -47
- mindspore/rewrite/ast_helpers/__init__.py +2 -1
- mindspore/rewrite/ast_helpers/ast_finder.py +129 -0
- mindspore/rewrite/ast_helpers/ast_modifier.py +116 -104
- mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +93 -46
- mindspore/rewrite/common/rewrite_elog.py +5 -1
- mindspore/rewrite/namer.py +33 -24
- mindspore/rewrite/namespace.py +14 -5
- mindspore/{_extends/graph_kernel/expanders/complex → rewrite/node}/__init__.py +9 -9
- mindspore/rewrite/node/call_function.py +79 -0
- mindspore/rewrite/node/cell_container.py +135 -0
- mindspore/rewrite/node/control_flow.py +88 -0
- mindspore/rewrite/{node.py → node/node.py} +273 -234
- mindspore/rewrite/node/node_manager.py +254 -0
- mindspore/rewrite/{topological_manager.py → node/node_topological_manager.py} +13 -46
- mindspore/rewrite/parsers/arguments_parser.py +22 -21
- mindspore/rewrite/parsers/assign_parser.py +216 -221
- mindspore/rewrite/parsers/attribute_parser.py +9 -7
- mindspore/rewrite/parsers/class_def_parser.py +174 -113
- mindspore/rewrite/parsers/constant_parser.py +9 -6
- mindspore/rewrite/parsers/container_parser.py +9 -7
- mindspore/rewrite/parsers/for_parser.py +36 -15
- mindspore/rewrite/parsers/function_def_parser.py +24 -16
- mindspore/rewrite/parsers/if_parser.py +28 -24
- mindspore/rewrite/parsers/module_parser.py +196 -25
- mindspore/rewrite/{parser.py → parsers/parser.py} +4 -2
- mindspore/rewrite/{parser_register.py → parsers/parser_register.py} +1 -1
- mindspore/rewrite/parsers/return_parser.py +6 -6
- mindspore/rewrite/sparsify/sparse_transformer.py +12 -3
- mindspore/rewrite/sparsify/utils.py +1 -1
- mindspore/rewrite/symbol_tree.py +525 -577
- mindspore/rewrite/symbol_tree_builder.py +9 -193
- mindspore/rewrite/symbol_tree_dumper.py +2 -2
- mindspore/run_check/_check_version.py +2 -2
- mindspore/{ops/bprop_mindir → safeguard}/__init__.py +4 -3
- mindspore/safeguard/rewrite_obfuscation.py +517 -0
- mindspore/scipy/linalg.py +1 -1
- mindspore/scipy/optimize/minimize.py +7 -3
- mindspore/train/_utils.py +7 -3
- mindspore/train/amp.py +323 -123
- mindspore/train/anf_ir_pb2.py +14 -2
- mindspore/train/callback/_backup_and_restore.py +2 -12
- mindspore/train/callback/_callback.py +29 -4
- mindspore/train/callback/_checkpoint.py +23 -8
- mindspore/train/callback/_early_stop.py +2 -2
- mindspore/train/callback/_landscape.py +4 -4
- mindspore/train/callback/_loss_monitor.py +2 -2
- mindspore/train/callback/_on_request_exit.py +2 -2
- mindspore/train/callback/_reduce_lr_on_plateau.py +3 -4
- mindspore/train/callback/_summary_collector.py +14 -7
- mindspore/train/callback/_time_monitor.py +58 -5
- mindspore/train/data_sink.py +5 -11
- mindspore/train/dataset_helper.py +83 -57
- mindspore/train/loss_scale_manager.py +2 -2
- mindspore/train/metrics/__init__.py +3 -3
- mindspore/train/metrics/cosine_similarity.py +1 -1
- mindspore/train/metrics/hausdorff_distance.py +3 -2
- mindspore/train/metrics/mean_surface_distance.py +3 -2
- mindspore/train/metrics/metric.py +39 -19
- mindspore/train/metrics/roc.py +2 -2
- mindspore/train/metrics/root_mean_square_surface_distance.py +4 -3
- mindspore/train/mind_ir_pb2.py +85 -36
- mindspore/train/model.py +185 -45
- mindspore/train/serialization.py +390 -150
- mindspore/train/summary/_writer_pool.py +3 -2
- mindspore/train/summary/summary_record.py +14 -10
- mindspore/train/train_thor/convert_utils.py +3 -3
- mindspore/train/train_thor/dataset_helper.py +1 -1
- mindspore/version.py +1 -1
- {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/METADATA +6 -7
- {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/RECORD +458 -518
- {mindspore-2.1.0.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 -54
- mindspore/_extends/graph_kernel/expanders/_utils.py +0 -269
- mindspore/_extends/graph_kernel/expanders/addn.py +0 -33
- mindspore/_extends/graph_kernel/expanders/batchnorm.py +0 -152
- mindspore/_extends/graph_kernel/expanders/batchnorm_grad.py +0 -105
- mindspore/_extends/graph_kernel/expanders/clip_by_norm_no_div_sum.py +0 -33
- mindspore/_extends/graph_kernel/expanders/complex/abs.py +0 -30
- mindspore/_extends/graph_kernel/expanders/complex/add.py +0 -44
- mindspore/_extends/graph_kernel/expanders/complex/div.py +0 -62
- mindspore/_extends/graph_kernel/expanders/complex/mul.py +0 -52
- mindspore/_extends/graph_kernel/expanders/complex/real_div.py +0 -62
- mindspore/_extends/graph_kernel/expanders/complex/sub.py +0 -45
- mindspore/_extends/graph_kernel/expanders/conv2d.py +0 -200
- mindspore/_extends/graph_kernel/expanders/dropout_grad.py +0 -30
- mindspore/_extends/graph_kernel/expanders/equal_count.py +0 -50
- mindspore/_extends/graph_kernel/expanders/erfc.py +0 -35
- mindspore/_extends/graph_kernel/expanders/expand_dims.py +0 -50
- mindspore/_extends/graph_kernel/expanders/fused_adam.py +0 -44
- mindspore/_extends/graph_kernel/expanders/fused_adam_weight_decay.py +0 -47
- mindspore/_extends/graph_kernel/expanders/fused_mul_add.py +0 -28
- mindspore/_extends/graph_kernel/expanders/gelu_grad.py +0 -70
- mindspore/_extends/graph_kernel/expanders/gkdropout.py +0 -40
- mindspore/_extends/graph_kernel/expanders/identity.py +0 -25
- mindspore/_extends/graph_kernel/expanders/layernorm.py +0 -93
- mindspore/_extends/graph_kernel/expanders/layernorm_grad.py +0 -113
- mindspore/_extends/graph_kernel/expanders/logsoftmax.py +0 -46
- mindspore/_extends/graph_kernel/expanders/logsoftmax_grad.py +0 -36
- mindspore/_extends/graph_kernel/expanders/matmul.py +0 -80
- mindspore/_extends/graph_kernel/expanders/maximum_grad.py +0 -59
- mindspore/_extends/graph_kernel/expanders/minimum_grad.py +0 -80
- mindspore/_extends/graph_kernel/expanders/oneslike.py +0 -26
- mindspore/_extends/graph_kernel/expanders/reduce_mean.py +0 -43
- mindspore/_extends/graph_kernel/expanders/relu_grad.py +0 -32
- mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits.py +0 -41
- mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits_grad.py +0 -35
- mindspore/_extends/graph_kernel/expanders/sigmoid_grad.py +0 -31
- mindspore/_extends/graph_kernel/expanders/slice.py +0 -35
- mindspore/_extends/graph_kernel/expanders/softmax_cross_entropy_with_logits.py +0 -42
- mindspore/_extends/graph_kernel/expanders/softmax_grad_ext.py +0 -41
- mindspore/_extends/graph_kernel/expanders/softsign.py +0 -28
- mindspore/_extends/graph_kernel/expanders/sqrt_grad.py +0 -29
- mindspore/_extends/graph_kernel/expanders/square_sum_all.py +0 -44
- mindspore/_extends/graph_kernel/expanders/square_sum_v1.py +0 -37
- mindspore/_extends/graph_kernel/expanders/squared_difference.py +0 -43
- mindspore/_extends/graph_kernel/expanders/tanh_grad.py +0 -31
- mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
- mindspore/dataset/datapreprocess/__init__.py +0 -20
- mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
- mindspore/include/api/net.h +0 -142
- mindspore/nn/lr_scheduler.py +0 -262
- mindspore/ops/_grad_experimental/grad_image_ops.py +0 -248
- mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -181
- mindspore/ops/_grad_experimental/grad_other_ops.py +0 -72
- mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
- mindspore/ops/_grad_experimental/grad_sequence_ops.py +0 -351
- mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
- mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
- mindspore/rewrite/node_visitor.py +0 -44
- {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/WHEEL +0 -0
- {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/top_level.txt +0 -0
|
@@ -23,6 +23,7 @@ import os
|
|
|
23
23
|
import re
|
|
24
24
|
import stat
|
|
25
25
|
|
|
26
|
+
from mindspore import log as logger
|
|
26
27
|
|
|
27
28
|
def to_int(param, param_name):
|
|
28
29
|
"""
|
|
@@ -80,9 +81,9 @@ def fwrite_format(output_data_path, data_source=None, is_print=False, is_start=F
|
|
|
80
81
|
if isinstance(raw_data, (list, tuple)):
|
|
81
82
|
raw_data = map(str, raw_data)
|
|
82
83
|
raw_data = " ".join(raw_data)
|
|
83
|
-
|
|
84
|
+
logger.info(raw_data)
|
|
84
85
|
else:
|
|
85
|
-
|
|
86
|
+
logger.info(data_source)
|
|
86
87
|
|
|
87
88
|
|
|
88
89
|
def get_log_slice_id(file_name):
|
|
@@ -68,7 +68,7 @@ def construct_profiling_options():
|
|
|
68
68
|
logger.error(
|
|
69
69
|
"The format of MS_PROFILER_OPTIONS is incorrect. "
|
|
70
70
|
"The MS_PROFILER_OPTIONS parameter configuration may refer to "
|
|
71
|
-
"'https://www.mindspore.cn/mindinsight/docs/zh-CN/
|
|
71
|
+
"'https://www.mindspore.cn/mindinsight/docs/zh-CN/r2.2/performance_profiling_ascend.html'."
|
|
72
72
|
)
|
|
73
73
|
return error_config
|
|
74
74
|
conbine_options = combine_profile_options(profiling_options)
|
|
@@ -72,9 +72,11 @@ class DataPreProcessParser:
|
|
|
72
72
|
_source_file_target_old = 'DATA_PREPROCESS.dev.AICPU.'
|
|
73
73
|
_source_file_target = 'DATA_PREPROCESS.AICPU.'
|
|
74
74
|
_dst_file_title = 'title:DATA_PREPROCESS AICPU'
|
|
75
|
-
_dst_file_column_title = [
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
_dst_file_column_title = [
|
|
76
|
+
'serial_number', 'node_type_name', 'total_time(ms)',
|
|
77
|
+
'dispatch_time(ms)', 'execution_time(ms)', 'run_start',
|
|
78
|
+
'run_end'
|
|
79
|
+
]
|
|
78
80
|
_ms_unit = 1000
|
|
79
81
|
_us_unit = 100 # Convert 10ns to 1us.
|
|
80
82
|
_task_id_threshold = 65536
|
|
@@ -78,7 +78,7 @@ class AscendFlopsGenerator:
|
|
|
78
78
|
writer.writerows(self.flops.tolist())
|
|
79
79
|
except (IOError, OSError) as err:
|
|
80
80
|
logging.critical('Errot occurred when write flops file: %s', err)
|
|
81
|
-
raise ProfilerIOException()
|
|
81
|
+
raise ProfilerIOException() from err
|
|
82
82
|
if os.path.exists(flops_path):
|
|
83
83
|
os.chmod(flops_path, stat.S_IREAD | stat.S_IWRITE)
|
|
84
84
|
|
|
@@ -89,6 +89,6 @@ class AscendFlopsGenerator:
|
|
|
89
89
|
json.dump(self.flops_summary, json_file)
|
|
90
90
|
except (IOError, OSError) as err:
|
|
91
91
|
logging.critical('Errot occurred when write step trace point info file: %s', err)
|
|
92
|
-
raise ProfilerIOException()
|
|
92
|
+
raise ProfilerIOException() from err
|
|
93
93
|
if os.path.exists(flops_summary_path):
|
|
94
94
|
os.chmod(flops_summary_path, stat.S_IREAD | stat.S_IWRITE)
|
|
@@ -71,6 +71,6 @@ class AscendFPBPGenerator:
|
|
|
71
71
|
json.dump(self.points, json_file)
|
|
72
72
|
except (IOError, OSError) as err:
|
|
73
73
|
logging.critical('Errot occurred when write step trace point info file: %s', err)
|
|
74
|
-
raise ProfilerIOException()
|
|
74
|
+
raise ProfilerIOException() from err
|
|
75
75
|
if os.path.exists(step_trace_point_info_path):
|
|
76
76
|
os.chmod(step_trace_point_info_path, stat.S_IREAD | stat.S_IWRITE)
|
|
@@ -99,7 +99,7 @@ class AscendHCCLGenerator:
|
|
|
99
99
|
@staticmethod
|
|
100
100
|
def _rdma_analyse(groupby_transport):
|
|
101
101
|
"""rdma analyse"""
|
|
102
|
-
thread_groups
|
|
102
|
+
thread_groups = np.unique(groupby_transport['tid'])
|
|
103
103
|
thread_information = []
|
|
104
104
|
for thread_index in thread_groups:
|
|
105
105
|
groupby_thread = groupby_transport[groupby_transport['tid'] == thread_index]
|
|
@@ -107,7 +107,7 @@ class AscendHCCLGenerator:
|
|
|
107
107
|
rdma_communication_size = 0
|
|
108
108
|
rdma_communication_wait_time = 0
|
|
109
109
|
start_index = 0
|
|
110
|
-
end_index = groupby_thread.size -
|
|
110
|
+
end_index = groupby_thread.size - 2
|
|
111
111
|
while start_index < end_index:
|
|
112
112
|
first_task_type = groupby_thread[start_index]['task_type']
|
|
113
113
|
if first_task_type == 'RDMASend':
|
|
@@ -142,7 +142,8 @@ class AscendHCCLGenerator:
|
|
|
142
142
|
file_list = find_files(self.root_path, "hccl_*.json")
|
|
143
143
|
|
|
144
144
|
for hccl_file in file_list:
|
|
145
|
-
|
|
145
|
+
_, relative_path = os.path.split(hccl_file)
|
|
146
|
+
iteration_id = int(relative_path.split('_')[3])
|
|
146
147
|
with open(hccl_file) as f:
|
|
147
148
|
_, hccl_detail_data = self._original_data_analyse(json.load(f))
|
|
148
149
|
raw = self._iteration_analyse(hccl_detail_data, iteration_id)
|
|
@@ -173,7 +174,7 @@ class AscendHCCLGenerator:
|
|
|
173
174
|
writer.writerows(self.hccl_raw)
|
|
174
175
|
except (IOError, OSError) as err:
|
|
175
176
|
logging.critical('Errot occurred when write aicore detail file: %s', err)
|
|
176
|
-
raise ProfilerIOException()
|
|
177
|
+
raise ProfilerIOException() from err
|
|
177
178
|
if os.path.exists(hccl_raw_path):
|
|
178
179
|
os.chmod(hccl_raw_path, stat.S_IREAD | stat.S_IWRITE)
|
|
179
180
|
|
|
@@ -206,8 +207,8 @@ class AscendHCCLGenerator:
|
|
|
206
207
|
tuple([name, pid, tid, ts, te, dur, ph, task_type, link_info, transport_type, size, -1]))
|
|
207
208
|
hccl_data = np.array(target_data, dtype=self.hccl_data_df)
|
|
208
209
|
|
|
209
|
-
hccl_abstract_data = hccl_data[hccl_data['
|
|
210
|
-
hccl_detail_data = hccl_data[hccl_data['
|
|
210
|
+
hccl_abstract_data = hccl_data[hccl_data['task_type'] == '']
|
|
211
|
+
hccl_detail_data = hccl_data[hccl_data['task_type'] != '']
|
|
211
212
|
|
|
212
213
|
hccl_abstract_data = hccl_abstract_data[np.argsort(hccl_abstract_data['ts'])]
|
|
213
214
|
hccl_detail_data = hccl_detail_data[np.argsort(hccl_detail_data['ts'])]
|
|
@@ -234,7 +235,7 @@ class AscendHCCLGenerator:
|
|
|
234
235
|
transport_information = dict()
|
|
235
236
|
for transport_index in transport_groups:
|
|
236
237
|
groupby_transport = groupby_link_info[groupby_link_info['transport_type'] == transport_index]
|
|
237
|
-
if transport_index == 'SDMA':
|
|
238
|
+
if transport_index == 'SDMA' and groupby_transport.size > 0:
|
|
238
239
|
groupby_sdma = \
|
|
239
240
|
groupby_transport[np.isin(groupby_transport['task_type'], ['Memcpy', 'Reduce Inline'])][
|
|
240
241
|
['dur', 'size']]
|
|
@@ -243,7 +244,7 @@ class AscendHCCLGenerator:
|
|
|
243
244
|
sdma_bandwidth = sdma_communication_size / sdma_communication_time * 1e-3 \
|
|
244
245
|
if sdma_communication_time != 0 else 0
|
|
245
246
|
transport_information['SDMA'] = [sdma_communication_time, sdma_communication_size, sdma_bandwidth]
|
|
246
|
-
elif transport_index == 'RDMA':
|
|
247
|
+
elif transport_index == 'RDMA' and groupby_transport.size > 0:
|
|
247
248
|
transport_information['RDMA'] = self._rdma_analyse(groupby_transport)
|
|
248
249
|
link_info_information[link_info_index] = transport_information
|
|
249
250
|
return link_info_information
|
|
@@ -271,13 +272,17 @@ class AscendHCCLGenerator:
|
|
|
271
272
|
sdma_communication_size = np.sum(groupby_sdma['size']) * 1e-3
|
|
272
273
|
sdma_bandwidth = sdma_communication_size / sdma_communication_time * 1e-3 \
|
|
273
274
|
if sdma_communication_time != 0 else 0
|
|
274
|
-
transport_information['SDMA'] = [
|
|
275
|
-
|
|
275
|
+
transport_information['SDMA'] = [
|
|
276
|
+
sdma_communication_time, sdma_communication_size,
|
|
277
|
+
sdma_bandwidth
|
|
278
|
+
]
|
|
276
279
|
elif transport_index == 'RDMA':
|
|
277
280
|
transport_information['RDMA'] = self._rdma_analyse(groupby_transport)
|
|
278
281
|
link_info_information[link_info_index] = transport_information
|
|
279
282
|
communication_cost = np.sum(groupby_tag[groupby_tag['name'] != 'Notify_Wait']['dur'])
|
|
280
283
|
wait_cost = np.sum(groupby_tag[groupby_tag['name'] == 'Notify_Wait']['dur'])
|
|
281
|
-
tag_information[tag_index] = [
|
|
282
|
-
|
|
284
|
+
tag_information[tag_index] = [
|
|
285
|
+
str(iteration_index), communication_cost, wait_cost,
|
|
286
|
+
link_info_information
|
|
287
|
+
]
|
|
283
288
|
return tag_information
|
|
@@ -14,14 +14,12 @@
|
|
|
14
14
|
# ============================================================================
|
|
15
15
|
"""msprof PROF data export api file"""
|
|
16
16
|
import os
|
|
17
|
+
import shutil
|
|
18
|
+
from collections import defaultdict
|
|
17
19
|
from subprocess import CalledProcessError, TimeoutExpired
|
|
18
20
|
from subprocess import Popen, PIPE
|
|
19
|
-
from typing import List, Optional
|
|
20
|
-
import json
|
|
21
|
-
from json.decoder import JSONDecodeError
|
|
22
21
|
import csv
|
|
23
|
-
from mindspore import log as logger
|
|
24
|
-
from mindspore.communication import get_rank
|
|
22
|
+
from mindspore import log as logger
|
|
25
23
|
from mindspore.profiler.common.util import get_file_path
|
|
26
24
|
|
|
27
25
|
|
|
@@ -30,7 +28,7 @@ class AscendMsprofExporter:
|
|
|
30
28
|
msprof exporter. export cann edge profiling data.
|
|
31
29
|
|
|
32
30
|
args:
|
|
33
|
-
|
|
31
|
+
source_path: the root path of PROF_* files
|
|
34
32
|
|
|
35
33
|
files under prof_root_dir is like:
|
|
36
34
|
profiler/PROF_*/device_{id}/data/xxx
|
|
@@ -42,74 +40,37 @@ class AscendMsprofExporter:
|
|
|
42
40
|
>> ms_exporter.export(start_time)
|
|
43
41
|
"""
|
|
44
42
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
_profiling_prefix = "PROF"
|
|
43
|
+
_hiai_msprof_tail = "Ascend/latest/tools/profiler/bin"
|
|
44
|
+
_msprof_cmd = "msprof"
|
|
45
|
+
_ascend_mark = "Ascend"
|
|
49
46
|
_summary_dir = "summary"
|
|
47
|
+
_timeline_dir = "timeline"
|
|
50
48
|
_step_trace_mark = "step_trace"
|
|
51
49
|
_op_summary_mark = "op_summary"
|
|
52
50
|
_op_statistic_mark = "op_statistic"
|
|
53
|
-
_device_mark = "device"
|
|
54
|
-
_msprof_cmd = "msprof"
|
|
55
|
-
_info_prefix = "info.json"
|
|
56
|
-
_start_log = "start_info"
|
|
57
|
-
_rank_id_mark = "rank_id"
|
|
58
|
-
_dev_info = "DeviceInfo"
|
|
59
|
-
_dev_index = 0
|
|
60
|
-
_dev_id = "id"
|
|
61
|
-
_ascend_mark = "Ascend"
|
|
62
|
-
_hiai_msprof_tail = "Ascend/latest/tools/profiler/bin"
|
|
63
51
|
|
|
64
|
-
def __init__(self,
|
|
65
|
-
self._prof_root_dir = prof_root_dir
|
|
66
|
-
self._start_time = 0
|
|
67
|
-
self._support_step_trace = True
|
|
68
|
-
self._prof_paths = []
|
|
69
|
-
self._output_path = None
|
|
70
|
-
self._device_path = None
|
|
71
|
-
self._model_ids = []
|
|
72
|
-
self._iter_ids = []
|
|
52
|
+
def __init__(self, source_path, time_out=3000):
|
|
73
53
|
self._time_out = time_out
|
|
74
|
-
self.
|
|
54
|
+
self.source_path = source_path
|
|
55
|
+
self.prof_root_dir = os.path.abspath(os.path.join(self.source_path, os.path.pardir))
|
|
75
56
|
|
|
76
|
-
|
|
77
|
-
def _check_readable(file_path: str):
|
|
78
|
-
"""Check whether the file is readable"""
|
|
79
|
-
if not os.access(file_path, os.R_OK):
|
|
80
|
-
msg = "The file {} is not readable.".format(file_path)
|
|
81
|
-
raise PermissionError(msg)
|
|
82
|
-
|
|
83
|
-
@staticmethod
|
|
84
|
-
def _parse_start_info(input_file: str):
|
|
85
|
-
"""Get profiler start time from start info file."""
|
|
86
|
-
start_time = -1
|
|
87
|
-
try:
|
|
88
|
-
with open(input_file, "r") as f:
|
|
89
|
-
start_time = json.load(f).get("collectionTimeBegin")
|
|
90
|
-
except (JSONDecodeError, FileNotFoundError, TypeError, PermissionError) as err:
|
|
91
|
-
logger.warning(err)
|
|
92
|
-
return int(start_time)
|
|
57
|
+
self._check_msprof_env()
|
|
93
58
|
|
|
94
|
-
def export(self,
|
|
59
|
+
def export(self, model_iteration_dict=None):
|
|
95
60
|
"""start_time is the time to collect PROF data"""
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
def
|
|
108
|
-
"""
|
|
109
|
-
return self._output_path
|
|
110
|
-
|
|
111
|
-
def _run_cmd(self, cmd: List[str], raise_error=True):
|
|
112
|
-
"""run msprof tool shell command"""
|
|
61
|
+
|
|
62
|
+
if not model_iteration_dict:
|
|
63
|
+
model_iteration_dict = self._generate_step_trace(self.prof_root_dir, self.source_path)
|
|
64
|
+
|
|
65
|
+
if model_iteration_dict:
|
|
66
|
+
for model_id, value in model_iteration_dict.items():
|
|
67
|
+
for iteration_id in value:
|
|
68
|
+
msprof_export_cmd = self._msprof_command_generator(self.prof_root_dir, model_id, iteration_id)
|
|
69
|
+
self._run_cmd(msprof_export_cmd)
|
|
70
|
+
self._check_export_files(self.source_path, model_iteration_dict)
|
|
71
|
+
|
|
72
|
+
def _run_cmd(self, cmd, raise_error=True):
|
|
73
|
+
"""run shell command"""
|
|
113
74
|
try:
|
|
114
75
|
proc = Popen(cmd, stdout=PIPE, stderr=PIPE, text=True)
|
|
115
76
|
except (FileNotFoundError, PermissionError, CalledProcessError) as exc:
|
|
@@ -119,119 +80,26 @@ class AscendMsprofExporter:
|
|
|
119
80
|
except TimeoutExpired:
|
|
120
81
|
proc.kill()
|
|
121
82
|
msg = "The possible cause is that too much data is collected " \
|
|
122
|
-
|
|
83
|
+
"and the export time is too long."
|
|
123
84
|
logger.error(msg)
|
|
124
85
|
raise TimeoutError(msg)
|
|
125
86
|
logger.info(outs)
|
|
126
|
-
if raise_error and errs !=
|
|
87
|
+
if raise_error and errs != "":
|
|
127
88
|
raise RuntimeError(errs)
|
|
128
89
|
return outs
|
|
129
90
|
|
|
130
|
-
def
|
|
91
|
+
def _msprof_command_generator(self, output, model_id=None, iter_id=None):
|
|
131
92
|
"""msprof export helper"""
|
|
132
93
|
export_cmd = [self._msprof_cmd, "--export=on", "--output={}".format(output)]
|
|
133
|
-
if model_id:
|
|
94
|
+
if isinstance(model_id, int) and model_id >= 0:
|
|
134
95
|
export_cmd.append("--model-id={}".format(model_id))
|
|
135
|
-
if iter_id:
|
|
96
|
+
if isinstance(iter_id, int) and iter_id >= 0:
|
|
136
97
|
export_cmd.append("--iteration-id={}".format(iter_id))
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
def _get_model_iter_ids(self, trace_file: str):
|
|
140
|
-
"""Read the step_trace file and get all the model_ids and iteration_ids"""
|
|
141
|
-
if self._model_ids and self._iter_ids:
|
|
142
|
-
return
|
|
143
|
-
self._check_readable(trace_file)
|
|
144
|
-
with open(trace_file, "r") as f:
|
|
145
|
-
reader = csv.reader(f)
|
|
146
|
-
for idx, row in enumerate(reader):
|
|
147
|
-
if idx == 0:
|
|
148
|
-
model_idx = row.index(self._csv_header_model_id)
|
|
149
|
-
iter_idx = row.index(self._csv_header_iter_id)
|
|
150
|
-
else:
|
|
151
|
-
self._model_ids.append(int(row[model_idx]))
|
|
152
|
-
self._iter_ids.append(int(row[iter_idx]))
|
|
153
|
-
|
|
154
|
-
def _check_export_files(self, device_path: str, trace_file: Optional[str]):
|
|
155
|
-
"""Check the existence of op_summary & op_statistic files."""
|
|
156
|
-
summary_path = os.path.join(device_path, self._summary_dir)
|
|
157
|
-
if not os.path.isdir(summary_path):
|
|
158
|
-
raise RuntimeError("Path {} is not a existing directory.".format(summary_path))
|
|
159
|
-
|
|
160
|
-
sumary_filess = os.listdir(summary_path)
|
|
161
|
-
op_summary = set()
|
|
162
|
-
op_statistic = set()
|
|
163
|
-
|
|
164
|
-
for summary_file in sumary_filess:
|
|
165
|
-
if summary_file.startswith(self._op_summary_mark):
|
|
166
|
-
op_summary.add(summary_file)
|
|
167
|
-
elif summary_file.startswith(self._op_statistic_mark):
|
|
168
|
-
op_statistic.add(summary_file)
|
|
169
|
-
|
|
170
|
-
if not op_summary:
|
|
171
|
-
raise RuntimeError("The op_summary file was not found, " \
|
|
172
|
-
"perhaps the original data was not collected.")
|
|
173
|
-
if not op_statistic:
|
|
174
|
-
raise RuntimeError("The op_statistics file was not found, " \
|
|
175
|
-
"perhaps the original data was not collected.")
|
|
176
|
-
|
|
177
|
-
if not trace_file:
|
|
178
|
-
return
|
|
179
|
-
|
|
180
|
-
dev_id = context.get_context("device_id")
|
|
181
|
-
self._get_model_iter_ids(trace_file)
|
|
182
|
-
|
|
183
|
-
for model_id, iter_id in zip(self._model_ids, self._iter_ids):
|
|
184
|
-
tag = "_{}_{}_{}.csv".format(dev_id, model_id, iter_id)
|
|
185
|
-
op_sum_file = self._op_summary_mark + tag
|
|
186
|
-
op_sta_file = self._op_statistic_mark + tag
|
|
187
|
-
if op_sum_file not in op_summary:
|
|
188
|
-
logger.warning("[Profiler]The file {} was not found, " \
|
|
189
|
-
"perhaps the original data was not collected.".format(op_sum_file))
|
|
190
|
-
if op_sta_file not in op_statistic:
|
|
191
|
-
logger.warning("[Profiler]The file {} was not found, " \
|
|
192
|
-
"perhaps the original data was not collected.".format(op_sta_file))
|
|
193
|
-
|
|
194
|
-
logger.info("Finish checking files.")
|
|
195
|
-
|
|
196
|
-
def _export_whole_prof(self, prof: str, trace_file: str):
|
|
197
|
-
"""export all the data under PROF directory"""
|
|
198
|
-
self._get_model_iter_ids(trace_file)
|
|
199
|
-
|
|
200
|
-
for model_id, iter_id in zip(self._model_ids, self._iter_ids):
|
|
201
|
-
self._export_helper(prof, model_id, iter_id)
|
|
202
|
-
|
|
203
|
-
def _get_device_trace_file(self, prof_path: str, device_path: str):
|
|
204
|
-
"""search the step trace csv file under device directory"""
|
|
205
|
-
|
|
206
|
-
summary_path = os.path.join(device_path, self._summary_dir)
|
|
207
|
-
|
|
208
|
-
if not os.path.exists(summary_path):
|
|
209
|
-
self._export_helper(output=prof_path)
|
|
210
|
-
|
|
211
|
-
if not os.path.isdir(summary_path):
|
|
212
|
-
msg = "Path {} is not a existing directory. Make sure there is " \
|
|
213
|
-
"valid profiling data directory!".format(summary_path)
|
|
214
|
-
raise FileNotFoundError(msg)
|
|
215
|
-
|
|
216
|
-
step_trace_file = get_file_path(summary_path, self._step_trace_mark)
|
|
217
|
-
|
|
218
|
-
if not step_trace_file and self._support_step_trace:
|
|
219
|
-
msg = "Do not found step trace csv file in {}.".format(self._output_path)
|
|
220
|
-
raise FileNotFoundError(msg)
|
|
221
|
-
|
|
222
|
-
return step_trace_file
|
|
98
|
+
return export_cmd
|
|
223
99
|
|
|
224
100
|
def _check_msprof_env(self):
|
|
225
101
|
"""Check the existence of msprof binary tool"""
|
|
226
|
-
msprof_cmd = ["which", self._msprof_cmd]
|
|
227
|
-
outs = self._run_cmd(msprof_cmd, raise_error=False)
|
|
228
|
-
if outs != self._null_info:
|
|
229
|
-
return
|
|
230
|
-
logger.warning("[Profiler]The msprof command was not found. Searching from environment variables...")
|
|
231
|
-
self._search_and_add()
|
|
232
102
|
|
|
233
|
-
def _search_and_add(self):
|
|
234
|
-
"""Search msprof and add it to PATH"""
|
|
235
103
|
def _check_msprof(temp_path: str):
|
|
236
104
|
if not os.path.isdir(temp_path):
|
|
237
105
|
return False
|
|
@@ -240,6 +108,12 @@ class AscendMsprofExporter:
|
|
|
240
108
|
return True
|
|
241
109
|
return False
|
|
242
110
|
|
|
111
|
+
msprof_cmd = ["which", self._msprof_cmd]
|
|
112
|
+
outs = self._run_cmd(msprof_cmd, raise_error=False)
|
|
113
|
+
if outs != "":
|
|
114
|
+
return
|
|
115
|
+
logger.warning("[Profiler]The msprof command was not found. Searching from environment variables...")
|
|
116
|
+
|
|
243
117
|
msprof_path = None
|
|
244
118
|
envs = os.environ
|
|
245
119
|
if envs.get("ASCEND_TOOLKIT_HOME"):
|
|
@@ -252,8 +126,7 @@ class AscendMsprofExporter:
|
|
|
252
126
|
for path in path_list:
|
|
253
127
|
if self._ascend_mark in path:
|
|
254
128
|
prefix = path.split(self._ascend_mark)[0]
|
|
255
|
-
|
|
256
|
-
temp_path = os.path.join(prefix, tail)
|
|
129
|
+
temp_path = os.path.join(prefix, self._hiai_msprof_tail)
|
|
257
130
|
if _check_msprof(temp_path):
|
|
258
131
|
msprof_path = temp_path
|
|
259
132
|
break
|
|
@@ -264,98 +137,77 @@ class AscendMsprofExporter:
|
|
|
264
137
|
|
|
265
138
|
logger.info("The msprof command has been added to the path!")
|
|
266
139
|
|
|
267
|
-
def
|
|
268
|
-
"""
|
|
269
|
-
self._prof_paths = []
|
|
140
|
+
def _generate_step_trace(self, prof_path, device_path):
|
|
141
|
+
""""generate model_id iteration_id dict"""
|
|
270
142
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
raise RuntimeError(msg)
|
|
143
|
+
summary_path = os.path.join(device_path, self._summary_dir)
|
|
144
|
+
timeline_path = os.path.join(device_path, self._timeline_dir)
|
|
274
145
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
if loc_dir.startswith(self._profiling_prefix):
|
|
278
|
-
self._prof_paths.append(os.path.join(loc_root, loc_dir))
|
|
146
|
+
msprof_export_cmd = self._msprof_command_generator(prof_path)
|
|
147
|
+
self._run_cmd(msprof_export_cmd)
|
|
279
148
|
|
|
280
|
-
if not
|
|
281
|
-
msg = "
|
|
149
|
+
if not os.path.isdir(summary_path):
|
|
150
|
+
msg = "Path {} is not a existing directory. Make sure there is " \
|
|
151
|
+
"valid profiling data directory!".format(summary_path)
|
|
282
152
|
raise FileNotFoundError(msg)
|
|
283
153
|
|
|
284
|
-
|
|
285
|
-
self._prof_paths.sort() # sort by created time
|
|
286
|
-
|
|
287
|
-
device_path = self._search_by_rank_id(self._prof_paths)
|
|
288
|
-
if device_path:
|
|
289
|
-
dev_par = os.path.join(device_path, os.path.pardir)
|
|
290
|
-
abs_dev_par = os.path.abspath(dev_par)
|
|
291
|
-
self._output_path = abs_dev_par
|
|
292
|
-
self._device_path = device_path
|
|
293
|
-
|
|
294
|
-
def _search_by_rank_id(self, prof_paths: str):
|
|
295
|
-
"""search valid device path through rank_id"""
|
|
296
|
-
device_paths = []
|
|
297
|
-
|
|
298
|
-
for prof_path in prof_paths:
|
|
299
|
-
if not os.path.isdir(prof_path):
|
|
300
|
-
continue
|
|
301
|
-
devices = os.listdir(prof_path)
|
|
302
|
-
for device in devices:
|
|
303
|
-
if not device.startswith(self._device_mark):
|
|
304
|
-
continue
|
|
305
|
-
dev_path = os.path.join(prof_path, device)
|
|
306
|
-
device_paths.append(dev_path)
|
|
307
|
-
|
|
308
|
-
# search by rank id
|
|
309
|
-
find_device_path = None
|
|
310
|
-
rank_id = None
|
|
311
|
-
device_id = context.get_context("device_id")
|
|
154
|
+
step_trace_file = get_file_path(summary_path, self._step_trace_mark)
|
|
312
155
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
try:
|
|
345
|
-
with open(info_file, "r") as f:
|
|
346
|
-
info_dict = json.load(f)
|
|
347
|
-
except (JSONDecodeError, FileNotFoundError, TypeError, PermissionError) as err:
|
|
348
|
-
logger.warning(err)
|
|
349
|
-
if info_dict.get(self._rank_id_mark) is None:
|
|
350
|
-
msg = "[Profiler]There is no rank_id key in file {}".format(info_file)
|
|
351
|
-
logger.warning(msg)
|
|
352
|
-
else:
|
|
353
|
-
rank_id = info_dict.get(self._rank_id_mark)
|
|
156
|
+
if not step_trace_file:
|
|
157
|
+
logger.info("Do not found step trace csv file in {} .".format(summary_path))
|
|
158
|
+
return None
|
|
159
|
+
|
|
160
|
+
step_trace = defaultdict(list)
|
|
161
|
+
with open(step_trace_file, newline='', mode='r') as csvfile:
|
|
162
|
+
reader = csv.reader(csvfile, delimiter=',', quotechar='"')
|
|
163
|
+
header = next(reader)
|
|
164
|
+
for index, value in enumerate(header):
|
|
165
|
+
if value == 'Model ID':
|
|
166
|
+
Model_ID = index
|
|
167
|
+
if value == 'Iteration ID':
|
|
168
|
+
Iteration_ID = index
|
|
169
|
+
for row in reader:
|
|
170
|
+
step_trace[int(row[Model_ID])].append(int(row[Iteration_ID]))
|
|
171
|
+
|
|
172
|
+
if os.path.isdir(summary_path):
|
|
173
|
+
shutil.rmtree(summary_path)
|
|
174
|
+
if os.path.isdir(timeline_path):
|
|
175
|
+
shutil.rmtree(timeline_path)
|
|
176
|
+
|
|
177
|
+
return step_trace
|
|
178
|
+
|
|
179
|
+
def _check_export_files(self, source_path, step_trace):
|
|
180
|
+
"""Check the existence of op_summary & op_statistic files."""
|
|
181
|
+
summary_path = os.path.join(source_path, self._summary_dir)
|
|
182
|
+
if not os.path.isdir(summary_path):
|
|
183
|
+
raise RuntimeError("Path {} is not a existing directory.".format(summary_path))
|
|
184
|
+
summary_file_list = os.listdir(summary_path)
|
|
185
|
+
op_summary = set()
|
|
186
|
+
op_statistic = set()
|
|
354
187
|
|
|
355
|
-
|
|
356
|
-
|
|
188
|
+
for summary_file in summary_file_list:
|
|
189
|
+
if summary_file.startswith(self._op_summary_mark):
|
|
190
|
+
op_summary.add(summary_file)
|
|
191
|
+
elif summary_file.startswith(self._op_statistic_mark):
|
|
192
|
+
op_statistic.add(summary_file)
|
|
357
193
|
|
|
358
|
-
|
|
359
|
-
|
|
194
|
+
if not op_summary:
|
|
195
|
+
raise RuntimeError("The op_summary file was not found, perhaps the original data was not collected.")
|
|
196
|
+
if not op_statistic:
|
|
197
|
+
raise RuntimeError("The op_statistics file was not found, perhaps the original data was not collected.")
|
|
198
|
+
|
|
199
|
+
device_id = source_path.split('_')[-1].replace("/", "")
|
|
200
|
+
|
|
201
|
+
for model_id, value in step_trace.items():
|
|
202
|
+
for iteration_id in value:
|
|
203
|
+
tag = f"_{device_id}_{model_id}_{iteration_id}.csv"
|
|
204
|
+
op_summary_file_name = self._op_summary_mark + tag
|
|
205
|
+
op_statistic_file = self._op_statistic_mark + tag
|
|
206
|
+
if op_summary_file_name not in op_summary:
|
|
207
|
+
logger.warning("[Profiler]The file {} was not found, " \
|
|
208
|
+
"perhaps the original data was not collected.".format(op_summary_file_name))
|
|
209
|
+
if op_statistic_file not in op_statistic:
|
|
210
|
+
logger.warning("[Profiler]The file {} was not found, " \
|
|
211
|
+
"perhaps the original data was not collected.".format(op_statistic_file))
|
|
360
212
|
|
|
361
|
-
|
|
213
|
+
logger.info("Finish checking files.")
|
|
@@ -37,7 +37,7 @@ class AscendMsprofDataGenerator:
|
|
|
37
37
|
'Op Name': {'index': self.invalid_index, 'dtype': ('Op Name', object)},
|
|
38
38
|
'OP Type': {'index': self.invalid_index, 'dtype': ('Op Type', object)},
|
|
39
39
|
'Task Type': {'index': self.invalid_index, 'dtype': ('Task Type', object)},
|
|
40
|
-
'Task Start Time': {'index': self.invalid_index, 'dtype': ('Task Start Time', float)},
|
|
40
|
+
'Task Start Time(us)': {'index': self.invalid_index, 'dtype': ('Task Start Time', float)},
|
|
41
41
|
'Task Duration(us)': {'index': self.invalid_index, 'dtype': ('Task Duration', float)},
|
|
42
42
|
'Task Wait Time(us)': {'index': self.invalid_index, 'dtype': ('Task Wait Time', float)},
|
|
43
43
|
'Input Shapes': {'index': self.invalid_index, 'dtype': ('Input Shapes', object)},
|
|
@@ -61,9 +61,9 @@ class AscendMsprofDataGenerator:
|
|
|
61
61
|
|
|
62
62
|
self.steptrace_name = {
|
|
63
63
|
'Iteration ID': {'index': self.invalid_index, 'dtype': ('Iteration ID', int)},
|
|
64
|
-
'FP Start': {'index': self.invalid_index, 'dtype': ('FP Start', float)},
|
|
65
|
-
'BP End': {'index': self.invalid_index, 'dtype': ('BP End', float)},
|
|
66
|
-
'Iteration End': {'index': self.invalid_index, 'dtype': ('Iteration End', float)},
|
|
64
|
+
'FP Start(us)': {'index': self.invalid_index, 'dtype': ('FP Start', float)},
|
|
65
|
+
'BP End(us)': {'index': self.invalid_index, 'dtype': ('BP End', float)},
|
|
66
|
+
'Iteration End(us)': {'index': self.invalid_index, 'dtype': ('Iteration End', float)},
|
|
67
67
|
'Iteration Time(us)': {'index': self.invalid_index, 'dtype': ('Iteration Time', float)},
|
|
68
68
|
'FP to BP Time(us)': {'index': self.invalid_index, 'dtype': ('FP to BP Time', float)},
|
|
69
69
|
'Iteration Refresh(us)': {'index': self.invalid_index, 'dtype': ('Iteration Refresh', float)},
|
|
@@ -126,7 +126,7 @@ class AscendMsprofDataGenerator:
|
|
|
126
126
|
op_summary_dt = np.dtype([value['dtype'] for value in self.op_summary_name.values()])
|
|
127
127
|
|
|
128
128
|
self.op_summary = np.array(op_summary, dtype=op_summary_dt)
|
|
129
|
-
self.op_summary['Task Start Time'] = self.op_summary['Task Start Time'] * 1e-
|
|
129
|
+
self.op_summary['Task Start Time'] = self.op_summary['Task Start Time'] * 1e-3
|
|
130
130
|
self.op_summary['Task Duration'] = self.op_summary['Task Duration'] * 1e-3
|
|
131
131
|
self.op_summary['Task Wait Time'] = self.op_summary['Task Wait Time'] * 1e-3
|
|
132
132
|
|
|
@@ -171,15 +171,15 @@ class AscendMsprofDataGenerator:
|
|
|
171
171
|
|
|
172
172
|
index = len(self.steptrace_name)
|
|
173
173
|
for name in hccl_data:
|
|
174
|
+
if index >= len(header):
|
|
175
|
+
break
|
|
174
176
|
name = f"stream_{name['Stream ID']}_{name['Task ID']}_{name['Op Name']}"
|
|
175
177
|
self.steptrace_name[name] = {'index': index, 'dtype': (name, float)}
|
|
176
178
|
index += 1
|
|
177
179
|
self.steptrace_name[f'{name} duration'] = {'index': index, 'dtype': (f'{name} duration', float)}
|
|
178
180
|
index += 1
|
|
179
|
-
if index >= len(header)-1:
|
|
180
|
-
break
|
|
181
181
|
|
|
182
|
-
for i in range(
|
|
182
|
+
for i in range(len(self.steptrace_name), len(header), 2):
|
|
183
183
|
name = f'hccl_{i}'
|
|
184
184
|
self.steptrace_name[name] = {'index': i, 'dtype': (name, float)}
|
|
185
185
|
self.steptrace_name[f'{name} duration'] = {'index': i+1, 'dtype': (f'{name} duration', float)}
|