mindspore 2.4.1__cp39-cp39-win_amd64.whl → 2.5.0__cp39-cp39-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 +8 -3
- mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
- mindspore/_checkparam.py +0 -5
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/compile_config.py +64 -0
- mindspore/_extends/parse/deprecated/__init__.py +0 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +375 -0
- mindspore/_extends/parse/parser.py +23 -5
- mindspore/_extends/parse/standard_method.py +123 -27
- mindspore/_extends/pijit/pijit_func_white_list.py +1 -1
- mindspore/amp.py +7 -1
- 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/boost_cell_wrapper.py +136 -41
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +3 -1
- mindspore/common/_register_for_tensor.py +0 -1
- mindspore/common/_stub_tensor.py +25 -4
- mindspore/common/_tensor_cpp_method.py +17 -0
- mindspore/common/_tensor_docs.py +6132 -0
- mindspore/common/api.py +99 -25
- mindspore/common/dtype.py +34 -34
- mindspore/common/dump.py +2 -1
- mindspore/common/file_system.py +8 -1
- mindspore/common/generator.py +2 -0
- mindspore/common/hook_handle.py +3 -1
- mindspore/common/initializer.py +3 -4
- mindspore/common/lazy_inline.py +8 -2
- mindspore/common/mindir_util.py +10 -2
- mindspore/common/parameter.py +30 -27
- mindspore/common/tensor.py +713 -1337
- mindspore/communication/__init__.py +1 -1
- mindspore/communication/_comm_helper.py +10 -0
- mindspore/communication/comm_func.py +215 -173
- mindspore/communication/management.py +23 -20
- mindspore/context.py +292 -193
- mindspore/dataset/__init__.py +23 -19
- mindspore/dataset/callback/ds_callback.py +2 -1
- mindspore/dataset/core/config.py +84 -3
- mindspore/dataset/engine/cache_admin.py +3 -3
- mindspore/dataset/engine/cache_client.py +5 -4
- mindspore/dataset/engine/datasets.py +192 -149
- mindspore/dataset/engine/datasets_audio.py +14 -0
- mindspore/dataset/engine/datasets_standard_format.py +28 -11
- mindspore/dataset/engine/datasets_text.py +38 -1
- mindspore/dataset/engine/datasets_user_defined.py +125 -65
- mindspore/dataset/engine/datasets_vision.py +81 -8
- mindspore/dataset/engine/iterators.py +281 -63
- mindspore/dataset/engine/obs/util.py +8 -0
- mindspore/dataset/engine/queue.py +40 -0
- mindspore/dataset/engine/samplers.py +26 -2
- mindspore/dataset/engine/serializer_deserializer.py +1 -1
- mindspore/dataset/engine/validators.py +43 -11
- mindspore/dataset/transforms/py_transforms_util.py +17 -0
- mindspore/dataset/transforms/transforms.py +29 -12
- mindspore/dataset/vision/validators.py +1 -2
- mindspore/device_context/__init__.py +21 -0
- mindspore/device_context/ascend/__init__.py +25 -0
- mindspore/device_context/ascend/device.py +72 -0
- mindspore/device_context/ascend/op_debug.py +94 -0
- mindspore/device_context/ascend/op_precision.py +193 -0
- mindspore/device_context/ascend/op_tuning.py +127 -0
- mindspore/device_context/cpu/__init__.py +25 -0
- mindspore/device_context/cpu/device.py +62 -0
- mindspore/device_context/cpu/op_tuning.py +43 -0
- mindspore/device_context/gpu/__init__.py +21 -0
- mindspore/device_context/gpu/device.py +70 -0
- mindspore/device_context/gpu/op_precision.py +67 -0
- mindspore/device_context/gpu/op_tuning.py +175 -0
- mindspore/device_manager.py +134 -0
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/llm_boost/__init__.py +3 -2
- mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
- mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
- mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
- mindspore/experimental/llm_boost/atb/boost_base.py +239 -64
- mindspore/experimental/llm_boost/atb/llama_boost.py +52 -30
- mindspore/experimental/llm_boost/atb/qwen_boost.py +47 -24
- mindspore/experimental/llm_boost/register.py +1 -0
- mindspore/experimental/optim/adadelta.py +26 -22
- mindspore/experimental/optim/adam.py +3 -0
- mindspore/experimental/optim/lr_scheduler.py +33 -24
- mindspore/experimental/optim/radam.py +33 -30
- mindspore/hal/device.py +28 -0
- mindspore/hal/event.py +17 -0
- mindspore/hal/memory.py +94 -3
- mindspore/hal/stream.py +91 -6
- mindspore/include/api/context.h +1 -2
- mindspore/include/dataset/constants.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +12 -0
- mindspore/mindrecord/__init__.py +1 -1
- mindspore/mindrecord/config.py +17 -316
- mindspore/mindrecord/filereader.py +1 -9
- mindspore/mindrecord/filewriter.py +5 -15
- mindspore/mindrecord/mindpage.py +1 -9
- mindspore/mindspore_backend.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/mint/__init__.py +824 -218
- mindspore/mint/distributed/__init__.py +66 -4
- mindspore/mint/distributed/distributed.py +2594 -44
- mindspore/mint/linalg/__init__.py +6 -0
- mindspore/mint/nn/__init__.py +473 -14
- mindspore/mint/nn/functional.py +486 -11
- mindspore/mint/nn/layer/__init__.py +17 -4
- mindspore/mint/nn/layer/_functions.py +330 -0
- mindspore/mint/nn/layer/activation.py +169 -1
- mindspore/mint/nn/layer/basic.py +123 -0
- mindspore/mint/nn/layer/conv.py +727 -0
- mindspore/mint/nn/layer/normalization.py +215 -19
- mindspore/mint/nn/layer/padding.py +797 -0
- mindspore/mint/nn/layer/pooling.py +170 -0
- mindspore/mint/optim/__init__.py +2 -1
- mindspore/mint/optim/adam.py +223 -0
- mindspore/mint/optim/adamw.py +26 -19
- mindspore/mint/special/__init__.py +2 -1
- 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/multiprocessing/__init__.py +5 -0
- mindspore/nn/__init__.py +2 -0
- mindspore/nn/cell.py +142 -21
- mindspore/nn/dynamic_lr.py +2 -1
- mindspore/nn/layer/activation.py +6 -6
- mindspore/nn/layer/basic.py +35 -25
- mindspore/nn/layer/channel_shuffle.py +3 -3
- mindspore/nn/layer/conv.py +3 -0
- mindspore/nn/layer/embedding.py +3 -3
- mindspore/nn/layer/normalization.py +8 -7
- mindspore/nn/layer/padding.py +4 -3
- mindspore/nn/layer/pooling.py +55 -23
- mindspore/nn/layer/rnn_cells.py +1 -1
- mindspore/nn/layer/rnns.py +2 -1
- mindspore/nn/layer/timedistributed.py +5 -5
- mindspore/nn/layer/transformer.py +48 -26
- mindspore/nn/learning_rate_schedule.py +5 -3
- mindspore/nn/loss/loss.py +31 -36
- mindspore/nn/optim/ada_grad.py +1 -0
- mindspore/nn/optim/adadelta.py +2 -2
- mindspore/nn/optim/adam.py +1 -1
- mindspore/nn/optim/lars.py +1 -4
- mindspore/nn/optim/optimizer.py +1 -1
- mindspore/nn/optim/rprop.py +2 -2
- mindspore/nn/optim/thor.py +2 -1
- mindspore/nn/utils/__init__.py +22 -0
- mindspore/nn/utils/init.py +73 -0
- mindspore/nn/wrap/cell_wrapper.py +4 -6
- mindspore/nn/wrap/loss_scale.py +3 -4
- mindspore/numpy/array_creations.py +60 -62
- mindspore/numpy/array_ops.py +148 -143
- mindspore/numpy/logic_ops.py +41 -42
- mindspore/numpy/math_ops.py +361 -359
- mindspore/numpy/utils.py +16 -16
- mindspore/numpy/utils_const.py +4 -4
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +2 -1
- mindspore/ops/_grad_experimental/grad_comm_ops.py +107 -8
- mindspore/ops/_grad_experimental/grad_debug_ops.py +6 -1
- mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
- mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
- mindspore/ops/_op_impl/cpu/__init__.py +1 -0
- mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
- mindspore/ops/_vmap/vmap_array_ops.py +20 -19
- mindspore/ops/_vmap/vmap_base.py +0 -2
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +19 -13
- mindspore/ops/_vmap/vmap_math_ops.py +11 -9
- mindspore/ops/_vmap/vmap_nn_ops.py +20 -34
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +149 -12
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -61
- mindspore/ops/auto_generate/gen_extend_func.py +554 -60
- mindspore/ops/auto_generate/gen_ops_def.py +1621 -115
- mindspore/ops/auto_generate/gen_ops_prim.py +8027 -3411
- mindspore/ops/auto_generate/pyboost_inner_prim.py +183 -79
- mindspore/ops/composite/base.py +1 -1
- mindspore/ops/composite/multitype_ops/_compile_utils.py +229 -30
- mindspore/ops/composite/multitype_ops/pow_impl.py +0 -29
- mindspore/ops/function/__init__.py +12 -0
- mindspore/ops/function/array_func.py +561 -159
- mindspore/ops/function/clip_func.py +64 -0
- mindspore/ops/function/debug_func.py +28 -20
- mindspore/ops/function/image_func.py +1 -1
- mindspore/ops/function/linalg_func.py +5 -4
- mindspore/ops/function/math_func.py +1664 -294
- mindspore/ops/function/nn_func.py +988 -317
- mindspore/ops/function/parameter_func.py +3 -56
- mindspore/ops/function/random_func.py +243 -33
- mindspore/ops/function/sparse_unary_func.py +1 -1
- mindspore/ops/functional.py +18 -5
- mindspore/ops/functional_overload.py +897 -0
- mindspore/ops/operations/__init__.py +3 -2
- mindspore/ops/operations/_embedding_cache_ops.py +4 -4
- mindspore/ops/operations/_grad_ops.py +2 -34
- mindspore/ops/operations/_infer_ops.py +2 -1
- mindspore/ops/operations/_inner_ops.py +38 -8
- mindspore/ops/operations/array_ops.py +45 -303
- mindspore/ops/operations/comm_ops.py +23 -17
- mindspore/ops/operations/custom_ops.py +7 -49
- mindspore/ops/operations/debug_ops.py +42 -47
- mindspore/ops/operations/inner_ops.py +6 -4
- mindspore/ops/operations/linalg_ops.py +3 -2
- mindspore/ops/operations/manually_defined/ops_def.py +185 -104
- mindspore/ops/operations/math_ops.py +11 -216
- mindspore/ops/operations/nn_ops.py +153 -310
- mindspore/ops/primitive.py +23 -21
- mindspore/ops/tensor_method.py +1669 -0
- mindspore/ops_generate/aclnn_kernel_register_auto_cc_generator.py +110 -0
- mindspore/ops_generate/add_tensor_docs_generator.py +54 -0
- mindspore/ops_generate/arg_handler.py +0 -61
- mindspore/ops_generate/auto_grad_impl_cc_generator.py +135 -0
- mindspore/ops_generate/auto_grad_reg_cc_generator.py +93 -0
- mindspore/ops_generate/base_generator.py +11 -0
- mindspore/ops_generate/cpp_create_prim_instance_helper_generator.py +108 -0
- mindspore/ops_generate/functional_map_cpp_generator.py +491 -0
- mindspore/ops_generate/functional_overload_py_generator.py +110 -0
- mindspore/ops_generate/functions_cc_generator.py +233 -0
- mindspore/ops_generate/gen_aclnn_implement.py +110 -114
- mindspore/ops_generate/gen_constants.py +157 -3
- mindspore/ops_generate/gen_ops.py +245 -990
- mindspore/ops_generate/gen_pyboost_func.py +97 -998
- mindspore/ops_generate/gen_utils.py +119 -33
- mindspore/ops_generate/lite_ops_cpp_generator.py +155 -0
- mindspore/ops_generate/op_api_proto.py +206 -0
- mindspore/ops_generate/op_def_py_generator.py +131 -0
- mindspore/ops_generate/op_prim_py_generator.py +480 -0
- mindspore/ops_generate/op_proto.py +373 -108
- mindspore/ops_generate/op_template_parser.py +436 -0
- mindspore/ops_generate/ops_def_cc_generator.py +288 -0
- mindspore/ops_generate/ops_def_h_generator.py +74 -0
- mindspore/ops_generate/ops_name_h_generator.py +68 -0
- mindspore/ops_generate/ops_primitive_h_generator.py +81 -0
- mindspore/ops_generate/pyboost_functions_cpp_generator.py +370 -0
- mindspore/ops_generate/pyboost_functions_h_generator.py +68 -0
- mindspore/ops_generate/pyboost_functions_py_generator.py +148 -0
- mindspore/ops_generate/pyboost_grad_function_cpp_generator.py +154 -0
- mindspore/ops_generate/pyboost_inner_prim_generator.py +131 -0
- mindspore/ops_generate/pyboost_native_grad_functions_generator.py +268 -0
- mindspore/ops_generate/pyboost_op_cpp_code_generator.py +851 -0
- mindspore/ops_generate/pyboost_overload_functions_cpp_generator.py +344 -0
- mindspore/ops_generate/pyboost_utils.py +92 -33
- mindspore/ops_generate/template.py +294 -44
- mindspore/ops_generate/tensor_func_reg_cpp_generator.py +422 -0
- mindspore/parallel/__init__.py +3 -3
- mindspore/parallel/_auto_parallel_context.py +44 -34
- mindspore/parallel/_cell_wrapper.py +22 -3
- mindspore/parallel/_parallel_serialization.py +13 -2
- mindspore/parallel/_utils.py +4 -2
- mindspore/parallel/algo_parameter_config.py +1 -1
- mindspore/parallel/checkpoint_transform.py +44 -0
- mindspore/parallel/cluster/process_entity/_api.py +131 -37
- mindspore/parallel/cluster/process_entity/_utils.py +41 -6
- mindspore/parallel/cluster/run.py +20 -3
- mindspore/parallel/parameter_broadcast.py +1 -1
- mindspore/parallel/shard.py +3 -0
- mindspore/parallel/transform_safetensors.py +119 -253
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +17 -4
- mindspore/profiler/analysis/__init__.py +0 -0
- mindspore/profiler/analysis/parser/__init__.py +0 -0
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +166 -0
- mindspore/profiler/analysis/parser/base_parser.py +158 -0
- mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
- mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
- mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +261 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +84 -0
- mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
- mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
- mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
- mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
- mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
- mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
- mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +260 -0
- mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
- mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
- mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
- mindspore/profiler/analysis/task_manager.py +131 -0
- mindspore/profiler/analysis/time_converter.py +84 -0
- mindspore/profiler/analysis/viewer/__init__.py +0 -0
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +333 -0
- mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +252 -0
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +313 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +322 -0
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +265 -0
- mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
- mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +97 -0
- mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
- mindspore/profiler/analysis/work_flow.py +73 -0
- mindspore/profiler/common/ascend_msprof_exporter.py +138 -0
- mindspore/profiler/common/command_executor.py +90 -0
- mindspore/profiler/common/constant.py +174 -3
- mindspore/profiler/common/file_manager.py +208 -0
- mindspore/profiler/common/log.py +130 -0
- mindspore/profiler/common/msprof_cmd_tool.py +202 -0
- mindspore/profiler/common/path_manager.py +371 -0
- mindspore/profiler/common/process_bar.py +168 -0
- mindspore/profiler/common/process_pool.py +9 -3
- mindspore/profiler/common/profiler_context.py +476 -0
- mindspore/profiler/common/profiler_info.py +304 -0
- mindspore/profiler/common/profiler_output_path.py +284 -0
- mindspore/profiler/common/profiler_parameters.py +210 -0
- mindspore/profiler/common/profiler_path_manager.py +120 -0
- mindspore/profiler/common/record_function.py +76 -0
- mindspore/profiler/common/tlv_decoder.py +76 -0
- mindspore/profiler/common/util.py +75 -2
- mindspore/profiler/dynamic_profiler.py +270 -37
- mindspore/profiler/envprofiler.py +138 -0
- mindspore/profiler/mstx.py +199 -0
- mindspore/profiler/platform/__init__.py +21 -0
- mindspore/profiler/platform/base_profiler.py +40 -0
- mindspore/profiler/platform/cpu_profiler.py +124 -0
- mindspore/profiler/platform/gpu_profiler.py +74 -0
- mindspore/profiler/platform/npu_profiler.py +309 -0
- mindspore/profiler/profiler.py +580 -93
- mindspore/profiler/profiler_action_controller.py +187 -0
- mindspore/profiler/profiler_interface.py +114 -0
- mindspore/profiler/schedule.py +208 -0
- mindspore/rewrite/api/symbol_tree.py +1 -2
- mindspore/run_check/_check_version.py +18 -13
- mindspore/runtime/__init__.py +37 -0
- mindspore/runtime/device.py +27 -0
- mindspore/runtime/event.py +209 -0
- mindspore/runtime/executor.py +148 -0
- mindspore/runtime/memory.py +392 -0
- mindspore/runtime/stream.py +460 -0
- mindspore/runtime/thread_bind_core.py +401 -0
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/__init__.py +2 -2
- mindspore/train/_utils.py +53 -18
- mindspore/train/amp.py +8 -4
- mindspore/train/callback/_checkpoint.py +32 -18
- mindspore/train/callback/_early_stop.py +1 -1
- mindspore/train/callback/_flops_collector.py +105 -69
- mindspore/train/callback/_history.py +1 -1
- mindspore/train/callback/_summary_collector.py +44 -6
- mindspore/train/callback/_tft_register.py +37 -15
- mindspore/train/dataset_helper.py +11 -11
- mindspore/train/metrics/precision.py +4 -5
- mindspore/train/mind_ir_pb2.py +167 -46
- mindspore/train/model.py +13 -14
- mindspore/train/serialization.py +461 -72
- mindspore/train/summary/summary_record.py +1 -2
- mindspore/train/train_thor/model_thor.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +4 -2
- mindspore/utils/dryrun.py +138 -0
- mindspore/utils/runtime_execution_order_check.py +550 -0
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/METADATA +3 -4
- {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/RECORD +391 -265
- {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/entry_points.txt +1 -1
- mindspore/common/_tensor_overload.py +0 -139
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/profiler/envprofiling.py +0 -254
- mindspore/profiler/profiling.py +0 -1926
- {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/WHEEL +0 -0
- {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# Copyright 2020-2024 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
|
+
""" Mstx class for NPU profiling """
|
|
16
|
+
import mindspore
|
|
17
|
+
import mindspore._c_expression as c_expression
|
|
18
|
+
|
|
19
|
+
from mindspore import log as logging
|
|
20
|
+
from mindspore.runtime import Stream
|
|
21
|
+
from mindspore.profiler.common.constant import DeviceTarget
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class Mstx:
|
|
25
|
+
"""
|
|
26
|
+
Mstx class provides profiling tools for marking and tracing on NPU. This class provides three static methods: mark,
|
|
27
|
+
range_start and range_end for adding marker points and ranges in profiling.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
NPU_PROFILER = c_expression.Profiler.get_instance(DeviceTarget.NPU.value)
|
|
31
|
+
|
|
32
|
+
@staticmethod
|
|
33
|
+
def mark(message: str, stream: mindspore.runtime.Stream = None) -> None:
|
|
34
|
+
"""Add a marker point in profiling.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
message (str): Description for the marker.
|
|
38
|
+
stream (:class:`~.runtime.Stream`, optional): NPU stream for async execution, expected type:
|
|
39
|
+
mindspore.runtime.Stream. Default: ``None``, which means only marking on host side without
|
|
40
|
+
marking on device stream.
|
|
41
|
+
|
|
42
|
+
Examples:
|
|
43
|
+
>>> import numpy as np
|
|
44
|
+
>>> import mindspore as ms
|
|
45
|
+
>>> from mindspore import nn
|
|
46
|
+
>>> import mindspore.dataset as ds
|
|
47
|
+
>>> from mindspore import Profiler
|
|
48
|
+
>>> from mindspore.profiler import ProfilerLevel, ProfilerActivity, schedule, tensor_board_trace_handler
|
|
49
|
+
>>> from mindspore.profiler import mstx
|
|
50
|
+
>>>
|
|
51
|
+
>>> class Net(nn.Cell):
|
|
52
|
+
... def __init__(self):
|
|
53
|
+
... super(Net, self).__init__()
|
|
54
|
+
... self.fc = nn.Dense(2,2)
|
|
55
|
+
... def construct(self, x):
|
|
56
|
+
... return self.fc(x)
|
|
57
|
+
>>>
|
|
58
|
+
>>> def generator():
|
|
59
|
+
... for i in range(2):
|
|
60
|
+
... yield (np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32))
|
|
61
|
+
>>>
|
|
62
|
+
>>> def train(net):
|
|
63
|
+
... stream = ms.runtime.current_stream()
|
|
64
|
+
... optimizer = nn.Momentum(net.trainable_params(), 1, 0.9)
|
|
65
|
+
... loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
|
|
66
|
+
... data = ds.GeneratorDataset(generator, ["data", "label"])
|
|
67
|
+
... model = ms.train.Model(net, loss, optimizer)
|
|
68
|
+
... # Add marker before training
|
|
69
|
+
... mstx.mark("train start", stream)
|
|
70
|
+
... model.train(1, data)
|
|
71
|
+
... # Add marker after training
|
|
72
|
+
... mstx.mark("train end", stream)
|
|
73
|
+
>>>
|
|
74
|
+
>>> if __name__ == '__main__':
|
|
75
|
+
... # Note: mstx only supports Ascend device and cannot be used in mindspore.nn.Cell.construct
|
|
76
|
+
... # when in mindspore.GRAPH_MODE
|
|
77
|
+
... ms.set_context(mode=ms.PYNATIVE_MODE)
|
|
78
|
+
... ms.set_device(device_target="Ascend", device_id=0)
|
|
79
|
+
... # Init Profiler
|
|
80
|
+
... with Profiler(profiler_level=ProfilerLevel.LevelNone,
|
|
81
|
+
... on_trace_ready=tensor_board_trace_handler,
|
|
82
|
+
... activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
83
|
+
... schedule=schedule(wait=0, warmup=0, active=3, repeat=1, skip_first=0),
|
|
84
|
+
... mstx=True) as profiler:
|
|
85
|
+
... net = Net()
|
|
86
|
+
... for i in range(5):
|
|
87
|
+
... train(net)
|
|
88
|
+
... profiler.step()
|
|
89
|
+
"""
|
|
90
|
+
if not message or not isinstance(message, str):
|
|
91
|
+
logging.warning("Invalid message for mstx.mark func. Please input valid message string.")
|
|
92
|
+
return
|
|
93
|
+
if stream:
|
|
94
|
+
if isinstance(stream, Stream):
|
|
95
|
+
device_stream = stream.device_stream()
|
|
96
|
+
Mstx.NPU_PROFILER.mstx_mark(message, device_stream)
|
|
97
|
+
else:
|
|
98
|
+
logging.warning(
|
|
99
|
+
f"Invalid stream for mstx.mark func. Expected mindspore.runtime.Stream but got {type(stream)}.",
|
|
100
|
+
)
|
|
101
|
+
else:
|
|
102
|
+
Mstx.NPU_PROFILER.mstx_mark(message)
|
|
103
|
+
|
|
104
|
+
@staticmethod
|
|
105
|
+
def range_start(message: str, stream: mindspore.runtime.Stream = None) -> int:
|
|
106
|
+
"""Start a profiling range.
|
|
107
|
+
|
|
108
|
+
Args:
|
|
109
|
+
message (str): Description for the range.
|
|
110
|
+
stream (:class:`~.runtime.Stream`, optional): NPU stream for async execution, expected type:
|
|
111
|
+
mindspore.runtime.Stream. Default: ``None``, which means only starting mstx range on
|
|
112
|
+
host side without starting on device stream.
|
|
113
|
+
|
|
114
|
+
Returns:
|
|
115
|
+
int, range ID for range_end.
|
|
116
|
+
|
|
117
|
+
Examples:
|
|
118
|
+
>>> import numpy as np
|
|
119
|
+
>>> import mindspore as ms
|
|
120
|
+
>>> from mindspore import nn
|
|
121
|
+
>>> import mindspore.dataset as ds
|
|
122
|
+
>>> from mindspore import Profiler
|
|
123
|
+
>>> from mindspore.profiler import ProfilerLevel, ProfilerActivity, schedule, tensor_board_trace_handler
|
|
124
|
+
>>> from mindspore.profiler import mstx
|
|
125
|
+
>>>
|
|
126
|
+
>>> class Net(nn.Cell):
|
|
127
|
+
... def __init__(self):
|
|
128
|
+
... super(Net, self).__init__()
|
|
129
|
+
... self.fc = nn.Dense(2,2)
|
|
130
|
+
... def construct(self, x):
|
|
131
|
+
... return self.fc(x)
|
|
132
|
+
>>>
|
|
133
|
+
>>> def generator():
|
|
134
|
+
... for i in range(2):
|
|
135
|
+
... yield (np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32))
|
|
136
|
+
>>>
|
|
137
|
+
>>> def train(net):
|
|
138
|
+
... stream = ms.runtime.current_stream()
|
|
139
|
+
... optimizer = nn.Momentum(net.trainable_params(), 1, 0.9)
|
|
140
|
+
... loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
|
|
141
|
+
... data = ds.GeneratorDataset(generator, ["data", "label"])
|
|
142
|
+
... model = ms.train.Model(net, loss, optimizer)
|
|
143
|
+
... # Start profiling range
|
|
144
|
+
... range_id = mstx.range_start("training process", stream)
|
|
145
|
+
... model.train(1, data)
|
|
146
|
+
... # End profiling range
|
|
147
|
+
... mstx.range_end(range_id)
|
|
148
|
+
>>>
|
|
149
|
+
>>> if __name__ == '__main__':
|
|
150
|
+
... # Note: mstx only supports Ascend device and cannot be used in mindspore.nn.Cell.construct
|
|
151
|
+
... # when in mindspore.GRAPH_MODE
|
|
152
|
+
... ms.set_context(mode=ms.PYNATIVE_MODE)
|
|
153
|
+
... ms.set_device(device_target="Ascend", device_id=0)
|
|
154
|
+
... with Profiler(profiler_level=ProfilerLevel.LevelNone,
|
|
155
|
+
... on_trace_ready=tensor_board_trace_handler,
|
|
156
|
+
... activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
157
|
+
... schedule=schedule(wait=0, warmup=0, active=3, repeat=1, skip_first=0),
|
|
158
|
+
... mstx=True) as profiler:
|
|
159
|
+
... net = Net()
|
|
160
|
+
... for i in range(5):
|
|
161
|
+
... train(net)
|
|
162
|
+
... profiler.step()
|
|
163
|
+
"""
|
|
164
|
+
if not message or not isinstance(message, str):
|
|
165
|
+
logging.warning("Invalid message for mstx.range_start func. Please input valid message string.")
|
|
166
|
+
return 0
|
|
167
|
+
# pylint: disable=no-else-return
|
|
168
|
+
if stream:
|
|
169
|
+
if isinstance(stream, Stream):
|
|
170
|
+
device_stream = stream.device_stream()
|
|
171
|
+
return Mstx.NPU_PROFILER.mstx_range_start(message, device_stream)
|
|
172
|
+
else:
|
|
173
|
+
logging.warning(
|
|
174
|
+
f"Invalid stream for mstx.range_start func. "
|
|
175
|
+
f"Expected mindspore.runtime.Stream but got {type(stream)}.",
|
|
176
|
+
)
|
|
177
|
+
return 0
|
|
178
|
+
else:
|
|
179
|
+
return Mstx.NPU_PROFILER.mstx_range_start(message)
|
|
180
|
+
|
|
181
|
+
@staticmethod
|
|
182
|
+
def range_end(range_id: int) -> None:
|
|
183
|
+
"""End a profiling range.
|
|
184
|
+
|
|
185
|
+
Args:
|
|
186
|
+
range_id (int): Range ID from range_start.
|
|
187
|
+
|
|
188
|
+
Examples:
|
|
189
|
+
>>> # Please refer to the example in range_start
|
|
190
|
+
>>> # range_id = mstx.range_start("training process", stream)
|
|
191
|
+
>>> # model.train(1, data)
|
|
192
|
+
>>> # mstx.range_end(range_id)
|
|
193
|
+
"""
|
|
194
|
+
if not isinstance(range_id, int):
|
|
195
|
+
logging.warning(
|
|
196
|
+
"Invalid message for mstx.range_start func. Please input return value from mstx.range_start."
|
|
197
|
+
)
|
|
198
|
+
return
|
|
199
|
+
Mstx.NPU_PROFILER.mstx_range_end(range_id)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Copyright 2020-2024 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
|
+
"""Platform profiler"""
|
|
16
|
+
from .cpu_profiler import CpuProfiler
|
|
17
|
+
from .gpu_profiler import GpuProfiler
|
|
18
|
+
from .npu_profiler import NpuProfiler
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
__all__ = ["CpuProfiler", "GpuProfiler", "NpuProfiler"]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Copyright 2020-2024 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
|
+
"""Platform profiler interface."""
|
|
16
|
+
from abc import ABC, abstractmethod
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class BaseProfiler(ABC):
|
|
20
|
+
"""
|
|
21
|
+
BaseProfiler is the base class for all platform profilers.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
@abstractmethod
|
|
25
|
+
def start(self):
|
|
26
|
+
"""
|
|
27
|
+
Start profiling.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
@abstractmethod
|
|
31
|
+
def stop(self):
|
|
32
|
+
"""
|
|
33
|
+
Stop profiling.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
@abstractmethod
|
|
37
|
+
def analyse(self, **kwargs):
|
|
38
|
+
"""
|
|
39
|
+
Analyse profiling result.
|
|
40
|
+
"""
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Copyright 2020-2024 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
|
+
"""CPU platform profiler."""
|
|
16
|
+
import mindspore._c_expression as c_expression
|
|
17
|
+
|
|
18
|
+
from mindspore.profiler.common.registry import PROFILERS
|
|
19
|
+
from mindspore.profiler.common.constant import DeviceTarget, ProfilerActivity
|
|
20
|
+
from mindspore.profiler.common.util import print_msg_with_pid
|
|
21
|
+
from mindspore.profiler.common.profiler_context import ProfilerContext
|
|
22
|
+
from mindspore.profiler.common.profiler_path_manager import ProfilerPathManager
|
|
23
|
+
from mindspore.profiler.platform.base_profiler import BaseProfiler
|
|
24
|
+
from mindspore.profiler.analysis.time_converter import TimeConverter
|
|
25
|
+
from mindspore.profiler.analysis.task_manager import TaskManager
|
|
26
|
+
from mindspore.profiler.analysis.parser.ms_framework_parser import FrameworkParser
|
|
27
|
+
from mindspore.profiler.analysis.parser.framework_cann_relation_parser import FrameworkCannRelationParser
|
|
28
|
+
from mindspore.profiler.analysis.viewer.ms_dataset_viewer import MsDatasetViewer
|
|
29
|
+
from mindspore.profiler.analysis.viewer.ascend_timeline_viewer import AscendTimelineViewer
|
|
30
|
+
from mindspore.profiler.common.log import ProfilerLogger
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@PROFILERS.register_module(DeviceTarget.CPU.value)
|
|
34
|
+
class CpuProfiler(BaseProfiler):
|
|
35
|
+
"""
|
|
36
|
+
CPU platform profiler
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(self) -> None:
|
|
40
|
+
super().__init__()
|
|
41
|
+
self._prof_ctx = ProfilerContext()
|
|
42
|
+
self._profiler = c_expression.Profiler.get_instance(DeviceTarget.CPU.value)
|
|
43
|
+
self._prof_path_mgr = ProfilerPathManager()
|
|
44
|
+
self._prof_mgr = c_expression.ProfilerManager.get_instance()
|
|
45
|
+
ProfilerLogger.init(self._prof_ctx.ascend_ms_dir)
|
|
46
|
+
self._logger = ProfilerLogger.get_instance()
|
|
47
|
+
|
|
48
|
+
def start(self) -> None:
|
|
49
|
+
"""Start profiling."""
|
|
50
|
+
self._logger.info("CpuProfiler start.")
|
|
51
|
+
self._profiler.init(self._prof_ctx.framework_path)
|
|
52
|
+
self._logger.info("CpuProfiler framework_path: %s", self._prof_ctx.framework_path)
|
|
53
|
+
self._profiler.step_profiling_enable(True)
|
|
54
|
+
|
|
55
|
+
if ProfilerActivity.CPU in self._prof_ctx.activities:
|
|
56
|
+
self._profiler.enable_op_time()
|
|
57
|
+
|
|
58
|
+
if self._prof_ctx.profile_memory:
|
|
59
|
+
self._profiler.enable_profile_memory()
|
|
60
|
+
|
|
61
|
+
def stop(self) -> None:
|
|
62
|
+
"""Stop profiling."""
|
|
63
|
+
self._logger.info("CpuProfiler stop.")
|
|
64
|
+
self._profiler.stop()
|
|
65
|
+
|
|
66
|
+
def analyse(self, **kwargs) -> None:
|
|
67
|
+
"""Analyse profiling data."""
|
|
68
|
+
if ProfilerContext().device_target_set != {DeviceTarget.CPU.value}:
|
|
69
|
+
return
|
|
70
|
+
self._logger.info("CpuProfiler analyse.")
|
|
71
|
+
CPUProfilerAnalysis.online_analyse()
|
|
72
|
+
|
|
73
|
+
def finalize(self) -> None:
|
|
74
|
+
"""Finalize profiling data."""
|
|
75
|
+
self._logger.info("CpuProfiler finalize.")
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class CPUProfilerAnalysis:
|
|
79
|
+
"""
|
|
80
|
+
CPU profiler analysis interface
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
@classmethod
|
|
84
|
+
def online_analyse(cls):
|
|
85
|
+
"""
|
|
86
|
+
Online analysis for CPU
|
|
87
|
+
"""
|
|
88
|
+
cls._pre_analyse_online()
|
|
89
|
+
cls._run_tasks(**ProfilerContext().to_dict())
|
|
90
|
+
|
|
91
|
+
@classmethod
|
|
92
|
+
def _pre_analyse_online(cls):
|
|
93
|
+
"""
|
|
94
|
+
Pre-process for online analysis
|
|
95
|
+
"""
|
|
96
|
+
ProfilerPathManager().create_output_path()
|
|
97
|
+
TimeConverter.init_parameters(freq=100.0, cntvct=0, localtime_diff=0)
|
|
98
|
+
|
|
99
|
+
@classmethod
|
|
100
|
+
def _run_tasks(cls, **kwargs) -> None:
|
|
101
|
+
"""
|
|
102
|
+
Run tasks for online analysis
|
|
103
|
+
"""
|
|
104
|
+
ascend_ms_dir = kwargs.get("ascend_ms_dir", "")
|
|
105
|
+
print_msg_with_pid(f"Start parsing profiling data: {ascend_ms_dir}")
|
|
106
|
+
task_mgr = cls._construct_task_mgr(**kwargs)
|
|
107
|
+
task_mgr.run()
|
|
108
|
+
|
|
109
|
+
@classmethod
|
|
110
|
+
def _construct_task_mgr(cls, **kwargs) -> TaskManager:
|
|
111
|
+
"""
|
|
112
|
+
Construct task manager based on activities and parameters
|
|
113
|
+
"""
|
|
114
|
+
task_mgr = TaskManager()
|
|
115
|
+
|
|
116
|
+
task_mgr.create_flow(
|
|
117
|
+
FrameworkParser(**kwargs)
|
|
118
|
+
.register_post_hook(MsDatasetViewer(**kwargs).save),
|
|
119
|
+
FrameworkCannRelationParser()
|
|
120
|
+
.register_post_hook(AscendTimelineViewer(**kwargs).save),
|
|
121
|
+
flow_name="cpu_flow", show_process=True
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
return task_mgr
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Copyright 2024 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
|
+
"""GPU platform profiler."""
|
|
16
|
+
import mindspore._c_dataengine as cde
|
|
17
|
+
import mindspore._c_expression as c_expression
|
|
18
|
+
from mindspore.profiler.common.registry import PROFILERS
|
|
19
|
+
from mindspore.profiler.common.constant import DeviceTarget, ProfilerActivity
|
|
20
|
+
|
|
21
|
+
from mindspore.profiler.common.profiler_context import ProfilerContext
|
|
22
|
+
from mindspore.profiler.platform.base_profiler import BaseProfiler
|
|
23
|
+
from mindspore.profiler.common.log import ProfilerLogger
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@PROFILERS.register_module(DeviceTarget.GPU.value)
|
|
27
|
+
class GpuProfiler(BaseProfiler):
|
|
28
|
+
"""
|
|
29
|
+
GPU platform profiler
|
|
30
|
+
"""
|
|
31
|
+
def __init__(self) -> None:
|
|
32
|
+
super().__init__()
|
|
33
|
+
self._prof_ctx = ProfilerContext()
|
|
34
|
+
self._profiler = c_expression.Profiler.get_instance(DeviceTarget.GPU.value)
|
|
35
|
+
ProfilerLogger.init(self._prof_ctx.ascend_ms_dir)
|
|
36
|
+
self._logger = ProfilerLogger.get_instance()
|
|
37
|
+
|
|
38
|
+
self._profiler.init(self._prof_ctx.output_path)
|
|
39
|
+
self._profiler.sync_enable(self._prof_ctx.sync_enable)
|
|
40
|
+
|
|
41
|
+
if self._prof_ctx.data_process:
|
|
42
|
+
self._md_profiler = cde.GlobalContext.profiling_manager()
|
|
43
|
+
self._md_profiler.init()
|
|
44
|
+
|
|
45
|
+
def start(self) -> None:
|
|
46
|
+
"""Start profiling."""
|
|
47
|
+
self._logger.info("GpuProfiler start.")
|
|
48
|
+
|
|
49
|
+
if self._prof_ctx.data_process:
|
|
50
|
+
self._profiler.data_process_enable(True)
|
|
51
|
+
self._md_profiler.start()
|
|
52
|
+
|
|
53
|
+
if ProfilerActivity.GPU in self._prof_ctx.activities:
|
|
54
|
+
self._profiler.enable_op_time()
|
|
55
|
+
|
|
56
|
+
if ProfilerActivity.CPU in self._prof_ctx.activities:
|
|
57
|
+
self._profiler.step_profiling_enable(True)
|
|
58
|
+
|
|
59
|
+
def stop(self) -> None:
|
|
60
|
+
"""Stop profiling."""
|
|
61
|
+
self._logger.info("GpuProfiler stop.")
|
|
62
|
+
self._profiler.stop()
|
|
63
|
+
|
|
64
|
+
if self._prof_ctx.data_process:
|
|
65
|
+
self._md_profiler.stop()
|
|
66
|
+
self._md_profiler.save(self._prof_ctx.output_path)
|
|
67
|
+
|
|
68
|
+
def analyse(self, **kwargs) -> None:
|
|
69
|
+
"""Analyse profiling data."""
|
|
70
|
+
self._logger.info("GpuProfiler analyse.")
|
|
71
|
+
|
|
72
|
+
def finalize(self) -> None:
|
|
73
|
+
"""Finalize profiling data."""
|
|
74
|
+
self._logger.info("GpuProfiler finalize.")
|