mindspore 2.6.0rc1__cp310-cp310-win_amd64.whl → 2.7.0rc1__cp310-cp310-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +1 -1
- mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
- mindspore/_checkparam.py +40 -9
- mindspore/{_deprecated → _extends/optimize}/__init__.py +9 -3
- mindspore/_extends/optimize/cell_utils.py +96 -0
- mindspore/_extends/parse/__init__.py +2 -2
- mindspore/_extends/parse/compile_config.py +44 -22
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +1 -1
- mindspore/_extends/parse/parser.py +37 -62
- mindspore/_extends/parse/resources.py +39 -0
- mindspore/_extends/parse/standard_method.py +43 -13
- mindspore/_extends/parse/trope.py +8 -1
- mindspore/_extends/pijit/__init__.py +1 -2
- mindspore/amp.py +4 -4
- mindspore/atlprov.dll +0 -0
- mindspore/avcodec-59.dll +0 -0
- mindspore/avdevice-59.dll +0 -0
- mindspore/avfilter-8.dll +0 -0
- mindspore/avformat-59.dll +0 -0
- mindspore/avutil-57.dll +0 -0
- mindspore/boost/adasum.py +1 -1
- mindspore/boost/boost_cell_wrapper.py +4 -4
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +27 -2
- mindspore/common/_grad_function.py +2 -1
- mindspore/common/_pijit_context.py +28 -7
- mindspore/common/_stub_tensor.py +1 -209
- mindspore/common/_tensor_cpp_method.py +1 -1
- mindspore/common/_tensor_docs.py +77 -16
- mindspore/common/api.py +238 -113
- mindspore/common/dtype.py +21 -11
- mindspore/common/dump.py +10 -15
- mindspore/common/generator.py +5 -3
- mindspore/common/hook_handle.py +11 -2
- mindspore/common/jit_config.py +1 -1
- mindspore/common/jit_trace.py +84 -105
- mindspore/common/parameter.py +26 -12
- mindspore/common/recompute.py +3 -3
- mindspore/common/sparse_tensor.py +0 -3
- mindspore/common/symbol.py +0 -1
- mindspore/common/tensor.py +81 -81
- mindspore/communication/_comm_helper.py +46 -4
- mindspore/communication/management.py +79 -7
- mindspore/context.py +58 -40
- mindspore/dataset/core/config.py +3 -3
- mindspore/dataset/engine/datasets.py +20 -7
- mindspore/dataset/engine/datasets_user_defined.py +33 -3
- mindspore/dataset/engine/iterators.py +2 -2
- mindspore/dataset/engine/obs/config_loader.py +2 -2
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +8 -0
- mindspore/dataset/transforms/py_transforms.py +7 -3
- mindspore/dataset/transforms/transforms.py +7 -3
- mindspore/dataset/vision/validators.py +1 -0
- mindspore/device_context/ascend/device.py +1 -1
- mindspore/device_context/gpu/__init__.py +2 -2
- mindspore/device_context/gpu/device.py +1 -1
- mindspore/device_context/gpu/op_precision.py +4 -2
- mindspore/device_context/gpu/op_tuning.py +6 -3
- mindspore/device_manager.py +16 -9
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +3 -7
- mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
- mindspore/experimental/optim/adadelta.py +13 -20
- mindspore/experimental/optim/adagrad.py +15 -22
- mindspore/experimental/optim/adam.py +17 -24
- mindspore/experimental/optim/adamax.py +14 -22
- mindspore/experimental/optim/adamw.py +28 -34
- mindspore/experimental/optim/asgd.py +15 -25
- mindspore/experimental/optim/lr_scheduler.py +27 -45
- mindspore/experimental/optim/nadam.py +14 -24
- mindspore/experimental/optim/optimizer.py +13 -23
- mindspore/experimental/optim/radam.py +18 -24
- mindspore/experimental/optim/rmsprop.py +14 -25
- mindspore/experimental/optim/rprop.py +15 -26
- mindspore/experimental/optim/sgd.py +9 -19
- mindspore/hal/__init__.py +4 -4
- mindspore/hal/contiguous_tensors_handle.py +2 -2
- mindspore/hal/memory.py +27 -7
- mindspore/include/api/cell.h +37 -1
- mindspore/include/api/delegate.h +10 -0
- mindspore/include/api/model.h +3 -0
- mindspore/include/api/types.h +2 -2
- mindspore/include/c_api/model_c.h +0 -58
- mindspore/include/c_api/tensor_c.h +0 -26
- mindspore/include/dataset/vision_ascend.h +1 -1
- mindspore/jpeg62.dll +0 -0
- mindspore/mindrecord/tools/cifar10.py +60 -11
- mindspore/mindrecord/tools/cifar10_to_mr.py +5 -0
- mindspore/mindspore_backend_common.dll +0 -0
- mindspore/mindspore_backend_manager.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_cpu_res_manager.dll +0 -0
- mindspore/mindspore_dump.dll +0 -0
- mindspore/mindspore_frontend.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_memory_pool.dll +0 -0
- mindspore/mindspore_ms_backend.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/mindspore_ops_host.dll +0 -0
- mindspore/mindspore_ops_kernel_common.dll +0 -0
- mindspore/mindspore_profiler.dll +0 -0
- mindspore/mindspore_pyboost.dll +0 -0
- mindspore/mindspore_pynative.dll +0 -0
- mindspore/mindspore_res_manager.dll +0 -0
- mindspore/mindspore_runtime_pipeline.dll +0 -0
- mindspore/mint/__init__.py +6 -46
- mindspore/mint/distributed/__init__.py +1 -0
- mindspore/mint/distributed/distributed.py +212 -9
- mindspore/mint/nn/__init__.py +1 -1
- mindspore/mint/nn/functional.py +53 -6
- mindspore/mint/nn/layer/_functions.py +164 -294
- mindspore/mint/nn/layer/activation.py +8 -6
- mindspore/mint/nn/layer/conv.py +137 -101
- mindspore/mint/nn/layer/normalization.py +8 -22
- mindspore/mint/optim/adam.py +19 -18
- mindspore/mint/optim/adamw.py +14 -8
- mindspore/mint/optim/sgd.py +5 -5
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/nn/cell.py +328 -502
- mindspore/nn/grad/cell_grad.py +11 -12
- mindspore/nn/layer/activation.py +32 -34
- mindspore/nn/layer/basic.py +67 -64
- mindspore/nn/layer/channel_shuffle.py +4 -4
- mindspore/nn/layer/combined.py +4 -2
- mindspore/nn/layer/conv.py +117 -110
- mindspore/nn/layer/dense.py +9 -7
- mindspore/nn/layer/embedding.py +50 -52
- mindspore/nn/layer/image.py +37 -39
- mindspore/nn/layer/math.py +111 -112
- mindspore/nn/layer/normalization.py +56 -44
- mindspore/nn/layer/pooling.py +58 -63
- mindspore/nn/layer/rnn_cells.py +33 -33
- mindspore/nn/layer/rnns.py +56 -56
- mindspore/nn/layer/thor_layer.py +74 -73
- mindspore/nn/layer/transformer.py +11 -1
- mindspore/nn/learning_rate_schedule.py +20 -20
- mindspore/nn/loss/loss.py +79 -81
- mindspore/nn/optim/adam.py +3 -3
- mindspore/nn/optim/adasum.py +2 -2
- mindspore/nn/optim/asgd.py +2 -0
- mindspore/nn/optim/optimizer.py +1 -1
- mindspore/nn/optim/thor.py +2 -2
- mindspore/nn/probability/distribution/exponential.py +2 -1
- mindspore/nn/probability/distribution/poisson.py +2 -1
- mindspore/nn/sparse/sparse.py +3 -3
- mindspore/nn/wrap/cell_wrapper.py +34 -37
- mindspore/nn/wrap/grad_reducer.py +37 -37
- mindspore/nn/wrap/loss_scale.py +72 -74
- mindspore/numpy/array_creations.py +5 -5
- mindspore/numpy/fft.py +1 -1
- mindspore/numpy/math_ops.py +5 -5
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/_grad_experimental/grad_comm_ops.py +51 -13
- mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -0
- mindspore/ops/_vmap/vmap_array_ops.py +31 -13
- mindspore/ops/_vmap/vmap_nn_ops.py +8 -16
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +42 -11
- mindspore/ops/auto_generate/gen_extend_func.py +23 -141
- mindspore/ops/auto_generate/gen_ops_def.py +727 -321
- mindspore/ops/auto_generate/gen_ops_prim.py +1721 -984
- mindspore/ops/auto_generate/pyboost_inner_prim.py +31 -1
- mindspore/ops/composite/__init__.py +10 -0
- mindspore/ops/composite/base.py +8 -4
- mindspore/ops/composite/multitype_ops/__init__.py +12 -1
- mindspore/ops/composite/multitype_ops/_compile_utils.py +133 -109
- mindspore/ops/composite/multitype_ops/add_impl.py +70 -2
- mindspore/ops/composite/multitype_ops/div_impl.py +49 -0
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +29 -0
- mindspore/ops/composite/multitype_ops/getitem_impl.py +11 -0
- mindspore/ops/composite/multitype_ops/mod_impl.py +5 -3
- mindspore/ops/composite/multitype_ops/mul_impl.py +49 -0
- mindspore/ops/composite/multitype_ops/setitem_impl.py +57 -0
- mindspore/ops/composite/multitype_ops/sub_impl.py +34 -0
- mindspore/ops/composite/multitype_ops/zeros_like_impl.py +14 -0
- mindspore/ops/function/__init__.py +3 -1
- mindspore/ops/function/_add_attr_func.py +11 -6
- mindspore/ops/function/array_func.py +9 -96
- mindspore/ops/function/debug_func.py +4 -3
- mindspore/ops/function/grad/grad_func.py +1 -1
- mindspore/ops/function/math_func.py +33 -540
- mindspore/ops/function/nn_func.py +28 -74
- mindspore/ops/function/other_func.py +4 -1
- mindspore/ops/function/random_func.py +44 -5
- mindspore/ops/function/vmap_func.py +2 -1
- mindspore/ops/functional.py +2 -3
- mindspore/ops/functional_overload.py +571 -6
- mindspore/ops/op_info_register.py +21 -0
- mindspore/ops/operations/__init__.py +16 -11
- mindspore/ops/operations/_custom_ops_utils.py +689 -34
- mindspore/ops/operations/_inner_ops.py +3 -6
- mindspore/ops/operations/_sequence_ops.py +1 -1
- mindspore/ops/operations/array_ops.py +2 -2
- mindspore/ops/operations/comm_ops.py +185 -26
- mindspore/ops/operations/custom_ops.py +294 -174
- mindspore/ops/operations/debug_ops.py +59 -4
- mindspore/ops/operations/image_ops.py +13 -13
- mindspore/ops/operations/manually_defined/ops_def.py +15 -16
- mindspore/ops/operations/math_ops.py +3 -4
- mindspore/ops/operations/nn_ops.py +7 -39
- mindspore/ops/primitive.py +6 -10
- mindspore/ops/tensor_method.py +47 -8
- mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +1 -1
- mindspore/ops_generate/api/functional_map_cpp_generator.py +10 -9
- mindspore/ops_generate/api/functions_cc_generator.py +58 -10
- mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +1 -1
- mindspore/ops_generate/common/base_generator.py +14 -0
- mindspore/ops_generate/common/gen_constants.py +8 -3
- mindspore/ops_generate/common/gen_utils.py +0 -19
- mindspore/ops_generate/common/op_proto.py +11 -4
- mindspore/ops_generate/common/template.py +88 -11
- mindspore/ops_generate/gen_ops.py +1 -1
- mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +4 -4
- mindspore/ops_generate/op_def/ops_def_cc_generator.py +0 -3
- mindspore/ops_generate/op_def/ops_name_h_generator.py +0 -3
- mindspore/ops_generate/op_def/ops_primitive_h_generator.py +0 -4
- mindspore/ops_generate/op_def_py/op_prim_py_generator.py +5 -2
- mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +49 -8
- mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +2 -2
- mindspore/ops_generate/pyboost/gen_pyboost_func.py +31 -0
- mindspore/ops_generate/pyboost/op_template_parser.py +98 -72
- mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +70 -273
- mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +14 -6
- mindspore/ops_generate/pyboost/pyboost_functions_impl_cpp_generator.py +316 -0
- mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +1 -1
- mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +5 -3
- mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +1 -1
- mindspore/ops_generate/pyboost/pyboost_internal_functions_cpp_generator.py +76 -0
- mindspore/ops_generate/pyboost/pyboost_internal_functions_h_generator.py +76 -0
- mindspore/ops_generate/pyboost/pyboost_internal_kernel_info_adapter_generator.py +125 -0
- mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +4 -3
- mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +348 -61
- mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +1 -1
- mindspore/ops_generate/pyboost/pyboost_utils.py +118 -9
- mindspore/ops_generate/tensor_py_cc_generator.py +1 -24
- mindspore/parallel/_auto_parallel_context.py +11 -8
- mindspore/parallel/_cell_wrapper.py +113 -45
- mindspore/parallel/_parallel_serialization.py +1 -1
- mindspore/parallel/_ps_context.py +4 -6
- mindspore/parallel/_tensor.py +167 -12
- mindspore/parallel/_transformer/moe.py +1 -1
- mindspore/parallel/_transformer/transformer.py +13 -8
- mindspore/parallel/auto_parallel.py +14 -7
- mindspore/parallel/checkpoint_convert.py +3 -3
- mindspore/parallel/checkpoint_transform.py +11 -7
- mindspore/parallel/cluster/process_entity/_api.py +84 -48
- mindspore/parallel/cluster/process_entity/_utils.py +95 -7
- mindspore/parallel/cluster/run.py +43 -4
- mindspore/parallel/function/__init__.py +8 -1
- mindspore/parallel/function/reshard_func.py +6 -7
- mindspore/parallel/nn/__init__.py +15 -2
- mindspore/parallel/nn/parallel_cell_wrapper.py +9 -10
- mindspore/parallel/nn/parallel_grad_reducer.py +7 -6
- mindspore/parallel/shard.py +3 -4
- mindspore/parallel/transform_safetensors.py +463 -174
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +2 -1
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -7
- mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +3 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +12 -6
- mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +3 -3
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
- mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +4 -4
- mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +3 -3
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +4 -1
- mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +2 -1
- mindspore/profiler/analysis/task_manager.py +1 -1
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +5 -1
- mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +2 -1
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +42 -22
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +3 -2
- mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +9 -5
- mindspore/profiler/analysis/viewer/ms_operator_details_viewer.py +132 -0
- mindspore/profiler/common/constant.py +16 -0
- mindspore/profiler/common/profiler_context.py +25 -27
- mindspore/profiler/common/profiler_info.py +0 -16
- mindspore/profiler/common/profiler_op_analyse.py +235 -0
- mindspore/profiler/common/profiler_output_path.py +23 -8
- mindspore/profiler/common/profiler_parameters.py +128 -35
- mindspore/profiler/dynamic_profile/__init__.py +0 -0
- mindspore/profiler/dynamic_profile/dynamic_monitor_proxy.py +39 -0
- mindspore/profiler/dynamic_profile/dynamic_profiler_config_context.py +666 -0
- mindspore/profiler/dynamic_profile/dynamic_profiler_utils.py +62 -0
- mindspore/profiler/dynamic_profiler.py +305 -314
- mindspore/profiler/envprofiler.py +12 -7
- mindspore/profiler/experimental_config.py +96 -6
- mindspore/profiler/mstx.py +33 -12
- mindspore/profiler/platform/__init__.py +2 -3
- mindspore/profiler/platform/npu_profiler.py +29 -19
- mindspore/profiler/profiler.py +35 -19
- mindspore/profiler/profiler_action_controller.py +64 -76
- mindspore/profiler/schedule.py +10 -4
- mindspore/rewrite/common/config.py +1 -0
- mindspore/rewrite/common/namer.py +1 -0
- mindspore/rewrite/common/namespace.py +1 -0
- mindspore/rewrite/node/node.py +31 -11
- mindspore/rewrite/parsers/assign_parser.py +1 -1
- mindspore/rewrite/symbol_tree/symbol_tree.py +1 -1
- mindspore/run_check/_check_version.py +7 -10
- mindspore/runtime/__init__.py +5 -5
- mindspore/runtime/event.py +10 -4
- mindspore/runtime/executor.py +60 -45
- mindspore/runtime/memory.py +30 -32
- mindspore/runtime/thread_bind_core.py +298 -164
- mindspore/safeguard/rewrite_obfuscation.py +12 -13
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/_utils.py +14 -4
- mindspore/train/amp.py +43 -20
- mindspore/train/callback/__init__.py +5 -5
- mindspore/train/callback/_checkpoint.py +3 -6
- mindspore/train/callback/_flops_collector.py +1 -1
- mindspore/train/callback/_landscape.py +0 -1
- mindspore/train/callback/_train_fault_tolerance.py +97 -16
- mindspore/train/data_sink.py +11 -2
- mindspore/train/dataset_helper.py +9 -0
- mindspore/train/model.py +135 -55
- mindspore/train/serialization.py +133 -111
- mindspore/train/summary/summary_record.py +13 -2
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +3 -2
- mindspore/utils/dryrun.py +0 -6
- mindspore/utils/runtime_execution_order_check.py +163 -77
- mindspore/utils/sdc_detect.py +68 -0
- mindspore/utils/utils.py +6 -9
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0rc1.dist-info}/METADATA +5 -4
- {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0rc1.dist-info}/RECORD +356 -394
- mindspore/_deprecated/jit.py +0 -198
- mindspore/experimental/es/__init__.py +0 -22
- mindspore/experimental/es/embedding_service.py +0 -891
- mindspore/experimental/es/embedding_service_layer.py +0 -581
- mindspore/profiler/parser/__init__.py +0 -14
- mindspore/profiler/parser/aicpu_data_parser.py +0 -272
- mindspore/profiler/parser/ascend_analysis/__init__.py +0 -14
- mindspore/profiler/parser/ascend_analysis/constant.py +0 -71
- mindspore/profiler/parser/ascend_analysis/file_manager.py +0 -180
- mindspore/profiler/parser/ascend_analysis/function_event.py +0 -185
- mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +0 -136
- mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +0 -131
- mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +0 -104
- mindspore/profiler/parser/ascend_analysis/path_manager.py +0 -313
- mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +0 -123
- mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +0 -86
- mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +0 -75
- mindspore/profiler/parser/ascend_cluster_generator.py +0 -116
- mindspore/profiler/parser/ascend_communicate_generator.py +0 -314
- mindspore/profiler/parser/ascend_flops_generator.py +0 -116
- mindspore/profiler/parser/ascend_fpbp_generator.py +0 -82
- mindspore/profiler/parser/ascend_hccl_generator.py +0 -271
- mindspore/profiler/parser/ascend_integrate_generator.py +0 -42
- mindspore/profiler/parser/ascend_memory_generator.py +0 -185
- mindspore/profiler/parser/ascend_msprof_exporter.py +0 -282
- mindspore/profiler/parser/ascend_msprof_generator.py +0 -187
- mindspore/profiler/parser/ascend_op_generator.py +0 -334
- mindspore/profiler/parser/ascend_steptrace_generator.py +0 -94
- mindspore/profiler/parser/ascend_timeline_generator.py +0 -545
- mindspore/profiler/parser/base_timeline_generator.py +0 -483
- mindspore/profiler/parser/container.py +0 -229
- mindspore/profiler/parser/cpu_gpu_timeline_generator.py +0 -697
- mindspore/profiler/parser/flops_parser.py +0 -531
- mindspore/profiler/parser/framework_enum.py +0 -111
- mindspore/profiler/parser/framework_parser.py +0 -464
- mindspore/profiler/parser/framework_struct.py +0 -61
- mindspore/profiler/parser/gpu_analysis/__init__.py +0 -14
- mindspore/profiler/parser/gpu_analysis/function_event.py +0 -44
- mindspore/profiler/parser/gpu_analysis/fwk_file_parser.py +0 -89
- mindspore/profiler/parser/gpu_analysis/profiler_info_parser.py +0 -72
- mindspore/profiler/parser/hccl_parser.py +0 -573
- mindspore/profiler/parser/hwts_log_parser.py +0 -122
- mindspore/profiler/parser/integrator.py +0 -526
- mindspore/profiler/parser/memory_usage_parser.py +0 -277
- mindspore/profiler/parser/minddata_analyzer.py +0 -800
- mindspore/profiler/parser/minddata_parser.py +0 -186
- mindspore/profiler/parser/minddata_pipeline_parser.py +0 -299
- mindspore/profiler/parser/op_intermediate_parser.py +0 -149
- mindspore/profiler/parser/optime_parser.py +0 -250
- mindspore/profiler/parser/profiler_info.py +0 -213
- mindspore/profiler/parser/step_trace_parser.py +0 -666
- {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0rc1.dist-info}/entry_points.txt +0 -0
- {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -1,334 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 Huawei Technologies Co., Ltd
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
# ============================================================================
|
|
15
|
-
"""op analyse model"""
|
|
16
|
-
import csv
|
|
17
|
-
import json
|
|
18
|
-
import logging
|
|
19
|
-
import os
|
|
20
|
-
import stat
|
|
21
|
-
from typing import Optional, List
|
|
22
|
-
|
|
23
|
-
import numpy as np
|
|
24
|
-
from mindspore import log as logger
|
|
25
|
-
from mindspore.profiler.common.exceptions.exceptions import ProfilerIOException
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class AscendOPGenerator:
|
|
29
|
-
"""Generate ascend op data from DataFrame."""
|
|
30
|
-
|
|
31
|
-
def __init__(
|
|
32
|
-
self, op_summary: np.ndarray, op_statistic: np.ndarray,
|
|
33
|
-
dynamic_status: bool = False, launch_ops: Optional[List] = None
|
|
34
|
-
):
|
|
35
|
-
self.op_summary = op_summary
|
|
36
|
-
self.op_statistic = op_statistic
|
|
37
|
-
self.dynamic_status = dynamic_status
|
|
38
|
-
self.op_detail = None
|
|
39
|
-
self.op_type = None
|
|
40
|
-
self.aicpu_detail = None
|
|
41
|
-
self.framework_raw = None
|
|
42
|
-
self.output_timeline_data = None
|
|
43
|
-
self.launch_ops = launch_ops if launch_ops else []
|
|
44
|
-
self.aclnn_status = bool(launch_ops)
|
|
45
|
-
self._full_kernel_name = None
|
|
46
|
-
self._sub_graph = None
|
|
47
|
-
self._op_name = None
|
|
48
|
-
self._kernel_name = None
|
|
49
|
-
|
|
50
|
-
self.op_detail_dt = np.dtype(
|
|
51
|
-
[('full_kernel_name', object), ('task_duration', float),
|
|
52
|
-
('execution_frequency', int), ('task_type', object)])
|
|
53
|
-
|
|
54
|
-
self.op_type_dt = np.dtype(
|
|
55
|
-
[('kernel_type', object), ('total_time', float), ('execution_frequency', int), ('percent', float)])
|
|
56
|
-
|
|
57
|
-
self.aicpu_detail_dt = np.dtype(
|
|
58
|
-
[('serial_number', int), ('kernel_type', object), ('total_time', float), ('dispatch_time', float),
|
|
59
|
-
('execution_time', float), ('run_start', float), ('run_end', float)])
|
|
60
|
-
|
|
61
|
-
self.framwork_raw_dt = np.dtype(
|
|
62
|
-
[('task_id', int), ('stream_id', int), ('block_dim', int), ('full_kernel_name', object),
|
|
63
|
-
('op_name', object), ('kernel_name', object), ('kernel_type', object), ('subgraph', object),
|
|
64
|
-
('op_info', object), ('model_id', int), ('task_type', object)])
|
|
65
|
-
|
|
66
|
-
def parse(self):
|
|
67
|
-
"""
|
|
68
|
-
Analyse op summary op statistic generate op data.
|
|
69
|
-
"""
|
|
70
|
-
if isinstance(self.op_summary, np.ndarray) and self.op_summary.shape[0] == 0 or \
|
|
71
|
-
not isinstance(self.op_summary, np.ndarray) and not self.op_summary:
|
|
72
|
-
return
|
|
73
|
-
self._combine_op_and_kernel(self.op_summary, self.launch_ops)
|
|
74
|
-
# aicore intermediation detail
|
|
75
|
-
self.op_detail = self._parse_op_detail(self.op_summary)
|
|
76
|
-
|
|
77
|
-
# aicore intermediation type
|
|
78
|
-
self.op_type = self._parse_op_type(self.op_statistic)
|
|
79
|
-
|
|
80
|
-
# aicpu_intermediation
|
|
81
|
-
self.aicpu_detail = self._parse_aicpu_detail(self.op_summary)
|
|
82
|
-
|
|
83
|
-
# framwork_raw
|
|
84
|
-
self.framework_raw = self._parse_framework_raw(self.op_summary)
|
|
85
|
-
|
|
86
|
-
self.output_timeline_data = self.op_summary[self.op_summary['Task Type'] == 'AI_CORE'][
|
|
87
|
-
['Op Name', 'Stream ID', 'Task Start Time', 'Task Duration']]
|
|
88
|
-
|
|
89
|
-
def write(self, aicore_intermediate_detail_path, aicore_intermediate_type_path, aicpu_intermediate_detail_path,
|
|
90
|
-
framework_raw_path, output_timeline_data_path):
|
|
91
|
-
"""
|
|
92
|
-
Write the op_intermediate_detail.csv op_intermediate_type.csv aicpu_intermediate.csv and framework_raw.csv.
|
|
93
|
-
|
|
94
|
-
Args:
|
|
95
|
-
aicore_intermediate_detail_path(str): op_intermediate_detail.csv path.
|
|
96
|
-
aicore_intermediate_type_path(str): op_intermediate_type.csv path.
|
|
97
|
-
aicpu_intermediate_detail_path(str): aicpu_intermediate.csv path.
|
|
98
|
-
framework_raw_path: framework_raw.csv path
|
|
99
|
-
output_timeline_data_path : output_timeline_data.txt path
|
|
100
|
-
"""
|
|
101
|
-
# aicore intermediation detail
|
|
102
|
-
if isinstance(self.op_detail, np.ndarray) and self.op_detail.shape[0] != 0:
|
|
103
|
-
try:
|
|
104
|
-
with os.fdopen(os.open(aicore_intermediate_detail_path,
|
|
105
|
-
os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR),
|
|
106
|
-
'w') as aicore_detail:
|
|
107
|
-
writer = csv.writer(aicore_detail)
|
|
108
|
-
writer.writerow(self.op_detail.dtype.names)
|
|
109
|
-
writer.writerows(self.op_detail.tolist())
|
|
110
|
-
except (IOError, OSError) as err:
|
|
111
|
-
logging.critical('Errot occurred when write aicore detail file: %s', err)
|
|
112
|
-
raise ProfilerIOException() from err
|
|
113
|
-
if os.path.exists(aicore_intermediate_detail_path):
|
|
114
|
-
os.chmod(aicore_intermediate_detail_path, stat.S_IREAD | stat.S_IWRITE)
|
|
115
|
-
|
|
116
|
-
# aicore intermediation type
|
|
117
|
-
if isinstance(self.op_type, np.ndarray) and self.op_type.shape[0] != 0:
|
|
118
|
-
try:
|
|
119
|
-
with os.fdopen(os.open(aicore_intermediate_type_path,
|
|
120
|
-
os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR),
|
|
121
|
-
'w') as aicore_type:
|
|
122
|
-
writer = csv.writer(aicore_type)
|
|
123
|
-
writer.writerow(self.op_type.dtype.names)
|
|
124
|
-
writer.writerows(self.op_type.tolist())
|
|
125
|
-
except (IOError, OSError) as err:
|
|
126
|
-
logging.critical('Errot occurred when write aicore type file: %s', err)
|
|
127
|
-
raise ProfilerIOException() from err
|
|
128
|
-
if os.path.exists(aicore_intermediate_type_path):
|
|
129
|
-
os.chmod(aicore_intermediate_type_path, stat.S_IREAD | stat.S_IWRITE)
|
|
130
|
-
|
|
131
|
-
# aicpu_intermediation
|
|
132
|
-
if isinstance(self.aicpu_detail, np.ndarray) and self.aicpu_detail.shape[0] != 0:
|
|
133
|
-
try:
|
|
134
|
-
with os.fdopen(os.open(aicpu_intermediate_detail_path,
|
|
135
|
-
os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR),
|
|
136
|
-
'w') as aicpu_type:
|
|
137
|
-
writer = csv.writer(aicpu_type)
|
|
138
|
-
writer.writerow(self.aicpu_detail.dtype.names)
|
|
139
|
-
writer.writerows(self.aicpu_detail.tolist())
|
|
140
|
-
except (IOError, OSError) as err:
|
|
141
|
-
logging.critical('Errot occurred when write aicpu detail file: %s', err)
|
|
142
|
-
raise ProfilerIOException() from err
|
|
143
|
-
if os.path.exists(aicpu_intermediate_detail_path):
|
|
144
|
-
os.chmod(aicpu_intermediate_detail_path, stat.S_IREAD | stat.S_IWRITE)
|
|
145
|
-
|
|
146
|
-
# framwork_raw
|
|
147
|
-
if isinstance(self.framework_raw, np.ndarray) and self.framework_raw.shape[0] != 0:
|
|
148
|
-
try:
|
|
149
|
-
with os.fdopen(os.open(framework_raw_path,
|
|
150
|
-
os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR),
|
|
151
|
-
'w') as framework:
|
|
152
|
-
writer = csv.writer(framework)
|
|
153
|
-
writer.writerow(self.framework_raw.dtype.names)
|
|
154
|
-
writer.writerows(self.framework_raw.tolist())
|
|
155
|
-
except (IOError, OSError) as err:
|
|
156
|
-
logging.critical('Errot occurred when write framework file: %s', err)
|
|
157
|
-
raise ProfilerIOException() from err
|
|
158
|
-
if os.path.exists(framework_raw_path):
|
|
159
|
-
os.chmod(framework_raw_path, stat.S_IREAD | stat.S_IWRITE)
|
|
160
|
-
|
|
161
|
-
# output_timeline_data
|
|
162
|
-
if isinstance(self.output_timeline_data, np.ndarray) and self.output_timeline_data.size and \
|
|
163
|
-
self.output_timeline_data.shape[0] != 0 and output_timeline_data_path:
|
|
164
|
-
try:
|
|
165
|
-
with os.fdopen(os.open(output_timeline_data_path,
|
|
166
|
-
os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR),
|
|
167
|
-
'w') as output_timeline_data:
|
|
168
|
-
writer = csv.writer(output_timeline_data)
|
|
169
|
-
writer.writerow(['kernel_name', 'stream_id', 'start_time(us)', 'duration(ms)'])
|
|
170
|
-
writer.writerows(self.output_timeline_data.tolist())
|
|
171
|
-
except (IOError, OSError) as err:
|
|
172
|
-
logging.critical('Error occurred when write output timeline data file: %s', err)
|
|
173
|
-
raise ProfilerIOException() from err
|
|
174
|
-
if os.path.exists(aicpu_intermediate_detail_path):
|
|
175
|
-
os.chmod(aicpu_intermediate_detail_path, stat.S_IREAD | stat.S_IWRITE)
|
|
176
|
-
|
|
177
|
-
def _combine_op_and_kernel(self, op_summary, launch_ops):
|
|
178
|
-
"""update op name, kernel name etc."""
|
|
179
|
-
if isinstance(op_summary, np.ndarray) and op_summary.shape[0] == 0 or not isinstance(op_summary, np.ndarray) \
|
|
180
|
-
and not op_summary:
|
|
181
|
-
return
|
|
182
|
-
self._full_kernel_name = op_summary['Op Name'].copy()
|
|
183
|
-
self._op_name = op_summary['Op Name'].copy()
|
|
184
|
-
self._kernel_name = np.array(
|
|
185
|
-
[x[-1] for x in np.char.split(op_summary['Op Name'].astype(str), sep='/')], dtype=object)
|
|
186
|
-
self._sub_graph = np.array(
|
|
187
|
-
[x[0] for x in np.char.split(op_summary['Op Name'].astype(str), sep='/')], dtype=object)
|
|
188
|
-
|
|
189
|
-
if launch_ops and len(launch_ops) != len(op_summary):
|
|
190
|
-
logger.error("Size mismatch between op_summary and launch_ops!")
|
|
191
|
-
launch_ops = []
|
|
192
|
-
|
|
193
|
-
for index, launch_op in enumerate(launch_ops):
|
|
194
|
-
if not launch_op:
|
|
195
|
-
continue
|
|
196
|
-
self._op_name[index] = launch_op
|
|
197
|
-
self._kernel_name[index] = self._full_kernel_name[index]
|
|
198
|
-
self._full_kernel_name[index] = f"{launch_op}/{self._full_kernel_name[index]}"
|
|
199
|
-
self._sub_graph[index] = launch_op.split("/")[0]
|
|
200
|
-
|
|
201
|
-
def _parse_op_detail(self, op_summary):
|
|
202
|
-
"""
|
|
203
|
-
Analyse op summary generate op detail data.
|
|
204
|
-
|
|
205
|
-
Args:
|
|
206
|
-
op_summary(DataFrame): op summary data.
|
|
207
|
-
"""
|
|
208
|
-
if isinstance(op_summary, np.ndarray) and op_summary.shape[0] == 0 or \
|
|
209
|
-
not isinstance(op_summary, np.ndarray) and not op_summary:
|
|
210
|
-
return None
|
|
211
|
-
if self.aclnn_status:
|
|
212
|
-
op_detail = np.empty((len(op_summary),), dtype=self.op_detail_dt)
|
|
213
|
-
op_detail['task_type'] = op_summary['Task Type']
|
|
214
|
-
op_detail['execution_frequency'] = np.ones((len(op_summary),), dtype=int)
|
|
215
|
-
op_detail['task_duration'] = op_summary['Task Duration']
|
|
216
|
-
op_detail['full_kernel_name'] = self._full_kernel_name
|
|
217
|
-
else:
|
|
218
|
-
groups, index, inverse, counts = np.unique(op_summary['Op Name'], return_index=True,
|
|
219
|
-
return_inverse=True, return_counts=True)
|
|
220
|
-
|
|
221
|
-
op_detail = np.empty((len(groups),), dtype=self.op_detail_dt)
|
|
222
|
-
op_detail['full_kernel_name'] = groups
|
|
223
|
-
op_detail['task_type'] = op_summary[index]['Task Type']
|
|
224
|
-
nonzero_duration = np.bincount(inverse) != 0
|
|
225
|
-
op_detail['task_duration'] = np.where(nonzero_duration, np.bincount(
|
|
226
|
-
inverse, weights=op_summary['Task Duration']) / np.bincount(inverse), 0)
|
|
227
|
-
op_detail['execution_frequency'] = counts
|
|
228
|
-
|
|
229
|
-
return op_detail
|
|
230
|
-
|
|
231
|
-
def _parse_op_type(self, op_statistic):
|
|
232
|
-
"""
|
|
233
|
-
Analyse op statistic generate op type data.
|
|
234
|
-
|
|
235
|
-
Args:
|
|
236
|
-
op_statistic(DataFrame): op statistic data.
|
|
237
|
-
"""
|
|
238
|
-
if isinstance(op_statistic, np.ndarray) and op_statistic.shape[0] == 0 or \
|
|
239
|
-
not isinstance(op_statistic, np.ndarray) and not op_statistic:
|
|
240
|
-
return None
|
|
241
|
-
groups, _, inverse, _ = np.unique(op_statistic['Op Type'], return_index=True, return_inverse=True,
|
|
242
|
-
return_counts=True)
|
|
243
|
-
|
|
244
|
-
op_type = np.empty((len(groups),), dtype=self.op_type_dt)
|
|
245
|
-
op_type['kernel_type'] = groups
|
|
246
|
-
op_type['total_time'] = np.bincount(inverse, weights=op_statistic['Total Time'])
|
|
247
|
-
op_type['execution_frequency'] = np.bincount(inverse, weights=op_statistic['Count'])
|
|
248
|
-
op_type['percent'] = op_type['total_time'] / np.sum(op_statistic['Total Time']) if np.sum(
|
|
249
|
-
op_statistic['Total Time']) != 0 else 0
|
|
250
|
-
|
|
251
|
-
return op_type
|
|
252
|
-
|
|
253
|
-
def _parse_aicpu_detail(self, op_summary):
|
|
254
|
-
"""
|
|
255
|
-
Analyse op summary generate aicpu detail data.
|
|
256
|
-
|
|
257
|
-
Args:
|
|
258
|
-
op_summary(DataFrame): op summary data.
|
|
259
|
-
"""
|
|
260
|
-
if isinstance(op_summary, np.ndarray) and op_summary.shape[0] == 0 or \
|
|
261
|
-
not isinstance(op_summary, np.ndarray) and not op_summary:
|
|
262
|
-
return None
|
|
263
|
-
op_summary = op_summary[op_summary['Task Type'] == 'AI_CPU']
|
|
264
|
-
|
|
265
|
-
aicpu_detail = np.empty((len(op_summary),), dtype=self.aicpu_detail_dt)
|
|
266
|
-
|
|
267
|
-
aicpu_detail['serial_number'] = [i for i in range(1, op_summary.shape[0] + 1)]
|
|
268
|
-
aicpu_detail['kernel_type'] = op_summary['Op Type']
|
|
269
|
-
aicpu_detail['total_time'] = op_summary['Task Duration'] + op_summary['Task Wait Time']
|
|
270
|
-
aicpu_detail['dispatch_time'] = op_summary['Task Wait Time']
|
|
271
|
-
aicpu_detail['execution_time'] = op_summary['Task Duration']
|
|
272
|
-
aicpu_detail['run_start'] = op_summary['Task Start Time']
|
|
273
|
-
aicpu_detail['run_end'] = aicpu_detail['run_start'] + aicpu_detail['total_time']
|
|
274
|
-
|
|
275
|
-
return aicpu_detail
|
|
276
|
-
|
|
277
|
-
def _parse_framework_raw(self, op_summary):
|
|
278
|
-
"""
|
|
279
|
-
Analyse op summary generate op framework data.
|
|
280
|
-
|
|
281
|
-
Args:
|
|
282
|
-
op_summary(DataFrame): op summary data.
|
|
283
|
-
"""
|
|
284
|
-
|
|
285
|
-
def op_info_analyse(row):
|
|
286
|
-
"""generate op info data"""
|
|
287
|
-
if not row['Input Shapes']:
|
|
288
|
-
return ""
|
|
289
|
-
input_shapes = row['Input Shapes'].replace('"', '').split(';')
|
|
290
|
-
input_data_types = row['Input Data Types'].replace('_', '').split(';')
|
|
291
|
-
input_formats = row['Input Formats'].replace('_', '').split(';')
|
|
292
|
-
output_shapes = row['Output Shapes'].replace('"', '').split(';')
|
|
293
|
-
output_data_types = row['Output Data Types'].replace('_', '').split(';')
|
|
294
|
-
output_formats = row['Output Formats'].replace('_', '').split(';')
|
|
295
|
-
op_info = {}
|
|
296
|
-
if isinstance(input_shapes, list) and len(input_shapes) >= 1 and input_shapes[0] != '':
|
|
297
|
-
input_size = len(input_shapes)
|
|
298
|
-
for i in range(input_size):
|
|
299
|
-
op_info[f'Input_{i}'] = {
|
|
300
|
-
'format': input_formats[i],
|
|
301
|
-
'data_type': input_data_types[i],
|
|
302
|
-
'shape': input_shapes[i]
|
|
303
|
-
}
|
|
304
|
-
if isinstance(output_shapes, list) and len(output_shapes) >= 1 and output_shapes[0] != '':
|
|
305
|
-
output_size = len(output_shapes)
|
|
306
|
-
for i in range(output_size):
|
|
307
|
-
op_info[f'Output_{i}'] = {
|
|
308
|
-
'format': output_formats[i],
|
|
309
|
-
'data_type': output_data_types[i],
|
|
310
|
-
'shape': output_shapes[i]
|
|
311
|
-
}
|
|
312
|
-
return json.dumps(op_info)
|
|
313
|
-
if isinstance(op_summary, np.ndarray) and op_summary.shape[0] == 0 or \
|
|
314
|
-
not isinstance(op_summary, np.ndarray) and not op_summary:
|
|
315
|
-
return None
|
|
316
|
-
if self.dynamic_status or self.aclnn_status:
|
|
317
|
-
index = list(range(op_summary.shape[0]))
|
|
318
|
-
else:
|
|
319
|
-
_, index, _, _ = np.unique(op_summary['Op Name'], return_index=True, return_inverse=True,
|
|
320
|
-
return_counts=True)
|
|
321
|
-
framwork_raw = np.empty((len(index),), dtype=self.framwork_raw_dt)
|
|
322
|
-
|
|
323
|
-
framwork_raw['task_id'] = op_summary[index]['Task ID']
|
|
324
|
-
framwork_raw['stream_id'] = op_summary[index]['Stream ID']
|
|
325
|
-
framwork_raw['full_kernel_name'] = self._full_kernel_name[index]
|
|
326
|
-
framwork_raw['op_name'] = self._op_name[index]
|
|
327
|
-
framwork_raw['kernel_name'] = self._kernel_name[index]
|
|
328
|
-
framwork_raw['kernel_type'] = op_summary[index]['Op Type']
|
|
329
|
-
framwork_raw['subgraph'] = self._sub_graph[index]
|
|
330
|
-
framwork_raw['op_info'] = [op_info_analyse(x) for x in op_summary[index]]
|
|
331
|
-
framwork_raw['model_id'] = op_summary[index]['Model ID']
|
|
332
|
-
framwork_raw['task_type'] = op_summary[index]['Task Type']
|
|
333
|
-
|
|
334
|
-
return framwork_raw
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 Huawei Technologies Co., Ltd
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
# ============================================================================
|
|
15
|
-
""""step analyse model"""
|
|
16
|
-
import csv
|
|
17
|
-
import logging
|
|
18
|
-
import os
|
|
19
|
-
import stat
|
|
20
|
-
|
|
21
|
-
import numpy as np
|
|
22
|
-
from mindspore.profiler.common.exceptions.exceptions import ProfilerIOException
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class AscendStepTraceGenerator:
|
|
26
|
-
"""Generate ascend steptrace data from DataFrame."""
|
|
27
|
-
|
|
28
|
-
def __init__(self, steptrace):
|
|
29
|
-
self.steptrace = steptrace
|
|
30
|
-
self.steptrace_detail = None
|
|
31
|
-
|
|
32
|
-
self.steptrace_detail_dt = [
|
|
33
|
-
('step_num', object), ('start_point', np.int64), ('end_point', np.int64),
|
|
34
|
-
('total', np.int64), ('fp_point', np.int64), ('bp_point', np.int64),
|
|
35
|
-
('iteration_interval', np.int64), ('fp_and_bp', np.int64), ('tail', np.int64)
|
|
36
|
-
]
|
|
37
|
-
|
|
38
|
-
def parse(self):
|
|
39
|
-
"""Analyse the original steptrace data generate steptrace data."""
|
|
40
|
-
if not isinstance(self.steptrace, np.ndarray) or self.steptrace.shape[0] == 0 or not self.steptrace.tolist():
|
|
41
|
-
return
|
|
42
|
-
for name in self.steptrace.dtype.names[9::2]:
|
|
43
|
-
self.steptrace_detail_dt.append((name, np.int64))
|
|
44
|
-
self.steptrace_detail_dt.append((f'{name}_start_point', np.int64))
|
|
45
|
-
self.steptrace_detail_dt.append((f'{name}_end_point', np.int64))
|
|
46
|
-
self.steptrace_detail_dt = np.dtype(self.steptrace_detail_dt)
|
|
47
|
-
self.steptrace_detail = np.empty((len(self.steptrace),), dtype=self.steptrace_detail_dt)
|
|
48
|
-
|
|
49
|
-
unit = 1e+5
|
|
50
|
-
self.steptrace_detail['step_num'] = self.steptrace['Iteration ID']
|
|
51
|
-
self.steptrace_detail['start_point'] = (self.steptrace['FP Start'] - self.steptrace['Data Aug Bound']) * unit
|
|
52
|
-
self.steptrace_detail['end_point'] = self.steptrace['Iteration End'] * unit
|
|
53
|
-
self.steptrace_detail['total'] = (self.steptrace['Iteration Time'] + self.steptrace['Data Aug Bound']) * unit
|
|
54
|
-
self.steptrace_detail['fp_point'] = self.steptrace['FP Start'] * unit
|
|
55
|
-
self.steptrace_detail['bp_point'] = self.steptrace['BP End'] * unit
|
|
56
|
-
self.steptrace_detail['iteration_interval'] = self.steptrace['Data Aug Bound'] * unit
|
|
57
|
-
self.steptrace_detail['fp_and_bp'] = self.steptrace['FP to BP Time'] * unit
|
|
58
|
-
self.steptrace_detail['tail'] = self.steptrace['Iteration Refresh'] * unit
|
|
59
|
-
|
|
60
|
-
for name in self.steptrace.dtype.names[9::2]:
|
|
61
|
-
self.steptrace_detail[name] = self.steptrace[f'{name} duration'] * unit
|
|
62
|
-
self.steptrace_detail[f'{name}_start_point'] = self.steptrace[name] * unit
|
|
63
|
-
self.steptrace_detail[f'{name}_end_point'] = (self.steptrace[name] + self.steptrace[
|
|
64
|
-
f'{name} duration']) * unit
|
|
65
|
-
|
|
66
|
-
if self.steptrace_detail.shape[0] > 1:
|
|
67
|
-
avg_values = np.mean(self.steptrace_detail.tolist(), axis=0)
|
|
68
|
-
avg_row = np.array([tuple(avg_values)], dtype=self.steptrace_detail_dt)
|
|
69
|
-
else:
|
|
70
|
-
avg_row = self.steptrace_detail[0]
|
|
71
|
-
avg_row['step_num'] = '-'
|
|
72
|
-
self.steptrace_detail = np.append(self.steptrace_detail, avg_row)
|
|
73
|
-
|
|
74
|
-
def write(self, step_trace_intermediate_file_path):
|
|
75
|
-
"""
|
|
76
|
-
Write the step_trace_raw.cs
|
|
77
|
-
|
|
78
|
-
Args:
|
|
79
|
-
step_trace_intermediate_file_path(str): step_trace_raw.csv path.
|
|
80
|
-
|
|
81
|
-
"""
|
|
82
|
-
if not isinstance(self.steptrace_detail, np.ndarray):
|
|
83
|
-
return
|
|
84
|
-
try:
|
|
85
|
-
with os.fdopen(os.open(step_trace_intermediate_file_path,
|
|
86
|
-
os.O_WRONLY | os.O_CREAT | os.O_TRUNC, stat.S_IWUSR | stat.S_IRUSR), 'w') as st:
|
|
87
|
-
writer = csv.writer(st)
|
|
88
|
-
writer.writerow(self.steptrace_detail.dtype.names)
|
|
89
|
-
writer.writerows(self.steptrace_detail.tolist())
|
|
90
|
-
except (IOError, OSError) as err:
|
|
91
|
-
logging.critical('Errot occurred when write step trace file: %s', err)
|
|
92
|
-
raise ProfilerIOException() from err
|
|
93
|
-
if os.path.exists(step_trace_intermediate_file_path):
|
|
94
|
-
os.chmod(step_trace_intermediate_file_path, stat.S_IREAD | stat.S_IWRITE)
|