mindspore 2.7.0rc1__cp311-cp311-win_amd64.whl → 2.7.1__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/__init__.py +5 -2
- mindspore/_c_dataengine.cp311-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp311-win_amd64.pyd +0 -0
- mindspore/_checkparam.py +2 -2
- mindspore/_extends/builtin_operations.py +3 -3
- mindspore/_extends/parallel_compile/akg_compiler/custom.py +1109 -0
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/__init__.py +3 -3
- mindspore/_extends/parse/compile_config.py +24 -1
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +6 -3
- mindspore/_extends/parse/parser.py +28 -22
- mindspore/_extends/parse/resources.py +1 -1
- mindspore/_extends/parse/standard_method.py +23 -2
- mindspore/_extends/parse/trope.py +2 -1
- mindspore/_extends/pijit/pijit_func_white_list.py +9 -27
- mindspore/amp.py +0 -18
- 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/base.py +29 -2
- mindspore/common/__init__.py +18 -12
- mindspore/common/_decorator.py +3 -2
- mindspore/common/_grad_function.py +3 -1
- mindspore/common/_tensor_cpp_method.py +1 -1
- mindspore/common/_tensor_docs.py +371 -96
- mindspore/common/_utils.py +7 -43
- mindspore/common/api.py +434 -135
- mindspore/common/dtype.py +98 -57
- mindspore/common/dump.py +7 -108
- mindspore/common/dynamic_shape/__init__.py +0 -0
- mindspore/common/{auto_dynamic_shape.py → dynamic_shape/auto_dynamic_shape.py} +15 -23
- mindspore/common/dynamic_shape/enable_dynamic.py +197 -0
- mindspore/common/file_system.py +59 -9
- mindspore/common/hook_handle.py +82 -3
- mindspore/common/jit_config.py +5 -1
- mindspore/common/jit_trace.py +27 -12
- mindspore/common/lazy_inline.py +5 -3
- mindspore/common/np_dtype.py +3 -3
- mindspore/common/parameter.py +17 -127
- mindspore/common/recompute.py +4 -13
- mindspore/common/tensor.py +50 -217
- mindspore/communication/_comm_helper.py +11 -1
- mindspore/communication/comm_func.py +138 -4
- mindspore/communication/management.py +85 -1
- mindspore/config/op_info.config +0 -15
- mindspore/context.py +20 -106
- mindspore/dataset/__init__.py +1 -1
- mindspore/dataset/audio/transforms.py +1 -1
- mindspore/dataset/core/config.py +35 -1
- mindspore/dataset/engine/datasets.py +338 -319
- mindspore/dataset/engine/datasets_user_defined.py +38 -22
- mindspore/dataset/engine/datasets_vision.py +1 -1
- mindspore/dataset/engine/validators.py +1 -15
- mindspore/dataset/transforms/c_transforms.py +2 -2
- mindspore/dataset/transforms/transforms.py +3 -3
- mindspore/dataset/vision/__init__.py +1 -1
- mindspore/dataset/vision/py_transforms.py +8 -8
- mindspore/dataset/vision/transforms.py +17 -5
- mindspore/dataset/vision/utils.py +632 -21
- mindspore/device_context/ascend/op_tuning.py +35 -1
- mindspore/dnnl.dll +0 -0
- mindspore/{profiler/common/validator → graph}/__init__.py +9 -1
- mindspore/graph/custom_pass.py +55 -0
- mindspore/include/api/cell.h +28 -4
- mindspore/include/api/cfg.h +24 -7
- mindspore/include/api/context.h +1 -0
- mindspore/include/api/delegate.h +0 -2
- mindspore/include/api/dual_abi_helper.h +100 -19
- mindspore/include/api/graph.h +14 -1
- mindspore/include/api/kernel.h +16 -3
- mindspore/include/api/kernel_api.h +9 -1
- mindspore/include/api/metrics/accuracy.h +9 -0
- mindspore/include/api/model.h +5 -1
- mindspore/include/api/model_group.h +4 -0
- mindspore/include/api/model_parallel_runner.h +2 -0
- mindspore/include/api/status.h +48 -10
- mindspore/include/api/types.h +6 -1
- mindspore/include/dataset/constants.h +9 -0
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/mindrecord/__init__.py +3 -3
- mindspore/mindrecord/common/exceptions.py +1 -0
- mindspore/mindrecord/config.py +1 -1
- mindspore/{parallel/mpi → mindrecord/core}/__init__.py +4 -1
- mindspore/mindrecord/{shardheader.py → core/shardheader.py} +2 -1
- mindspore/mindrecord/{shardindexgenerator.py → core/shardindexgenerator.py} +1 -1
- mindspore/mindrecord/{shardreader.py → core/shardreader.py} +2 -1
- mindspore/mindrecord/{shardsegment.py → core/shardsegment.py} +2 -2
- mindspore/mindrecord/{shardutils.py → core/shardutils.py} +1 -1
- mindspore/mindrecord/{shardwriter.py → core/shardwriter.py} +1 -1
- mindspore/mindrecord/filereader.py +4 -4
- mindspore/mindrecord/filewriter.py +5 -5
- mindspore/mindrecord/mindpage.py +2 -2
- mindspore/mindrecord/tools/cifar10.py +4 -3
- mindspore/mindrecord/tools/cifar100.py +1 -1
- mindspore/mindrecord/tools/cifar100_to_mr.py +1 -1
- mindspore/mindrecord/tools/cifar10_to_mr.py +6 -6
- mindspore/mindrecord/tools/csv_to_mr.py +1 -1
- mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
- mindspore/mindrecord/tools/mnist_to_mr.py +1 -1
- mindspore/mindrecord/tools/tfrecord_to_mr.py +1 -1
- mindspore/mindspore_backend_common.dll +0 -0
- mindspore/mindspore_backend_manager.dll +0 -0
- mindspore/mindspore_cluster.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_cpu.dll +0 -0
- mindspore/mindspore_dump.dll +0 -0
- mindspore/mindspore_frontend.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_hardware_abstract.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 → mindspore_ops_cpu.dll} +0 -0
- mindspore/mindspore_profiler.dll +0 -0
- mindspore/mindspore_pyboost.dll +0 -0
- mindspore/mindspore_pynative.dll +0 -0
- mindspore/mindspore_runtime_pipeline.dll +0 -0
- mindspore/mindspore_runtime_utils.dll +0 -0
- mindspore/mindspore_tools.dll +0 -0
- mindspore/mint/__init__.py +15 -10
- mindspore/mint/distributed/__init__.py +4 -0
- mindspore/mint/distributed/distributed.py +392 -69
- mindspore/mint/nn/__init__.py +2 -16
- mindspore/mint/nn/functional.py +4 -110
- mindspore/mint/nn/layer/__init__.py +0 -2
- mindspore/mint/nn/layer/_functions.py +1 -2
- mindspore/mint/nn/layer/activation.py +0 -6
- mindspore/mint/nn/layer/basic.py +0 -47
- mindspore/mint/nn/layer/conv.py +10 -10
- mindspore/mint/nn/layer/normalization.py +11 -16
- mindspore/mint/nn/layer/pooling.py +0 -4
- mindspore/nn/__init__.py +1 -3
- mindspore/nn/cell.py +231 -239
- mindspore/nn/layer/activation.py +4 -2
- mindspore/nn/layer/basic.py +56 -14
- mindspore/nn/layer/container.py +16 -0
- mindspore/nn/layer/embedding.py +4 -169
- mindspore/nn/layer/image.py +1 -1
- mindspore/nn/layer/normalization.py +2 -1
- mindspore/nn/layer/thor_layer.py +4 -85
- mindspore/nn/optim/ada_grad.py +0 -1
- mindspore/nn/optim/adafactor.py +0 -1
- mindspore/nn/optim/adam.py +32 -127
- mindspore/nn/optim/adamax.py +0 -1
- mindspore/nn/optim/asgd.py +0 -1
- mindspore/nn/optim/ftrl.py +8 -102
- mindspore/nn/optim/lamb.py +1 -4
- mindspore/nn/optim/lars.py +0 -3
- mindspore/nn/optim/lazyadam.py +25 -218
- mindspore/nn/optim/momentum.py +5 -43
- mindspore/nn/optim/optimizer.py +6 -55
- mindspore/nn/optim/proximal_ada_grad.py +0 -1
- mindspore/nn/optim/rmsprop.py +0 -1
- mindspore/nn/optim/rprop.py +0 -1
- mindspore/nn/optim/sgd.py +0 -1
- mindspore/nn/optim/tft_wrapper.py +2 -4
- mindspore/nn/optim/thor.py +0 -2
- mindspore/nn/probability/bijector/bijector.py +7 -8
- mindspore/nn/probability/bijector/gumbel_cdf.py +2 -2
- mindspore/nn/probability/bijector/power_transform.py +20 -21
- mindspore/nn/probability/bijector/scalar_affine.py +5 -5
- mindspore/nn/probability/bijector/softplus.py +13 -14
- mindspore/nn/probability/distribution/_utils/utils.py +2 -2
- mindspore/nn/wrap/cell_wrapper.py +39 -5
- mindspore/nn/wrap/grad_reducer.py +4 -89
- mindspore/numpy/array_creations.py +4 -4
- mindspore/numpy/fft.py +9 -9
- mindspore/numpy/utils_const.py +1 -1
- mindspore/{nn/reinforcement → onnx}/__init__.py +5 -8
- mindspore/onnx/onnx_export.py +137 -0
- mindspore/opencv_core4110.dll +0 -0
- mindspore/opencv_imgcodecs4110.dll +0 -0
- mindspore/{opencv_imgproc452.dll → opencv_imgproc4110.dll} +0 -0
- mindspore/ops/__init__.py +2 -0
- mindspore/ops/_grad_experimental/grad_comm_ops.py +38 -2
- mindspore/ops/_grad_experimental/grad_inner_ops.py +0 -9
- mindspore/ops/_op_impl/aicpu/__init__.py +0 -10
- mindspore/ops/_op_impl/cpu/__init__.py +1 -5
- mindspore/ops/_op_impl/cpu/{buffer_append.py → joinedstr_op.py} +8 -8
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +28 -24
- mindspore/ops/auto_generate/gen_extend_func.py +6 -11
- mindspore/ops/auto_generate/gen_ops_def.py +385 -154
- mindspore/ops/auto_generate/gen_ops_prim.py +5676 -5167
- mindspore/ops/communication.py +97 -0
- mindspore/ops/composite/__init__.py +5 -2
- mindspore/ops/composite/base.py +16 -2
- mindspore/ops/composite/multitype_ops/__init__.py +3 -1
- mindspore/ops/composite/multitype_ops/_compile_utils.py +150 -8
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -1
- mindspore/ops/composite/multitype_ops/add_impl.py +7 -0
- mindspore/ops/composite/multitype_ops/mod_impl.py +27 -0
- mindspore/ops/function/__init__.py +2 -0
- mindspore/ops/function/array_func.py +24 -18
- mindspore/ops/function/comm_func.py +3883 -0
- mindspore/ops/function/debug_func.py +7 -6
- mindspore/ops/function/grad/grad_func.py +4 -12
- mindspore/ops/function/math_func.py +89 -86
- mindspore/ops/function/nn_func.py +92 -313
- mindspore/ops/function/random_func.py +9 -18
- mindspore/ops/functional.py +4 -1
- mindspore/ops/functional_overload.py +377 -30
- mindspore/ops/operations/__init__.py +2 -5
- mindspore/ops/operations/_custom_ops_utils.py +7 -9
- mindspore/ops/operations/_inner_ops.py +12 -50
- mindspore/ops/operations/_rl_inner_ops.py +0 -933
- mindspore/ops/operations/array_ops.py +5 -50
- mindspore/ops/operations/comm_ops.py +95 -17
- mindspore/ops/operations/custom_ops.py +237 -22
- mindspore/ops/operations/debug_ops.py +33 -35
- mindspore/ops/operations/manually_defined/ops_def.py +39 -318
- mindspore/ops/operations/math_ops.py +5 -5
- mindspore/ops/operations/nn_ops.py +3 -3
- mindspore/ops/operations/sparse_ops.py +0 -83
- mindspore/ops/primitive.py +4 -27
- mindspore/ops/tensor_method.py +88 -10
- mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +5 -5
- mindspore/ops_generate/aclnn/gen_aclnn_implement.py +8 -8
- mindspore/ops_generate/api/functions_cc_generator.py +53 -4
- mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +25 -11
- mindspore/ops_generate/common/gen_constants.py +11 -10
- mindspore/ops_generate/common/op_proto.py +18 -1
- mindspore/ops_generate/common/template.py +102 -245
- mindspore/ops_generate/common/template_utils.py +212 -0
- mindspore/ops_generate/gen_custom_ops.py +69 -0
- mindspore/ops_generate/op_def/ops_def_cc_generator.py +78 -7
- mindspore/ops_generate/op_def_py/base_op_prim_py_generator.py +360 -0
- mindspore/ops_generate/op_def_py/custom_op_prim_py_generator.py +140 -0
- mindspore/ops_generate/op_def_py/op_def_py_generator.py +54 -7
- mindspore/ops_generate/op_def_py/op_prim_py_generator.py +5 -312
- mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +74 -17
- mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +22 -5
- mindspore/ops_generate/pyboost/gen_pyboost_func.py +0 -16
- mindspore/ops_generate/pyboost/op_template_parser.py +3 -2
- mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +21 -5
- mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +2 -2
- mindspore/ops_generate/pyboost/pyboost_functions_impl_cpp_generator.py +30 -10
- mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +10 -3
- mindspore/ops_generate/pyboost/pyboost_internal_kernel_info_adapter_generator.py +1 -1
- mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +19 -9
- mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +71 -28
- mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +10 -9
- mindspore/ops_generate/pyboost/pyboost_utils.py +27 -16
- mindspore/ops_generate/resources/yaml_loader.py +13 -0
- mindspore/ops_generate/tensor_py_cc_generator.py +2 -2
- mindspore/parallel/_auto_parallel_context.py +5 -15
- mindspore/parallel/_cell_wrapper.py +1 -1
- mindspore/parallel/_parallel_serialization.py +4 -6
- mindspore/parallel/_ps_context.py +2 -2
- mindspore/parallel/_utils.py +34 -17
- mindspore/parallel/auto_parallel.py +23 -9
- mindspore/parallel/checkpoint_transform.py +20 -2
- mindspore/parallel/cluster/process_entity/_api.py +28 -33
- mindspore/parallel/cluster/process_entity/_utils.py +9 -5
- mindspore/parallel/cluster/run.py +5 -3
- mindspore/{experimental/llm_boost/ascend_native → parallel/distributed}/__init__.py +21 -22
- mindspore/parallel/distributed/distributed_data_parallel.py +393 -0
- mindspore/parallel/distributed/flatten_grad_buffer.py +295 -0
- mindspore/parallel/function/reshard_func.py +6 -5
- mindspore/parallel/nn/parallel_cell_wrapper.py +40 -3
- mindspore/parallel/nn/parallel_grad_reducer.py +0 -8
- mindspore/parallel/shard.py +7 -21
- mindspore/parallel/strategy.py +336 -0
- mindspore/parallel/transform_safetensors.py +127 -20
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +13 -9
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +1 -1
- mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +1 -1
- mindspore/profiler/common/constant.py +5 -0
- mindspore/profiler/common/file_manager.py +9 -0
- mindspore/profiler/common/msprof_cmd_tool.py +40 -4
- mindspore/profiler/common/path_manager.py +65 -24
- mindspore/profiler/common/profiler_context.py +27 -14
- mindspore/profiler/common/profiler_info.py +3 -3
- mindspore/profiler/common/profiler_meta_data.py +1 -0
- mindspore/profiler/common/profiler_op_analyse.py +10 -6
- mindspore/profiler/common/profiler_path_manager.py +13 -0
- mindspore/profiler/common/util.py +30 -3
- mindspore/profiler/dynamic_profiler.py +91 -46
- mindspore/profiler/envprofiler.py +30 -5
- mindspore/profiler/experimental_config.py +18 -2
- mindspore/profiler/platform/cpu_profiler.py +10 -4
- mindspore/profiler/platform/npu_profiler.py +34 -7
- mindspore/profiler/profiler.py +193 -145
- mindspore/profiler/profiler_action_controller.py +1 -1
- mindspore/profiler/profiler_interface.py +2 -2
- mindspore/rewrite/symbol_tree/symbol_tree.py +1 -1
- mindspore/run_check/_check_version.py +108 -24
- mindspore/runtime/__init__.py +9 -6
- mindspore/runtime/executor.py +35 -0
- mindspore/runtime/memory.py +113 -0
- mindspore/runtime/thread_bind_core.py +1 -1
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/{experimental/llm_boost → tools}/__init__.py +5 -5
- mindspore/tools/data_dump.py +130 -0
- mindspore/tools/sdc_detect.py +91 -0
- mindspore/tools/stress_detect.py +63 -0
- mindspore/train/__init__.py +6 -6
- mindspore/train/_utils.py +8 -21
- mindspore/train/amp.py +6 -7
- mindspore/train/callback/_callback.py +2 -1
- mindspore/train/callback/_checkpoint.py +1 -17
- mindspore/train/callback/_flops_collector.py +10 -6
- mindspore/train/callback/_train_fault_tolerance.py +72 -25
- mindspore/train/data_sink.py +5 -9
- mindspore/train/dataset_helper.py +5 -5
- mindspore/train/model.py +41 -230
- mindspore/train/serialization.py +160 -401
- mindspore/train/train_thor/model_thor.py +2 -2
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +6 -3
- mindspore/utils/dlpack.py +92 -0
- mindspore/utils/dryrun.py +1 -1
- mindspore/utils/runtime_execution_order_check.py +10 -0
- mindspore/utils/sdc_detect.py +14 -12
- mindspore/utils/stress_detect.py +43 -0
- mindspore/utils/utils.py +152 -16
- mindspore/version.py +1 -1
- {mindspore-2.7.0rc1.dist-info → mindspore-2.7.1.dist-info}/METADATA +3 -2
- {mindspore-2.7.0rc1.dist-info → mindspore-2.7.1.dist-info}/RECORD +330 -344
- mindspore/_extends/remote/kernel_build_server_ascend.py +0 -75
- mindspore/communication/_hccl_management.py +0 -297
- mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +0 -207
- mindspore/experimental/llm_boost/ascend_native/llm_boost.py +0 -52
- mindspore/experimental/llm_boost/atb/__init__.py +0 -23
- mindspore/experimental/llm_boost/atb/boost_base.py +0 -385
- mindspore/experimental/llm_boost/atb/llama_boost.py +0 -137
- mindspore/experimental/llm_boost/atb/qwen_boost.py +0 -124
- mindspore/experimental/llm_boost/register.py +0 -130
- mindspore/experimental/llm_boost/utils.py +0 -31
- mindspore/include/OWNERS +0 -7
- mindspore/mindspore_cpu_res_manager.dll +0 -0
- mindspore/mindspore_ops_kernel_common.dll +0 -0
- mindspore/mindspore_res_manager.dll +0 -0
- mindspore/nn/optim/_dist_optimizer_registry.py +0 -111
- mindspore/nn/reinforcement/_batch_read_write.py +0 -142
- mindspore/nn/reinforcement/_tensors_queue.py +0 -152
- mindspore/nn/reinforcement/tensor_array.py +0 -145
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/ops/_op_impl/aicpu/priority_replay_buffer.py +0 -113
- mindspore/ops/_op_impl/aicpu/reservoir_replay_buffer.py +0 -96
- mindspore/ops/_op_impl/aicpu/sparse_cross.py +0 -42
- mindspore/ops/_op_impl/cpu/buffer_get.py +0 -28
- mindspore/ops/_op_impl/cpu/buffer_sample.py +0 -28
- mindspore/ops/_op_impl/cpu/priority_replay_buffer.py +0 -42
- mindspore/ops/operations/_tensor_array.py +0 -359
- mindspore/ops/operations/rl_ops.py +0 -288
- mindspore/parallel/_offload_context.py +0 -275
- mindspore/parallel/_recovery_context.py +0 -115
- mindspore/parallel/_transformer/__init__.py +0 -35
- mindspore/parallel/_transformer/layers.py +0 -765
- mindspore/parallel/_transformer/loss.py +0 -251
- mindspore/parallel/_transformer/moe.py +0 -693
- mindspore/parallel/_transformer/op_parallel_config.py +0 -222
- mindspore/parallel/_transformer/transformer.py +0 -3124
- mindspore/parallel/mpi/_mpi_config.py +0 -116
- mindspore/profiler/common/validator/validate_path.py +0 -84
- mindspore/train/memory_profiling_pb2.py +0 -298
- mindspore/utils/hooks.py +0 -81
- /mindspore/common/{_auto_dynamic.py → dynamic_shape/_auto_dynamic.py} +0 -0
- {mindspore-2.7.0rc1.dist-info → mindspore-2.7.1.dist-info}/WHEEL +0 -0
- {mindspore-2.7.0rc1.dist-info → mindspore-2.7.1.dist-info}/entry_points.txt +0 -0
- {mindspore-2.7.0rc1.dist-info → mindspore-2.7.1.dist-info}/top_level.txt +0 -0
mindspore/profiler/profiler.py
CHANGED
|
@@ -16,18 +16,18 @@
|
|
|
16
16
|
import os
|
|
17
17
|
import json
|
|
18
18
|
import warnings
|
|
19
|
-
from typing import Optional, Dict, Callable, Any
|
|
19
|
+
from typing import Optional, Dict, Callable, Any, Iterable
|
|
20
20
|
from sys import getsizeof
|
|
21
21
|
from concurrent.futures import ProcessPoolExecutor, as_completed
|
|
22
22
|
|
|
23
23
|
from mindspore import log as logger
|
|
24
|
-
from mindspore.profiler.common.constant import ProfilerStepNameConstant, DeviceTarget
|
|
24
|
+
from mindspore.profiler.common.constant import ProfilerStepNameConstant, DeviceTarget, ProfilerActivity
|
|
25
25
|
from mindspore.profiler.common.profiler_context import ProfilerContext
|
|
26
26
|
from mindspore.profiler.platform.npu_profiler import NPUProfilerAnalysis
|
|
27
27
|
from mindspore.profiler.profiler_action_controller import ProfilerActionController
|
|
28
28
|
from mindspore.profiler.experimental_config import _ExperimentalConfig
|
|
29
29
|
from mindspore.profiler.profiler_interface import ProfilerInterface
|
|
30
|
-
from mindspore.profiler.schedule import _default_schedule_fn, ProfilerAction
|
|
30
|
+
from mindspore.profiler.schedule import _default_schedule_fn, ProfilerAction
|
|
31
31
|
from mindspore.profiler.common.record_function import RecordFunction
|
|
32
32
|
from mindspore.profiler.common.path_manager import PathManager
|
|
33
33
|
from mindspore.profiler.common.profiler_path_manager import ProfilerPathManager
|
|
@@ -111,9 +111,9 @@ def tensorboard_trace_handler(dir_name: str = None, worker_name: str = None,
|
|
|
111
111
|
logger.warning("async_mode is not bool, set by default.")
|
|
112
112
|
async_mode = False
|
|
113
113
|
|
|
114
|
-
def handler_fn() -> None:
|
|
114
|
+
def handler_fn(prof_inst) -> None:
|
|
115
115
|
if analyse_flag:
|
|
116
|
-
|
|
116
|
+
prof_inst.analyse(async_mode=async_mode)
|
|
117
117
|
|
|
118
118
|
return handler_fn
|
|
119
119
|
|
|
@@ -261,9 +261,10 @@ class Profiler:
|
|
|
261
261
|
... # Profiler end
|
|
262
262
|
... profiler.analyse()
|
|
263
263
|
"""
|
|
264
|
-
MAX_META_SIZE = 100 * 1024 * 1024 # 100MB
|
|
265
264
|
|
|
266
265
|
def __init__(self, **kwargs) -> None:
|
|
266
|
+
logger.warning("'mindspore.Profiler' will be deprecated and removed in a future version. Please use the api "
|
|
267
|
+
"'mindspore.profiler.profile' instead.")
|
|
267
268
|
self._metadata: Dict[str, str] = {}
|
|
268
269
|
self._prof_context: ProfilerContext = ProfilerContext()
|
|
269
270
|
self._prof_context.set_params(**kwargs)
|
|
@@ -564,7 +565,7 @@ class Profiler:
|
|
|
564
565
|
return
|
|
565
566
|
|
|
566
567
|
add_size = getsizeof(key) + getsizeof(value)
|
|
567
|
-
if getsizeof(self._metadata) + add_size <
|
|
568
|
+
if getsizeof(self._metadata) + add_size < ProfilerMetaData.MAX_META_SIZE:
|
|
568
569
|
if key in self._metadata:
|
|
569
570
|
logger.warning(f"{key} is already saved as metadata, override it.")
|
|
570
571
|
self._metadata[key] = value
|
|
@@ -595,7 +596,7 @@ class Profiler:
|
|
|
595
596
|
return
|
|
596
597
|
|
|
597
598
|
add_size = getsizeof(key) + getsizeof(value)
|
|
598
|
-
if getsizeof(self._metadata) + add_size <
|
|
599
|
+
if getsizeof(self._metadata) + add_size < ProfilerMetaData.MAX_META_SIZE:
|
|
599
600
|
try:
|
|
600
601
|
if key in self._metadata:
|
|
601
602
|
logger.warning(f"{key} is already saved as metadata, override it.")
|
|
@@ -696,38 +697,32 @@ class Profile:
|
|
|
696
697
|
correspondence, cluster, etc data analysis.
|
|
697
698
|
|
|
698
699
|
Args:
|
|
699
|
-
|
|
700
|
-
data collection based on conditions. Default: ``True`` .
|
|
701
|
-
activities (list, optional): The activities to collect.
|
|
700
|
+
activities (Iterable, optional): The activities to collect.
|
|
702
701
|
Default: ``[ProfilerActivity.CPU, ProfilerActivity.NPU]``.
|
|
703
702
|
|
|
704
703
|
- ProfilerActivity.CPU: Collect MindSpore framework data.
|
|
705
704
|
- ProfilerActivity.NPU: Collect CANN software stack and NPU data.
|
|
706
705
|
- ProfilerActivity.GPU: Collect GPU data.
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
is collected. Default: ``None``. It indicates that only performance data is collected, but not resolved.
|
|
712
|
-
For details, see :func:`mindspore.profiler.tensorboard_trace_handler` .
|
|
706
|
+
with_stack (bool, optional): (Ascend only) Whether to collect frame host call stack data
|
|
707
|
+
on the Python side. This
|
|
708
|
+
data is presented in the form of a flame graph in the timeline. When using this parameter, `activities` must
|
|
709
|
+
include ``ProfilerActivity.CPU``. Default value: ``False`` .
|
|
713
710
|
profile_memory (bool, optional): (Ascend only) Whether to collect tensor memory data, collect when ``True`` .
|
|
714
711
|
When using this parameter, `activities` must set to ``[ProfilerActivity.CPU, ProfilerActivity.NPU]``.
|
|
715
712
|
Collecting operator memory data when GE backend requires collecting from the first step.
|
|
716
713
|
Default: ``False`` . The operator name currently collected by this parameter is incomplete.
|
|
717
714
|
This issue will be resolved in later versions. It is recommended to use the environment variable
|
|
718
715
|
``MS_ALLOC_CONF`` instead.
|
|
719
|
-
with_stack (bool, optional): (Ascend only) Whether to collect frame host call stack data
|
|
720
|
-
on the Python side. This
|
|
721
|
-
data is presented in the form of a flame graph in the timeline. When using this parameter, `activities` must
|
|
722
|
-
include ``ProfilerActivity.CPU``. Default value: ``False`` .
|
|
723
|
-
hbm_ddr (bool, optional): (Ascend only) Whether to collect On-Chip Memory/DDR read and write rate data,
|
|
724
|
-
collect when True. Default: ``False`` .
|
|
725
|
-
pcie (bool, optional): (Ascend only) Whether to collect PCIe bandwidth data, collect when True.
|
|
726
|
-
Default: ``False`` .
|
|
727
716
|
data_process (bool, optional): (Ascend/GPU) Whether to collect data to prepare performance data.
|
|
728
717
|
Default value: ``False`` .
|
|
729
718
|
parallel_strategy (bool, optional): (Ascend only) Whether to collect parallel policy performance data.
|
|
730
719
|
Default value: ``False`` .
|
|
720
|
+
start_profile (bool, optional): The start_profile parameter controls whether to enable or disable performance
|
|
721
|
+
data collection based on conditions. Default: ``True`` .
|
|
722
|
+
hbm_ddr (bool, optional): (Ascend only) Whether to collect On-Chip Memory/DDR read and write rate data,
|
|
723
|
+
collect when True. Default: ``False`` .
|
|
724
|
+
pcie (bool, optional): (Ascend only) Whether to collect PCIe bandwidth data, collect when True.
|
|
725
|
+
Default: ``False`` .
|
|
731
726
|
sync_enable (bool, optional): (GPU only) Whether the profiler collects operators in a synchronous way.
|
|
732
727
|
Default: ``True`` .
|
|
733
728
|
|
|
@@ -739,6 +734,12 @@ class Profile:
|
|
|
739
734
|
record_shapes (bool, optional): (Ascend only) Whether to collect operator input tensor shapes data, collect
|
|
740
735
|
when ``True`` . When using this parameter, `activities` must include ``ProfilerActivity.CPU``.
|
|
741
736
|
Default: ``False``.
|
|
737
|
+
schedule (Callable, optional): Sets the action strategy for the capture, defined by the schedule class,
|
|
738
|
+
to be used with the step interface. Default: ``None``. Performance data of all steps is collected.
|
|
739
|
+
For details, see :class:`mindspore.profiler.schedule` .
|
|
740
|
+
on_trace_ready (Callable, optional): Sets the callback function to be executed when the performance data
|
|
741
|
+
is collected. Default: ``None``. It indicates that only performance data is collected, but not resolved.
|
|
742
|
+
For details, see :func:`mindspore.profiler.tensorboard_trace_handler` .
|
|
742
743
|
experimental_config (_ExperimentalConfig, optional): expandable parameters can be configured in this
|
|
743
744
|
configuration item. For details, see :class:`mindspore.profiler._ExperimentalConfig` .
|
|
744
745
|
Raises:
|
|
@@ -803,70 +804,54 @@ class Profile:
|
|
|
803
804
|
... prof.step()
|
|
804
805
|
"""
|
|
805
806
|
|
|
806
|
-
def __init__(
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
sys_io=self._experimental_config.sys_io,
|
|
855
|
-
sys_interconnection=self._experimental_config.sys_interconnection,
|
|
856
|
-
host_sys=self._experimental_config.host_sys,
|
|
857
|
-
schedule=self._schedule,
|
|
858
|
-
on_trace_ready=self._on_trace_ready,
|
|
859
|
-
)
|
|
860
|
-
|
|
861
|
-
def __enter__(self) -> 'Profile':
|
|
862
|
-
self._profiler.__enter__()
|
|
863
|
-
return self
|
|
864
|
-
|
|
865
|
-
def __exit__(self, exe_type, exe_val, exc_tb):
|
|
866
|
-
self._profiler.__exit__(exe_type, exe_val, exc_tb)
|
|
867
|
-
|
|
868
|
-
def __del__(self):
|
|
869
|
-
self._profiler.__del__()
|
|
807
|
+
def __init__(self,
|
|
808
|
+
activities: Optional[Iterable[ProfilerActivity]] = None,
|
|
809
|
+
with_stack: bool = False,
|
|
810
|
+
profile_memory: bool = False,
|
|
811
|
+
data_process: bool = False,
|
|
812
|
+
parallel_strategy: bool = False,
|
|
813
|
+
start_profile: bool = True,
|
|
814
|
+
hbm_ddr: bool = False,
|
|
815
|
+
pcie: bool = False,
|
|
816
|
+
sync_enable: bool = True,
|
|
817
|
+
record_shapes: bool = False,
|
|
818
|
+
schedule: Optional[Callable[[int], ProfilerAction]] = None,
|
|
819
|
+
on_trace_ready: Optional[Callable[..., Any]] = None,
|
|
820
|
+
experimental_config: Optional[_ExperimentalConfig] = None):
|
|
821
|
+
self._metadata: Dict[str, str] = {}
|
|
822
|
+
self._prof_context: ProfilerContext = ProfilerContext()
|
|
823
|
+
kwargs = {
|
|
824
|
+
"activities": activities,
|
|
825
|
+
"with_stack": with_stack,
|
|
826
|
+
"profile_memory": profile_memory,
|
|
827
|
+
"data_process": data_process,
|
|
828
|
+
"parallel_strategy": parallel_strategy,
|
|
829
|
+
"start_profile": start_profile,
|
|
830
|
+
"hbm_ddr": hbm_ddr,
|
|
831
|
+
"pcie": pcie,
|
|
832
|
+
"sync_enable": sync_enable,
|
|
833
|
+
"record_shapes": record_shapes,
|
|
834
|
+
"schedule": schedule,
|
|
835
|
+
"on_trace_ready": on_trace_ready,
|
|
836
|
+
"experimental_config": experimental_config,
|
|
837
|
+
}
|
|
838
|
+
self._prof_context.set_params(**kwargs)
|
|
839
|
+
self._has_started: bool = False
|
|
840
|
+
if schedule and isinstance(schedule, Callable):
|
|
841
|
+
self.schedule = schedule
|
|
842
|
+
# add step markers into the trace and table view
|
|
843
|
+
self.record_steps = True
|
|
844
|
+
else:
|
|
845
|
+
if schedule:
|
|
846
|
+
logger.warning("schedule is not Callable, set by default.")
|
|
847
|
+
self.schedule = _default_schedule_fn
|
|
848
|
+
self.record_steps = False
|
|
849
|
+
self._step_rec_fn: Optional[RecordFunction] = None
|
|
850
|
+
self.step_num = 0
|
|
851
|
+
self.current_action: ProfilerAction = self.schedule(self.step_num)
|
|
852
|
+
self.action_controller = ProfilerActionController(ProfilerInterface, self._prof_context.on_trace_ready)
|
|
853
|
+
if self._prof_context.start_profile:
|
|
854
|
+
self.start()
|
|
870
855
|
|
|
871
856
|
def start(self) -> None:
|
|
872
857
|
"""
|
|
@@ -931,7 +916,14 @@ class Profile:
|
|
|
931
916
|
... prof.step()
|
|
932
917
|
... prof.stop()
|
|
933
918
|
"""
|
|
934
|
-
self.
|
|
919
|
+
if self._has_started:
|
|
920
|
+
logger.warning("The profile has already started. Do not turn on again in the open state.")
|
|
921
|
+
return
|
|
922
|
+
self._has_started = True
|
|
923
|
+
self.action_controller.transit_action(ProfilerAction.NONE, self.current_action)
|
|
924
|
+
if self.record_steps:
|
|
925
|
+
self._step_rec_fn = RecordFunction(ProfilerStepNameConstant.PROFILER_STEP + str(self.step_num))
|
|
926
|
+
self._step_rec_fn.start()
|
|
935
927
|
|
|
936
928
|
def stop(self) -> None:
|
|
937
929
|
"""
|
|
@@ -995,7 +987,13 @@ class Profile:
|
|
|
995
987
|
... prof.step()
|
|
996
988
|
... prof.stop()
|
|
997
989
|
"""
|
|
998
|
-
self.
|
|
990
|
+
if not self._has_started:
|
|
991
|
+
logger.error("The profile has not started. Do not turn off again in the closed state.")
|
|
992
|
+
return
|
|
993
|
+
self._has_started = False
|
|
994
|
+
if self.record_steps and self._step_rec_fn:
|
|
995
|
+
self._step_rec_fn.stop()
|
|
996
|
+
self.action_controller.transit_action(self.current_action, None)
|
|
999
997
|
|
|
1000
998
|
def step(self) -> None:
|
|
1001
999
|
"""
|
|
@@ -1006,59 +1004,71 @@ class Profile:
|
|
|
1006
1004
|
RuntimeError: If the `schedule` parameter is not set.
|
|
1007
1005
|
|
|
1008
1006
|
Examples:
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1007
|
+
>>> import numpy as np
|
|
1008
|
+
>>> import mindspore
|
|
1009
|
+
>>> from mindspore import nn, context
|
|
1010
|
+
>>> import mindspore.dataset as ds
|
|
1011
|
+
>>> from mindspore.profiler import ProfilerLevel, ProfilerActivity, AicoreMetrics, ExportType
|
|
1012
|
+
>>>
|
|
1013
|
+
>>> class Net(nn.Cell):
|
|
1014
|
+
... def __init__(self):
|
|
1015
|
+
... super(Net, self).__init__()
|
|
1016
|
+
... self.fc = nn.Dense(2,2)
|
|
1017
|
+
... def construct(self, x):
|
|
1018
|
+
... return self.fc(x)
|
|
1019
|
+
>>>
|
|
1020
|
+
>>> def generator():
|
|
1021
|
+
... for i in range(2):
|
|
1022
|
+
... yield np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32)
|
|
1023
|
+
>>>
|
|
1024
|
+
>>> def train(net):
|
|
1025
|
+
... optimizer = nn.Momentum(net.trainable_params(), 1, 0.9)
|
|
1026
|
+
... loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
|
|
1027
|
+
... data = ds.GeneratorDataset(generator, ["data", "label"])
|
|
1028
|
+
... model = mindspore.train.Model(net, loss, optimizer)
|
|
1029
|
+
... model.train(1, data)
|
|
1030
|
+
>>>
|
|
1031
|
+
>>> if __name__ == '__main__':
|
|
1032
|
+
... # If the device_target is GPU, set the device_target to "GPU"
|
|
1033
|
+
... context.set_context(mode=mindspore.GRAPH_MODE)
|
|
1034
|
+
... mindspore.set_device("Ascend")
|
|
1035
|
+
...
|
|
1036
|
+
... # Init Profiler
|
|
1037
|
+
... experimental_config = mindspore.profiler._ExperimentalConfig(
|
|
1038
|
+
... profiler_level=ProfilerLevel.Level0,
|
|
1039
|
+
... aic_metrics=AicoreMetrics.AiCoreNone,
|
|
1040
|
+
... l2_cache=False,
|
|
1041
|
+
... mstx=False,
|
|
1042
|
+
... data_simplification=False,
|
|
1043
|
+
... export_type=[ExportType.Text])
|
|
1044
|
+
... steps = 10
|
|
1045
|
+
... net = Net()
|
|
1046
|
+
... # Note that the Profiler should be initialized before model.train
|
|
1047
|
+
... with mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
1048
|
+
... schedule=mindspore.profiler.schedule(wait=0, warmup=0, active=1,
|
|
1049
|
+
... repeat=1, skip_first=0),
|
|
1050
|
+
... on_trace_ready=mindspore.profiler.
|
|
1051
|
+
... tensorboard_trace_handler("./data"),
|
|
1052
|
+
... profile_memory=False,
|
|
1053
|
+
... experimental_config=experimental_config) as prof:
|
|
1054
|
+
...
|
|
1055
|
+
... # Train Model
|
|
1056
|
+
... for step in range(steps):
|
|
1057
|
+
... train(net)
|
|
1058
|
+
... prof.step()
|
|
1060
1059
|
"""
|
|
1061
|
-
self.
|
|
1060
|
+
if not self._has_started:
|
|
1061
|
+
logger.error("profile is stopped, step takes no effect!")
|
|
1062
|
+
return
|
|
1063
|
+
if self.record_steps and self._step_rec_fn:
|
|
1064
|
+
self._step_rec_fn.stop()
|
|
1065
|
+
prev_action = self.current_action
|
|
1066
|
+
self.step_num += 1
|
|
1067
|
+
self.current_action = self.schedule(self.step_num)
|
|
1068
|
+
self.action_controller.transit_action(prev_action, self.current_action)
|
|
1069
|
+
if self.record_steps:
|
|
1070
|
+
self._step_rec_fn = RecordFunction(ProfilerStepNameConstant.PROFILER_STEP + str(self.step_num))
|
|
1071
|
+
self._step_rec_fn.start()
|
|
1062
1072
|
|
|
1063
1073
|
def add_metadata(self, key: str, value: str):
|
|
1064
1074
|
"""
|
|
@@ -1075,8 +1085,18 @@ class Profile:
|
|
|
1075
1085
|
... # Call Profiler add_metadata
|
|
1076
1086
|
... prof.add_metadata("test_key", "test_value")
|
|
1077
1087
|
"""
|
|
1088
|
+
if not isinstance(key, str) or not isinstance(value, str):
|
|
1089
|
+
logger.warning("The key and value of metadata must be string. Skip this metadata.")
|
|
1090
|
+
return
|
|
1078
1091
|
|
|
1079
|
-
|
|
1092
|
+
add_size = getsizeof(key) + getsizeof(value)
|
|
1093
|
+
if getsizeof(self._metadata) + add_size < ProfilerMetaData.MAX_META_SIZE:
|
|
1094
|
+
if key in self._metadata:
|
|
1095
|
+
logger.warning(f"{key} is already saved as metadata, override it.")
|
|
1096
|
+
self._metadata[key] = value
|
|
1097
|
+
ProfilerMetaData.set_metadata(self._metadata)
|
|
1098
|
+
else:
|
|
1099
|
+
logger.warning("Too many metadata added. Skip this metadata")
|
|
1080
1100
|
|
|
1081
1101
|
def add_metadata_json(self, key: str, value: str):
|
|
1082
1102
|
"""
|
|
@@ -1094,7 +1114,35 @@ class Profile:
|
|
|
1094
1114
|
... # Call Profiler add_metadata_json
|
|
1095
1115
|
... prof.add_metadata_json("test_key", json.dumps({"key1": 1, "key2": 2}))
|
|
1096
1116
|
"""
|
|
1097
|
-
|
|
1117
|
+
if not isinstance(key, str) or not isinstance(value, str):
|
|
1118
|
+
logger.warning("The key and value of metadata must be string. Skip this metadata.")
|
|
1119
|
+
return
|
|
1120
|
+
|
|
1121
|
+
add_size = getsizeof(key) + getsizeof(value)
|
|
1122
|
+
if getsizeof(self._metadata) + add_size < ProfilerMetaData.MAX_META_SIZE:
|
|
1123
|
+
try:
|
|
1124
|
+
if key in self._metadata:
|
|
1125
|
+
logger.warning(f"{key} is already saved as metadata, override it.")
|
|
1126
|
+
self._metadata[key] = json.loads(value)
|
|
1127
|
+
ProfilerMetaData.set_metadata(self._metadata)
|
|
1128
|
+
except ValueError:
|
|
1129
|
+
logger.warning("The metadata value must be json format string. Skip this metadata")
|
|
1130
|
+
else:
|
|
1131
|
+
logger.warning("Too many metadata added. Skip this metadata")
|
|
1132
|
+
|
|
1133
|
+
def __enter__(self) -> 'Profile':
|
|
1134
|
+
if not self._has_started:
|
|
1135
|
+
self.start()
|
|
1136
|
+
return self
|
|
1137
|
+
|
|
1138
|
+
def __exit__(self, exc_type, exc_value, traceback) -> None:
|
|
1139
|
+
if self._has_started:
|
|
1140
|
+
self.stop()
|
|
1141
|
+
|
|
1142
|
+
def __del__(self):
|
|
1143
|
+
if self._has_started:
|
|
1144
|
+
self.stop()
|
|
1145
|
+
logger.warning("profile is stopped at the end of the program.")
|
|
1098
1146
|
|
|
1099
1147
|
|
|
1100
1148
|
def analyse(profiler_path: str, max_process_number: int = os.cpu_count() // 2, pretty=False, step_list=None,
|
|
@@ -56,7 +56,7 @@ class ProfilerActionController:
|
|
|
56
56
|
This method is called when the trace is ready to notify the callback function.
|
|
57
57
|
"""
|
|
58
58
|
if self.on_trace_ready:
|
|
59
|
-
self.on_trace_ready()
|
|
59
|
+
self.on_trace_ready(self.prof_interface)
|
|
60
60
|
|
|
61
61
|
def transit_action(self, prev_action: ProfilerAction, current_action: ProfilerAction) -> None:
|
|
62
62
|
"""
|
|
@@ -76,14 +76,14 @@ class ProfilerInterface:
|
|
|
76
76
|
logger.info("ProfilerInterface stop")
|
|
77
77
|
|
|
78
78
|
@classmethod
|
|
79
|
-
def analyse(cls):
|
|
79
|
+
def analyse(cls, **kwargs):
|
|
80
80
|
"""ProfilerInterface analyse"""
|
|
81
81
|
if not cls.is_initialized:
|
|
82
82
|
logger.warning("ProfilerInterface analyse failed, profiler has not been initialized.")
|
|
83
83
|
return
|
|
84
84
|
|
|
85
85
|
for profiler in cls.platform_profilers_set:
|
|
86
|
-
profiler.analyse()
|
|
86
|
+
profiler.analyse(**kwargs)
|
|
87
87
|
|
|
88
88
|
logger.info("ProfilerInterface analyse")
|
|
89
89
|
|
|
@@ -1503,7 +1503,7 @@ class SymbolTree(Observer, Observable, NodeManager):
|
|
|
1503
1503
|
"""
|
|
1504
1504
|
# ast.Constant can be check without eval
|
|
1505
1505
|
if isinstance(ast_node, ast.Constant):
|
|
1506
|
-
return True, bool(
|
|
1506
|
+
return True, bool(ast_node.value)
|
|
1507
1507
|
# Get the module where the code of ast_node is located
|
|
1508
1508
|
file_path = inspect.getfile(type(self.get_origin_network()))
|
|
1509
1509
|
module = None
|