mindspore 2.6.0rc1__cp311-cp311-win_amd64.whl → 2.7.0__cp311-cp311-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 +2 -2
- mindspore/_c_dataengine.cp311-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp311-win_amd64.pyd +0 -0
- mindspore/_checkparam.py +42 -11
- mindspore/_extends/builtin_operations.py +3 -3
- mindspore/{_deprecated → _extends/optimize}/__init__.py +9 -3
- mindspore/_extends/optimize/cell_utils.py +96 -0
- mindspore/_extends/parallel_compile/akg_compiler/custom.py +1109 -0
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/__init__.py +3 -3
- mindspore/_extends/parse/compile_config.py +44 -22
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +1 -2
- mindspore/_extends/parse/parser.py +65 -84
- mindspore/_extends/parse/resources.py +39 -0
- mindspore/_extends/parse/standard_method.py +58 -14
- mindspore/_extends/parse/trope.py +8 -1
- mindspore/_extends/pijit/__init__.py +1 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +2 -5
- mindspore/amp.py +4 -22
- 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 +43 -12
- 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 +178 -53
- mindspore/common/_utils.py +9 -1
- mindspore/common/api.py +377 -203
- mindspore/common/dtype.py +108 -57
- mindspore/common/dump.py +11 -16
- mindspore/common/dynamic_shape/__init__.py +0 -0
- mindspore/common/{auto_dynamic_shape.py → dynamic_shape/auto_dynamic_shape.py} +17 -23
- mindspore/common/dynamic_shape/enable_dynamic.py +197 -0
- mindspore/common/file_system.py +59 -9
- mindspore/common/generator.py +5 -3
- mindspore/common/hook_handle.py +33 -5
- mindspore/common/jit_config.py +1 -1
- mindspore/common/jit_trace.py +84 -105
- mindspore/common/np_dtype.py +3 -3
- mindspore/common/parameter.py +27 -29
- mindspore/common/recompute.py +5 -7
- mindspore/common/sparse_tensor.py +0 -3
- mindspore/common/symbol.py +0 -1
- mindspore/common/tensor.py +117 -131
- mindspore/communication/_comm_helper.py +46 -4
- mindspore/communication/management.py +79 -7
- mindspore/context.py +67 -55
- mindspore/dataset/__init__.py +1 -1
- mindspore/dataset/audio/transforms.py +1 -1
- mindspore/dataset/core/config.py +38 -4
- mindspore/dataset/engine/datasets.py +350 -322
- mindspore/dataset/engine/datasets_user_defined.py +70 -24
- 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/c_transforms.py +2 -2
- mindspore/dataset/transforms/py_transforms.py +7 -3
- mindspore/dataset/transforms/transforms.py +10 -6
- mindspore/dataset/vision/__init__.py +1 -1
- mindspore/dataset/vision/py_transforms.py +8 -8
- mindspore/dataset/vision/transforms.py +17 -5
- mindspore/dataset/vision/utils.py +632 -21
- mindspore/dataset/vision/validators.py +1 -0
- mindspore/device_context/ascend/device.py +1 -1
- mindspore/device_context/ascend/op_tuning.py +35 -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 -4
- 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 +65 -5
- mindspore/include/api/cfg.h +24 -7
- mindspore/include/api/context.h +1 -0
- mindspore/include/api/delegate.h +10 -2
- mindspore/include/api/dual_abi_helper.h +100 -19
- mindspore/include/api/graph.h +14 -1
- mindspore/include/api/kernel.h +16 -3
- mindspore/include/api/kernel_api.h +9 -1
- mindspore/include/api/metrics/accuracy.h +9 -0
- mindspore/include/api/model.h +8 -1
- mindspore/include/api/model_group.h +4 -0
- mindspore/include/api/model_parallel_runner.h +2 -0
- mindspore/include/api/status.h +48 -10
- mindspore/include/api/types.h +8 -3
- mindspore/include/c_api/model_c.h +0 -58
- mindspore/include/c_api/tensor_c.h +0 -26
- mindspore/include/dataset/constants.h +9 -0
- mindspore/include/dataset/vision_ascend.h +1 -1
- mindspore/jpeg62.dll +0 -0
- mindspore/mindrecord/tools/cifar10.py +61 -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 +5 -0
- mindspore/mint/distributed/distributed.py +429 -23
- mindspore/mint/nn/__init__.py +1 -1
- mindspore/mint/nn/functional.py +53 -6
- mindspore/mint/nn/layer/_functions.py +163 -294
- mindspore/mint/nn/layer/activation.py +8 -6
- mindspore/mint/nn/layer/conv.py +140 -104
- mindspore/mint/nn/layer/normalization.py +11 -25
- 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 +491 -623
- mindspore/nn/grad/cell_grad.py +11 -12
- mindspore/nn/layer/activation.py +36 -36
- mindspore/nn/layer/basic.py +74 -77
- 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 +38 -40
- 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 +4 -6
- mindspore/nn/optim/adasum.py +2 -2
- mindspore/nn/optim/asgd.py +2 -0
- mindspore/nn/optim/lamb.py +1 -3
- mindspore/nn/optim/optimizer.py +1 -1
- mindspore/nn/optim/tft_wrapper.py +2 -3
- mindspore/nn/optim/thor.py +2 -2
- mindspore/nn/probability/distribution/_utils/utils.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 +73 -42
- mindspore/nn/wrap/grad_reducer.py +37 -52
- mindspore/nn/wrap/loss_scale.py +72 -74
- mindspore/numpy/array_creations.py +7 -7
- mindspore/numpy/fft.py +1 -1
- mindspore/numpy/math_ops.py +5 -5
- mindspore/numpy/utils_const.py +1 -1
- 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/_grad_experimental/grad_inner_ops.py +0 -9
- mindspore/ops/_op_impl/cpu/__init__.py +1 -0
- mindspore/{experimental/es/__init__.py → ops/_op_impl/cpu/joinedstr_op.py} +12 -6
- 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 +54 -13
- mindspore/ops/auto_generate/gen_extend_func.py +27 -145
- mindspore/ops/auto_generate/gen_ops_def.py +1027 -347
- mindspore/ops/auto_generate/gen_ops_prim.py +2341 -1117
- mindspore/ops/auto_generate/pyboost_inner_prim.py +31 -1
- mindspore/ops/composite/__init__.py +10 -0
- mindspore/ops/composite/base.py +9 -5
- mindspore/ops/composite/multitype_ops/__init__.py +12 -1
- mindspore/ops/composite/multitype_ops/_compile_utils.py +133 -109
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -1
- 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 +4 -1
- mindspore/ops/function/_add_attr_func.py +11 -6
- mindspore/ops/function/array_func.py +19 -102
- mindspore/ops/function/debug_func.py +8 -5
- mindspore/ops/function/grad/grad_func.py +5 -13
- mindspore/ops/function/math_func.py +77 -572
- mindspore/ops/function/nn_func.py +46 -94
- 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 +4 -4
- mindspore/ops/functional_overload.py +594 -18
- 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 +14 -18
- mindspore/ops/operations/_sequence_ops.py +1 -1
- mindspore/ops/operations/array_ops.py +5 -51
- mindspore/ops/operations/comm_ops.py +186 -41
- mindspore/ops/operations/custom_ops.py +303 -177
- mindspore/ops/operations/debug_ops.py +59 -4
- mindspore/ops/operations/image_ops.py +13 -13
- mindspore/ops/operations/manually_defined/ops_def.py +27 -28
- mindspore/ops/operations/math_ops.py +8 -9
- mindspore/ops/operations/nn_ops.py +8 -40
- mindspore/ops/primitive.py +9 -20
- mindspore/ops/tensor_method.py +63 -15
- 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 -16
- 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 +16 -23
- mindspore/parallel/_cell_wrapper.py +113 -45
- mindspore/parallel/_parallel_serialization.py +4 -3
- 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 +17 -12
- mindspore/parallel/_utils.py +5 -11
- mindspore/parallel/auto_parallel.py +35 -14
- mindspore/parallel/checkpoint_convert.py +3 -3
- mindspore/parallel/checkpoint_transform.py +13 -7
- mindspore/parallel/cluster/process_entity/_api.py +88 -49
- mindspore/parallel/cluster/process_entity/_utils.py +95 -7
- mindspore/parallel/cluster/run.py +48 -7
- mindspore/parallel/function/__init__.py +8 -1
- mindspore/parallel/function/reshard_func.py +12 -12
- mindspore/parallel/nn/__init__.py +15 -2
- mindspore/parallel/nn/parallel_cell_wrapper.py +50 -14
- mindspore/parallel/nn/parallel_grad_reducer.py +7 -14
- mindspore/parallel/shard.py +10 -25
- mindspore/parallel/transform_safetensors.py +469 -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_kernel_details_viewer.py +10 -9
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +43 -23
- 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/msprof_cmd_tool.py +2 -2
- mindspore/profiler/common/path_manager.py +9 -0
- mindspore/profiler/common/profiler_context.py +50 -29
- mindspore/profiler/common/profiler_info.py +0 -16
- mindspore/profiler/common/profiler_meta_data.py +1 -0
- mindspore/profiler/common/profiler_op_analyse.py +239 -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 +374 -338
- mindspore/profiler/envprofiler.py +42 -12
- mindspore/profiler/experimental_config.py +112 -7
- mindspore/profiler/mstx.py +33 -12
- mindspore/profiler/platform/__init__.py +2 -3
- mindspore/profiler/platform/cpu_profiler.py +10 -4
- mindspore/profiler/platform/npu_profiler.py +30 -20
- mindspore/profiler/profiler.py +218 -154
- mindspore/profiler/profiler_action_controller.py +65 -77
- mindspore/profiler/profiler_interface.py +2 -2
- 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 +2 -2
- mindspore/run_check/_check_version.py +7 -10
- mindspore/runtime/__init__.py +8 -6
- mindspore/runtime/event.py +10 -4
- mindspore/runtime/executor.py +87 -45
- mindspore/runtime/memory.py +31 -32
- mindspore/runtime/thread_bind_core.py +299 -165
- 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 +17 -7
- mindspore/train/amp.py +43 -23
- mindspore/train/callback/__init__.py +5 -5
- mindspore/train/callback/_callback.py +2 -1
- mindspore/train/callback/_checkpoint.py +4 -14
- mindspore/train/callback/_flops_collector.py +11 -7
- mindspore/train/callback/_landscape.py +0 -1
- mindspore/train/callback/_train_fault_tolerance.py +98 -21
- mindspore/train/data_sink.py +15 -6
- mindspore/train/dataset_helper.py +14 -5
- mindspore/train/model.py +133 -69
- mindspore/train/serialization.py +168 -126
- mindspore/train/summary/summary_record.py +13 -2
- mindspore/train/train_thor/model_thor.py +2 -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 +14 -17
- 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.0.dist-info}/METADATA +5 -4
- {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/RECORD +403 -442
- mindspore/_deprecated/jit.py +0 -198
- mindspore/_extends/remote/kernel_build_server_ascend.py +0 -75
- mindspore/communication/_hccl_management.py +0 -297
- mindspore/experimental/es/embedding_service.py +0 -891
- mindspore/experimental/es/embedding_service_layer.py +0 -581
- mindspore/profiler/common/validator/__init__.py +0 -14
- mindspore/profiler/common/validator/validate_path.py +0 -84
- 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/utils/hooks.py +0 -81
- /mindspore/common/{_auto_dynamic.py → dynamic_shape/_auto_dynamic.py} +0 -0
- {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/WHEEL +0 -0
- {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.dist-info}/entry_points.txt +0 -0
- {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0.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)
|