mindspore 2.4.10__cp310-cp310-win_amd64.whl → 2.6.0__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 +13 -6
- 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/_check_jit_forbidden_api.py +3 -0
- mindspore/_checkparam.py +3 -38
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +83 -0
- mindspore/_extends/parse/deprecated/__init__.py +0 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
- mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
- mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
- mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
- mindspore/_extends/parse/parser.py +47 -198
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +229 -99
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +11 -5
- 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/__init__.py +2 -2
- mindspore/boost/base.py +3 -7
- mindspore/boost/boost_cell_wrapper.py +138 -43
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +6 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -2
- mindspore/common/_stub_tensor.py +30 -14
- mindspore/common/_tensor_cpp_method.py +17 -0
- mindspore/common/_tensor_docs.py +4760 -0
- mindspore/common/api.py +480 -372
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +39 -36
- mindspore/common/dump.py +9 -6
- mindspore/common/file_system.py +9 -1
- mindspore/common/generator.py +5 -0
- mindspore/common/hook_handle.py +6 -2
- mindspore/common/initializer.py +13 -10
- mindspore/common/jit_begin_end.py +94 -0
- mindspore/common/jit_config.py +6 -1
- mindspore/common/jit_context.py +76 -0
- mindspore/common/jit_trace.py +378 -0
- mindspore/common/lazy_inline.py +9 -3
- mindspore/common/mindir_util.py +10 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +135 -52
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +975 -1981
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +52 -2
- mindspore/communication/comm_func.py +240 -181
- mindspore/communication/management.py +95 -26
- mindspore/context.py +324 -573
- mindspore/dataset/__init__.py +65 -37
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/callback/ds_callback.py +2 -1
- mindspore/dataset/core/config.py +87 -6
- mindspore/dataset/engine/cache_admin.py +3 -3
- mindspore/dataset/engine/cache_client.py +6 -5
- mindspore/dataset/engine/datasets.py +292 -267
- mindspore/dataset/engine/datasets_audio.py +22 -8
- mindspore/dataset/engine/datasets_standard_format.py +46 -27
- mindspore/dataset/engine/datasets_text.py +78 -48
- mindspore/dataset/engine/datasets_user_defined.py +183 -117
- mindspore/dataset/engine/datasets_vision.py +120 -44
- mindspore/dataset/engine/iterators.py +283 -63
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/obs/util.py +8 -0
- mindspore/dataset/engine/queue.py +40 -0
- mindspore/dataset/engine/samplers.py +289 -43
- mindspore/dataset/engine/serializer_deserializer.py +3 -2
- mindspore/dataset/engine/validators.py +53 -11
- mindspore/dataset/text/__init__.py +7 -6
- mindspore/dataset/text/transforms.py +6 -5
- mindspore/dataset/text/utils.py +3 -3
- mindspore/dataset/transforms/__init__.py +0 -9
- mindspore/dataset/transforms/py_transforms_util.py +17 -0
- mindspore/dataset/transforms/transforms.py +31 -14
- mindspore/dataset/utils/browse_dataset.py +1 -1
- mindspore/dataset/vision/__init__.py +2 -9
- mindspore/dataset/vision/transforms.py +202 -158
- mindspore/dataset/vision/utils.py +7 -5
- 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 +153 -0
- mindspore/device_context/ascend/op_precision.py +193 -0
- mindspore/device_context/ascend/op_tuning.py +123 -0
- mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
- 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 +170 -0
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/llm_boost/__init__.py +1 -0
- mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
- mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +209 -0
- mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
- mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
- mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
- mindspore/experimental/llm_boost/register.py +1 -0
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +6 -6
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +7 -0
- mindspore/experimental/optim/adamax.py +4 -4
- mindspore/experimental/optim/adamw.py +4 -0
- mindspore/experimental/optim/asgd.py +1 -1
- mindspore/experimental/optim/lr_scheduler.py +73 -46
- mindspore/experimental/optim/radam.py +34 -31
- mindspore/experimental/optim/rprop.py +1 -1
- mindspore/experimental/optim/sgd.py +1 -1
- mindspore/hal/contiguous_tensors_handle.py +6 -10
- mindspore/hal/device.py +55 -53
- mindspore/hal/event.py +52 -52
- mindspore/hal/memory.py +179 -120
- mindspore/hal/stream.py +150 -109
- mindspore/include/api/context.h +0 -1
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +50 -0
- mindspore/mindrecord/__init__.py +21 -8
- 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_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_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_backend.dll → 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 +798 -761
- mindspore/mint/distributed/__init__.py +70 -4
- mindspore/mint/distributed/distributed.py +2679 -44
- mindspore/mint/linalg/__init__.py +8 -0
- mindspore/mint/nn/__init__.py +743 -22
- mindspore/mint/nn/functional.py +716 -23
- mindspore/mint/nn/layer/__init__.py +21 -4
- mindspore/mint/nn/layer/_functions.py +334 -0
- mindspore/mint/nn/layer/activation.py +276 -1
- mindspore/mint/nn/layer/basic.py +123 -0
- mindspore/mint/nn/layer/conv.py +933 -0
- mindspore/mint/nn/layer/normalization.py +223 -28
- mindspore/mint/nn/layer/padding.py +797 -0
- mindspore/mint/nn/layer/pooling.py +235 -0
- mindspore/mint/optim/__init__.py +3 -1
- mindspore/mint/optim/adam.py +223 -0
- mindspore/mint/optim/adamw.py +26 -19
- mindspore/mint/optim/sgd.py +171 -0
- 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 +4 -1
- mindspore/nn/cell.py +1373 -192
- mindspore/nn/dynamic_lr.py +2 -1
- mindspore/nn/layer/activation.py +29 -27
- mindspore/nn/layer/basic.py +51 -35
- mindspore/nn/layer/channel_shuffle.py +3 -3
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +53 -42
- mindspore/nn/layer/embedding.py +12 -11
- mindspore/nn/layer/normalization.py +56 -49
- mindspore/nn/layer/padding.py +4 -3
- mindspore/nn/layer/pooling.py +120 -42
- 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 +59 -36
- mindspore/nn/learning_rate_schedule.py +8 -4
- mindspore/nn/loss/loss.py +58 -55
- mindspore/nn/optim/ada_grad.py +7 -5
- mindspore/nn/optim/adadelta.py +11 -9
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +19 -15
- mindspore/nn/optim/adamax.py +8 -7
- mindspore/nn/optim/adasum.py +5 -5
- mindspore/nn/optim/asgd.py +3 -1
- mindspore/nn/optim/ftrl.py +11 -9
- mindspore/nn/optim/lamb.py +1 -1
- mindspore/nn/optim/lars.py +1 -4
- mindspore/nn/optim/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +3 -3
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +11 -9
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- mindspore/nn/optim/thor.py +2 -1
- mindspore/nn/probability/bijector/bijector.py +17 -11
- mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
- mindspore/nn/probability/bijector/invert.py +2 -2
- mindspore/nn/probability/bijector/scalar_affine.py +3 -3
- mindspore/nn/probability/bijector/softplus.py +3 -2
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +1 -1
- mindspore/nn/probability/distribution/cauchy.py +4 -2
- mindspore/nn/probability/distribution/exponential.py +6 -7
- mindspore/nn/probability/distribution/gamma.py +2 -2
- mindspore/nn/probability/distribution/gumbel.py +2 -2
- mindspore/nn/probability/distribution/half_normal.py +5 -3
- mindspore/nn/probability/distribution/logistic.py +5 -3
- mindspore/nn/probability/distribution/poisson.py +1 -1
- mindspore/nn/probability/distribution/uniform.py +5 -3
- mindspore/nn/reinforcement/_tensors_queue.py +1 -1
- mindspore/nn/reinforcement/tensor_array.py +1 -1
- mindspore/nn/utils/init.py +13 -11
- mindspore/nn/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +181 -122
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +6 -7
- mindspore/numpy/array_creations.py +63 -65
- mindspore/numpy/array_ops.py +149 -144
- mindspore/numpy/logic_ops.py +41 -42
- mindspore/numpy/math_ops.py +361 -359
- mindspore/numpy/utils.py +17 -18
- mindspore/numpy/utils_const.py +5 -6
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +5 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
- mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
- mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
- mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
- mindspore/ops/_op_impl/cpu/__init__.py +1 -0
- mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
- mindspore/ops/_register_for_op.py +0 -11
- mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
- mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
- mindspore/ops/_vmap/vmap_array_ops.py +52 -25
- mindspore/ops/_vmap/vmap_base.py +0 -2
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
- mindspore/ops/_vmap/vmap_math_ops.py +15 -16
- mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +258 -46
- mindspore/ops/auto_generate/gen_extend_func.py +757 -185
- mindspore/ops/auto_generate/gen_ops_def.py +4197 -2243
- mindspore/ops/auto_generate/gen_ops_prim.py +16976 -6055
- mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +20 -25
- mindspore/ops/composite/math_ops.py +6 -16
- mindspore/ops/composite/multitype_ops/__init__.py +5 -2
- mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
- mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
- mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
- mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
- mindspore/ops/function/__init__.py +40 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +2089 -2403
- mindspore/ops/function/clip_func.py +80 -23
- mindspore/ops/function/debug_func.py +57 -57
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +2 -2
- mindspore/ops/function/linalg_func.py +47 -78
- mindspore/ops/function/math_func.py +4351 -3813
- mindspore/ops/function/nn_func.py +1712 -637
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +18 -84
- mindspore/ops/function/random_func.py +452 -387
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +6 -6
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +26 -18
- mindspore/ops/functional.py +23 -7
- mindspore/ops/functional_overload.py +1548 -0
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +23 -15
- mindspore/ops/operations/_custom_ops_utils.py +235 -0
- mindspore/ops/operations/_embedding_cache_ops.py +4 -4
- mindspore/ops/operations/_grad_ops.py +2 -43
- mindspore/ops/operations/_infer_ops.py +2 -1
- mindspore/ops/operations/_inner_ops.py +43 -84
- mindspore/ops/operations/_ms_kernel.py +4 -10
- mindspore/ops/operations/_rl_inner_ops.py +1 -1
- mindspore/ops/operations/_scalar_ops.py +3 -2
- mindspore/ops/operations/_sequence_ops.py +1 -1
- mindspore/ops/operations/_tensor_array.py +1 -1
- mindspore/ops/operations/array_ops.py +81 -324
- mindspore/ops/operations/comm_ops.py +154 -108
- mindspore/ops/operations/custom_ops.py +298 -87
- mindspore/ops/operations/debug_ops.py +157 -59
- mindspore/ops/operations/inner_ops.py +7 -5
- mindspore/ops/operations/linalg_ops.py +1 -57
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +928 -180
- mindspore/ops/operations/math_ops.py +32 -234
- mindspore/ops/operations/nn_ops.py +212 -531
- mindspore/ops/operations/other_ops.py +62 -9
- mindspore/ops/operations/random_ops.py +13 -7
- mindspore/ops/operations/reshard_ops.py +1 -1
- mindspore/ops/operations/sparse_ops.py +2 -2
- mindspore/ops/primitive.py +66 -53
- mindspore/ops/tensor_method.py +1895 -0
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
- mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
- mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
- mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
- mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
- mindspore/ops_generate/api/functions_cc_generator.py +237 -0
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/api/op_api_proto.py +235 -0
- mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/base_generator.py +11 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/common/gen_utils.py +348 -0
- mindspore/ops_generate/common/op_proto.py +473 -0
- mindspore/ops_generate/common/template.py +523 -0
- mindspore/ops_generate/gen_ops.py +22 -1069
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
- mindspore/ops_generate/op_def/ops_def_cc_generator.py +296 -0
- mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
- mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
- mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
- mindspore/ops_generate/op_def_py/__init__.py +0 -0
- mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
- mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
- mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
- mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
- mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
- mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
- mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
- mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
- mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
- mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
- mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
- mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
- mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
- mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
- mindspore/ops_generate/resources/__init__.py +0 -0
- mindspore/ops_generate/resources/resource_list.py +30 -0
- mindspore/ops_generate/resources/resource_loader.py +36 -0
- mindspore/ops_generate/resources/resource_manager.py +64 -0
- mindspore/ops_generate/resources/yaml_loader.py +88 -0
- mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
- mindspore/parallel/__init__.py +7 -3
- mindspore/parallel/_auto_parallel_context.py +159 -40
- mindspore/parallel/_cell_wrapper.py +132 -15
- mindspore/parallel/_parallel_serialization.py +107 -5
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +199 -23
- mindspore/parallel/algo_parameter_config.py +4 -4
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +700 -35
- mindspore/parallel/cluster/process_entity/_api.py +276 -50
- mindspore/parallel/cluster/process_entity/_utils.py +41 -6
- mindspore/parallel/cluster/run.py +21 -4
- mindspore/parallel/function/__init__.py +24 -0
- mindspore/parallel/function/reshard_func.py +258 -0
- mindspore/parallel/nn/__init__.py +25 -0
- mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
- mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
- mindspore/parallel/parameter_broadcast.py +25 -14
- mindspore/parallel/shard.py +137 -59
- mindspore/parallel/transform_safetensors.py +364 -305
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +22 -5
- mindspore/profiler/analysis/__init__.py +0 -0
- mindspore/profiler/analysis/parser/__init__.py +0 -0
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -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 +264 -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 +109 -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 +415 -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 +372 -0
- mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -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 +96 -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 +139 -0
- mindspore/profiler/common/command_executor.py +90 -0
- mindspore/profiler/common/constant.py +186 -3
- mindspore/profiler/common/file_manager.py +208 -0
- mindspore/profiler/common/log.py +130 -0
- mindspore/profiler/common/msprof_cmd_tool.py +221 -0
- mindspore/profiler/common/path_manager.py +395 -0
- mindspore/profiler/common/process_bar.py +168 -0
- mindspore/profiler/common/process_pool.py +9 -3
- mindspore/profiler/common/profiler_context.py +500 -0
- mindspore/profiler/common/profiler_info.py +304 -0
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_output_path.py +284 -0
- mindspore/profiler/common/profiler_parameters.py +251 -0
- mindspore/profiler/common/profiler_path_manager.py +179 -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 +341 -75
- mindspore/profiler/envprofiler.py +163 -0
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +242 -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 +335 -0
- mindspore/profiler/profiler.py +1073 -90
- mindspore/profiler/profiler_action_controller.py +187 -0
- mindspore/profiler/profiler_interface.py +118 -0
- mindspore/profiler/schedule.py +243 -0
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +2 -3
- mindspore/run_check/_check_version.py +27 -20
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +37 -0
- mindspore/runtime/device.py +27 -0
- mindspore/runtime/event.py +209 -0
- mindspore/runtime/executor.py +177 -0
- mindspore/runtime/memory.py +416 -0
- mindspore/runtime/stream.py +460 -0
- mindspore/runtime/thread_bind_core.py +401 -0
- mindspore/safeguard/rewrite_obfuscation.py +12 -9
- 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 +8 -8
- mindspore/train/_utils.py +96 -27
- mindspore/train/amp.py +9 -5
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +53 -55
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_early_stop.py +1 -1
- mindspore/train/callback/_flops_collector.py +103 -68
- mindspore/train/callback/_history.py +8 -5
- mindspore/train/callback/_lambda_callback.py +2 -2
- mindspore/train/callback/_landscape.py +0 -3
- mindspore/train/callback/_loss_monitor.py +2 -1
- mindspore/train/callback/_on_request_exit.py +6 -5
- mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
- mindspore/train/callback/_summary_collector.py +52 -19
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +228 -108
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +15 -16
- mindspore/train/loss_scale_manager.py +8 -7
- mindspore/train/metrics/accuracy.py +3 -3
- mindspore/train/metrics/confusion_matrix.py +9 -9
- mindspore/train/metrics/error.py +3 -3
- mindspore/train/metrics/hausdorff_distance.py +4 -4
- mindspore/train/metrics/mean_surface_distance.py +3 -3
- mindspore/train/metrics/metric.py +0 -12
- mindspore/train/metrics/occlusion_sensitivity.py +4 -2
- mindspore/train/metrics/precision.py +11 -10
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +174 -46
- mindspore/train/model.py +269 -136
- mindspore/train/serialization.py +622 -978
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +2 -3
- mindspore/train/train_thor/model_thor.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +6 -3
- mindspore/utils/dryrun.py +140 -0
- mindspore/utils/hooks.py +81 -0
- mindspore/utils/runtime_execution_order_check.py +552 -0
- mindspore/utils/utils.py +138 -4
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/METADATA +3 -3
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/RECORD +587 -418
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/entry_points.txt +1 -1
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/common/_tensor_overload.py +0 -139
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_aclnn_implement.py +0 -263
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/gen_pyboost_func.py +0 -1052
- mindspore/ops_generate/gen_utils.py +0 -209
- mindspore/ops_generate/op_proto.py +0 -145
- mindspore/ops_generate/template.py +0 -261
- mindspore/profiler/envprofiling.py +0 -254
- mindspore/profiler/profiling.py +0 -1926
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/WHEEL +0 -0
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,163 @@
|
|
|
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
|
+
"""EnvProfiler"""
|
|
16
|
+
import os
|
|
17
|
+
import json
|
|
18
|
+
from mindspore import log as logger
|
|
19
|
+
from mindspore.profiler.profiler import Profiler
|
|
20
|
+
from mindspore.profiler.common.constant import (
|
|
21
|
+
ProfilerLevel,
|
|
22
|
+
AicoreMetrics,
|
|
23
|
+
ProfilerActivity,
|
|
24
|
+
ExportType,
|
|
25
|
+
)
|
|
26
|
+
from mindspore.profiler.common.profiler_parameters import ProfilerParameters
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class EnvProfiler:
|
|
30
|
+
"""Collect and analyze training performance data, support calls during and after training."""
|
|
31
|
+
|
|
32
|
+
NOT_SUPPORTED_PARAMS = ["schedule", "on_trace_ready"]
|
|
33
|
+
profiler = None
|
|
34
|
+
|
|
35
|
+
@classmethod
|
|
36
|
+
def init_profiler(cls):
|
|
37
|
+
"""
|
|
38
|
+
Initialize the profiler.
|
|
39
|
+
"""
|
|
40
|
+
if not os.getenv("MS_PROFILER_OPTIONS"):
|
|
41
|
+
return
|
|
42
|
+
options = cls._load_options()
|
|
43
|
+
if not options:
|
|
44
|
+
logger.error("Failed to load MS_PROFILER_OPTIONS, json decode error.")
|
|
45
|
+
return
|
|
46
|
+
|
|
47
|
+
params = cls._convert_options_to_profiler_params(options)
|
|
48
|
+
logger.info(f"params: {params}")
|
|
49
|
+
if params["start_profile"]:
|
|
50
|
+
cls.profiler = Profiler(**params)
|
|
51
|
+
logger.info("Profiler init success.")
|
|
52
|
+
|
|
53
|
+
def analyse(self):
|
|
54
|
+
"""
|
|
55
|
+
Analyze the collected data.
|
|
56
|
+
"""
|
|
57
|
+
logger.info("analyse start")
|
|
58
|
+
if not self.profiler:
|
|
59
|
+
logger.info("Profiler is not initialized, skip analyse.")
|
|
60
|
+
return
|
|
61
|
+
self.profiler.analyse()
|
|
62
|
+
logger.info("analyse end")
|
|
63
|
+
|
|
64
|
+
@classmethod
|
|
65
|
+
def _load_options(cls):
|
|
66
|
+
"""
|
|
67
|
+
Load the options from the environment variable.
|
|
68
|
+
"""
|
|
69
|
+
try:
|
|
70
|
+
options = json.loads(os.environ.get("MS_PROFILER_OPTIONS", "{}"))
|
|
71
|
+
except json.JSONDecodeError:
|
|
72
|
+
return {}
|
|
73
|
+
return options
|
|
74
|
+
|
|
75
|
+
@classmethod
|
|
76
|
+
def _convert_option_to_enum_value(cls, enum_class, option_value, default_value):
|
|
77
|
+
"""
|
|
78
|
+
Convert the option value to the enum value.
|
|
79
|
+
"""
|
|
80
|
+
try:
|
|
81
|
+
return enum_class(option_value)
|
|
82
|
+
except ValueError:
|
|
83
|
+
logger.warning(
|
|
84
|
+
f"The value '{option_value}' of parameter '{enum_class.__name__}' is invalid, "
|
|
85
|
+
f"use default value '{default_value}' instead."
|
|
86
|
+
)
|
|
87
|
+
return default_value
|
|
88
|
+
|
|
89
|
+
@classmethod
|
|
90
|
+
def _convert_options_to_profiler_params(cls, options):
|
|
91
|
+
"""
|
|
92
|
+
Convert the options to the profiler parameters.
|
|
93
|
+
"""
|
|
94
|
+
params = {}
|
|
95
|
+
if not options:
|
|
96
|
+
logger.warning("MS_PROFILER_OPTIONS is empty, use default values.")
|
|
97
|
+
return params
|
|
98
|
+
|
|
99
|
+
if "output_path" in options:
|
|
100
|
+
params["output_path"] = options["output_path"]
|
|
101
|
+
|
|
102
|
+
# if start is not set, default is False
|
|
103
|
+
params["start_profile"] = options.get("start", False)
|
|
104
|
+
|
|
105
|
+
for param, (_, default_value) in ProfilerParameters.PARAMS.items():
|
|
106
|
+
if param in options and param not in cls.NOT_SUPPORTED_PARAMS:
|
|
107
|
+
if param == "activities" and isinstance(options[param], list):
|
|
108
|
+
params[param] = cls._convert_activities_to_list(
|
|
109
|
+
options[param], default_value
|
|
110
|
+
)
|
|
111
|
+
elif param == "aic_metrics":
|
|
112
|
+
params[param] = cls._convert_option_to_enum_value(
|
|
113
|
+
AicoreMetrics, options[param], default_value
|
|
114
|
+
)
|
|
115
|
+
elif param == "profiler_level":
|
|
116
|
+
params[param] = cls._convert_option_to_enum_value(
|
|
117
|
+
ProfilerLevel, options[param], default_value
|
|
118
|
+
)
|
|
119
|
+
elif param == "export_type":
|
|
120
|
+
params[param] = cls._convert_export_type_to_list(
|
|
121
|
+
options[param], default_value
|
|
122
|
+
)
|
|
123
|
+
else:
|
|
124
|
+
params[param] = options[param]
|
|
125
|
+
return params
|
|
126
|
+
|
|
127
|
+
@classmethod
|
|
128
|
+
def _convert_activities_to_list(cls, activities, default_value):
|
|
129
|
+
"""
|
|
130
|
+
Convert the activities to the list.
|
|
131
|
+
"""
|
|
132
|
+
res = []
|
|
133
|
+
for activity in activities:
|
|
134
|
+
res.append(
|
|
135
|
+
cls._convert_option_to_enum_value(
|
|
136
|
+
ProfilerActivity, activity, default_value
|
|
137
|
+
)
|
|
138
|
+
)
|
|
139
|
+
# remove duplicate
|
|
140
|
+
return list(set(default_value if default_value in res else res))
|
|
141
|
+
|
|
142
|
+
@classmethod
|
|
143
|
+
def _convert_export_type_to_list(cls, export_types, default_value) -> list:
|
|
144
|
+
"""
|
|
145
|
+
Check the export type to the list.
|
|
146
|
+
"""
|
|
147
|
+
res = []
|
|
148
|
+
for export_type in export_types:
|
|
149
|
+
if export_type != "text" and export_type != "db":
|
|
150
|
+
logger.warning(
|
|
151
|
+
f"The value '{export_type}' of parameter '{ExportType.__name__}' is invalid, "
|
|
152
|
+
f"use default value '{default_value}' instead."
|
|
153
|
+
)
|
|
154
|
+
return default_value
|
|
155
|
+
res.append(
|
|
156
|
+
cls._convert_option_to_enum_value(
|
|
157
|
+
ExportType, export_type, default_value
|
|
158
|
+
)
|
|
159
|
+
)
|
|
160
|
+
# remove duplicate
|
|
161
|
+
return list(set(res))
|
|
162
|
+
|
|
163
|
+
EnvProfiler.init_profiler()
|
|
@@ -0,0 +1,197 @@
|
|
|
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
|
+
"""Experimental config file."""
|
|
16
|
+
|
|
17
|
+
from mindspore.profiler.common.constant import ProfilerLevel, AicoreMetrics
|
|
18
|
+
|
|
19
|
+
__all__ = ["_ExperimentalConfig"]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class _ExperimentalConfig:
|
|
23
|
+
r"""
|
|
24
|
+
The purpose of this class is to configure scalable parameters when using profiles for model
|
|
25
|
+
performance data acquisition.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
profiler_level (ProfilerLevel, optional): (Ascend only) The level of profiling.
|
|
29
|
+
Default: ``ProfilerLevel.Level0``.
|
|
30
|
+
|
|
31
|
+
- ProfilerLevel.LevelNone: This setting takes effect only when mstx is enabled, indicating that no
|
|
32
|
+
operator data is collected on the device side.
|
|
33
|
+
- ProfilerLevel.Level0: Leanest level of profiling data collection, collects information about the elapsed
|
|
34
|
+
time of the computational operators on the NPU and communication large operator information.
|
|
35
|
+
- ProfilerLevel.Level1: Collect more CANN layer AscendCL data and AICore performance metrics and
|
|
36
|
+
communication mini operator information based on Level0.
|
|
37
|
+
- ProfilerLevel.Level2: Collect GE and Runtime information in CANN layer on top of Level1
|
|
38
|
+
aic_metrics (AicoreMetrics, optional): (Ascend only) Types of AICORE performance data collected,
|
|
39
|
+
when using this parameter, `activities` must include ``ProfilerActivity.NPU`` , and the value
|
|
40
|
+
must be a member of AicoreMetrics. When profiler_level is Level0, the default value is
|
|
41
|
+
``AicoreMetrics.AiCoreNone``; Profiler_level is a Level1 or Level2 stores, the default value is:
|
|
42
|
+
``AicoreMetrics. PipeUtilization``.The data items contained in each metric are as follows:
|
|
43
|
+
|
|
44
|
+
- AicoreMetrics.AiCoreNone: Does not collect AICORE data.
|
|
45
|
+
- AicoreMetrics.ArithmeticUtilization: ArithmeticUtilization contains mac_fp16/int8_ratio,
|
|
46
|
+
vec_fp32/fp16/int32_ratio, vec_misc_ratio etc.
|
|
47
|
+
- AicoreMetrics.PipeUtilization: PipeUtilization contains vec_ratio, mac_ratio, scalar_ratio,
|
|
48
|
+
mte1/mte2/mte3_ratio, icache_miss_rate etc.
|
|
49
|
+
- AicoreMetrics.Memory: Memory contains ub_read/write_bw, l1_read/write_bw, l2_read/write_bw,
|
|
50
|
+
main_mem_read/write_bw etc.
|
|
51
|
+
- AicoreMetrics.MemoryL0: MemoryL0 contains l0a_read/write_bw, l0b_read/write_bw, l0c_read/write_bw etc.
|
|
52
|
+
- AicoreMetrics.ResourceConflictRatio: ResourceConflictRatio contains vec_bankgroup/bank/resc_cflt_ratio
|
|
53
|
+
etc.
|
|
54
|
+
- AicoreMetrics.MemoryUB: MemoryUB contains ub_read/write_bw_mte, ub_read/write_bw_vector,
|
|
55
|
+
ub\_read/write_bw_scalar etc.
|
|
56
|
+
- AicoreMetrics.L2Cache: L2Cache contains write_cache_hit, write_cache_miss_allocate, r0_read_cache_hit,
|
|
57
|
+
r1_read_cache_hit etc. This function only supports Atlas A2 training series products.
|
|
58
|
+
- AicoreMetrics.MemoryAccess: Statistics on storage access bandwidth and storage capacity of main
|
|
59
|
+
storage and l2 cache etc.
|
|
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 O2 mode,
|
|
62
|
+
only wait and skip_first parameters in schedule configuration can be set to 0.
|
|
63
|
+
mstx (bool, optional): (Ascend only) Whether to collect light weight profiling data, collect when True.
|
|
64
|
+
Default: ``False`` .
|
|
65
|
+
data_simplification (bool, optional): (Ascend only) Whether to remove FRAMEWORK data and other redundant data.
|
|
66
|
+
If set to True, only the profiler deliverables and raw performance data under the PROF_XXX directory are
|
|
67
|
+
kept to save space. Default value: ``True`` .
|
|
68
|
+
export_type (list, optional): (Ascend only) The data type to export.
|
|
69
|
+
The db and text formats can be exported at the same time. The default value is ``None``,
|
|
70
|
+
indicating that data of the text type is exported.
|
|
71
|
+
|
|
72
|
+
- ExportType.Text: Export text type data.
|
|
73
|
+
- ExportType.Db: Export db type data.
|
|
74
|
+
|
|
75
|
+
Raises:
|
|
76
|
+
RuntimeError: When the version of CANN does not match the version of MindSpore,
|
|
77
|
+
MindSpore cannot parse the generated ascend_job_id directory structure.
|
|
78
|
+
|
|
79
|
+
Supported Platforms:
|
|
80
|
+
``Ascend`` ``GPU``
|
|
81
|
+
|
|
82
|
+
Examples:
|
|
83
|
+
>>> import numpy as np
|
|
84
|
+
>>> import mindspore
|
|
85
|
+
>>> from mindspore import nn, context
|
|
86
|
+
>>> import mindspore.dataset as ds
|
|
87
|
+
>>> from mindspore.profiler import ProfilerLevel, ProfilerActivity, AicoreMetrics, ExportType
|
|
88
|
+
>>>
|
|
89
|
+
>>> class Net(nn.Cell):
|
|
90
|
+
... def __init__(self):
|
|
91
|
+
... super(Net, self).__init__()
|
|
92
|
+
... self.fc = nn.Dense(2,2)
|
|
93
|
+
... def construct(self, x):
|
|
94
|
+
... return self.fc(x)
|
|
95
|
+
>>>
|
|
96
|
+
>>> def generator():
|
|
97
|
+
... for i in range(2):
|
|
98
|
+
... yield np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32)
|
|
99
|
+
>>>
|
|
100
|
+
>>> def train(net):
|
|
101
|
+
... optimizer = nn.Momentum(net.trainable_params(), 1, 0.9)
|
|
102
|
+
... loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
|
|
103
|
+
... data = ds.GeneratorDataset(generator, ["data", "label"])
|
|
104
|
+
... model = mindspore.train.Model(net, loss, optimizer)
|
|
105
|
+
... model.train(1, data)
|
|
106
|
+
>>>
|
|
107
|
+
>>> if __name__ == '__main__':
|
|
108
|
+
... # If the device_target is GPU, set the device_target to "GPU"
|
|
109
|
+
... context.set_context(mode=mindspore.GRAPH_MODE)
|
|
110
|
+
... mindspore.set_device("Ascend")
|
|
111
|
+
...
|
|
112
|
+
... # Init Profiler
|
|
113
|
+
... experimental_config = mindspore.profiler._ExperimentalConfig(
|
|
114
|
+
... profiler_level=ProfilerLevel.Level0,
|
|
115
|
+
... aic_metrics=AicoreMetrics.AiCoreNone,
|
|
116
|
+
... l2_cache=False,
|
|
117
|
+
... mstx=False,
|
|
118
|
+
... data_simplification=False,
|
|
119
|
+
... export_type=[ExportType.Text])
|
|
120
|
+
... steps = 10
|
|
121
|
+
... net = Net()
|
|
122
|
+
... # Note that the Profiler should be initialized before model.train
|
|
123
|
+
... with mindspore.profiler.profile(activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
124
|
+
... schedule=mindspore.profiler.schedule(wait=1, warmup=1, active=2,
|
|
125
|
+
... repeat=1, skip_first=2),
|
|
126
|
+
... on_trace_ready=mindspore.profiler.tensorboard_trace_handler("./data"),
|
|
127
|
+
... profile_memory=False,
|
|
128
|
+
... experimental_config=experimental_config) as prof:
|
|
129
|
+
...
|
|
130
|
+
... # Train Model
|
|
131
|
+
... for step in range(steps):
|
|
132
|
+
... train(net)
|
|
133
|
+
... prof.step()
|
|
134
|
+
"""
|
|
135
|
+
|
|
136
|
+
def __init__(self,
|
|
137
|
+
profiler_level: ProfilerLevel = ProfilerLevel.Level0,
|
|
138
|
+
aic_metrics: AicoreMetrics = AicoreMetrics.AiCoreNone,
|
|
139
|
+
l2_cache: bool = False,
|
|
140
|
+
mstx: bool = False,
|
|
141
|
+
data_simplification: bool = True,
|
|
142
|
+
export_type: list = None):
|
|
143
|
+
self._profiler_level = profiler_level
|
|
144
|
+
self._aic_metrics = aic_metrics
|
|
145
|
+
self._l2_cache = l2_cache
|
|
146
|
+
self._mstx = mstx
|
|
147
|
+
self._data_simplification = data_simplification
|
|
148
|
+
self._export_type = export_type
|
|
149
|
+
|
|
150
|
+
@property
|
|
151
|
+
def profiler_level(self) -> ProfilerLevel:
|
|
152
|
+
return self._profiler_level
|
|
153
|
+
|
|
154
|
+
@property
|
|
155
|
+
def aic_metrics(self) -> AicoreMetrics:
|
|
156
|
+
return self._aic_metrics
|
|
157
|
+
|
|
158
|
+
@property
|
|
159
|
+
def l2_cache(self) -> bool:
|
|
160
|
+
return self._l2_cache
|
|
161
|
+
|
|
162
|
+
@property
|
|
163
|
+
def mstx(self) -> bool:
|
|
164
|
+
return self._mstx
|
|
165
|
+
|
|
166
|
+
@property
|
|
167
|
+
def data_simplification(self) -> bool:
|
|
168
|
+
return self._data_simplification
|
|
169
|
+
|
|
170
|
+
@property
|
|
171
|
+
def export_type(self) -> list:
|
|
172
|
+
return self._export_type
|
|
173
|
+
|
|
174
|
+
# Setters
|
|
175
|
+
@profiler_level.setter
|
|
176
|
+
def profiler_level(self, value: ProfilerLevel):
|
|
177
|
+
self._profiler_level = value
|
|
178
|
+
|
|
179
|
+
@aic_metrics.setter
|
|
180
|
+
def aic_metrics(self, value: AicoreMetrics):
|
|
181
|
+
self._aic_metrics = value
|
|
182
|
+
|
|
183
|
+
@l2_cache.setter
|
|
184
|
+
def l2_cache(self, value: bool):
|
|
185
|
+
self._l2_cache = value
|
|
186
|
+
|
|
187
|
+
@mstx.setter
|
|
188
|
+
def mstx(self, value: bool):
|
|
189
|
+
self._mstx = value
|
|
190
|
+
|
|
191
|
+
@data_simplification.setter
|
|
192
|
+
def data_simplification(self, value: bool):
|
|
193
|
+
self._data_simplification = value
|
|
194
|
+
|
|
195
|
+
@export_type.setter
|
|
196
|
+
def export_type(self, value: list):
|
|
197
|
+
self._export_type = value
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
# Copyright 2020-2025 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 os
|
|
17
|
+
from os.path import basename
|
|
18
|
+
import mindspore
|
|
19
|
+
import mindspore._c_expression as c_expression
|
|
20
|
+
|
|
21
|
+
from mindspore import context
|
|
22
|
+
from mindspore import log as logging
|
|
23
|
+
from mindspore.runtime import Stream
|
|
24
|
+
from mindspore.profiler.common.constant import DeviceTarget, CannLibName
|
|
25
|
+
from mindspore.profiler.common.path_manager import PathManager
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class Mstx:
|
|
29
|
+
"""
|
|
30
|
+
Mstx class provides profiling tools for marking and tracing on NPU. This class provides three static methods: mark,
|
|
31
|
+
range_start and range_end for adding marker points and ranges in profiling.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
NPU_PROFILER = c_expression.Profiler.get_instance(DeviceTarget.NPU.value)
|
|
35
|
+
enable = any(
|
|
36
|
+
basename(path) == CannLibName.CANN_MSPTI and PathManager.check_cann_lib_valid(path)
|
|
37
|
+
for path in os.environ.get("LD_PRELOAD", "").split(":")
|
|
38
|
+
if path.strip()
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
@staticmethod
|
|
42
|
+
def mark(message: str, stream: mindspore.runtime.Stream = None) -> None:
|
|
43
|
+
"""Add a marker point in profiling.
|
|
44
|
+
|
|
45
|
+
Args:
|
|
46
|
+
message (str): Description for the marker.
|
|
47
|
+
stream (:class:`~.runtime.Stream`, optional): NPU stream for async execution, expected type:
|
|
48
|
+
mindspore.runtime.Stream. Default: ``None``, which means only marking on host side without
|
|
49
|
+
marking on device stream.
|
|
50
|
+
|
|
51
|
+
Examples:
|
|
52
|
+
>>> import numpy as np
|
|
53
|
+
>>> import mindspore as ms
|
|
54
|
+
>>> import mindspore
|
|
55
|
+
>>> from mindspore import nn
|
|
56
|
+
>>> import mindspore.dataset as ds
|
|
57
|
+
>>> from mindspore import Profiler
|
|
58
|
+
>>> from mindspore.profiler import ProfilerLevel, ProfilerActivity, schedule, tensorboard_trace_handler
|
|
59
|
+
>>> from mindspore.profiler import mstx
|
|
60
|
+
>>>
|
|
61
|
+
>>> class Net(nn.Cell):
|
|
62
|
+
... def __init__(self):
|
|
63
|
+
... super(Net, self).__init__()
|
|
64
|
+
... self.fc = nn.Dense(2,2)
|
|
65
|
+
... def construct(self, x):
|
|
66
|
+
... return self.fc(x)
|
|
67
|
+
>>>
|
|
68
|
+
>>> def generator():
|
|
69
|
+
... for i in range(2):
|
|
70
|
+
... yield (np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32))
|
|
71
|
+
>>>
|
|
72
|
+
>>> def train(net):
|
|
73
|
+
... stream = ms.runtime.current_stream()
|
|
74
|
+
... optimizer = nn.Momentum(net.trainable_params(), 1, 0.9)
|
|
75
|
+
... loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
|
|
76
|
+
... data = ds.GeneratorDataset(generator, ["data", "label"])
|
|
77
|
+
... model = ms.train.Model(net, loss, optimizer)
|
|
78
|
+
... # Add marker before training
|
|
79
|
+
... mstx.mark("train start", stream)
|
|
80
|
+
... model.train(1, data)
|
|
81
|
+
... # Add marker after training
|
|
82
|
+
... mstx.mark("train end", stream)
|
|
83
|
+
>>>
|
|
84
|
+
>>> if __name__ == '__main__':
|
|
85
|
+
... # Note: mstx only supports Ascend device and cannot be used in mindspore.nn.Cell.construct
|
|
86
|
+
... # when in mindspore.GRAPH_MODE
|
|
87
|
+
... ms.set_context(mode=ms.PYNATIVE_MODE)
|
|
88
|
+
... ms.set_device(device_target="Ascend", device_id=0)
|
|
89
|
+
... # Init Profiler
|
|
90
|
+
... experimental_config = mindspore.profiler._ExperimentalConfig(
|
|
91
|
+
... profiler_level=ProfilerLevel.LevelNone,
|
|
92
|
+
... mstx=True)
|
|
93
|
+
... # Note that the Profiler should be initialized before model.train
|
|
94
|
+
... with mindspore.profiler.profile(
|
|
95
|
+
... activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
96
|
+
... schedule=schedule(wait=0, warmup=0, active=3, repeat=1, skip_first=0),
|
|
97
|
+
... on_trace_ready=mindspore.profiler.tensorboard_trace_handler("./data"),
|
|
98
|
+
... experimental_config=experimental_config
|
|
99
|
+
... ) as profiler:
|
|
100
|
+
... net = Net()
|
|
101
|
+
... for i in range(5):
|
|
102
|
+
... train(net)
|
|
103
|
+
... profiler.step()
|
|
104
|
+
"""
|
|
105
|
+
if not Mstx.enable:
|
|
106
|
+
return
|
|
107
|
+
if context.get_context('device_target') != DeviceTarget.NPU.value:
|
|
108
|
+
return
|
|
109
|
+
if not Mstx.NPU_PROFILER:
|
|
110
|
+
logging.warning("Invalid npu profiler for mstx, please check.")
|
|
111
|
+
return
|
|
112
|
+
if not message or not isinstance(message, str):
|
|
113
|
+
logging.warning("Invalid message for mstx.mark func. Please input valid message string.")
|
|
114
|
+
return
|
|
115
|
+
if stream:
|
|
116
|
+
if isinstance(stream, Stream):
|
|
117
|
+
device_stream = stream.device_stream()
|
|
118
|
+
Mstx.NPU_PROFILER.mstx_mark(message, device_stream)
|
|
119
|
+
else:
|
|
120
|
+
logging.warning(
|
|
121
|
+
f"Invalid stream for mstx.mark func. Expected mindspore.runtime.Stream but got {type(stream)}.",
|
|
122
|
+
)
|
|
123
|
+
else:
|
|
124
|
+
Mstx.NPU_PROFILER.mstx_mark(message)
|
|
125
|
+
|
|
126
|
+
@staticmethod
|
|
127
|
+
def range_start(message: str, stream: mindspore.runtime.Stream = None) -> int:
|
|
128
|
+
"""Start a profiling range.
|
|
129
|
+
|
|
130
|
+
Args:
|
|
131
|
+
message (str): Description for the range.
|
|
132
|
+
stream (:class:`~.runtime.Stream`, optional): NPU stream for async execution, expected type:
|
|
133
|
+
mindspore.runtime.Stream. Default: ``None``, which means only starting mstx range on
|
|
134
|
+
host side without starting on device stream.
|
|
135
|
+
|
|
136
|
+
Returns:
|
|
137
|
+
int, range ID for range_end.
|
|
138
|
+
|
|
139
|
+
Examples:
|
|
140
|
+
>>> import numpy as np
|
|
141
|
+
>>> import mindspore as ms
|
|
142
|
+
>>> import mindspore
|
|
143
|
+
>>> from mindspore import nn
|
|
144
|
+
>>> import mindspore.dataset as ds
|
|
145
|
+
>>> from mindspore import Profiler
|
|
146
|
+
>>> from mindspore.profiler import ProfilerLevel, ProfilerActivity, schedule, tensorboard_trace_handler
|
|
147
|
+
>>> from mindspore.profiler import mstx
|
|
148
|
+
>>>
|
|
149
|
+
>>> class Net(nn.Cell):
|
|
150
|
+
... def __init__(self):
|
|
151
|
+
... super(Net, self).__init__()
|
|
152
|
+
... self.fc = nn.Dense(2,2)
|
|
153
|
+
... def construct(self, x):
|
|
154
|
+
... return self.fc(x)
|
|
155
|
+
>>>
|
|
156
|
+
>>> def generator():
|
|
157
|
+
... for i in range(2):
|
|
158
|
+
... yield (np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32))
|
|
159
|
+
>>>
|
|
160
|
+
>>> def train(net):
|
|
161
|
+
... stream = ms.runtime.current_stream()
|
|
162
|
+
... optimizer = nn.Momentum(net.trainable_params(), 1, 0.9)
|
|
163
|
+
... loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
|
|
164
|
+
... data = ds.GeneratorDataset(generator, ["data", "label"])
|
|
165
|
+
... model = ms.train.Model(net, loss, optimizer)
|
|
166
|
+
... # Start profiling range
|
|
167
|
+
... range_id = mstx.range_start("training process", stream)
|
|
168
|
+
... model.train(1, data)
|
|
169
|
+
... # End profiling range
|
|
170
|
+
... mstx.range_end(range_id)
|
|
171
|
+
>>>
|
|
172
|
+
>>> if __name__ == '__main__':
|
|
173
|
+
... # Note: mstx only supports Ascend device and cannot be used in mindspore.nn.Cell.construct
|
|
174
|
+
... # when in mindspore.GRAPH_MODE
|
|
175
|
+
... ms.set_context(mode=ms.PYNATIVE_MODE)
|
|
176
|
+
... ms.set_device(device_target="Ascend", device_id=0)
|
|
177
|
+
... # Init Profiler
|
|
178
|
+
... experimental_config = mindspore.profiler._ExperimentalConfig(
|
|
179
|
+
... profiler_level=ProfilerLevel.LevelNone,
|
|
180
|
+
... mstx=True)
|
|
181
|
+
... # Note that the Profiler should be initialized before model.train
|
|
182
|
+
... with mindspore.profiler.profile(
|
|
183
|
+
... activities=[ProfilerActivity.CPU, ProfilerActivity.NPU],
|
|
184
|
+
... schedule=schedule(wait=0, warmup=0, active=3, repeat=1, skip_first=0),
|
|
185
|
+
... on_trace_ready=mindspore.profiler.tensorboard_trace_handler("./data"),
|
|
186
|
+
... experimental_config=experimental_config
|
|
187
|
+
... ) as profiler:
|
|
188
|
+
... net = Net()
|
|
189
|
+
... for i in range(5):
|
|
190
|
+
... train(net)
|
|
191
|
+
... profiler.step()
|
|
192
|
+
"""
|
|
193
|
+
if not Mstx.enable:
|
|
194
|
+
return 0
|
|
195
|
+
if context.get_context('device_target') != DeviceTarget.NPU.value:
|
|
196
|
+
return 0
|
|
197
|
+
if not Mstx.NPU_PROFILER:
|
|
198
|
+
logging.warning("Invalid npu profiler for mstx, please check.")
|
|
199
|
+
return 0
|
|
200
|
+
if not message or not isinstance(message, str):
|
|
201
|
+
logging.warning("Invalid message for mstx.range_start func. Please input valid message string.")
|
|
202
|
+
return 0
|
|
203
|
+
# pylint: disable=no-else-return
|
|
204
|
+
if stream:
|
|
205
|
+
if isinstance(stream, Stream):
|
|
206
|
+
device_stream = stream.device_stream()
|
|
207
|
+
return Mstx.NPU_PROFILER.mstx_range_start(message, device_stream)
|
|
208
|
+
else:
|
|
209
|
+
logging.warning(
|
|
210
|
+
f"Invalid stream for mstx.range_start func. "
|
|
211
|
+
f"Expected mindspore.runtime.Stream but got {type(stream)}.",
|
|
212
|
+
)
|
|
213
|
+
return 0
|
|
214
|
+
else:
|
|
215
|
+
return Mstx.NPU_PROFILER.mstx_range_start(message)
|
|
216
|
+
|
|
217
|
+
@staticmethod
|
|
218
|
+
def range_end(range_id: int) -> None:
|
|
219
|
+
"""End a profiling range.
|
|
220
|
+
|
|
221
|
+
Args:
|
|
222
|
+
range_id (int): Range ID from range_start.
|
|
223
|
+
|
|
224
|
+
Examples:
|
|
225
|
+
>>> # Please refer to the example in range_start
|
|
226
|
+
>>> # range_id = mstx.range_start("training process", stream)
|
|
227
|
+
>>> # model.train(1, data)
|
|
228
|
+
>>> # mstx.range_end(range_id)
|
|
229
|
+
"""
|
|
230
|
+
if not Mstx.enable or range_id == 0:
|
|
231
|
+
return
|
|
232
|
+
if context.get_context('device_target') != DeviceTarget.NPU.value:
|
|
233
|
+
return
|
|
234
|
+
if not Mstx.NPU_PROFILER:
|
|
235
|
+
logging.warning("Invalid npu profiler for mstx, please check.")
|
|
236
|
+
return
|
|
237
|
+
if not isinstance(range_id, int):
|
|
238
|
+
logging.warning(
|
|
239
|
+
"Invalid message for mstx.range_start func. Please input return value from mstx.range_start."
|
|
240
|
+
)
|
|
241
|
+
return
|
|
242
|
+
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
|
+
"""
|