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
mindspore/pgodb140.dll
CHANGED
|
Binary file
|
mindspore/pgort140.dll
CHANGED
|
Binary file
|
mindspore/profiler/__init__.py
CHANGED
|
@@ -16,13 +16,30 @@
|
|
|
16
16
|
This module provides Python APIs to enable the profiling of MindSpore neural networks.
|
|
17
17
|
Users can import the mindspore.profiler.Profiler, initialize the Profiler object to start profiling,
|
|
18
18
|
and use Profiler.analyse() to stop profiling and analyse the results.
|
|
19
|
-
Users can visualize the results using the MindInsight tool.
|
|
20
19
|
Now, Profiler supports AICORE operator, AICPU operator, HostCPU operator, memory,
|
|
21
20
|
correspondence, cluster, etc data analysis.
|
|
22
21
|
"""
|
|
23
|
-
__all__ = [
|
|
22
|
+
__all__ = [
|
|
23
|
+
"tensorboard_trace_handler",
|
|
24
|
+
"schedule",
|
|
25
|
+
"Profiler",
|
|
26
|
+
"EnvProfiler",
|
|
27
|
+
"ProfilerLevel",
|
|
28
|
+
"ProfilerActivity",
|
|
29
|
+
"AicoreMetrics",
|
|
30
|
+
"ExportType",
|
|
31
|
+
"DynamicProfilerMonitor",
|
|
32
|
+
"mstx",
|
|
33
|
+
"_ExperimentalConfig",
|
|
34
|
+
"profile"
|
|
35
|
+
]
|
|
24
36
|
|
|
25
|
-
from mindspore.profiler.
|
|
26
|
-
from mindspore.profiler.
|
|
27
|
-
from mindspore.profiler.
|
|
37
|
+
from mindspore.profiler.mstx import Mstx as mstx
|
|
38
|
+
from mindspore.profiler.profiler import Profiler
|
|
39
|
+
from mindspore.profiler.profiler import tensorboard_trace_handler
|
|
40
|
+
from mindspore.profiler.schedule import Schedule as schedule
|
|
41
|
+
from mindspore.profiler.envprofiler import EnvProfiler
|
|
42
|
+
from mindspore.profiler.common.constant import ProfilerLevel, ProfilerActivity, AicoreMetrics, ExportType
|
|
28
43
|
from mindspore.profiler.dynamic_profiler import DynamicProfilerMonitor
|
|
44
|
+
from mindspore.profiler.experimental_config import _ExperimentalConfig
|
|
45
|
+
from mindspore.profiler.profiler import Profile as profile
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,170 @@
|
|
|
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
|
+
"""Parser for Ascend CANN profiling data."""
|
|
16
|
+
import os
|
|
17
|
+
import glob
|
|
18
|
+
from typing import Dict, Optional
|
|
19
|
+
|
|
20
|
+
import numpy as np
|
|
21
|
+
|
|
22
|
+
from mindspore import log as logger
|
|
23
|
+
from mindspore.profiler.analysis.parser.base_parser import BaseParser
|
|
24
|
+
from mindspore.profiler.common.file_manager import FileManager
|
|
25
|
+
from mindspore.profiler.common.path_manager import PathManager
|
|
26
|
+
from mindspore.profiler.common.constant import ProfilerLevel, ExportType
|
|
27
|
+
from mindspore.profiler.common.ascend_msprof_exporter import AscendMsprofExporter
|
|
28
|
+
from mindspore.profiler.common.log import ProfilerLogger
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class AscendMsprofParser(BaseParser):
|
|
32
|
+
"""Parser for MindSpore profiling data on Ascend platform."""
|
|
33
|
+
|
|
34
|
+
_MSPROF_TIMELINE_FILE_PATTERN = ["msprof_[0-9]*.json", "msprof_slice_*.json"]
|
|
35
|
+
_OP_SUMMARY_FILE_PATTERN = "op_summary_*.csv"
|
|
36
|
+
OVERSIZE_MB = 1024
|
|
37
|
+
|
|
38
|
+
def __init__(self, next_parser: Optional[BaseParser] = None, **kwargs):
|
|
39
|
+
"""Initialize AscendMsprofParser."""
|
|
40
|
+
super().__init__(next_parser)
|
|
41
|
+
self._kwargs = kwargs
|
|
42
|
+
self._msprof_profile_output_path = self._kwargs.get(
|
|
43
|
+
"msprof_profile_output_path"
|
|
44
|
+
)
|
|
45
|
+
self._msprof_profile_host_path = self._kwargs.get(
|
|
46
|
+
"msprof_profile_host_path"
|
|
47
|
+
)
|
|
48
|
+
self._msprof_profile_device_path = self._kwargs.get(
|
|
49
|
+
"msprof_profile_device_path"
|
|
50
|
+
)
|
|
51
|
+
self._ascend_ms_dir = self._kwargs.get("ascend_ms_dir")
|
|
52
|
+
self._profiler_level = kwargs.get("profiler_level")
|
|
53
|
+
self._export_type = kwargs.get("export_type")
|
|
54
|
+
ProfilerLogger.init(self._ascend_ms_dir)
|
|
55
|
+
self._logger = ProfilerLogger.get_instance()
|
|
56
|
+
self.op_summary = None
|
|
57
|
+
self.op_summary_headers = None
|
|
58
|
+
self.msprof_timeline = []
|
|
59
|
+
|
|
60
|
+
def _parse(self, data=None) -> Dict:
|
|
61
|
+
"""Parse profiling data and update the input dictionary.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
data (Dict, optional): Input data dictionary. Defaults to None.
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
Dict: Updated data with op_summary, headers and timeline information.
|
|
68
|
+
"""
|
|
69
|
+
if data is None:
|
|
70
|
+
data = {}
|
|
71
|
+
self._check_msprof_data_size()
|
|
72
|
+
AscendMsprofExporter(**self._kwargs).export()
|
|
73
|
+
self._logger.info("AscendMsprofExporter export done.")
|
|
74
|
+
self._parse_op_summary()
|
|
75
|
+
self._logger.info("AscendMsprofParser parse op summary done.")
|
|
76
|
+
self._parse_msprof_timeline()
|
|
77
|
+
self._logger.info("AscendMsprofParser parse msprof timeline done.")
|
|
78
|
+
data.update(
|
|
79
|
+
{
|
|
80
|
+
"op_summary": self.op_summary,
|
|
81
|
+
"op_summary_headers": self.op_summary_headers,
|
|
82
|
+
"msprof_timeline": self.msprof_timeline,
|
|
83
|
+
}
|
|
84
|
+
)
|
|
85
|
+
return data
|
|
86
|
+
|
|
87
|
+
def _parse_op_summary(self):
|
|
88
|
+
"""Parse operation summary data from CSV files.
|
|
89
|
+
|
|
90
|
+
Raises:
|
|
91
|
+
RuntimeError: If no op summary files are found or read file failed.
|
|
92
|
+
"""
|
|
93
|
+
if (self._profiler_level == ProfilerLevel.LevelNone.value or
|
|
94
|
+
self._export_type == [ExportType.Db.value]):
|
|
95
|
+
return
|
|
96
|
+
file_path_list = glob.glob(
|
|
97
|
+
os.path.join(
|
|
98
|
+
self._msprof_profile_output_path, self._OP_SUMMARY_FILE_PATTERN
|
|
99
|
+
)
|
|
100
|
+
)
|
|
101
|
+
if not file_path_list:
|
|
102
|
+
logger.error(
|
|
103
|
+
f"Failed to find op_summary_*.csv in directory: {self._msprof_profile_output_path}"
|
|
104
|
+
)
|
|
105
|
+
return
|
|
106
|
+
|
|
107
|
+
for file_path in file_path_list:
|
|
108
|
+
csv_data_np, self.op_summary_headers = FileManager.read_csv_file_as_numpy(
|
|
109
|
+
file_path=file_path, extern_headers=["Step ID"]
|
|
110
|
+
)
|
|
111
|
+
if self.op_summary is None:
|
|
112
|
+
self.op_summary = csv_data_np
|
|
113
|
+
else:
|
|
114
|
+
self.op_summary = np.concatenate([self.op_summary, csv_data_np], axis=0)
|
|
115
|
+
|
|
116
|
+
def _parse_msprof_timeline(self) -> None:
|
|
117
|
+
"""Parse msprof timeline data from JSON files.
|
|
118
|
+
|
|
119
|
+
Raises:
|
|
120
|
+
RuntimeError: If no msprof JSON files are found in the specified directory.
|
|
121
|
+
"""
|
|
122
|
+
if self._export_type == [ExportType.Db.value]:
|
|
123
|
+
return
|
|
124
|
+
file_path_list = []
|
|
125
|
+
for pattern in self._MSPROF_TIMELINE_FILE_PATTERN:
|
|
126
|
+
file_path_list.extend(glob.glob(os.path.join(self._msprof_profile_output_path, pattern)))
|
|
127
|
+
|
|
128
|
+
if not file_path_list:
|
|
129
|
+
raise RuntimeError(
|
|
130
|
+
f"Failed to find msprof JSON files in directory: {self._msprof_profile_output_path}"
|
|
131
|
+
)
|
|
132
|
+
for file_path in file_path_list:
|
|
133
|
+
self._process_timeline_file(file_path)
|
|
134
|
+
if not self.msprof_timeline:
|
|
135
|
+
logger.error(
|
|
136
|
+
"Failed to collect msprof timeline data"
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
def _process_timeline_file(self, file_path: str) -> None:
|
|
140
|
+
"""Process a single timeline JSON file.
|
|
141
|
+
|
|
142
|
+
Args:
|
|
143
|
+
file_path (str): Path to the JSON file to process.
|
|
144
|
+
"""
|
|
145
|
+
try:
|
|
146
|
+
timeline_data = FileManager.read_json_file(file_path)
|
|
147
|
+
if timeline_data:
|
|
148
|
+
self.msprof_timeline.extend(timeline_data)
|
|
149
|
+
else:
|
|
150
|
+
logger.warning(
|
|
151
|
+
f"Msporf timeline data in {file_path} is empty."
|
|
152
|
+
)
|
|
153
|
+
except RuntimeError as err:
|
|
154
|
+
logger.error(
|
|
155
|
+
f"Failed to read file: {file_path}. Error: {str(err)}"
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
def _check_msprof_data_size(self) -> None:
|
|
159
|
+
"""Check the size of profiling data."""
|
|
160
|
+
host_data_size = PathManager.get_directory_size(self._msprof_profile_host_path)
|
|
161
|
+
device_data_size = PathManager.get_directory_size(self._msprof_profile_device_path)
|
|
162
|
+
total_size = host_data_size + device_data_size
|
|
163
|
+
|
|
164
|
+
if total_size >= self.OVERSIZE_MB:
|
|
165
|
+
msg = (
|
|
166
|
+
f"The size of profiling data is too large: {total_size} MB, "
|
|
167
|
+
"which may spend a lot of time on analysing, you can consider "
|
|
168
|
+
"reducing the number of collection steps"
|
|
169
|
+
)
|
|
170
|
+
logger.warning(msg)
|
|
@@ -0,0 +1,158 @@
|
|
|
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
|
+
"""Base parser"""
|
|
16
|
+
from typing import (
|
|
17
|
+
Any,
|
|
18
|
+
List,
|
|
19
|
+
Callable,
|
|
20
|
+
Optional,
|
|
21
|
+
)
|
|
22
|
+
from multiprocessing import Process
|
|
23
|
+
from mindspore import log as logger
|
|
24
|
+
from mindspore.profiler.common.log import ProfilerLogger
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class BaseParser:
|
|
28
|
+
"""
|
|
29
|
+
Base class for all parsers in the workflow.
|
|
30
|
+
"""
|
|
31
|
+
EXEC_HOOK_TIMEOUT = 30 * 60
|
|
32
|
+
|
|
33
|
+
def __init__(self, next_parser: Optional["BaseParser"] = None):
|
|
34
|
+
"""
|
|
35
|
+
Initialize the BaseParser.
|
|
36
|
+
|
|
37
|
+
Args:
|
|
38
|
+
next_parser (Optional[BaseParser]): The next parser in the chain.
|
|
39
|
+
"""
|
|
40
|
+
self.next_parser: Optional["BaseParser"] = next_parser
|
|
41
|
+
self._post_hooks: List[Callable[[Any], None]] = []
|
|
42
|
+
self._logger = ProfilerLogger.get_instance()
|
|
43
|
+
|
|
44
|
+
def set_next(self, next_parser: "BaseParser") -> "BaseParser":
|
|
45
|
+
"""
|
|
46
|
+
Set the next parser in the chain.
|
|
47
|
+
|
|
48
|
+
Args:
|
|
49
|
+
next_parser (BaseParser): The next parser to be set.
|
|
50
|
+
|
|
51
|
+
Returns:
|
|
52
|
+
BaseParser: The next parser that was set.
|
|
53
|
+
"""
|
|
54
|
+
if not isinstance(next_parser, BaseParser):
|
|
55
|
+
raise ValueError(
|
|
56
|
+
f"next_parser {next_parser.__class__.__name__} must be a BaseParser"
|
|
57
|
+
)
|
|
58
|
+
self.next_parser = next_parser
|
|
59
|
+
return self
|
|
60
|
+
|
|
61
|
+
def parse(self, data: Any) -> Any:
|
|
62
|
+
"""
|
|
63
|
+
Parse the input data and execute post-hooks.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
data (Any): The input data to be parsed.
|
|
67
|
+
|
|
68
|
+
Returns:
|
|
69
|
+
Any: The parsed result.
|
|
70
|
+
"""
|
|
71
|
+
try:
|
|
72
|
+
result = self._parse(data)
|
|
73
|
+
self._execute_post_hooks(result)
|
|
74
|
+
except Exception as e: # pylint: disable=W0703
|
|
75
|
+
logger.error("Parser [%s] error: %s", self.__class__.__name__, str(e))
|
|
76
|
+
self._logger.error("Parser [%s] error: %s", self.__class__.__name__, str(e), exc_info=True)
|
|
77
|
+
return data
|
|
78
|
+
return result
|
|
79
|
+
|
|
80
|
+
def register_post_hook(self, hook: Callable[[Any], None]) -> "BaseParser":
|
|
81
|
+
"""
|
|
82
|
+
Register a post-hook to be executed after parsing.
|
|
83
|
+
|
|
84
|
+
Args:
|
|
85
|
+
hook (Callable[[Any], None]): The hook function to be registered.
|
|
86
|
+
|
|
87
|
+
Returns:
|
|
88
|
+
BaseParser: The current parser instance.
|
|
89
|
+
|
|
90
|
+
Raises:
|
|
91
|
+
ValueError: If the hook is not callable.
|
|
92
|
+
"""
|
|
93
|
+
if callable(hook):
|
|
94
|
+
self._post_hooks.append(hook)
|
|
95
|
+
else:
|
|
96
|
+
raise ValueError("Hook must be callable")
|
|
97
|
+
return self
|
|
98
|
+
|
|
99
|
+
def _execute_post_hooks(self, res: Any) -> None:
|
|
100
|
+
"""
|
|
101
|
+
Execute all registered post-hooks asynchronously.
|
|
102
|
+
|
|
103
|
+
Args:
|
|
104
|
+
res (Any): The result to be passed to the post-hooks.
|
|
105
|
+
"""
|
|
106
|
+
if not self._post_hooks:
|
|
107
|
+
return
|
|
108
|
+
|
|
109
|
+
processes = []
|
|
110
|
+
for hook in self._post_hooks:
|
|
111
|
+
p = Process(target=hook, args=(res,))
|
|
112
|
+
p.start()
|
|
113
|
+
hook_class = hook.__self__.__class__.__name__ if hasattr(hook, '__self__') else 'Unknown'
|
|
114
|
+
hook_name = f"{hook_class}.{hook.__name__}"
|
|
115
|
+
processes.append((p, hook_name))
|
|
116
|
+
self._logger.info("Parser [%s] post hook [%s] start", self.__class__.__name__, hook_name)
|
|
117
|
+
|
|
118
|
+
for p, hook_name in processes:
|
|
119
|
+
try:
|
|
120
|
+
p.join(timeout=self.EXEC_HOOK_TIMEOUT)
|
|
121
|
+
if p.is_alive():
|
|
122
|
+
logger.error(
|
|
123
|
+
"Parser [%s] post hook [%s] timeout after %s seconds, terminating",
|
|
124
|
+
self.__class__.__name__, hook_name, self.EXEC_HOOK_TIMEOUT
|
|
125
|
+
)
|
|
126
|
+
p.terminate()
|
|
127
|
+
p.join()
|
|
128
|
+
else:
|
|
129
|
+
self._logger.info(
|
|
130
|
+
"Parser [%s] post hook [%s] completed",
|
|
131
|
+
self.__class__.__name__, hook_name
|
|
132
|
+
)
|
|
133
|
+
except Exception as e: # pylint: disable=W0703
|
|
134
|
+
self._logger.error(
|
|
135
|
+
"Parser [%s] post hook [%s] failed: %s",
|
|
136
|
+
self.__class__.__name__, hook_name, str(e), exc_info=True
|
|
137
|
+
)
|
|
138
|
+
if p.is_alive():
|
|
139
|
+
p.terminate()
|
|
140
|
+
|
|
141
|
+
def _parse(self, data: Any) -> Any:
|
|
142
|
+
"""
|
|
143
|
+
Abstract method to be implemented by subclasses for parsing logic.
|
|
144
|
+
|
|
145
|
+
Args:
|
|
146
|
+
data (Any): The input data to be parsed.
|
|
147
|
+
|
|
148
|
+
Raises:
|
|
149
|
+
NotImplementedError: If not implemented by subclass.
|
|
150
|
+
"""
|
|
151
|
+
raise NotImplementedError("Subclasses should implement this!")
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
class DummyParser(BaseParser):
|
|
155
|
+
"""Dummy parser"""
|
|
156
|
+
def _parse(self, data: Any) -> Any:
|
|
157
|
+
"""Dummy parse"""
|
|
158
|
+
return data
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
"""Parser for analyzing the relationship between framework and CANN data."""
|
|
16
|
+
from typing import Dict, Any
|
|
17
|
+
|
|
18
|
+
from mindspore.profiler.analysis.parser.base_parser import BaseParser
|
|
19
|
+
from mindspore.profiler.analysis.parser.timeline_assembly_factory.ascend_timeline_assembler import (
|
|
20
|
+
AscendTimelineAssembler
|
|
21
|
+
)
|
|
22
|
+
from mindspore.profiler.common.log import ProfilerLogger
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class FrameworkCannRelationParser(BaseParser):
|
|
26
|
+
"""FrameworkCannRelationParser"""
|
|
27
|
+
|
|
28
|
+
def __init__(self, **kwargs):
|
|
29
|
+
"""Initialize the AscendTraceAnalyser."""
|
|
30
|
+
super().__init__()
|
|
31
|
+
self.assembler = AscendTimelineAssembler(**kwargs)
|
|
32
|
+
self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
|
|
33
|
+
ProfilerLogger.init(kwargs.get("ascend_ms_dir"))
|
|
34
|
+
self._logger = ProfilerLogger.get_instance()
|
|
35
|
+
|
|
36
|
+
def _parse(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
|
37
|
+
"""Parse the relation of framework and cann data."""
|
|
38
|
+
self.assembler.assemble(data)
|
|
39
|
+
self._logger.info("FrameworkCannRelationParser assemble done")
|
|
40
|
+
trace_view_container = self.assembler.get_trace_view_container()
|
|
41
|
+
self._logger.info("FrameworkCannRelationParser get trace view container done")
|
|
42
|
+
data.update({
|
|
43
|
+
"trace_view_container": trace_view_container,
|
|
44
|
+
})
|
|
45
|
+
return data
|
|
@@ -0,0 +1,142 @@
|
|
|
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
|
+
"""Parser for MindSpore framework profiling data."""
|
|
16
|
+
import os
|
|
17
|
+
import struct
|
|
18
|
+
from typing import List, Dict, Any, Optional
|
|
19
|
+
|
|
20
|
+
from mindspore import log as logger
|
|
21
|
+
from mindspore.profiler.common.tlv_decoder import TLVDecoder
|
|
22
|
+
from mindspore.profiler.common.file_manager import FileManager
|
|
23
|
+
from mindspore.profiler.common.constant import ProfilerActivity, FileConstant, DeviceTarget
|
|
24
|
+
from mindspore.profiler.analysis.parser.base_parser import BaseParser
|
|
25
|
+
from mindspore.profiler.analysis.parser.timeline_event.fwk_event import FwkFixSizeFormat, OpRangeStructField
|
|
26
|
+
from mindspore.profiler.common.log import ProfilerLogger
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class FrameworkParser(BaseParser):
|
|
30
|
+
"""Parser for MindSpore framework profiling data."""
|
|
31
|
+
|
|
32
|
+
_OP_RANGE_FILE_NAME = "mindspore.op_range"
|
|
33
|
+
_CPU_OP_TIMESTAMP_FILE_NAME = "cpu_op_execute_timestamp_{}.txt"
|
|
34
|
+
|
|
35
|
+
def __init__(self, next_parser: Optional[BaseParser] = None, **kwargs):
|
|
36
|
+
"""Initialize FrameworkParser."""
|
|
37
|
+
super().__init__(next_parser)
|
|
38
|
+
self._rank_id = kwargs.get("rank_id")
|
|
39
|
+
self._activities = kwargs.get("activities")
|
|
40
|
+
self._step_list = kwargs.get("step_list")
|
|
41
|
+
self._framework_path = kwargs.get("framework_path")
|
|
42
|
+
self._device_target = kwargs.get("device_target")
|
|
43
|
+
self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
|
|
44
|
+
self._op_range_path = os.path.join(
|
|
45
|
+
self._framework_path,
|
|
46
|
+
self._OP_RANGE_FILE_NAME
|
|
47
|
+
)
|
|
48
|
+
self._cpu_op_path = os.path.join(
|
|
49
|
+
self._framework_path,
|
|
50
|
+
self._CPU_OP_TIMESTAMP_FILE_NAME.format(self._rank_id),
|
|
51
|
+
)
|
|
52
|
+
ProfilerLogger.init(self._ascend_ms_dir)
|
|
53
|
+
self._logger = ProfilerLogger.get_instance()
|
|
54
|
+
|
|
55
|
+
def _parse(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
|
56
|
+
"""Parse MindSpore framework profiling data.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
data (Dict[str, Any]): Input data dictionary.
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
Dict[str, Any]: Updated data with:
|
|
63
|
+
- mindspore_op_list: List of parsed operation events
|
|
64
|
+
- cpu_op_lines: List of CPU operation timestamp data
|
|
65
|
+
"""
|
|
66
|
+
if ProfilerActivity.CPU.value not in self._activities:
|
|
67
|
+
return data
|
|
68
|
+
mindspore_op_list = self._parse_op_range_data()
|
|
69
|
+
self._logger.info("FrameworkParser parse op range done.")
|
|
70
|
+
cpu_op_lines = self._parse_cpu_op_data()
|
|
71
|
+
self._logger.info("FrameworkParser parse cpu op done.")
|
|
72
|
+
data.update(
|
|
73
|
+
{
|
|
74
|
+
"mindspore_op_list": mindspore_op_list,
|
|
75
|
+
"cpu_op_lines": cpu_op_lines,
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
return data
|
|
79
|
+
|
|
80
|
+
def _parse_op_range_data(self) -> List[Dict]:
|
|
81
|
+
"""Read and decode MindSpore op_range data.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
List[Dict]: List of parsed MindSpore operation events.
|
|
85
|
+
"""
|
|
86
|
+
if self._device_target == DeviceTarget.CPU.value:
|
|
87
|
+
return []
|
|
88
|
+
|
|
89
|
+
if not os.path.exists(self._op_range_path):
|
|
90
|
+
logger.error("Failed to find op_range data. Skipping parse host profiler data.")
|
|
91
|
+
return []
|
|
92
|
+
|
|
93
|
+
try:
|
|
94
|
+
op_range_bytes = FileManager.read_file_content(self._op_range_path, "rb")
|
|
95
|
+
op_range_list = TLVDecoder.decode(
|
|
96
|
+
op_range_bytes, FwkFixSizeFormat.OpRangeStruct, struct.calcsize(FwkFixSizeFormat.OpRangeStruct)
|
|
97
|
+
)
|
|
98
|
+
self._logger.info("FrameworkParser parse op range done, op_range_list length: %d", len(op_range_list))
|
|
99
|
+
if not op_range_list:
|
|
100
|
+
logger.error(
|
|
101
|
+
f"Failed to decode op_range data: empty result from file {self._op_range_path}"
|
|
102
|
+
)
|
|
103
|
+
return self._filter_op_range_list(op_range_list)
|
|
104
|
+
except RuntimeError as err:
|
|
105
|
+
logger.error(f"Failed to read file: {self._op_range_path}. Error: {str(err)}")
|
|
106
|
+
return []
|
|
107
|
+
|
|
108
|
+
def _filter_op_range_list(self, op_range_list: List[Dict]) -> List[Dict]:
|
|
109
|
+
"""Filter op_range_list based on step_list.
|
|
110
|
+
|
|
111
|
+
Args:
|
|
112
|
+
op_range_list (List[Dict]): List of operation events to filter.
|
|
113
|
+
|
|
114
|
+
Returns:
|
|
115
|
+
List[Dict]: Filtered list of operation events.
|
|
116
|
+
"""
|
|
117
|
+
if not self._step_list or not isinstance(self._step_list, list):
|
|
118
|
+
return op_range_list
|
|
119
|
+
|
|
120
|
+
first_step = min(
|
|
121
|
+
op[FileConstant.FIX_SIZE_DATA][OpRangeStructField.STEP.value]
|
|
122
|
+
for op in op_range_list
|
|
123
|
+
)
|
|
124
|
+
adjusted_step_list = [step - 1 + first_step for step in self._step_list]
|
|
125
|
+
return [
|
|
126
|
+
op for op in op_range_list
|
|
127
|
+
if op[FileConstant.FIX_SIZE_DATA][OpRangeStructField.STEP.value] in adjusted_step_list
|
|
128
|
+
]
|
|
129
|
+
|
|
130
|
+
def _parse_cpu_op_data(self) -> List[str]:
|
|
131
|
+
"""Parse CPU op timestamp data.
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
List[str]: List of CPU operation timestamp data lines.
|
|
135
|
+
"""
|
|
136
|
+
if not os.path.exists(self._cpu_op_path):
|
|
137
|
+
return []
|
|
138
|
+
try:
|
|
139
|
+
return FileManager.read_txt_file(self._cpu_op_path)
|
|
140
|
+
except RuntimeError as err:
|
|
141
|
+
logger.warning(f"Failed to read file: {self._cpu_op_path}. Error: {str(err)}")
|
|
142
|
+
return []
|