mindspore 2.4.10__cp311-cp311-win_amd64.whl → 2.6.0__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +13 -6
- mindspore/_c_dataengine.cp311-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp311-win_amd64.pyd +0 -0
- mindspore/_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,250 @@
|
|
|
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
|
+
"""Ascend kernel details viewer"""
|
|
16
|
+
import csv
|
|
17
|
+
import os
|
|
18
|
+
from decimal import Decimal
|
|
19
|
+
|
|
20
|
+
from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
|
|
21
|
+
from mindspore.profiler.common.constant import (
|
|
22
|
+
JitLevel,
|
|
23
|
+
ProfilerLevel,
|
|
24
|
+
OpSummaryHeaders,
|
|
25
|
+
ProfilerActivity
|
|
26
|
+
)
|
|
27
|
+
from mindspore.profiler.common.log import ProfilerLogger
|
|
28
|
+
from mindspore.profiler.common.path_manager import PathManager
|
|
29
|
+
|
|
30
|
+
from mindspore import log as logger
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class AscendKernelDetailsViewer(BaseViewer):
|
|
34
|
+
"""
|
|
35
|
+
Ascend kernel details viewer
|
|
36
|
+
"""
|
|
37
|
+
KERNEL_DETAILS_FILE_NAME = "kernel_details.csv"
|
|
38
|
+
EXCLUDE_HEADERS = [OpSummaryHeaders.DEVICE_ID.value]
|
|
39
|
+
LEVEL0_EXCLUDE_HEADERS = [
|
|
40
|
+
OpSummaryHeaders.MIX_BLOCK_DIM.value,
|
|
41
|
+
OpSummaryHeaders.HF32_ELIGIBLE.value,
|
|
42
|
+
OpSummaryHeaders.INPUT_SHAPES.value,
|
|
43
|
+
OpSummaryHeaders.INPUT_DATA_TYPES.value,
|
|
44
|
+
OpSummaryHeaders.INPUT_FORMATS.value,
|
|
45
|
+
OpSummaryHeaders.OUTPUT_SHAPES.value,
|
|
46
|
+
OpSummaryHeaders.OUTPUT_DATA_TYPES.value,
|
|
47
|
+
OpSummaryHeaders.OUTPUT_FORMATS.value,
|
|
48
|
+
OpSummaryHeaders.CONTEXT_ID.value,
|
|
49
|
+
]
|
|
50
|
+
RENAME_HEADERS = {
|
|
51
|
+
OpSummaryHeaders.OP_NAME.value: "Name",
|
|
52
|
+
OpSummaryHeaders.OP_TYPE.value: "Type",
|
|
53
|
+
OpSummaryHeaders.TASK_TYPE.value: "Accelerator Core",
|
|
54
|
+
OpSummaryHeaders.TASK_START_TIME.value: "Start Time(us)",
|
|
55
|
+
OpSummaryHeaders.TASK_DURATION.value: "Duration(us)",
|
|
56
|
+
OpSummaryHeaders.TASK_WAIT_TIME.value: "Wait Time(us)",
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
def __init__(self, **kwargs):
|
|
60
|
+
super().__init__()
|
|
61
|
+
self._save_path = os.path.join(
|
|
62
|
+
kwargs.get("ascend_profiler_output_path"),
|
|
63
|
+
self.KERNEL_DETAILS_FILE_NAME
|
|
64
|
+
)
|
|
65
|
+
self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
|
|
66
|
+
self._is_set_schedule = kwargs.get("is_set_schedule")
|
|
67
|
+
self._jit_level = kwargs.get("jit_level")
|
|
68
|
+
self._profiler_level = kwargs.get("profiler_level")
|
|
69
|
+
self._activities = kwargs.get("activities")
|
|
70
|
+
self.op_summary_headers = None
|
|
71
|
+
self.op_summary = None
|
|
72
|
+
self.trace_container = None
|
|
73
|
+
self.kernel_details_headers = None
|
|
74
|
+
ProfilerLogger.init(self._ascend_ms_dir)
|
|
75
|
+
self._logger = ProfilerLogger.get_instance()
|
|
76
|
+
|
|
77
|
+
def save(self, data):
|
|
78
|
+
"""
|
|
79
|
+
Save kernel details to csv file.
|
|
80
|
+
"""
|
|
81
|
+
self._logger.info("AscendKernelDetailsViewer start")
|
|
82
|
+
try:
|
|
83
|
+
if self._profiler_level == ProfilerLevel.LevelNone.value:
|
|
84
|
+
return
|
|
85
|
+
self._check_input_data(data)
|
|
86
|
+
self._update_kernel_name_and_step_id()
|
|
87
|
+
self._update_headers()
|
|
88
|
+
self._write_data()
|
|
89
|
+
self._logger.info("Kernel details saved done")
|
|
90
|
+
except Exception as e: # pylint: disable=W0703
|
|
91
|
+
self._logger.error("Failed to save kernel details: %s", str(e), exc_info=True)
|
|
92
|
+
self._logger.info("AscendKernelDetailsViewer end")
|
|
93
|
+
|
|
94
|
+
def _check_input_data(self, data):
|
|
95
|
+
"""
|
|
96
|
+
Check input data.
|
|
97
|
+
"""
|
|
98
|
+
self.trace_container = data.get("trace_view_container", None)
|
|
99
|
+
self.op_summary = data.get("op_summary", None)
|
|
100
|
+
self.op_summary_headers = data.get("op_summary_headers", None)
|
|
101
|
+
|
|
102
|
+
if self.op_summary is None or self.op_summary.size == 0:
|
|
103
|
+
raise ValueError("op summary is empty")
|
|
104
|
+
|
|
105
|
+
if self.trace_container is None:
|
|
106
|
+
raise ValueError("trace view container is None")
|
|
107
|
+
|
|
108
|
+
def _write_data(self):
|
|
109
|
+
"""
|
|
110
|
+
Write data to csv file.
|
|
111
|
+
"""
|
|
112
|
+
self._logger.info("Kernel details saved start")
|
|
113
|
+
PathManager.check_directory_path_writeable(os.path.dirname(self._save_path))
|
|
114
|
+
with open(self._save_path, "w", newline="", encoding="utf-8") as csvfile:
|
|
115
|
+
writer = csv.writer(csvfile)
|
|
116
|
+
writer.writerow(self.kernel_details_headers)
|
|
117
|
+
for row in self.op_summary:
|
|
118
|
+
writer.writerow([row[field] for field in self.op_summary_headers])
|
|
119
|
+
self._logger.info("Kernel details saved done")
|
|
120
|
+
|
|
121
|
+
def _update_headers(self):
|
|
122
|
+
"""
|
|
123
|
+
Update kernel details headers.
|
|
124
|
+
"""
|
|
125
|
+
# filter exclude headers
|
|
126
|
+
self.op_summary_headers = [
|
|
127
|
+
header
|
|
128
|
+
for header in self.op_summary_headers
|
|
129
|
+
if header not in self.EXCLUDE_HEADERS
|
|
130
|
+
]
|
|
131
|
+
|
|
132
|
+
if self._profiler_level == ProfilerLevel.Level0.value:
|
|
133
|
+
self.op_summary_headers = [
|
|
134
|
+
header
|
|
135
|
+
for header in self.op_summary_headers
|
|
136
|
+
if header not in self.LEVEL0_EXCLUDE_HEADERS
|
|
137
|
+
]
|
|
138
|
+
|
|
139
|
+
if (not self._is_set_schedule or self._jit_level == JitLevel.GRAPH_LEVEL or
|
|
140
|
+
not self.trace_container.get_step_id_time_dict()):
|
|
141
|
+
self.op_summary_headers.remove(OpSummaryHeaders.STEP_ID.value)
|
|
142
|
+
|
|
143
|
+
# rename headers
|
|
144
|
+
self.kernel_details_headers = [
|
|
145
|
+
self.RENAME_HEADERS.get(header, header)
|
|
146
|
+
for header in self.op_summary_headers
|
|
147
|
+
]
|
|
148
|
+
|
|
149
|
+
def _update_kernel_name_and_step_id(self):
|
|
150
|
+
"""
|
|
151
|
+
Update kernel op name to framework launch op name and step id.
|
|
152
|
+
"""
|
|
153
|
+
self._logger.info("Update kernel name start")
|
|
154
|
+
|
|
155
|
+
dev_kernels = self.trace_container.hardware_op_event
|
|
156
|
+
step_id_to_time_dict = self.trace_container.get_step_id_time_dict()
|
|
157
|
+
|
|
158
|
+
# activities parameter NPU+CPU、CPU
|
|
159
|
+
if ProfilerActivity.CPU.value in self._activities:
|
|
160
|
+
self._update_kernel_detail_op_name_and_step_id(dev_kernels, step_id_to_time_dict)
|
|
161
|
+
|
|
162
|
+
def _update_kernel_detail_op_name_and_step_id(self, dev_kernels, step_id_to_time_dict):
|
|
163
|
+
"""
|
|
164
|
+
Update op summary op name and step id in NPU+CPU、CPU scenes.
|
|
165
|
+
"""
|
|
166
|
+
_generate_hardware_op_event_step_id(dev_kernels, step_id_to_time_dict)
|
|
167
|
+
|
|
168
|
+
if not dev_kernels and self._jit_level != JitLevel.GRAPH_LEVEL:
|
|
169
|
+
logger.warning(
|
|
170
|
+
"Cannot find the device kernels with MindSpore framework launch op, "
|
|
171
|
+
)
|
|
172
|
+
return
|
|
173
|
+
|
|
174
|
+
# build device kernel to framework launch op map
|
|
175
|
+
dev_kernel_to_fwk_op = {}
|
|
176
|
+
for _, per_tid_kernels in dev_kernels.items():
|
|
177
|
+
for kernel in per_tid_kernels:
|
|
178
|
+
dev_kernel_name = kernel.name
|
|
179
|
+
dev_kerel_ts = str(kernel.ts)
|
|
180
|
+
dev_kernel_to_fwk_op[(dev_kernel_name, dev_kerel_ts)] = kernel
|
|
181
|
+
|
|
182
|
+
launch_ops = [None] * len(self.op_summary)
|
|
183
|
+
step_ids = [None] * len(self.op_summary)
|
|
184
|
+
for index, summary in enumerate(self.op_summary):
|
|
185
|
+
dev_kernel_name = summary[OpSummaryHeaders.OP_NAME.value]
|
|
186
|
+
dev_kernel_ts = str(summary[OpSummaryHeaders.TASK_START_TIME.value]).strip("\t")
|
|
187
|
+
fwk_langch_op_name = None
|
|
188
|
+
step_id = None
|
|
189
|
+
if dev_kernel_to_fwk_op.get((dev_kernel_name, dev_kernel_ts)):
|
|
190
|
+
kernel = dev_kernel_to_fwk_op.get((dev_kernel_name, dev_kernel_ts))
|
|
191
|
+
if kernel.parent:
|
|
192
|
+
fwk_langch_op_name = kernel.parent.name
|
|
193
|
+
step_id = kernel.step_id
|
|
194
|
+
|
|
195
|
+
if step_id is None:
|
|
196
|
+
step_id = _get_step_id_by_ts(Decimal(dev_kernel_ts), step_id_to_time_dict)
|
|
197
|
+
|
|
198
|
+
if fwk_langch_op_name is None:
|
|
199
|
+
self._logger.warning(
|
|
200
|
+
"Can not find fwk launch op for dev kernel %s, ts %s",
|
|
201
|
+
dev_kernel_name,
|
|
202
|
+
dev_kernel_ts,
|
|
203
|
+
)
|
|
204
|
+
launch_ops[index] = dev_kernel_name
|
|
205
|
+
else:
|
|
206
|
+
launch_ops[index] = f"{fwk_langch_op_name}/{dev_kernel_name}"
|
|
207
|
+
|
|
208
|
+
if step_id is None and self._is_set_schedule and self._jit_level != JitLevel.GRAPH_LEVEL:
|
|
209
|
+
self._logger.warning(
|
|
210
|
+
"Can not find step id for dev kernel %s, ts %s",
|
|
211
|
+
dev_kernel_name,
|
|
212
|
+
dev_kernel_ts,
|
|
213
|
+
)
|
|
214
|
+
else:
|
|
215
|
+
step_ids[index] = step_id
|
|
216
|
+
|
|
217
|
+
# update op summary op name
|
|
218
|
+
self.op_summary[OpSummaryHeaders.OP_NAME.value] = launch_ops
|
|
219
|
+
|
|
220
|
+
# update op summary step id
|
|
221
|
+
if self._is_set_schedule and self._jit_level != JitLevel.GRAPH_LEVEL:
|
|
222
|
+
self.op_summary[OpSummaryHeaders.STEP_ID.value] = step_ids
|
|
223
|
+
|
|
224
|
+
self._logger.info("Update kernel name done")
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
def _generate_hardware_op_event_step_id(hardware_op_events_dict: dict, step_id_to_time_dict: dict):
|
|
228
|
+
"""
|
|
229
|
+
Generate the hardware op event step id.
|
|
230
|
+
"""
|
|
231
|
+
for hardware_op_events_list in hardware_op_events_dict.values():
|
|
232
|
+
# Associate each hardware operation event with its step ID
|
|
233
|
+
for hardware_op_event in hardware_op_events_list:
|
|
234
|
+
kernel_event = hardware_op_event.parent
|
|
235
|
+
if not kernel_event:
|
|
236
|
+
continue
|
|
237
|
+
|
|
238
|
+
hardware_op_event.step_id = _get_step_id_by_ts(kernel_event.ts, step_id_to_time_dict)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
def _get_step_id_by_ts(ts: Decimal, step_events_dict: dict):
|
|
242
|
+
"""
|
|
243
|
+
Retrieves the step ID for a given timestamp from the step events dictionary.
|
|
244
|
+
"""
|
|
245
|
+
# Iterate through the step events dictionary to find the step ID for the given timestamp
|
|
246
|
+
for step_id, (st, et) in step_events_dict.items():
|
|
247
|
+
if st <= ts <= et:
|
|
248
|
+
return step_id
|
|
249
|
+
|
|
250
|
+
return None
|
|
@@ -0,0 +1,320 @@
|
|
|
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
|
+
"""ascend memory viewer"""
|
|
16
|
+
import os
|
|
17
|
+
from decimal import Decimal
|
|
18
|
+
|
|
19
|
+
from mindspore.profiler.analysis.viewer.base_viewer import BaseViewer
|
|
20
|
+
from mindspore.profiler.common.file_manager import FileManager
|
|
21
|
+
from mindspore.profiler.common.log import ProfilerLogger
|
|
22
|
+
from mindspore.profiler.common.constant import ProfilerActivity
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class MemoryRecordBean:
|
|
26
|
+
"""Memory Record Struct"""
|
|
27
|
+
|
|
28
|
+
KB_TO_MB = 1000
|
|
29
|
+
HEADERS = [
|
|
30
|
+
"Component",
|
|
31
|
+
"Timestamp(us)",
|
|
32
|
+
"Total Allocated(KB)",
|
|
33
|
+
"Total Reserved(KB)",
|
|
34
|
+
"Total Active(KB)",
|
|
35
|
+
"Device Type",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
def __init__(self, data: list):
|
|
39
|
+
self._data = dict(zip(self.HEADERS, data))
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def row(self) -> list:
|
|
43
|
+
"""
|
|
44
|
+
Get row data
|
|
45
|
+
"""
|
|
46
|
+
return [
|
|
47
|
+
self.component,
|
|
48
|
+
self.time_us_str,
|
|
49
|
+
self.total_allocated_mb,
|
|
50
|
+
self.total_reserved_mb,
|
|
51
|
+
self.total_active_mb,
|
|
52
|
+
self.device_type,
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def component(self) -> str:
|
|
57
|
+
"""
|
|
58
|
+
Get component
|
|
59
|
+
"""
|
|
60
|
+
return self._data.get("Component", "")
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def time_us_str(self) -> str:
|
|
64
|
+
"""
|
|
65
|
+
Get time in us
|
|
66
|
+
"""
|
|
67
|
+
ts_us = self._data.get("Timestamp(us)", 0)
|
|
68
|
+
return str(ts_us)
|
|
69
|
+
|
|
70
|
+
@property
|
|
71
|
+
def total_allocated_mb(self) -> float:
|
|
72
|
+
"""
|
|
73
|
+
Get total allocated memory in MB
|
|
74
|
+
"""
|
|
75
|
+
return float(self._data.get("Total Allocated(KB)", 0)) / self.KB_TO_MB
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def total_reserved_mb(self) -> float:
|
|
79
|
+
"""
|
|
80
|
+
Get total reserved memory in MB
|
|
81
|
+
"""
|
|
82
|
+
return float(self._data.get("Total Reserved(KB)", 0)) / self.KB_TO_MB
|
|
83
|
+
|
|
84
|
+
@property
|
|
85
|
+
def total_active_mb(self) -> float:
|
|
86
|
+
"""
|
|
87
|
+
Get total active memory in MB
|
|
88
|
+
"""
|
|
89
|
+
return float(self._data.get("Total Active(KB)", 0)) / self.KB_TO_MB
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def device_type(self) -> float:
|
|
93
|
+
"""
|
|
94
|
+
Get device type
|
|
95
|
+
"""
|
|
96
|
+
return self._data.get("Device Type", "")
|
|
97
|
+
|
|
98
|
+
@property
|
|
99
|
+
def total_allocated_kb(self) -> float:
|
|
100
|
+
"""
|
|
101
|
+
Get total allocated memory in KB
|
|
102
|
+
"""
|
|
103
|
+
return float(self._data.get("Total Allocated(KB)", 0))
|
|
104
|
+
|
|
105
|
+
@property
|
|
106
|
+
def total_reserved_kb(self) -> float:
|
|
107
|
+
"""
|
|
108
|
+
Get total reserved memory in KB
|
|
109
|
+
"""
|
|
110
|
+
return float(self._data.get("Total Reserved(KB)", 0))
|
|
111
|
+
|
|
112
|
+
@property
|
|
113
|
+
def total_active_kb(self) -> float:
|
|
114
|
+
"""
|
|
115
|
+
Get total active memory in KB
|
|
116
|
+
"""
|
|
117
|
+
return float(self._data.get("Total Active(KB)", 0))
|
|
118
|
+
|
|
119
|
+
@property
|
|
120
|
+
def time_us(self) -> Decimal:
|
|
121
|
+
"""
|
|
122
|
+
Get time in us
|
|
123
|
+
"""
|
|
124
|
+
return Decimal(self._data.get("Timestamp(us)", 0))
|
|
125
|
+
|
|
126
|
+
def is_ge_component(self):
|
|
127
|
+
"""
|
|
128
|
+
Determine if it is GE
|
|
129
|
+
"""
|
|
130
|
+
return self.component == "GE"
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class AscendMemoryViewer(BaseViewer):
|
|
134
|
+
"""
|
|
135
|
+
Ascend Memory Viewer
|
|
136
|
+
|
|
137
|
+
generate memory_record.csv and npu_module_mem.csv
|
|
138
|
+
"""
|
|
139
|
+
|
|
140
|
+
GE_MEMORY_RECORD_HEADERS = [
|
|
141
|
+
"Device id",
|
|
142
|
+
"Component",
|
|
143
|
+
"Timestamp(us)",
|
|
144
|
+
"Total Allocated(KB)",
|
|
145
|
+
"Total Reserved(KB)",
|
|
146
|
+
"Device",
|
|
147
|
+
]
|
|
148
|
+
MS_MEMORY_RECORD_HEADERS = [
|
|
149
|
+
"Timestamp(ns)",
|
|
150
|
+
"Total Allocated(Byte)",
|
|
151
|
+
"Total Reserved(Byte)",
|
|
152
|
+
"Total Active(Byte)",
|
|
153
|
+
]
|
|
154
|
+
TARGET_MEMORY_RECORD_HEADERS = [
|
|
155
|
+
"Component",
|
|
156
|
+
"Timestamp(us)",
|
|
157
|
+
"Total Allocated(MB)",
|
|
158
|
+
"Total Reserved(MB)",
|
|
159
|
+
"Total Active(MB)",
|
|
160
|
+
"Device Type",
|
|
161
|
+
]
|
|
162
|
+
|
|
163
|
+
def __init__(self, **kwargs):
|
|
164
|
+
super().__init__()
|
|
165
|
+
self._enable_profile_memory = kwargs.get("profile_memory", False)
|
|
166
|
+
self._rank_id = kwargs.get("rank_id", 0)
|
|
167
|
+
self._output_path = kwargs.get("ascend_profiler_output_path")
|
|
168
|
+
self._framework_path = kwargs.get("framework_path")
|
|
169
|
+
self._msprof_profiler_output_path = kwargs.get("msprof_profile_output_path")
|
|
170
|
+
self._ascend_ms_dir = kwargs.get("ascend_ms_dir")
|
|
171
|
+
self._activities = kwargs.get("activities")
|
|
172
|
+
ProfilerLogger.init(self._ascend_ms_dir)
|
|
173
|
+
self._logger = ProfilerLogger.get_instance()
|
|
174
|
+
self._ge_memory_record = []
|
|
175
|
+
self._ms_memory_record = []
|
|
176
|
+
|
|
177
|
+
def save(self, data=None):
|
|
178
|
+
"""
|
|
179
|
+
Save memory data
|
|
180
|
+
"""
|
|
181
|
+
self._logger.info("AscendMemoryViewer start")
|
|
182
|
+
if not self._enable_profile_memory:
|
|
183
|
+
return
|
|
184
|
+
try:
|
|
185
|
+
self._copy_npu_module_mem_csv()
|
|
186
|
+
self._parse_memory_record()
|
|
187
|
+
except Exception as e: # pylint: disable=W0703
|
|
188
|
+
self._logger.error("Failed to save memory data: %s", e, exc_info=True)
|
|
189
|
+
self._logger.info("AscendMemoryViewer end")
|
|
190
|
+
|
|
191
|
+
def _copy_npu_module_mem_csv(self):
|
|
192
|
+
"""Generate npu_module_mem.csv"""
|
|
193
|
+
npu_module_mem_file_list = FileManager.get_csv_file_list_by_start_name(
|
|
194
|
+
self._msprof_profiler_output_path, "npu_module_mem"
|
|
195
|
+
)
|
|
196
|
+
target_file_path = os.path.join(
|
|
197
|
+
self._output_path, "npu_module_mem.csv"
|
|
198
|
+
)
|
|
199
|
+
FileManager.combine_csv_file(npu_module_mem_file_list, target_file_path)
|
|
200
|
+
self._logger.info("npu_module_mem.csv saved to %s", target_file_path)
|
|
201
|
+
|
|
202
|
+
def _parse_memory_record(self):
|
|
203
|
+
"""Generate memory_record.csv"""
|
|
204
|
+
self._parse_ge_memory_record()
|
|
205
|
+
self._parse_ms_memory_record()
|
|
206
|
+
combined_memory_data = self._combine_ge_ms_memory_record()
|
|
207
|
+
target_file_path = os.path.join(
|
|
208
|
+
self._output_path, "memory_record.csv"
|
|
209
|
+
)
|
|
210
|
+
FileManager.create_csv_file(
|
|
211
|
+
target_file_path, combined_memory_data, self.TARGET_MEMORY_RECORD_HEADERS
|
|
212
|
+
)
|
|
213
|
+
self._logger.info("memory_record.csv saved to %s", target_file_path)
|
|
214
|
+
|
|
215
|
+
def _parse_ge_memory_record(self):
|
|
216
|
+
"""Parse ge memory record data"""
|
|
217
|
+
memory_record_file_list = FileManager.get_csv_file_list_by_start_name(
|
|
218
|
+
self._msprof_profiler_output_path, "memory_record"
|
|
219
|
+
)
|
|
220
|
+
for file in memory_record_file_list:
|
|
221
|
+
data = FileManager.read_csv_file(file)
|
|
222
|
+
if len(data) > 1:
|
|
223
|
+
self._ge_memory_record.extend(data[1:])
|
|
224
|
+
|
|
225
|
+
def _parse_ms_memory_record(self):
|
|
226
|
+
"""Parse mindspore memory record data"""
|
|
227
|
+
|
|
228
|
+
# No frame work data is collected when no CPU is passed in activities
|
|
229
|
+
if ProfilerActivity.CPU.value not in self._activities:
|
|
230
|
+
return
|
|
231
|
+
|
|
232
|
+
memory_record_file = os.path.join(
|
|
233
|
+
self._framework_path,
|
|
234
|
+
f"cpu_ms_memory_record_{self._rank_id}.txt",
|
|
235
|
+
)
|
|
236
|
+
data = FileManager.read_csv_file(memory_record_file)
|
|
237
|
+
if len(data) > 1:
|
|
238
|
+
self._ms_memory_record.extend(data[1:])
|
|
239
|
+
|
|
240
|
+
def _get_app_reserved_memory(self) -> list:
|
|
241
|
+
"""Get the reserved memory of the application from npu_mem.csv"""
|
|
242
|
+
npu_module_mem_file_list = FileManager.get_csv_file_list_by_start_name(
|
|
243
|
+
self._msprof_profiler_output_path, "npu_mem"
|
|
244
|
+
)
|
|
245
|
+
app_mems = []
|
|
246
|
+
for file in npu_module_mem_file_list:
|
|
247
|
+
md_mems = FileManager.read_csv_file(file)
|
|
248
|
+
for mem in md_mems:
|
|
249
|
+
if mem[1] == "APP":
|
|
250
|
+
app_mems.append(
|
|
251
|
+
MemoryRecordBean(
|
|
252
|
+
[
|
|
253
|
+
mem[1],
|
|
254
|
+
mem[-1].rstrip("\t"),
|
|
255
|
+
0.0,
|
|
256
|
+
float(mem[4]),
|
|
257
|
+
0.0,
|
|
258
|
+
f"NPU:{self._rank_id}",
|
|
259
|
+
]
|
|
260
|
+
).row
|
|
261
|
+
)
|
|
262
|
+
return app_mems
|
|
263
|
+
|
|
264
|
+
def _combine_ge_ms_memory_record(self) -> list:
|
|
265
|
+
"""Combine ge and mindspore memory record data"""
|
|
266
|
+
memory_records = []
|
|
267
|
+
for ge_memory in self._ge_memory_record:
|
|
268
|
+
memory_record = dict(zip(self.GE_MEMORY_RECORD_HEADERS, ge_memory))
|
|
269
|
+
memory_records.append(
|
|
270
|
+
MemoryRecordBean(
|
|
271
|
+
[
|
|
272
|
+
memory_record.get("Component", "GE"),
|
|
273
|
+
memory_record.get("Timestamp(us)"),
|
|
274
|
+
memory_record.get("Total Allocated(KB)", 0),
|
|
275
|
+
memory_record.get("Total Reserved(KB)", 0),
|
|
276
|
+
0,
|
|
277
|
+
memory_record.get("Device"),
|
|
278
|
+
]
|
|
279
|
+
)
|
|
280
|
+
)
|
|
281
|
+
for ms_memory in self._ms_memory_record:
|
|
282
|
+
memory_record = dict(zip(self.MS_MEMORY_RECORD_HEADERS, ms_memory))
|
|
283
|
+
memory_records.append(
|
|
284
|
+
MemoryRecordBean(
|
|
285
|
+
[
|
|
286
|
+
"MindSpore",
|
|
287
|
+
Decimal(memory_record.get("Timestamp(ns)", 0)) / 1000,
|
|
288
|
+
float(memory_record.get("Total Allocated(Byte)", 0)) / 1024,
|
|
289
|
+
float(memory_record.get("Total Reserved(Byte)", 0)) / 1024,
|
|
290
|
+
float(memory_record.get("Total Active(Byte)", 0)) / 1024,
|
|
291
|
+
f"NPU:{self._rank_id}",
|
|
292
|
+
]
|
|
293
|
+
)
|
|
294
|
+
)
|
|
295
|
+
memory_records.sort(key=lambda x: x.time_us)
|
|
296
|
+
last_ge_memory, last_ms_memory = MemoryRecordBean([0] * 6), MemoryRecordBean(
|
|
297
|
+
[0] * 6
|
|
298
|
+
)
|
|
299
|
+
result_data = []
|
|
300
|
+
for memory_record in memory_records:
|
|
301
|
+
result_data.append(memory_record.row)
|
|
302
|
+
last_memory = (
|
|
303
|
+
last_ms_memory if memory_record.is_ge_component() else last_ge_memory
|
|
304
|
+
)
|
|
305
|
+
combined_mem = MemoryRecordBean(
|
|
306
|
+
[
|
|
307
|
+
"MindSpore+GE",
|
|
308
|
+
memory_record.time_us,
|
|
309
|
+
memory_record.total_allocated_kb + last_memory.total_allocated_kb,
|
|
310
|
+
memory_record.total_reserved_kb + last_memory.total_reserved_kb,
|
|
311
|
+
memory_record.total_active_kb + last_memory.total_active_kb,
|
|
312
|
+
f"NPU:{self._rank_id}",
|
|
313
|
+
]
|
|
314
|
+
)
|
|
315
|
+
result_data.append(combined_mem.row)
|
|
316
|
+
if memory_record.is_ge_component():
|
|
317
|
+
last_ge_memory = memory_record
|
|
318
|
+
else:
|
|
319
|
+
last_ms_memory = memory_record
|
|
320
|
+
return result_data + self._get_app_reserved_memory()
|