mindspore 2.4.10__cp311-cp311-win_amd64.whl → 2.6.0rc1__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 +46 -197
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +217 -98
- 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 +435 -371
- 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 +2 -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 +951 -1992
- 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 +314 -566
- 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 +182 -116
- 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 +211 -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 +157 -117
- 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 +796 -759
- 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 +921 -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 +1370 -189
- 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 +22 -17
- 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 +17 -13
- mindspore/nn/optim/adamax.py +8 -7
- mindspore/nn/optim/adasum.py +5 -5
- mindspore/nn/optim/asgd.py +1 -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 +365 -363
- 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 +27 -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 +236 -46
- mindspore/ops/auto_generate/gen_extend_func.py +764 -124
- mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
- mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
- 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 +4501 -3802
- mindspore/ops/function/nn_func.py +1726 -620
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +18 -84
- mindspore/ops/function/random_func.py +440 -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 +24 -17
- mindspore/ops/functional.py +22 -7
- mindspore/ops/functional_overload.py +1440 -0
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +13 -7
- mindspore/ops/operations/_custom_ops_utils.py +247 -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 +232 -78
- mindspore/ops/operations/debug_ops.py +153 -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 +210 -498
- 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 +1888 -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 +299 -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 +152 -34
- mindspore/parallel/_cell_wrapper.py +130 -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 +698 -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 +259 -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 -58
- mindspore/parallel/transform_safetensors.py +363 -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 +106 -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 +409 -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 +88 -25
- 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} +204 -107
- 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 +184 -113
- 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 +550 -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.0rc1.dist-info}/METADATA +3 -3
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +587 -418
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.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.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
# Copyright 2023 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
|
+
"""Profiler path manager"""
|
|
16
|
+
import os
|
|
17
|
+
import re
|
|
18
|
+
import shutil
|
|
19
|
+
import glob
|
|
20
|
+
import stat
|
|
21
|
+
|
|
22
|
+
from mindspore import log as logger
|
|
23
|
+
from mindspore.profiler.common.constant import FileConstant
|
|
24
|
+
from mindspore.profiler.common.exceptions.exceptions import ProfilerPathErrorException
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class PathManager:
|
|
28
|
+
"""
|
|
29
|
+
Path common operations manager
|
|
30
|
+
"""
|
|
31
|
+
MAX_PATH_LENGTH = 4096
|
|
32
|
+
MAX_FILE_NAME_LENGTH = 255
|
|
33
|
+
DATA_FILE_AUTHORITY = 0o640
|
|
34
|
+
DATA_DIR_AUTHORITY = 0o750
|
|
35
|
+
MAX_FILE_SIZE = 1024 * 1024 * 1024 * 10
|
|
36
|
+
|
|
37
|
+
@classmethod
|
|
38
|
+
def check_input_directory_path(cls, path: str):
|
|
39
|
+
"""
|
|
40
|
+
Function Description:
|
|
41
|
+
check whether the path is valid, some businesses can accept a path that does not exist,
|
|
42
|
+
so the function do not verify whether the path exists
|
|
43
|
+
Parameter:
|
|
44
|
+
path: the path to check, whether the incoming path is absolute or relative depends on the business
|
|
45
|
+
Exception Description:
|
|
46
|
+
when invalid data throw exception
|
|
47
|
+
"""
|
|
48
|
+
cls._input_path_common_check(path)
|
|
49
|
+
|
|
50
|
+
if os.path.isfile(path):
|
|
51
|
+
msg = f"Invalid input path is a file path: {path}"
|
|
52
|
+
raise ProfilerPathErrorException(msg)
|
|
53
|
+
|
|
54
|
+
@classmethod
|
|
55
|
+
def check_input_file_path(cls, path: str):
|
|
56
|
+
"""
|
|
57
|
+
Function Description:
|
|
58
|
+
check whether the file path is valid, some businesses can accept a path that does not exist,
|
|
59
|
+
so the function do not verify whether the path exists
|
|
60
|
+
Parameter:
|
|
61
|
+
path: the file path to check, whether the incoming path is absolute or relative depends on the business
|
|
62
|
+
Exception Description:
|
|
63
|
+
when invalid data throw exception
|
|
64
|
+
"""
|
|
65
|
+
cls._input_path_common_check(path)
|
|
66
|
+
|
|
67
|
+
if os.path.isdir(path):
|
|
68
|
+
msg = f"Invalid input path is a directory path: {path}"
|
|
69
|
+
raise ProfilerPathErrorException(msg)
|
|
70
|
+
|
|
71
|
+
file_size = os.path.getsize(path)
|
|
72
|
+
if file_size >= cls.MAX_FILE_SIZE:
|
|
73
|
+
msg = f"file size exceeds the limit: {cls.MAX_FILE_SIZE}, file size: {file_size}"
|
|
74
|
+
raise ProfilerPathErrorException(msg)
|
|
75
|
+
|
|
76
|
+
@classmethod
|
|
77
|
+
def get_directory_size(cls, directory: str, unit: str = 'MB') -> float:
|
|
78
|
+
"""
|
|
79
|
+
Function Description:
|
|
80
|
+
Get the size of the directory
|
|
81
|
+
Parameter:
|
|
82
|
+
directory: the directory path
|
|
83
|
+
unit: the unit of the size, default is MB
|
|
84
|
+
Return:
|
|
85
|
+
float: the size of the directory
|
|
86
|
+
"""
|
|
87
|
+
if not os.path.exists(directory):
|
|
88
|
+
logger.warning("Get directory size failed, %s not exists", directory)
|
|
89
|
+
return 0.0
|
|
90
|
+
|
|
91
|
+
cls.check_input_directory_path(directory)
|
|
92
|
+
unit_map = {
|
|
93
|
+
'B': 1,
|
|
94
|
+
'KB': 1024,
|
|
95
|
+
'MB': 1024 * 1024,
|
|
96
|
+
'GB': 1024 * 1024 * 1024
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if unit not in unit_map:
|
|
100
|
+
logger.error("Invalid unit: %s", unit)
|
|
101
|
+
return 0.0
|
|
102
|
+
|
|
103
|
+
total_size = 0
|
|
104
|
+
for dirpath, _, filenames in os.walk(directory):
|
|
105
|
+
for filename in filenames:
|
|
106
|
+
file_path = os.path.join(dirpath, filename)
|
|
107
|
+
try:
|
|
108
|
+
total_size += os.path.getsize(file_path)
|
|
109
|
+
except (OSError, FileNotFoundError):
|
|
110
|
+
continue
|
|
111
|
+
|
|
112
|
+
return total_size / unit_map[unit]
|
|
113
|
+
|
|
114
|
+
@classmethod
|
|
115
|
+
def check_path_owner_consistent(cls, path: str):
|
|
116
|
+
"""
|
|
117
|
+
Function Description:
|
|
118
|
+
check whether the path belong to process owner
|
|
119
|
+
Parameter:
|
|
120
|
+
path: the path to check
|
|
121
|
+
Exception Description:
|
|
122
|
+
when invalid path, prompt the user
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
if not os.path.exists(path):
|
|
126
|
+
msg = f"The path does not exist: {path}"
|
|
127
|
+
raise ProfilerPathErrorException(msg)
|
|
128
|
+
if os.name != 'nt' and os.stat(path).st_uid != os.getuid():
|
|
129
|
+
msg = f"Path {path} owner[{os.stat(path).st_uid}] does not match the current user[{os.getuid()}]."
|
|
130
|
+
raise ProfilerPathErrorException(msg)
|
|
131
|
+
|
|
132
|
+
@classmethod
|
|
133
|
+
def check_directory_path_writeable(cls, path):
|
|
134
|
+
"""
|
|
135
|
+
Function Description:
|
|
136
|
+
check whether the path is writable
|
|
137
|
+
Parameter:
|
|
138
|
+
path: the path to check
|
|
139
|
+
Exception Description:
|
|
140
|
+
when invalid data throw exception
|
|
141
|
+
"""
|
|
142
|
+
cls.check_path_owner_consistent(path)
|
|
143
|
+
if os.path.islink(path):
|
|
144
|
+
msg = f"Invalid path is a soft link: {path}"
|
|
145
|
+
raise ProfilerPathErrorException(msg)
|
|
146
|
+
if not os.access(path, os.W_OK):
|
|
147
|
+
msg = f"The path writeable permission check failed: {path}"
|
|
148
|
+
raise ProfilerPathErrorException(msg)
|
|
149
|
+
|
|
150
|
+
@classmethod
|
|
151
|
+
def check_directory_path_readable(cls, path):
|
|
152
|
+
"""
|
|
153
|
+
Function Description:
|
|
154
|
+
check whether the path is writable
|
|
155
|
+
Parameter:
|
|
156
|
+
path: the path to check
|
|
157
|
+
Exception Description:
|
|
158
|
+
when invalid data throw exception
|
|
159
|
+
"""
|
|
160
|
+
cls.check_path_owner_consistent(path)
|
|
161
|
+
if os.path.islink(path):
|
|
162
|
+
msg = f"Invalid path is a soft link: {path}"
|
|
163
|
+
raise ProfilerPathErrorException(msg)
|
|
164
|
+
if not os.access(path, os.R_OK):
|
|
165
|
+
msg = f"The path readable permission check failed: {path}"
|
|
166
|
+
raise ProfilerPathErrorException(msg)
|
|
167
|
+
|
|
168
|
+
@classmethod
|
|
169
|
+
def remove_path_safety(cls, path: str):
|
|
170
|
+
"""
|
|
171
|
+
Function Description:
|
|
172
|
+
remove path safety
|
|
173
|
+
Parameter:
|
|
174
|
+
path: the path to remove
|
|
175
|
+
Exception Description:
|
|
176
|
+
when invalid data throw exception
|
|
177
|
+
"""
|
|
178
|
+
if not os.path.exists(path):
|
|
179
|
+
logger.warning("The path does not exist: %s", path)
|
|
180
|
+
return
|
|
181
|
+
|
|
182
|
+
if os.path.islink(path):
|
|
183
|
+
msg = f"Failed to remove path: {path}, is a soft link"
|
|
184
|
+
raise ProfilerPathErrorException(msg)
|
|
185
|
+
|
|
186
|
+
try:
|
|
187
|
+
shutil.rmtree(path)
|
|
188
|
+
except PermissionError as err:
|
|
189
|
+
raise ProfilerPathErrorException(f"Permission denied while removing path: {path}") from err
|
|
190
|
+
except Exception as err:
|
|
191
|
+
raise ProfilerPathErrorException(f"Failed to remove path: {path}, err: {err}") from err
|
|
192
|
+
|
|
193
|
+
@classmethod
|
|
194
|
+
def remove_file_safety(cls, file: str):
|
|
195
|
+
"""
|
|
196
|
+
Function Description:
|
|
197
|
+
remove file safety
|
|
198
|
+
Parameter:
|
|
199
|
+
path: the file to remove
|
|
200
|
+
Exception Description:
|
|
201
|
+
when invalid data throw exception
|
|
202
|
+
"""
|
|
203
|
+
if not os.path.exists(file):
|
|
204
|
+
logger.warning("The file does not exist: %s", file)
|
|
205
|
+
return
|
|
206
|
+
|
|
207
|
+
if os.path.islink(file):
|
|
208
|
+
msg = f"Failed to remove file: {file}, is a soft link"
|
|
209
|
+
raise ProfilerPathErrorException(msg)
|
|
210
|
+
|
|
211
|
+
try:
|
|
212
|
+
os.remove(file)
|
|
213
|
+
except PermissionError as err:
|
|
214
|
+
raise ProfilerPathErrorException(f"Permission denied while removing file: {file}") from err
|
|
215
|
+
except Exception as err:
|
|
216
|
+
raise ProfilerPathErrorException(f"Failed to remove file: {file}, err: {err}") from err
|
|
217
|
+
|
|
218
|
+
@classmethod
|
|
219
|
+
def make_dir_safety(cls, path: str):
|
|
220
|
+
"""
|
|
221
|
+
Function Description:
|
|
222
|
+
make directory safety
|
|
223
|
+
Parameter:
|
|
224
|
+
path: the directory to remove
|
|
225
|
+
Exception Description:
|
|
226
|
+
when invalid data throw exception
|
|
227
|
+
"""
|
|
228
|
+
if os.path.exists(path):
|
|
229
|
+
return
|
|
230
|
+
|
|
231
|
+
if os.path.islink(path):
|
|
232
|
+
msg = f"Failed to make directory: {path}, is a soft link"
|
|
233
|
+
raise ProfilerPathErrorException(msg)
|
|
234
|
+
|
|
235
|
+
try:
|
|
236
|
+
os.makedirs(path, mode=cls.DATA_DIR_AUTHORITY, exist_ok=True)
|
|
237
|
+
except Exception as err:
|
|
238
|
+
raise ProfilerPathErrorException(f"Failed to make directory: {path}, err: {err}") from err
|
|
239
|
+
|
|
240
|
+
@classmethod
|
|
241
|
+
def create_file_safety(cls, path: str):
|
|
242
|
+
"""
|
|
243
|
+
Function Description:
|
|
244
|
+
create file safety
|
|
245
|
+
Parameter:
|
|
246
|
+
path: the file to remove
|
|
247
|
+
Exception Description:
|
|
248
|
+
when invalid data throw exception
|
|
249
|
+
"""
|
|
250
|
+
if os.path.islink(path):
|
|
251
|
+
raise RuntimeError(f"Failed to create file: {path}, is a soft link")
|
|
252
|
+
if os.path.exists(path):
|
|
253
|
+
logger.warning("File already exists: %s", path)
|
|
254
|
+
return
|
|
255
|
+
try:
|
|
256
|
+
os.close(os.open(path, os.O_WRONLY | os.O_CREAT, cls.DATA_FILE_AUTHORITY))
|
|
257
|
+
except Exception as err:
|
|
258
|
+
raise RuntimeError(f"Failed to create file: {path}, err: {err}") from err
|
|
259
|
+
|
|
260
|
+
@classmethod
|
|
261
|
+
def _input_path_common_check(cls, path: str):
|
|
262
|
+
"""
|
|
263
|
+
Function Description:
|
|
264
|
+
input path check common function
|
|
265
|
+
Parameter:
|
|
266
|
+
path: the file path to check
|
|
267
|
+
Exception Description:
|
|
268
|
+
when invalid data throw exception
|
|
269
|
+
"""
|
|
270
|
+
if len(path) > cls.MAX_PATH_LENGTH:
|
|
271
|
+
msg = f"Path {path} length {len(path)} exceeds the limit {cls.MAX_PATH_LENGTH}."
|
|
272
|
+
raise ProfilerPathErrorException(msg)
|
|
273
|
+
|
|
274
|
+
if os.path.islink(path):
|
|
275
|
+
msg = f"Invalid input path is a soft link: {path}"
|
|
276
|
+
raise ProfilerPathErrorException(msg)
|
|
277
|
+
|
|
278
|
+
pattern = r"(\.|/|_|-|\s|[~0-9a-zA-Z]|[\u4e00-\u9fa5])+"
|
|
279
|
+
if not re.fullmatch(pattern, path):
|
|
280
|
+
msg = f"Invalid input path: {path}, contains invalid characters."
|
|
281
|
+
raise ProfilerPathErrorException(msg)
|
|
282
|
+
|
|
283
|
+
path_split_list = path.split("/")
|
|
284
|
+
for name in path_split_list:
|
|
285
|
+
if len(name) > cls.MAX_FILE_NAME_LENGTH:
|
|
286
|
+
msg = f"Length of input path {path} file name {name} exceeds the limit {cls.MAX_FILE_NAME_LENGTH}."
|
|
287
|
+
raise ProfilerPathErrorException(msg)
|
|
288
|
+
|
|
289
|
+
@classmethod
|
|
290
|
+
def get_ascend_ms_path_list(cls, input_path: str):
|
|
291
|
+
"""
|
|
292
|
+
Function Description:
|
|
293
|
+
get valid profiler {}_ascend_ms_dir path list from input_path
|
|
294
|
+
Parameter:
|
|
295
|
+
input_path: The directory path from which to extract profiler parent paths.
|
|
296
|
+
Return:
|
|
297
|
+
A list containing the input path or its subdirectories that are valid profiler parents.
|
|
298
|
+
"""
|
|
299
|
+
if os.path.isdir(input_path) and (cls.get_fwk_path(input_path) or cls.get_cann_path(input_path)):
|
|
300
|
+
return [input_path]
|
|
301
|
+
sub_dirs = os.listdir(os.path.realpath(input_path))
|
|
302
|
+
profiler_ascend_ms_path_list = []
|
|
303
|
+
for sub_dir in sub_dirs:
|
|
304
|
+
sub_path = os.path.join(input_path, sub_dir)
|
|
305
|
+
if not os.path.isdir(sub_path):
|
|
306
|
+
continue
|
|
307
|
+
if cls.get_fwk_path(sub_path) or cls.get_cann_path(sub_path):
|
|
308
|
+
profiler_ascend_ms_path_list.append(os.path.join(input_path, sub_dir))
|
|
309
|
+
return profiler_ascend_ms_path_list
|
|
310
|
+
|
|
311
|
+
@classmethod
|
|
312
|
+
def get_fwk_path(cls, input_path: str):
|
|
313
|
+
"""
|
|
314
|
+
Function Description:
|
|
315
|
+
get valid framework path from input_path
|
|
316
|
+
Parameter:
|
|
317
|
+
input_path: the directory path to check whether exist valid FRAMEWORK path
|
|
318
|
+
Return:
|
|
319
|
+
The path to the FRAMEWORK directory if found, otherwise an empty string.
|
|
320
|
+
"""
|
|
321
|
+
fwk_path = os.path.join(input_path, FileConstant.FRAMEWORK_DIR)
|
|
322
|
+
if os.path.isdir(fwk_path):
|
|
323
|
+
return fwk_path
|
|
324
|
+
return ""
|
|
325
|
+
|
|
326
|
+
@classmethod
|
|
327
|
+
def get_cann_path(cls, input_path: str):
|
|
328
|
+
"""
|
|
329
|
+
Function Description:
|
|
330
|
+
get valid PROF_XXX path from input_path
|
|
331
|
+
Parameter:
|
|
332
|
+
input_path: the directory path to check valid PROF_XXX path
|
|
333
|
+
Return:
|
|
334
|
+
The path to the PROF_XXX directory if it matches the pattern and exists, otherwise an empty string.
|
|
335
|
+
"""
|
|
336
|
+
sub_dirs = os.listdir(os.path.realpath(input_path))
|
|
337
|
+
for sub_dir in sub_dirs:
|
|
338
|
+
sub_path = os.path.join(input_path, sub_dir)
|
|
339
|
+
if os.path.isdir(sub_path) and re.match(FileConstant.CANN_FILE_REGEX, sub_dir):
|
|
340
|
+
return sub_path
|
|
341
|
+
return ""
|
|
342
|
+
|
|
343
|
+
@classmethod
|
|
344
|
+
def get_profiler_info_path(cls, ascend_ms_dir: str) -> str:
|
|
345
|
+
"""
|
|
346
|
+
Function Description:
|
|
347
|
+
Get profiler_info_*.json path from ascend_ms_dir
|
|
348
|
+
Parameter:
|
|
349
|
+
ascend_ms_dir: the directory path of profiler data, eg: xxx_ascend_ms
|
|
350
|
+
Return:
|
|
351
|
+
str type profiler_info_*.json path
|
|
352
|
+
"""
|
|
353
|
+
prof_info_path_pattern = os.path.join(ascend_ms_dir, "profiler_info_*.json")
|
|
354
|
+
prof_info_paths = glob.glob(prof_info_path_pattern)
|
|
355
|
+
|
|
356
|
+
if not prof_info_paths:
|
|
357
|
+
raise ValueError(f"Cannot find profiler_info.json in the {ascend_ms_dir}")
|
|
358
|
+
|
|
359
|
+
if len(prof_info_paths) > 1:
|
|
360
|
+
logger.warning(
|
|
361
|
+
f"There are more than one profiler_info.json in the {ascend_ms_dir}, "
|
|
362
|
+
f"use the first one: {prof_info_paths[0]}"
|
|
363
|
+
)
|
|
364
|
+
return prof_info_paths[0]
|
|
365
|
+
|
|
366
|
+
@classmethod
|
|
367
|
+
def get_real_path(cls, path: str):
|
|
368
|
+
expanded_path = os.path.expanduser(path)
|
|
369
|
+
if os.path.islink(path):
|
|
370
|
+
msg = f"Invalid input path is a soft link: {path}"
|
|
371
|
+
raise ProfilerPathErrorException(msg)
|
|
372
|
+
return os.path.realpath(expanded_path)
|
|
373
|
+
|
|
374
|
+
@classmethod
|
|
375
|
+
def check_cann_lib_valid(cls, path: str) -> bool:
|
|
376
|
+
"""
|
|
377
|
+
Function Description:
|
|
378
|
+
check if cann lib path is valid
|
|
379
|
+
Parameter:
|
|
380
|
+
path: the cann lib path to check
|
|
381
|
+
Return:
|
|
382
|
+
bool: True if the path is valid, False otherwise
|
|
383
|
+
"""
|
|
384
|
+
lib_path = os.path.realpath(path)
|
|
385
|
+
if not os.path.exists(lib_path):
|
|
386
|
+
return False
|
|
387
|
+
if os.path.isdir(lib_path) or os.path.islink(lib_path):
|
|
388
|
+
return False
|
|
389
|
+
if bool(os.stat(lib_path).st_mode & stat.S_IWOTH):
|
|
390
|
+
return False
|
|
391
|
+
if os.name == 'nt':
|
|
392
|
+
return False
|
|
393
|
+
if os.stat(path).st_uid == 0 or os.stat(path).st_uid == os.getuid():
|
|
394
|
+
return True
|
|
395
|
+
return False
|
|
@@ -0,0 +1,168 @@
|
|
|
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
|
+
"""Process bar."""
|
|
16
|
+
import os
|
|
17
|
+
import sys
|
|
18
|
+
import time
|
|
19
|
+
from typing import Iterable, Optional, Any
|
|
20
|
+
import threading
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ProcessBar:
|
|
24
|
+
"""
|
|
25
|
+
A progress bar for tracking the progress of an iterable or a process with a known total.
|
|
26
|
+
"""
|
|
27
|
+
BLANK_SPACE_NUM = 20
|
|
28
|
+
FINISH_TEXT = "Done"
|
|
29
|
+
|
|
30
|
+
def __init__(
|
|
31
|
+
self,
|
|
32
|
+
iterable: Optional[Iterable] = None,
|
|
33
|
+
desc: str = "",
|
|
34
|
+
bar_length: int = 20,
|
|
35
|
+
update_interval: float = 1.0,
|
|
36
|
+
):
|
|
37
|
+
"""
|
|
38
|
+
Initialize the ProcessBar.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
iterable: An optional iterable to track progress.
|
|
42
|
+
desc: A description of the process being tracked.
|
|
43
|
+
bar_length: The length of the progress bar in characters.
|
|
44
|
+
update_interval: The minimum time interval between progress bar updates.
|
|
45
|
+
"""
|
|
46
|
+
if not isinstance(iterable, Iterable):
|
|
47
|
+
raise ValueError("Must provide an iterable")
|
|
48
|
+
|
|
49
|
+
if not isinstance(desc, str):
|
|
50
|
+
raise ValueError("desc must be a string")
|
|
51
|
+
|
|
52
|
+
if not isinstance(bar_length, int):
|
|
53
|
+
raise ValueError("bar_length must be an integer")
|
|
54
|
+
|
|
55
|
+
if bar_length <= 0:
|
|
56
|
+
raise ValueError("bar_length must be greater than 0")
|
|
57
|
+
|
|
58
|
+
if not isinstance(update_interval, float):
|
|
59
|
+
raise ValueError("update_interval must be a float")
|
|
60
|
+
|
|
61
|
+
if update_interval < 0:
|
|
62
|
+
raise ValueError("update_interval must be greater than 0")
|
|
63
|
+
|
|
64
|
+
self.iterable: Iterable = iterable
|
|
65
|
+
self.total: int = len(iterable)
|
|
66
|
+
self.desc: str = f"[{os.getpid()}] {desc}"
|
|
67
|
+
self.bar_length: int = bar_length
|
|
68
|
+
self.update_interval: float = update_interval
|
|
69
|
+
self.current: int = 0
|
|
70
|
+
self.cur_item_name: Optional[str] = None
|
|
71
|
+
self.start_time: float = time.time()
|
|
72
|
+
self.last_update_time: float = self.start_time
|
|
73
|
+
self._stop_refresh = False
|
|
74
|
+
self._refresh_thread = None
|
|
75
|
+
self._start_auto_refresh()
|
|
76
|
+
|
|
77
|
+
def _start_auto_refresh(self) -> None:
|
|
78
|
+
"""
|
|
79
|
+
Start auto refresh thread.
|
|
80
|
+
"""
|
|
81
|
+
def refresh_loop():
|
|
82
|
+
while not self._stop_refresh:
|
|
83
|
+
if self.current > 0:
|
|
84
|
+
self._print_progress(time.time())
|
|
85
|
+
time.sleep(self.update_interval)
|
|
86
|
+
|
|
87
|
+
self._refresh_thread = threading.Thread(target=refresh_loop, daemon=True)
|
|
88
|
+
self._refresh_thread.start()
|
|
89
|
+
|
|
90
|
+
def update(self, n: int = 1, item_name: Optional[str] = None) -> None:
|
|
91
|
+
"""
|
|
92
|
+
Update the progress bar.
|
|
93
|
+
|
|
94
|
+
Args:
|
|
95
|
+
n: The number of items or steps to increment the progress by.
|
|
96
|
+
item_name: The name of the current item being processed.
|
|
97
|
+
"""
|
|
98
|
+
self.current += n
|
|
99
|
+
self.cur_item_name = item_name
|
|
100
|
+
|
|
101
|
+
def _print_progress(self, now: float) -> None:
|
|
102
|
+
"""
|
|
103
|
+
Print the current progress to the console.
|
|
104
|
+
|
|
105
|
+
Args:
|
|
106
|
+
now: The current timestamp.
|
|
107
|
+
"""
|
|
108
|
+
elapsed = now - self.start_time
|
|
109
|
+
if self.total > 0:
|
|
110
|
+
progress = min(1, self.current / self.total)
|
|
111
|
+
block = int(round(self.bar_length * progress))
|
|
112
|
+
|
|
113
|
+
text = (
|
|
114
|
+
f"\r{self.desc}: [{block * '#' + (self.bar_length - block) * ' '}] "
|
|
115
|
+
f"{self.current}/{self.total} {self.cur_item_name} "
|
|
116
|
+
f"Elapsed: {int(elapsed)}s"
|
|
117
|
+
)
|
|
118
|
+
# 添加额外的空格和回车来清除可能的残留字符
|
|
119
|
+
text = text + ' ' * self.BLANK_SPACE_NUM + '\r'
|
|
120
|
+
sys.stdout.write(text)
|
|
121
|
+
sys.stdout.flush()
|
|
122
|
+
|
|
123
|
+
def __iter__(self) -> Iterable[Any]:
|
|
124
|
+
"""
|
|
125
|
+
Iterate over the items in the iterable, updating the progress bar for each item.
|
|
126
|
+
|
|
127
|
+
Yields:
|
|
128
|
+
The next item from the iterable.
|
|
129
|
+
|
|
130
|
+
Raises:
|
|
131
|
+
ValueError: If no iterable was provided during initialization.
|
|
132
|
+
"""
|
|
133
|
+
if self.iterable is None:
|
|
134
|
+
raise ValueError("Must provide an iterable")
|
|
135
|
+
try:
|
|
136
|
+
iterator = iter(self.iterable)
|
|
137
|
+
# 预先获取第一个元素
|
|
138
|
+
try:
|
|
139
|
+
first_item = next(iterator)
|
|
140
|
+
except StopIteration:
|
|
141
|
+
return
|
|
142
|
+
|
|
143
|
+
# 初始化显示,显示0/total和第一个元素的名称
|
|
144
|
+
self.cur_item_name = first_item.__class__.__name__
|
|
145
|
+
self._print_progress(time.time())
|
|
146
|
+
|
|
147
|
+
# 处理第一个元素
|
|
148
|
+
yield first_item
|
|
149
|
+
self.update(item_name=first_item.__class__.__name__)
|
|
150
|
+
self._print_progress(time.time())
|
|
151
|
+
|
|
152
|
+
# 处理剩余元素
|
|
153
|
+
for item in iterator:
|
|
154
|
+
# 先更新当前要处理的元素名称
|
|
155
|
+
self.cur_item_name = item.__class__.__name__
|
|
156
|
+
self._print_progress(time.time())
|
|
157
|
+
yield item
|
|
158
|
+
self.update()
|
|
159
|
+
|
|
160
|
+
# 显示完成状态
|
|
161
|
+
self.cur_item_name = self.FINISH_TEXT
|
|
162
|
+
self._print_progress(time.time())
|
|
163
|
+
sys.stdout.write("\n")
|
|
164
|
+
|
|
165
|
+
finally:
|
|
166
|
+
self._stop_refresh = True
|
|
167
|
+
if self._refresh_thread:
|
|
168
|
+
self._refresh_thread.join()
|
|
@@ -28,9 +28,15 @@ class MultiProcessPool:
|
|
|
28
28
|
self.porcess_list: List[Process] = []
|
|
29
29
|
atexit.register(self.wait_all_job_finished)
|
|
30
30
|
|
|
31
|
-
def add_async_job(self, func):
|
|
32
|
-
"""Add job and run in subprocess
|
|
33
|
-
|
|
31
|
+
def add_async_job(self, func, *args, **kwargs):
|
|
32
|
+
"""Add job and run in subprocess.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
func: The function to be executed in subprocess.
|
|
36
|
+
args: The positional arguments to be passed to the function.
|
|
37
|
+
kwargs: The keyword arguments to be passed to the function.
|
|
38
|
+
"""
|
|
39
|
+
process = Process(target=func, args=args, kwargs=kwargs)
|
|
34
40
|
process.start()
|
|
35
41
|
self.porcess_list.append(process)
|
|
36
42
|
|