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
|
@@ -22,6 +22,7 @@ from mindspore.profiler.common.constant import (
|
|
|
22
22
|
AicoreMetrics,
|
|
23
23
|
ProfilerActivity,
|
|
24
24
|
ExportType,
|
|
25
|
+
HostSystem
|
|
25
26
|
)
|
|
26
27
|
from mindspore.profiler.common.profiler_parameters import ProfilerParameters
|
|
27
28
|
|
|
@@ -105,8 +106,12 @@ class EnvProfiler:
|
|
|
105
106
|
for param, (_, default_value) in ProfilerParameters.PARAMS.items():
|
|
106
107
|
if param in options and param not in cls.NOT_SUPPORTED_PARAMS:
|
|
107
108
|
if param == "activities" and isinstance(options[param], list):
|
|
108
|
-
params[param] = cls.
|
|
109
|
-
options[param], default_value
|
|
109
|
+
params[param] = cls._convert_enums_to_list(
|
|
110
|
+
options[param], default_value, ProfilerActivity
|
|
111
|
+
)
|
|
112
|
+
elif param == "host_sys" and isinstance(options[param], list):
|
|
113
|
+
params[param] = cls._convert_enums_to_list(
|
|
114
|
+
options[param], default_value, HostSystem
|
|
110
115
|
)
|
|
111
116
|
elif param == "aic_metrics":
|
|
112
117
|
params[param] = cls._convert_option_to_enum_value(
|
|
@@ -125,15 +130,15 @@ class EnvProfiler:
|
|
|
125
130
|
return params
|
|
126
131
|
|
|
127
132
|
@classmethod
|
|
128
|
-
def
|
|
133
|
+
def _convert_enums_to_list(cls, values, default_value, enum_class):
|
|
129
134
|
"""
|
|
130
|
-
Convert the
|
|
135
|
+
Convert the enums to the list.
|
|
131
136
|
"""
|
|
132
137
|
res = []
|
|
133
|
-
for
|
|
138
|
+
for value in values:
|
|
134
139
|
res.append(
|
|
135
140
|
cls._convert_option_to_enum_value(
|
|
136
|
-
|
|
141
|
+
enum_class, value, default_value
|
|
137
142
|
)
|
|
138
143
|
)
|
|
139
144
|
# remove duplicate
|
|
@@ -146,7 +151,7 @@ class EnvProfiler:
|
|
|
146
151
|
"""
|
|
147
152
|
res = []
|
|
148
153
|
for export_type in export_types:
|
|
149
|
-
if export_type
|
|
154
|
+
if export_type not in ("text", "db"):
|
|
150
155
|
logger.warning(
|
|
151
156
|
f"The value '{export_type}' of parameter '{ExportType.__name__}' is invalid, "
|
|
152
157
|
f"use default value '{default_value}' instead."
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
# ============================================================================
|
|
15
15
|
"""Experimental config file."""
|
|
16
16
|
|
|
17
|
-
from mindspore.profiler.common.constant import ProfilerLevel, AicoreMetrics
|
|
18
|
-
|
|
19
17
|
__all__ = ["_ExperimentalConfig"]
|
|
20
18
|
|
|
19
|
+
from mindspore.profiler.common.constant import ProfilerLevel, AicoreMetrics
|
|
20
|
+
|
|
21
21
|
|
|
22
22
|
class _ExperimentalConfig:
|
|
23
23
|
r"""
|
|
@@ -58,7 +58,7 @@ class _ExperimentalConfig:
|
|
|
58
58
|
- AicoreMetrics.MemoryAccess: Statistics on storage access bandwidth and storage capacity of main
|
|
59
59
|
storage and l2 cache etc.
|
|
60
60
|
l2_cache (bool, optional): (Ascend only) Whether to collect l2 cache data, collect when True.
|
|
61
|
-
Default: ``False`` . The l2_cache.csv file is generated in the ASCEND_PROFILER_OUTPUT folder.In
|
|
61
|
+
Default: ``False`` . The l2_cache.csv file is generated in the ASCEND_PROFILER_OUTPUT folder. In GE backend,
|
|
62
62
|
only wait and skip_first parameters in schedule configuration can be set to 0.
|
|
63
63
|
mstx (bool, optional): (Ascend only) Whether to collect light weight profiling data, collect when True.
|
|
64
64
|
Default: ``False`` .
|
|
@@ -71,6 +71,38 @@ class _ExperimentalConfig:
|
|
|
71
71
|
|
|
72
72
|
- ExportType.Text: Export text type data.
|
|
73
73
|
- ExportType.Db: Export db type data.
|
|
74
|
+
mstx_domain_include (list, optional): (Ascend only) Set the set of enabled domain names when the mstx switch
|
|
75
|
+
is turned on. The name must be of str type. Default value: ``[]``, indicating that this parameter
|
|
76
|
+
is not used to control the domain. This parameter is mutually exclusive with the mstx_domain_exclude
|
|
77
|
+
parameter and cannot be set. simultaneously. If both are set, only the mstx_domain_include parameter
|
|
78
|
+
takes effect.
|
|
79
|
+
mstx_domain_exclude (list, optional): (Ascend only) Set the set of domain names that are not enabled when the
|
|
80
|
+
mstx switch is turned on. The name must be of str type. Default value: ``[]``, indicating that this
|
|
81
|
+
parameter is not used to control the domain.
|
|
82
|
+
sys_io (bool, optional): (Ascend only) Whether to collect NIC and RoCE data. Default: ``False``.
|
|
83
|
+
sys_interconnection (bool, optional): (Ascend only) Whether to collect system interconnection data, including
|
|
84
|
+
HCCS data, PCIe data, and Stars Chip Trans. Default: ``False``.
|
|
85
|
+
host_sys (list, optional): Collect the data of system call classes on the host side.
|
|
86
|
+
Default: ``[]``, indicating that system class data on the host side is not collected.
|
|
87
|
+
You need to set `start_profile` of :class:`mindspore.profiler.profile` to ``False``.When collecting DISK or
|
|
88
|
+
OSRT data, it is necessary to install the iotop, perf, and ltrace third-party tools in advance.
|
|
89
|
+
For detailed steps, please refer to `Installing Third-party Tools
|
|
90
|
+
<https://www.hiascend.com/document/detail/zh/mindstudio/80RC1/T&ITools/Profiling/atlasprofiling_16_0136.
|
|
91
|
+
html>`_ .
|
|
92
|
+
After the third-party tool is successfully installed, user permissions need to be configured.
|
|
93
|
+
For detailed steps, please refer to `Configure User Permissions
|
|
94
|
+
<https://www.hiascend.com/document/detail/zh/mindstudio/80RC1/T&ITools/Profiling/atlasprofiling_16_0137.
|
|
95
|
+
html>`_ .
|
|
96
|
+
Note that in step 3 of configuring user permissions, the content in the msprof_data_collection.sh
|
|
97
|
+
script needs to be replaced with `msprof_data_collection.sh
|
|
98
|
+
<https://gitee.com/mindspore/mindspore/blob/master/docs/api/api_python/mindspore/script/
|
|
99
|
+
msprof_data_collection.sh>`_.
|
|
100
|
+
|
|
101
|
+
- HostSystem.CPU: Collect the CPU utilization at the process level.
|
|
102
|
+
- HostSystem.MEM: Collect the memory utilization at the process level.
|
|
103
|
+
- HostSystem.DISK: Collect the disk I/O utilization at the process level.
|
|
104
|
+
- HostSystem.NETWORK: Collect the network I/O utilization at the system level.
|
|
105
|
+
- HostSystem.OSRT: Collect system call stack data at the system level.
|
|
74
106
|
|
|
75
107
|
Raises:
|
|
76
108
|
RuntimeError: When the version of CANN does not match the version of MindSpore,
|
|
@@ -121,8 +153,8 @@ class _ExperimentalConfig:
|
|
|
121
153
|
... net = Net()
|
|
122
154
|
... # Note that the Profiler should be initialized before model.train
|
|
123
155
|
... with mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
124
|
-
... schedule=mindspore.profiler.schedule(wait=
|
|
125
|
-
... repeat=1, skip_first=
|
|
156
|
+
... schedule=mindspore.profiler.schedule(wait=0, warmup=0, active=1,
|
|
157
|
+
... repeat=1, skip_first=0),
|
|
126
158
|
... on_trace_ready=mindspore.profiler.tensorboard_trace_handler("./data"),
|
|
127
159
|
... profile_memory=False,
|
|
128
160
|
... experimental_config=experimental_config) as prof:
|
|
@@ -139,38 +171,76 @@ class _ExperimentalConfig:
|
|
|
139
171
|
l2_cache: bool = False,
|
|
140
172
|
mstx: bool = False,
|
|
141
173
|
data_simplification: bool = True,
|
|
142
|
-
export_type: list = None
|
|
174
|
+
export_type: list = None,
|
|
175
|
+
mstx_domain_include: list = None,
|
|
176
|
+
mstx_domain_exclude: list = None,
|
|
177
|
+
sys_io: bool = False,
|
|
178
|
+
sys_interconnection: bool = False,
|
|
179
|
+
host_sys: list = None
|
|
180
|
+
):
|
|
143
181
|
self._profiler_level = profiler_level
|
|
144
182
|
self._aic_metrics = aic_metrics
|
|
145
183
|
self._l2_cache = l2_cache
|
|
146
184
|
self._mstx = mstx
|
|
147
185
|
self._data_simplification = data_simplification
|
|
148
186
|
self._export_type = export_type
|
|
187
|
+
self._mstx_domain_include = mstx_domain_include
|
|
188
|
+
self._mstx_domain_exclude = mstx_domain_exclude
|
|
189
|
+
self._sys_io = sys_io
|
|
190
|
+
self._sys_interconnection = sys_interconnection
|
|
191
|
+
self._host_sys = host_sys
|
|
149
192
|
|
|
150
193
|
@property
|
|
151
194
|
def profiler_level(self) -> ProfilerLevel:
|
|
195
|
+
"""Get profiler_level."""
|
|
152
196
|
return self._profiler_level
|
|
153
197
|
|
|
154
198
|
@property
|
|
155
199
|
def aic_metrics(self) -> AicoreMetrics:
|
|
200
|
+
"""Get aic_metrics."""
|
|
156
201
|
return self._aic_metrics
|
|
157
202
|
|
|
158
203
|
@property
|
|
159
204
|
def l2_cache(self) -> bool:
|
|
205
|
+
"""Get l2_cache."""
|
|
160
206
|
return self._l2_cache
|
|
161
207
|
|
|
162
208
|
@property
|
|
163
209
|
def mstx(self) -> bool:
|
|
210
|
+
"""Get mstx."""
|
|
164
211
|
return self._mstx
|
|
165
212
|
|
|
166
213
|
@property
|
|
167
214
|
def data_simplification(self) -> bool:
|
|
215
|
+
"""Get data_simplification."""
|
|
168
216
|
return self._data_simplification
|
|
169
217
|
|
|
170
218
|
@property
|
|
171
219
|
def export_type(self) -> list:
|
|
220
|
+
"""Get export_type."""
|
|
172
221
|
return self._export_type
|
|
173
222
|
|
|
223
|
+
@property
|
|
224
|
+
def mstx_domain_include(self) -> list:
|
|
225
|
+
return self._mstx_domain_include
|
|
226
|
+
|
|
227
|
+
@property
|
|
228
|
+
def mstx_domain_exclude(self) -> list:
|
|
229
|
+
return self._mstx_domain_exclude
|
|
230
|
+
|
|
231
|
+
@property
|
|
232
|
+
def sys_io(self) -> bool:
|
|
233
|
+
return self._sys_io
|
|
234
|
+
|
|
235
|
+
@property
|
|
236
|
+
def sys_interconnection(self) -> bool:
|
|
237
|
+
return self._sys_interconnection
|
|
238
|
+
|
|
239
|
+
@property
|
|
240
|
+
def host_sys(self) -> list:
|
|
241
|
+
"""Get host_sys."""
|
|
242
|
+
return self._host_sys
|
|
243
|
+
|
|
174
244
|
# Setters
|
|
175
245
|
@profiler_level.setter
|
|
176
246
|
def profiler_level(self, value: ProfilerLevel):
|
|
@@ -195,3 +265,23 @@ class _ExperimentalConfig:
|
|
|
195
265
|
@export_type.setter
|
|
196
266
|
def export_type(self, value: list):
|
|
197
267
|
self._export_type = value
|
|
268
|
+
|
|
269
|
+
@mstx_domain_include.setter
|
|
270
|
+
def mstx_domain_include(self, value: list):
|
|
271
|
+
self._mstx_domain_include = value
|
|
272
|
+
|
|
273
|
+
@mstx_domain_exclude.setter
|
|
274
|
+
def mstx_domain_exclude(self, value: list):
|
|
275
|
+
self._mstx_domain_exclude = value
|
|
276
|
+
|
|
277
|
+
@sys_io.setter
|
|
278
|
+
def sys_io(self, value: bool):
|
|
279
|
+
self._sys_io = value
|
|
280
|
+
|
|
281
|
+
@sys_interconnection.setter
|
|
282
|
+
def sys_interconnection(self, value: bool):
|
|
283
|
+
self._sys_interconnection = value
|
|
284
|
+
|
|
285
|
+
@host_sys.setter
|
|
286
|
+
def host_sys(self, value: list):
|
|
287
|
+
self._host_sys = value
|
mindspore/profiler/mstx.py
CHANGED
|
@@ -39,7 +39,7 @@ class Mstx:
|
|
|
39
39
|
)
|
|
40
40
|
|
|
41
41
|
@staticmethod
|
|
42
|
-
def mark(message: str, stream: mindspore.runtime.Stream = None) -> None:
|
|
42
|
+
def mark(message: str, stream: mindspore.runtime.Stream = None, domain: str = "default") -> None:
|
|
43
43
|
"""Add a marker point in profiling.
|
|
44
44
|
|
|
45
45
|
Args:
|
|
@@ -47,6 +47,7 @@ class Mstx:
|
|
|
47
47
|
stream (:class:`~.runtime.Stream`, optional): NPU stream for async execution, expected type:
|
|
48
48
|
mindspore.runtime.Stream. Default: ``None``, which means only marking on host side without
|
|
49
49
|
marking on device stream.
|
|
50
|
+
domain (str, optional): Domain name. Default: ``default``.
|
|
50
51
|
|
|
51
52
|
Examples:
|
|
52
53
|
>>> import numpy as np
|
|
@@ -77,6 +78,7 @@ class Mstx:
|
|
|
77
78
|
... model = ms.train.Model(net, loss, optimizer)
|
|
78
79
|
... # Add marker before training
|
|
79
80
|
... mstx.mark("train start", stream)
|
|
81
|
+
... mstx.mark("train start", stream, "domain_name")
|
|
80
82
|
... model.train(1, data)
|
|
81
83
|
... # Add marker after training
|
|
82
84
|
... mstx.mark("train end", stream)
|
|
@@ -112,19 +114,24 @@ class Mstx:
|
|
|
112
114
|
if not message or not isinstance(message, str):
|
|
113
115
|
logging.warning("Invalid message for mstx.mark func. Please input valid message string.")
|
|
114
116
|
return
|
|
117
|
+
if not isinstance(domain, str) or domain == "":
|
|
118
|
+
logging.warning(
|
|
119
|
+
"Invalid domain name for mstx.mark func. Please input str and can not be empty."
|
|
120
|
+
)
|
|
121
|
+
return
|
|
115
122
|
if stream:
|
|
116
123
|
if isinstance(stream, Stream):
|
|
117
124
|
device_stream = stream.device_stream()
|
|
118
|
-
Mstx.NPU_PROFILER.mstx_mark(message, device_stream)
|
|
125
|
+
Mstx.NPU_PROFILER.mstx_mark(message, device_stream, domain)
|
|
119
126
|
else:
|
|
120
127
|
logging.warning(
|
|
121
128
|
f"Invalid stream for mstx.mark func. Expected mindspore.runtime.Stream but got {type(stream)}.",
|
|
122
129
|
)
|
|
123
130
|
else:
|
|
124
|
-
Mstx.NPU_PROFILER.mstx_mark(message)
|
|
131
|
+
Mstx.NPU_PROFILER.mstx_mark(message, None, domain)
|
|
125
132
|
|
|
126
133
|
@staticmethod
|
|
127
|
-
def range_start(message: str, stream: mindspore.runtime.Stream = None) -> int:
|
|
134
|
+
def range_start(message: str, stream: mindspore.runtime.Stream = None, domain: str = "default") -> int:
|
|
128
135
|
"""Start a profiling range.
|
|
129
136
|
|
|
130
137
|
Args:
|
|
@@ -132,6 +139,7 @@ class Mstx:
|
|
|
132
139
|
stream (:class:`~.runtime.Stream`, optional): NPU stream for async execution, expected type:
|
|
133
140
|
mindspore.runtime.Stream. Default: ``None``, which means only starting mstx range on
|
|
134
141
|
host side without starting on device stream.
|
|
142
|
+
domain (str, optional): Domain name. Default: ``default``.
|
|
135
143
|
|
|
136
144
|
Returns:
|
|
137
145
|
int, range ID for range_end.
|
|
@@ -165,9 +173,11 @@ class Mstx:
|
|
|
165
173
|
... model = ms.train.Model(net, loss, optimizer)
|
|
166
174
|
... # Start profiling range
|
|
167
175
|
... range_id = mstx.range_start("training process", stream)
|
|
176
|
+
... range_id2 = mstx.range_start("training process", stream, "domain_name")
|
|
168
177
|
... model.train(1, data)
|
|
169
178
|
... # End profiling range
|
|
170
179
|
... mstx.range_end(range_id)
|
|
180
|
+
... mstx.range_end(range_id2, "domain_name")
|
|
171
181
|
>>>
|
|
172
182
|
>>> if __name__ == '__main__':
|
|
173
183
|
... # Note: mstx only supports Ascend device and cannot be used in mindspore.nn.Cell.construct
|
|
@@ -201,10 +211,15 @@ class Mstx:
|
|
|
201
211
|
logging.warning("Invalid message for mstx.range_start func. Please input valid message string.")
|
|
202
212
|
return 0
|
|
203
213
|
# pylint: disable=no-else-return
|
|
214
|
+
if not isinstance(domain, str) or domain == "":
|
|
215
|
+
logging.warning(
|
|
216
|
+
"Invalid domain name for mstx.range_start func. Please input str and can not be empty."
|
|
217
|
+
)
|
|
218
|
+
return 0
|
|
204
219
|
if stream:
|
|
205
220
|
if isinstance(stream, Stream):
|
|
206
221
|
device_stream = stream.device_stream()
|
|
207
|
-
return Mstx.NPU_PROFILER.mstx_range_start(message, device_stream)
|
|
222
|
+
return Mstx.NPU_PROFILER.mstx_range_start(message, device_stream, domain)
|
|
208
223
|
else:
|
|
209
224
|
logging.warning(
|
|
210
225
|
f"Invalid stream for mstx.range_start func. "
|
|
@@ -212,20 +227,21 @@ class Mstx:
|
|
|
212
227
|
)
|
|
213
228
|
return 0
|
|
214
229
|
else:
|
|
215
|
-
return Mstx.NPU_PROFILER.mstx_range_start(message)
|
|
230
|
+
return Mstx.NPU_PROFILER.mstx_range_start(message, None, domain)
|
|
216
231
|
|
|
217
232
|
@staticmethod
|
|
218
|
-
def range_end(range_id: int) -> None:
|
|
233
|
+
def range_end(range_id: int, domain: str = "default") -> None:
|
|
219
234
|
"""End a profiling range.
|
|
220
235
|
|
|
221
236
|
Args:
|
|
222
237
|
range_id (int): Range ID from range_start.
|
|
238
|
+
domain (str, optional): Domain name. Default: ``default``.
|
|
223
239
|
|
|
224
240
|
Examples:
|
|
225
241
|
>>> # Please refer to the example in range_start
|
|
226
|
-
>>> # range_id = mstx.range_start("training process", stream)
|
|
242
|
+
>>> # range_id = mstx.range_start("training process", stream, "domain_name")
|
|
227
243
|
>>> # model.train(1, data)
|
|
228
|
-
>>> # mstx.range_end(range_id)
|
|
244
|
+
>>> # mstx.range_end(range_id, "domain_name")
|
|
229
245
|
"""
|
|
230
246
|
if not Mstx.enable or range_id == 0:
|
|
231
247
|
return
|
|
@@ -234,9 +250,14 @@ class Mstx:
|
|
|
234
250
|
if not Mstx.NPU_PROFILER:
|
|
235
251
|
logging.warning("Invalid npu profiler for mstx, please check.")
|
|
236
252
|
return
|
|
237
|
-
if not isinstance(range_id, int):
|
|
253
|
+
if not isinstance(range_id, int) or range_id < 0:
|
|
254
|
+
logging.warning(
|
|
255
|
+
"Invalid range_id for mstx.range_end func. Please input return value from mstx.range_start."
|
|
256
|
+
)
|
|
257
|
+
return
|
|
258
|
+
if not isinstance(domain, str) or domain == "":
|
|
238
259
|
logging.warning(
|
|
239
|
-
"Invalid
|
|
260
|
+
"Invalid domain name for mstx.range_end func. Please input str and can not be empty."
|
|
240
261
|
)
|
|
241
262
|
return
|
|
242
|
-
Mstx.NPU_PROFILER.mstx_range_end(range_id)
|
|
263
|
+
Mstx.NPU_PROFILER.mstx_range_end(range_id, domain)
|
|
@@ -13,9 +13,8 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ============================================================================
|
|
15
15
|
"""Platform profiler"""
|
|
16
|
+
__all__ = ["CpuProfiler", "GpuProfiler", "NpuProfiler"]
|
|
17
|
+
|
|
16
18
|
from .cpu_profiler import CpuProfiler
|
|
17
19
|
from .gpu_profiler import GpuProfiler
|
|
18
20
|
from .npu_profiler import NpuProfiler
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__all__ = ["CpuProfiler", "GpuProfiler", "NpuProfiler"]
|
|
@@ -18,7 +18,6 @@ import glob
|
|
|
18
18
|
import json
|
|
19
19
|
from typing import List, Optional
|
|
20
20
|
|
|
21
|
-
from mindspore import context
|
|
22
21
|
from mindspore import log as logger
|
|
23
22
|
import mindspore._c_dataengine as cde
|
|
24
23
|
import mindspore._c_expression as c_expression
|
|
@@ -55,6 +54,7 @@ from mindspore.profiler.analysis.viewer.ms_minddata_viewer import (
|
|
|
55
54
|
MindDataPipelineRawViewer,
|
|
56
55
|
MindDataPiplineSummaryViewer,
|
|
57
56
|
)
|
|
57
|
+
from mindspore.profiler.analysis.viewer.ms_operator_details_viewer import MsOperatorDetailsViewer
|
|
58
58
|
from mindspore.profiler.common.util import print_msg_with_pid
|
|
59
59
|
from mindspore.profiler.common.log import ProfilerLogger
|
|
60
60
|
from mindspore.profiler.mstx import Mstx
|
|
@@ -86,11 +86,6 @@ class NpuProfiler(BaseProfiler):
|
|
|
86
86
|
|
|
87
87
|
# record original profiler params
|
|
88
88
|
self._prof_info.profiler_parameters = self._prof_ctx.original_params
|
|
89
|
-
self._prof_info.ms_profiler_info = {
|
|
90
|
-
"context_mode": context.get_context("mode"),
|
|
91
|
-
"rank_id": self._prof_ctx.rank_id,
|
|
92
|
-
"device_id": self._prof_ctx.device_id,
|
|
93
|
-
}
|
|
94
89
|
|
|
95
90
|
# initialize minddata profiler
|
|
96
91
|
if self._prof_ctx.data_process:
|
|
@@ -136,6 +131,20 @@ class NpuProfiler(BaseProfiler):
|
|
|
136
131
|
self._md_profiler.stop()
|
|
137
132
|
self._md_profiler.save(self._prof_ctx.framework_path)
|
|
138
133
|
|
|
134
|
+
if ProfilerActivity.NPU in self._prof_ctx.activities:
|
|
135
|
+
prof_dir = glob.glob(os.path.join(self._prof_ctx.ascend_ms_dir, "PROF_*"))
|
|
136
|
+
if not prof_dir:
|
|
137
|
+
logger.error(f"No PROF_* directory found in {self._prof_ctx.ascend_ms_dir}")
|
|
138
|
+
return
|
|
139
|
+
|
|
140
|
+
self._prof_ctx.msprof_profile_path = prof_dir[0]
|
|
141
|
+
self._prof_ctx.device_id = self._prof_ctx.msprof_profile_device_path.split("_")[-1]
|
|
142
|
+
|
|
143
|
+
self._prof_info.ms_profiler_info = {
|
|
144
|
+
"rank_id": self._prof_ctx.rank_id,
|
|
145
|
+
"device_id": self._prof_ctx.device_id,
|
|
146
|
+
}
|
|
147
|
+
|
|
139
148
|
self._prof_info.save(self._prof_ctx.ascend_ms_dir, self._prof_ctx.rank_id)
|
|
140
149
|
|
|
141
150
|
def analyse(self, **kwargs) -> None:
|
|
@@ -189,12 +198,6 @@ class NPUProfilerAnalysis:
|
|
|
189
198
|
"""
|
|
190
199
|
prof_ctx = ProfilerContext()
|
|
191
200
|
if ProfilerActivity.NPU in prof_ctx.activities:
|
|
192
|
-
prof_dir = glob.glob(os.path.join(prof_ctx.ascend_ms_dir, "PROF_*"))
|
|
193
|
-
if not prof_dir:
|
|
194
|
-
logger.error(f"No PROF_* directory found in {prof_ctx.ascend_ms_dir}")
|
|
195
|
-
return
|
|
196
|
-
|
|
197
|
-
prof_ctx.msprof_profile_path = prof_dir[0]
|
|
198
201
|
ProfilerPathManager().clean_analysis_cache()
|
|
199
202
|
ProfilerPathManager().create_output_path()
|
|
200
203
|
ProfilerInfo().load_time_parameters(
|
|
@@ -224,7 +227,6 @@ class NPUProfilerAnalysis:
|
|
|
224
227
|
prof_ctx.set_params()
|
|
225
228
|
prof_ctx.load_offline_profiler_params(prof_info.profiler_parameters)
|
|
226
229
|
prof_ctx.jit_level = prof_info.jit_level
|
|
227
|
-
prof_ctx.context_mode = prof_info.context_mode
|
|
228
230
|
|
|
229
231
|
if ProfilerActivity.NPU in prof_ctx.activities:
|
|
230
232
|
prof_dir = glob.glob(os.path.join(ascend_ms_dir, "PROF_*"))
|
|
@@ -274,18 +276,20 @@ class NPUProfilerAnalysis:
|
|
|
274
276
|
task_mgr = TaskManager()
|
|
275
277
|
activities = kwargs.get("activities", [])
|
|
276
278
|
export_type = kwargs.get("export_type", [])
|
|
279
|
+
record_shapes = kwargs.get("record_shapes", False)
|
|
277
280
|
enable_data_process = kwargs.get("data_process", False)
|
|
278
281
|
|
|
279
282
|
# CANN flow parser
|
|
280
283
|
cann_flow_parsers = []
|
|
281
284
|
|
|
282
285
|
if export_type == [ExportType.Db.value]:
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
286
|
+
if ProfilerActivity.NPU.value in activities:
|
|
287
|
+
cann_flow_parsers.append(
|
|
288
|
+
AscendMsprofParser(**kwargs)
|
|
289
|
+
)
|
|
290
|
+
task_mgr.create_flow(
|
|
291
|
+
*cann_flow_parsers, flow_name="cann_flow", show_process=True
|
|
292
|
+
)
|
|
289
293
|
return task_mgr
|
|
290
294
|
|
|
291
295
|
if ProfilerActivity.NPU.value in activities:
|
|
@@ -301,6 +305,12 @@ class NPUProfilerAnalysis:
|
|
|
301
305
|
MsDatasetViewer(**kwargs).save
|
|
302
306
|
)
|
|
303
307
|
)
|
|
308
|
+
if record_shapes:
|
|
309
|
+
cann_flow_parsers.append(
|
|
310
|
+
FrameworkCannRelationParser(**kwargs).register_post_hook(
|
|
311
|
+
MsOperatorDetailsViewer(**kwargs).save
|
|
312
|
+
)
|
|
313
|
+
)
|
|
304
314
|
|
|
305
315
|
if ProfilerActivity.NPU.value in activities:
|
|
306
316
|
cann_flow_parsers.append(
|
mindspore/profiler/profiler.py
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"""Profiling api file."""
|
|
16
16
|
import os
|
|
17
17
|
import json
|
|
18
|
+
import warnings
|
|
18
19
|
from typing import Optional, Dict, Callable, Any
|
|
19
20
|
from sys import getsizeof
|
|
20
21
|
from concurrent.futures import ProcessPoolExecutor, as_completed
|
|
@@ -91,8 +92,8 @@ def tensorboard_trace_handler(dir_name: str = None, worker_name: str = None,
|
|
|
91
92
|
... net = Net()
|
|
92
93
|
... # Note that the Profiler should be initialized before model.train
|
|
93
94
|
... with mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
94
|
-
... schedule=mindspore.profiler.schedule(wait=
|
|
95
|
-
... repeat=1, skip_first=
|
|
95
|
+
... schedule=mindspore.profiler.schedule(wait=0, warmup=0, active=1,
|
|
96
|
+
... repeat=1, skip_first=0),
|
|
96
97
|
... on_trace_ready=mindspore.profiler.tensorboard_trace_handler("./data"),
|
|
97
98
|
... profile_memory=False,
|
|
98
99
|
... experimental_config=experimental_config) as prof:
|
|
@@ -156,8 +157,8 @@ class Profiler:
|
|
|
156
157
|
For details, see :func:`mindspore.profiler.tensorboard_trace_handler` .
|
|
157
158
|
profile_memory (bool, optional): (Ascend only) Whether to collect tensor memory data, collect when ``True`` .
|
|
158
159
|
When using this parameter, `activities` must set to ``[ProfilerActivity.CPU, ProfilerActivity.NPU]``.
|
|
159
|
-
Collecting operator memory data when
|
|
160
|
-
|
|
160
|
+
Collecting operator memory data when GE backend requires collecting from the first step.
|
|
161
|
+
Default: ``False`` . The operator name currently collected by this parameter is incomplete.
|
|
161
162
|
This issue will be resolved in later versions. It is recommended to use the environment variable
|
|
162
163
|
``MS_ALLOC_CONF`` instead.
|
|
163
164
|
aic_metrics (AicoreMetrics, optional): (Ascend only) Types of AICORE performance data collected,
|
|
@@ -192,7 +193,7 @@ class Profiler:
|
|
|
192
193
|
If set to True, only the profiler deliverables and raw performance data under the PROF_XXX directory are
|
|
193
194
|
kept to save space. Default value: ``True`` .
|
|
194
195
|
l2_cache (bool, optional): (Ascend only) Whether to collect l2 cache data, collect when True.
|
|
195
|
-
Default: ``False`` . The l2_cache.csv file is generated in the ASCEND_PROFILER_OUTPUT folder.In
|
|
196
|
+
Default: ``False`` . The l2_cache.csv file is generated in the ASCEND_PROFILER_OUTPUT folder.In GE backend,
|
|
196
197
|
only wait and skip_first parameters in schedule configuration can be set to 0.
|
|
197
198
|
hbm_ddr (bool, optional): (Ascend only) Whether to collect On-Chip Memory/DDR read and write rate data,
|
|
198
199
|
collect when True. Default: ``False`` .
|
|
@@ -492,8 +493,7 @@ class Profiler:
|
|
|
492
493
|
>>> import mindspore as ms
|
|
493
494
|
>>> import mindspore.dataset as ds
|
|
494
495
|
>>> from mindspore import context, nn, Profiler
|
|
495
|
-
>>> from mindspore.profiler import schedule, tensorboard_trace_handler
|
|
496
|
-
>>> ExportType, ProfilerActivity
|
|
496
|
+
>>> from mindspore.profiler import schedule, tensorboard_trace_handler
|
|
497
497
|
>>>
|
|
498
498
|
>>> class Net(nn.Cell):
|
|
499
499
|
... def __init__(self):
|
|
@@ -646,6 +646,9 @@ class Profiler:
|
|
|
646
646
|
>>>
|
|
647
647
|
>>> profiler.op_analyse(op_name=["BiasAdd", "Conv2D"])
|
|
648
648
|
"""
|
|
649
|
+
warnings.warn(
|
|
650
|
+
"mindspore.Profiler.op_analyse is deprecated and will be removed in future versions. "
|
|
651
|
+
)
|
|
649
652
|
if self._prof_context.device_target == DeviceTarget.NPU.value:
|
|
650
653
|
raise RuntimeError("The Interface 'Profiler.op_analyse()' is not supported on Ascend currently.")
|
|
651
654
|
|
|
@@ -659,9 +662,9 @@ class Profiler:
|
|
|
659
662
|
if not op_name:
|
|
660
663
|
raise TypeError(f"For 'Profiler.op_analyse()', the parameter op_name cannot be "", '' or [].")
|
|
661
664
|
|
|
662
|
-
from mindspore.profiler.
|
|
665
|
+
from mindspore.profiler.common.profiler_op_analyse import OpAnalyser
|
|
663
666
|
dev_id = self._prof_context.device_id if device_id is None else device_id
|
|
664
|
-
parser =
|
|
667
|
+
parser = OpAnalyser(self._prof_context.framework_path, dev_id, op_name)
|
|
665
668
|
op_info = parser.parse()
|
|
666
669
|
return op_info
|
|
667
670
|
|
|
@@ -685,6 +688,8 @@ class Profile:
|
|
|
685
688
|
This class to enable the profiling of MindSpore neural networks.
|
|
686
689
|
MindSpore users can import the mindspore.profiler.profile, initialize the profile object to start profiling,
|
|
687
690
|
Use profile.start() to start the analysis, and use profile.stop() to stop collecting and analyzing the results.
|
|
691
|
+
For detailed usage, please refer to `Ascend Performance Tuning
|
|
692
|
+
<https://www.mindspore.cn/tutorials/en/master/debug/profiler.html>`_ .
|
|
688
693
|
Users can visualize the results using the `MindStudio Insight
|
|
689
694
|
<https://www.hiascend.com/developer/download/community/result?module=pt+sto+cann>`_ tool.
|
|
690
695
|
Now, profile supports AICORE operator, AICPU operator, HostCPU operator, memory,
|
|
@@ -707,8 +712,8 @@ class Profile:
|
|
|
707
712
|
For details, see :func:`mindspore.profiler.tensorboard_trace_handler` .
|
|
708
713
|
profile_memory (bool, optional): (Ascend only) Whether to collect tensor memory data, collect when ``True`` .
|
|
709
714
|
When using this parameter, `activities` must set to ``[ProfilerActivity.CPU, ProfilerActivity.NPU]``.
|
|
710
|
-
Collecting operator memory data when
|
|
711
|
-
|
|
715
|
+
Collecting operator memory data when GE backend requires collecting from the first step.
|
|
716
|
+
Default: ``False`` . The operator name currently collected by this parameter is incomplete.
|
|
712
717
|
This issue will be resolved in later versions. It is recommended to use the environment variable
|
|
713
718
|
``MS_ALLOC_CONF`` instead.
|
|
714
719
|
with_stack (bool, optional): (Ascend only) Whether to collect frame host call stack data
|
|
@@ -731,6 +736,9 @@ class Profile:
|
|
|
731
736
|
The duration of the operator is the difference between the two timestamps.
|
|
732
737
|
- False: The asynchronous way. The duration of the operator is that of sending from the CPU to the GPU.
|
|
733
738
|
This method can reduce the impact of adding profiler on overall training time.
|
|
739
|
+
record_shapes (bool, optional): (Ascend only) Whether to collect operator input tensor shapes data, collect
|
|
740
|
+
when ``True`` . When using this parameter, `activities` must include ``ProfilerActivity.CPU``.
|
|
741
|
+
Default: ``False``.
|
|
734
742
|
experimental_config (_ExperimentalConfig, optional): expandable parameters can be configured in this
|
|
735
743
|
configuration item. For details, see :class:`mindspore.profiler._ExperimentalConfig` .
|
|
736
744
|
Raises:
|
|
@@ -782,8 +790,8 @@ class Profile:
|
|
|
782
790
|
... net = Net()
|
|
783
791
|
... # Note that the Profiler should be initialized before model.train
|
|
784
792
|
... with mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
785
|
-
... schedule=mindspore.profiler.schedule(wait=
|
|
786
|
-
... repeat=1, skip_first=
|
|
793
|
+
... schedule=mindspore.profiler.schedule(wait=0, warmup=0, active=1,
|
|
794
|
+
... repeat=1, skip_first=0),
|
|
787
795
|
... on_trace_ready=mindspore.profiler.
|
|
788
796
|
... tensorboard_trace_handler("./data"),
|
|
789
797
|
... profile_memory=False,
|
|
@@ -806,6 +814,7 @@ class Profile:
|
|
|
806
814
|
hbm_ddr: bool = False,
|
|
807
815
|
pcie: bool = False,
|
|
808
816
|
sync_enable: bool = True,
|
|
817
|
+
record_shapes: bool = False,
|
|
809
818
|
schedule: Schedule = None,
|
|
810
819
|
on_trace_ready: Optional[Callable[..., Any]] = None,
|
|
811
820
|
experimental_config: Optional[_ExperimentalConfig] = None,
|
|
@@ -819,6 +828,7 @@ class Profile:
|
|
|
819
828
|
self._hbm_ddr = hbm_ddr
|
|
820
829
|
self._pcie = pcie
|
|
821
830
|
self._sync_enable = sync_enable
|
|
831
|
+
self._record_shapes = record_shapes
|
|
822
832
|
self._schedule = schedule
|
|
823
833
|
self._on_trace_ready = on_trace_ready
|
|
824
834
|
self._experimental_config = experimental_config or _ExperimentalConfig()
|
|
@@ -835,9 +845,15 @@ class Profile:
|
|
|
835
845
|
hbm_ddr=self._hbm_ddr,
|
|
836
846
|
pcie=self._pcie,
|
|
837
847
|
sync_enable=self._sync_enable,
|
|
848
|
+
record_shapes=self._record_shapes,
|
|
838
849
|
data_simplification=self._experimental_config.data_simplification,
|
|
839
850
|
mstx=self._experimental_config.mstx,
|
|
851
|
+
mstx_domain_include=self._experimental_config.mstx_domain_include,
|
|
852
|
+
mstx_domain_exclude=self._experimental_config.mstx_domain_exclude,
|
|
840
853
|
export_type=self._experimental_config.export_type,
|
|
854
|
+
sys_io=self._experimental_config.sys_io,
|
|
855
|
+
sys_interconnection=self._experimental_config.sys_interconnection,
|
|
856
|
+
host_sys=self._experimental_config.host_sys,
|
|
841
857
|
schedule=self._schedule,
|
|
842
858
|
on_trace_ready=self._on_trace_ready,
|
|
843
859
|
)
|
|
@@ -902,8 +918,8 @@ class Profile:
|
|
|
902
918
|
... net = Net()
|
|
903
919
|
... # Note that the Profiler should be initialized before model.train
|
|
904
920
|
... prof = mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
905
|
-
... schedule=mindspore.profiler.schedule(wait=
|
|
906
|
-
... repeat=1, skip_first=
|
|
921
|
+
... schedule=mindspore.profiler.schedule(wait=0, warmup=0, active=1,
|
|
922
|
+
... repeat=1, skip_first=0),
|
|
907
923
|
... on_trace_ready=mindspore.profiler.
|
|
908
924
|
... tensorboard_trace_handler("./data"),
|
|
909
925
|
... profile_memory=False,
|
|
@@ -966,8 +982,8 @@ class Profile:
|
|
|
966
982
|
... net = Net()
|
|
967
983
|
... # Note that the Profiler should be initialized before model.train
|
|
968
984
|
... prof = mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
969
|
-
... schedule=mindspore.profiler.schedule(wait=
|
|
970
|
-
... repeat=1, skip_first=
|
|
985
|
+
... schedule=mindspore.profiler.schedule(wait=0, warmup=0, active=1,
|
|
986
|
+
... repeat=1, skip_first=0),
|
|
971
987
|
... on_trace_ready=mindspore.profiler.
|
|
972
988
|
... tensorboard_trace_handler("./data"),
|
|
973
989
|
... profile_memory=False,
|
|
@@ -1031,8 +1047,8 @@ class Profile:
|
|
|
1031
1047
|
... net = Net()
|
|
1032
1048
|
... # Note that the Profiler should be initialized before model.train
|
|
1033
1049
|
... with mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
1034
|
-
... schedule=mindspore.profiler.schedule(wait=
|
|
1035
|
-
... repeat=1, skip_first=
|
|
1050
|
+
... schedule=mindspore.profiler.schedule(wait=0, warmup=0, active=1,
|
|
1051
|
+
... repeat=1, skip_first=0),
|
|
1036
1052
|
... on_trace_ready=mindspore.profiler.tensorboard_trace_handler("./data"),
|
|
1037
1053
|
... profile_memory=False,
|
|
1038
1054
|
... experimental_config=experimental_config) as prof:
|