mindspore 2.4.10__cp310-cp310-win_amd64.whl → 2.6.0__cp310-cp310-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +13 -6
- mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -0
- mindspore/_checkparam.py +3 -38
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +83 -0
- mindspore/_extends/parse/deprecated/__init__.py +0 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
- mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
- mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
- mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
- mindspore/_extends/parse/parser.py +47 -198
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +229 -99
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +11 -5
- mindspore/atlprov.dll +0 -0
- mindspore/avcodec-59.dll +0 -0
- mindspore/avdevice-59.dll +0 -0
- mindspore/avfilter-8.dll +0 -0
- mindspore/avformat-59.dll +0 -0
- mindspore/avutil-57.dll +0 -0
- mindspore/boost/__init__.py +2 -2
- mindspore/boost/base.py +3 -7
- mindspore/boost/boost_cell_wrapper.py +138 -43
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +6 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -2
- mindspore/common/_stub_tensor.py +30 -14
- mindspore/common/_tensor_cpp_method.py +17 -0
- mindspore/common/_tensor_docs.py +4760 -0
- mindspore/common/api.py +480 -372
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +39 -36
- mindspore/common/dump.py +9 -6
- mindspore/common/file_system.py +9 -1
- mindspore/common/generator.py +5 -0
- mindspore/common/hook_handle.py +6 -2
- mindspore/common/initializer.py +13 -10
- mindspore/common/jit_begin_end.py +94 -0
- mindspore/common/jit_config.py +6 -1
- mindspore/common/jit_context.py +76 -0
- mindspore/common/jit_trace.py +378 -0
- mindspore/common/lazy_inline.py +9 -3
- mindspore/common/mindir_util.py +10 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +135 -52
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +975 -1981
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +52 -2
- mindspore/communication/comm_func.py +240 -181
- mindspore/communication/management.py +95 -26
- mindspore/context.py +324 -573
- mindspore/dataset/__init__.py +65 -37
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/callback/ds_callback.py +2 -1
- mindspore/dataset/core/config.py +87 -6
- mindspore/dataset/engine/cache_admin.py +3 -3
- mindspore/dataset/engine/cache_client.py +6 -5
- mindspore/dataset/engine/datasets.py +292 -267
- mindspore/dataset/engine/datasets_audio.py +22 -8
- mindspore/dataset/engine/datasets_standard_format.py +46 -27
- mindspore/dataset/engine/datasets_text.py +78 -48
- mindspore/dataset/engine/datasets_user_defined.py +183 -117
- mindspore/dataset/engine/datasets_vision.py +120 -44
- mindspore/dataset/engine/iterators.py +283 -63
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/obs/util.py +8 -0
- mindspore/dataset/engine/queue.py +40 -0
- mindspore/dataset/engine/samplers.py +289 -43
- mindspore/dataset/engine/serializer_deserializer.py +3 -2
- mindspore/dataset/engine/validators.py +53 -11
- mindspore/dataset/text/__init__.py +7 -6
- mindspore/dataset/text/transforms.py +6 -5
- mindspore/dataset/text/utils.py +3 -3
- mindspore/dataset/transforms/__init__.py +0 -9
- mindspore/dataset/transforms/py_transforms_util.py +17 -0
- mindspore/dataset/transforms/transforms.py +31 -14
- mindspore/dataset/utils/browse_dataset.py +1 -1
- mindspore/dataset/vision/__init__.py +2 -9
- mindspore/dataset/vision/transforms.py +202 -158
- mindspore/dataset/vision/utils.py +7 -5
- mindspore/dataset/vision/validators.py +1 -2
- mindspore/device_context/__init__.py +21 -0
- mindspore/device_context/ascend/__init__.py +25 -0
- mindspore/device_context/ascend/device.py +72 -0
- mindspore/device_context/ascend/op_debug.py +153 -0
- mindspore/device_context/ascend/op_precision.py +193 -0
- mindspore/device_context/ascend/op_tuning.py +123 -0
- mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
- mindspore/device_context/cpu/device.py +62 -0
- mindspore/device_context/cpu/op_tuning.py +43 -0
- mindspore/device_context/gpu/__init__.py +21 -0
- mindspore/device_context/gpu/device.py +70 -0
- mindspore/device_context/gpu/op_precision.py +67 -0
- mindspore/device_context/gpu/op_tuning.py +175 -0
- mindspore/device_manager.py +170 -0
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/llm_boost/__init__.py +1 -0
- mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
- mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +209 -0
- mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
- mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
- mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
- mindspore/experimental/llm_boost/register.py +1 -0
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +6 -6
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +7 -0
- mindspore/experimental/optim/adamax.py +4 -4
- mindspore/experimental/optim/adamw.py +4 -0
- mindspore/experimental/optim/asgd.py +1 -1
- mindspore/experimental/optim/lr_scheduler.py +73 -46
- mindspore/experimental/optim/radam.py +34 -31
- mindspore/experimental/optim/rprop.py +1 -1
- mindspore/experimental/optim/sgd.py +1 -1
- mindspore/hal/contiguous_tensors_handle.py +6 -10
- mindspore/hal/device.py +55 -53
- mindspore/hal/event.py +52 -52
- mindspore/hal/memory.py +179 -120
- mindspore/hal/stream.py +150 -109
- mindspore/include/api/context.h +0 -1
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +50 -0
- mindspore/mindrecord/__init__.py +21 -8
- mindspore/mindrecord/config.py +17 -316
- mindspore/mindrecord/filereader.py +1 -9
- mindspore/mindrecord/filewriter.py +5 -15
- mindspore/mindrecord/mindpage.py +1 -9
- mindspore/mindspore_backend_common.dll +0 -0
- mindspore/mindspore_backend_manager.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_dump.dll +0 -0
- mindspore/mindspore_frontend.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_memory_pool.dll +0 -0
- mindspore/mindspore_ms_backend.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
- mindspore/mindspore_ops_kernel_common.dll +0 -0
- mindspore/mindspore_profiler.dll +0 -0
- mindspore/mindspore_pyboost.dll +0 -0
- mindspore/mindspore_pynative.dll +0 -0
- mindspore/mindspore_res_manager.dll +0 -0
- mindspore/mindspore_runtime_pipeline.dll +0 -0
- mindspore/mint/__init__.py +798 -761
- mindspore/mint/distributed/__init__.py +70 -4
- mindspore/mint/distributed/distributed.py +2679 -44
- mindspore/mint/linalg/__init__.py +8 -0
- mindspore/mint/nn/__init__.py +743 -22
- mindspore/mint/nn/functional.py +716 -23
- mindspore/mint/nn/layer/__init__.py +21 -4
- mindspore/mint/nn/layer/_functions.py +334 -0
- mindspore/mint/nn/layer/activation.py +276 -1
- mindspore/mint/nn/layer/basic.py +123 -0
- mindspore/mint/nn/layer/conv.py +933 -0
- mindspore/mint/nn/layer/normalization.py +223 -28
- mindspore/mint/nn/layer/padding.py +797 -0
- mindspore/mint/nn/layer/pooling.py +235 -0
- mindspore/mint/optim/__init__.py +3 -1
- mindspore/mint/optim/adam.py +223 -0
- mindspore/mint/optim/adamw.py +26 -19
- mindspore/mint/optim/sgd.py +171 -0
- mindspore/mint/special/__init__.py +2 -1
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/multiprocessing/__init__.py +5 -0
- mindspore/nn/__init__.py +4 -1
- mindspore/nn/cell.py +1373 -192
- mindspore/nn/dynamic_lr.py +2 -1
- mindspore/nn/layer/activation.py +29 -27
- mindspore/nn/layer/basic.py +51 -35
- mindspore/nn/layer/channel_shuffle.py +3 -3
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +53 -42
- mindspore/nn/layer/embedding.py +12 -11
- mindspore/nn/layer/normalization.py +56 -49
- mindspore/nn/layer/padding.py +4 -3
- mindspore/nn/layer/pooling.py +120 -42
- mindspore/nn/layer/rnn_cells.py +1 -1
- mindspore/nn/layer/rnns.py +2 -1
- mindspore/nn/layer/timedistributed.py +5 -5
- mindspore/nn/layer/transformer.py +59 -36
- mindspore/nn/learning_rate_schedule.py +8 -4
- mindspore/nn/loss/loss.py +58 -55
- mindspore/nn/optim/ada_grad.py +7 -5
- mindspore/nn/optim/adadelta.py +11 -9
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +19 -15
- mindspore/nn/optim/adamax.py +8 -7
- mindspore/nn/optim/adasum.py +5 -5
- mindspore/nn/optim/asgd.py +3 -1
- mindspore/nn/optim/ftrl.py +11 -9
- mindspore/nn/optim/lamb.py +1 -1
- mindspore/nn/optim/lars.py +1 -4
- mindspore/nn/optim/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +3 -3
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +11 -9
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- mindspore/nn/optim/thor.py +2 -1
- mindspore/nn/probability/bijector/bijector.py +17 -11
- mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
- mindspore/nn/probability/bijector/invert.py +2 -2
- mindspore/nn/probability/bijector/scalar_affine.py +3 -3
- mindspore/nn/probability/bijector/softplus.py +3 -2
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +1 -1
- mindspore/nn/probability/distribution/cauchy.py +4 -2
- mindspore/nn/probability/distribution/exponential.py +6 -7
- mindspore/nn/probability/distribution/gamma.py +2 -2
- mindspore/nn/probability/distribution/gumbel.py +2 -2
- mindspore/nn/probability/distribution/half_normal.py +5 -3
- mindspore/nn/probability/distribution/logistic.py +5 -3
- mindspore/nn/probability/distribution/poisson.py +1 -1
- mindspore/nn/probability/distribution/uniform.py +5 -3
- mindspore/nn/reinforcement/_tensors_queue.py +1 -1
- mindspore/nn/reinforcement/tensor_array.py +1 -1
- mindspore/nn/utils/init.py +13 -11
- mindspore/nn/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +181 -122
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +6 -7
- mindspore/numpy/array_creations.py +63 -65
- mindspore/numpy/array_ops.py +149 -144
- mindspore/numpy/logic_ops.py +41 -42
- mindspore/numpy/math_ops.py +361 -359
- mindspore/numpy/utils.py +17 -18
- mindspore/numpy/utils_const.py +5 -6
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +5 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
- mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
- mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
- mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
- mindspore/ops/_op_impl/cpu/__init__.py +1 -0
- mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
- mindspore/ops/_register_for_op.py +0 -11
- mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
- mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
- mindspore/ops/_vmap/vmap_array_ops.py +52 -25
- mindspore/ops/_vmap/vmap_base.py +0 -2
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
- mindspore/ops/_vmap/vmap_math_ops.py +15 -16
- mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +258 -46
- mindspore/ops/auto_generate/gen_extend_func.py +757 -185
- mindspore/ops/auto_generate/gen_ops_def.py +4197 -2243
- mindspore/ops/auto_generate/gen_ops_prim.py +16976 -6055
- mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +20 -25
- mindspore/ops/composite/math_ops.py +6 -16
- mindspore/ops/composite/multitype_ops/__init__.py +5 -2
- mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
- mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
- mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
- mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
- mindspore/ops/function/__init__.py +40 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +2089 -2403
- mindspore/ops/function/clip_func.py +80 -23
- mindspore/ops/function/debug_func.py +57 -57
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +2 -2
- mindspore/ops/function/linalg_func.py +47 -78
- mindspore/ops/function/math_func.py +4351 -3813
- mindspore/ops/function/nn_func.py +1712 -637
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +18 -84
- mindspore/ops/function/random_func.py +452 -387
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +6 -6
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +26 -18
- mindspore/ops/functional.py +23 -7
- mindspore/ops/functional_overload.py +1548 -0
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +23 -15
- mindspore/ops/operations/_custom_ops_utils.py +235 -0
- mindspore/ops/operations/_embedding_cache_ops.py +4 -4
- mindspore/ops/operations/_grad_ops.py +2 -43
- mindspore/ops/operations/_infer_ops.py +2 -1
- mindspore/ops/operations/_inner_ops.py +43 -84
- mindspore/ops/operations/_ms_kernel.py +4 -10
- mindspore/ops/operations/_rl_inner_ops.py +1 -1
- mindspore/ops/operations/_scalar_ops.py +3 -2
- mindspore/ops/operations/_sequence_ops.py +1 -1
- mindspore/ops/operations/_tensor_array.py +1 -1
- mindspore/ops/operations/array_ops.py +81 -324
- mindspore/ops/operations/comm_ops.py +154 -108
- mindspore/ops/operations/custom_ops.py +298 -87
- mindspore/ops/operations/debug_ops.py +157 -59
- mindspore/ops/operations/inner_ops.py +7 -5
- mindspore/ops/operations/linalg_ops.py +1 -57
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +928 -180
- mindspore/ops/operations/math_ops.py +32 -234
- mindspore/ops/operations/nn_ops.py +212 -531
- mindspore/ops/operations/other_ops.py +62 -9
- mindspore/ops/operations/random_ops.py +13 -7
- mindspore/ops/operations/reshard_ops.py +1 -1
- mindspore/ops/operations/sparse_ops.py +2 -2
- mindspore/ops/primitive.py +66 -53
- mindspore/ops/tensor_method.py +1895 -0
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
- mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
- mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
- mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
- mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
- mindspore/ops_generate/api/functions_cc_generator.py +237 -0
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/api/op_api_proto.py +235 -0
- mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/base_generator.py +11 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/common/gen_utils.py +348 -0
- mindspore/ops_generate/common/op_proto.py +473 -0
- mindspore/ops_generate/common/template.py +523 -0
- mindspore/ops_generate/gen_ops.py +22 -1069
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
- mindspore/ops_generate/op_def/ops_def_cc_generator.py +296 -0
- mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
- mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
- mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
- mindspore/ops_generate/op_def_py/__init__.py +0 -0
- mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
- mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
- mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
- mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
- mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
- mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
- mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
- mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
- mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
- mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
- mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
- mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
- mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
- mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
- mindspore/ops_generate/resources/__init__.py +0 -0
- mindspore/ops_generate/resources/resource_list.py +30 -0
- mindspore/ops_generate/resources/resource_loader.py +36 -0
- mindspore/ops_generate/resources/resource_manager.py +64 -0
- mindspore/ops_generate/resources/yaml_loader.py +88 -0
- mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
- mindspore/parallel/__init__.py +7 -3
- mindspore/parallel/_auto_parallel_context.py +159 -40
- mindspore/parallel/_cell_wrapper.py +132 -15
- mindspore/parallel/_parallel_serialization.py +107 -5
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +199 -23
- mindspore/parallel/algo_parameter_config.py +4 -4
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +700 -35
- mindspore/parallel/cluster/process_entity/_api.py +276 -50
- mindspore/parallel/cluster/process_entity/_utils.py +41 -6
- mindspore/parallel/cluster/run.py +21 -4
- mindspore/parallel/function/__init__.py +24 -0
- mindspore/parallel/function/reshard_func.py +258 -0
- mindspore/parallel/nn/__init__.py +25 -0
- mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
- mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
- mindspore/parallel/parameter_broadcast.py +25 -14
- mindspore/parallel/shard.py +137 -59
- mindspore/parallel/transform_safetensors.py +364 -305
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +22 -5
- mindspore/profiler/analysis/__init__.py +0 -0
- mindspore/profiler/analysis/parser/__init__.py +0 -0
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
- mindspore/profiler/analysis/parser/base_parser.py +158 -0
- mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
- mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
- mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +109 -0
- mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
- mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
- mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
- mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
- mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
- mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
- mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
- mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
- mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
- mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
- mindspore/profiler/analysis/task_manager.py +131 -0
- mindspore/profiler/analysis/time_converter.py +84 -0
- mindspore/profiler/analysis/viewer/__init__.py +0 -0
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
- mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
- mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
- mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
- mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
- mindspore/profiler/analysis/work_flow.py +73 -0
- mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
- mindspore/profiler/common/command_executor.py +90 -0
- mindspore/profiler/common/constant.py +186 -3
- mindspore/profiler/common/file_manager.py +208 -0
- mindspore/profiler/common/log.py +130 -0
- mindspore/profiler/common/msprof_cmd_tool.py +221 -0
- mindspore/profiler/common/path_manager.py +395 -0
- mindspore/profiler/common/process_bar.py +168 -0
- mindspore/profiler/common/process_pool.py +9 -3
- mindspore/profiler/common/profiler_context.py +500 -0
- mindspore/profiler/common/profiler_info.py +304 -0
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_output_path.py +284 -0
- mindspore/profiler/common/profiler_parameters.py +251 -0
- mindspore/profiler/common/profiler_path_manager.py +179 -0
- mindspore/profiler/common/record_function.py +76 -0
- mindspore/profiler/common/tlv_decoder.py +76 -0
- mindspore/profiler/common/util.py +75 -2
- mindspore/profiler/dynamic_profiler.py +341 -75
- mindspore/profiler/envprofiler.py +163 -0
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +242 -0
- mindspore/profiler/platform/__init__.py +21 -0
- mindspore/profiler/platform/base_profiler.py +40 -0
- mindspore/profiler/platform/cpu_profiler.py +124 -0
- mindspore/profiler/platform/gpu_profiler.py +74 -0
- mindspore/profiler/platform/npu_profiler.py +335 -0
- mindspore/profiler/profiler.py +1073 -90
- mindspore/profiler/profiler_action_controller.py +187 -0
- mindspore/profiler/profiler_interface.py +118 -0
- mindspore/profiler/schedule.py +243 -0
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +2 -3
- mindspore/run_check/_check_version.py +27 -20
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +37 -0
- mindspore/runtime/device.py +27 -0
- mindspore/runtime/event.py +209 -0
- mindspore/runtime/executor.py +177 -0
- mindspore/runtime/memory.py +416 -0
- mindspore/runtime/stream.py +460 -0
- mindspore/runtime/thread_bind_core.py +401 -0
- mindspore/safeguard/rewrite_obfuscation.py +12 -9
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/__init__.py +8 -8
- mindspore/train/_utils.py +96 -27
- mindspore/train/amp.py +9 -5
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +53 -55
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_early_stop.py +1 -1
- mindspore/train/callback/_flops_collector.py +103 -68
- mindspore/train/callback/_history.py +8 -5
- mindspore/train/callback/_lambda_callback.py +2 -2
- mindspore/train/callback/_landscape.py +0 -3
- mindspore/train/callback/_loss_monitor.py +2 -1
- mindspore/train/callback/_on_request_exit.py +6 -5
- mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
- mindspore/train/callback/_summary_collector.py +52 -19
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +228 -108
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +15 -16
- mindspore/train/loss_scale_manager.py +8 -7
- mindspore/train/metrics/accuracy.py +3 -3
- mindspore/train/metrics/confusion_matrix.py +9 -9
- mindspore/train/metrics/error.py +3 -3
- mindspore/train/metrics/hausdorff_distance.py +4 -4
- mindspore/train/metrics/mean_surface_distance.py +3 -3
- mindspore/train/metrics/metric.py +0 -12
- mindspore/train/metrics/occlusion_sensitivity.py +4 -2
- mindspore/train/metrics/precision.py +11 -10
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +174 -46
- mindspore/train/model.py +269 -136
- mindspore/train/serialization.py +622 -978
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +2 -3
- mindspore/train/train_thor/model_thor.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +6 -3
- mindspore/utils/dryrun.py +140 -0
- mindspore/utils/hooks.py +81 -0
- mindspore/utils/runtime_execution_order_check.py +552 -0
- mindspore/utils/utils.py +138 -4
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/METADATA +3 -3
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/RECORD +587 -418
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/entry_points.txt +1 -1
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/common/_tensor_overload.py +0 -139
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_aclnn_implement.py +0 -263
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/gen_pyboost_func.py +0 -1052
- mindspore/ops_generate/gen_utils.py +0 -209
- mindspore/ops_generate/op_proto.py +0 -145
- mindspore/ops_generate/template.py +0 -261
- mindspore/profiler/envprofiling.py +0 -254
- mindspore/profiler/profiling.py +0 -1926
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/WHEEL +0 -0
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/top_level.txt +0 -0
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import os
|
|
17
17
|
import sys
|
|
18
18
|
import time
|
|
19
|
+
import stat
|
|
19
20
|
import json
|
|
20
21
|
import atexit
|
|
21
22
|
import struct
|
|
@@ -24,11 +25,18 @@ import multiprocessing
|
|
|
24
25
|
|
|
25
26
|
from mindspore import log as logger
|
|
26
27
|
from mindspore.train import Callback
|
|
27
|
-
from mindspore.profiler import Profiler
|
|
28
|
-
from mindspore.profiler import ProfilerLevel
|
|
28
|
+
from mindspore.profiler import Profiler, tensorboard_trace_handler, schedule
|
|
29
29
|
from mindspore.communication import get_rank
|
|
30
30
|
from mindspore.profiler.parser.ascend_analysis.file_manager import FileManager
|
|
31
31
|
from mindspore.profiler.parser.ascend_analysis.path_manager import PathManager
|
|
32
|
+
from mindspore.profiler.profiler_interface import ProfilerInterface
|
|
33
|
+
from mindspore.profiler.common.constant import (
|
|
34
|
+
ProfilerActivity,
|
|
35
|
+
ProfilerLevel,
|
|
36
|
+
AicoreMetrics,
|
|
37
|
+
ExportType,
|
|
38
|
+
)
|
|
39
|
+
from mindspore.profiler.common.util import no_exception_func
|
|
32
40
|
|
|
33
41
|
|
|
34
42
|
def get_real_rank():
|
|
@@ -48,17 +56,19 @@ class DynamicProfilerArgs:
|
|
|
48
56
|
"""
|
|
49
57
|
Data class for dynamic profile config.
|
|
50
58
|
"""
|
|
51
|
-
FMT = "
|
|
59
|
+
FMT = "i" * 7 + "?" * 6
|
|
52
60
|
SIZE = struct.calcsize(FMT)
|
|
53
61
|
|
|
54
62
|
def __init__(self,
|
|
55
63
|
start_step: int = -1,
|
|
56
64
|
stop_step: int = -1,
|
|
57
|
-
|
|
58
|
-
profiler_level: int =
|
|
59
|
-
profile_framework: int = -1,
|
|
65
|
+
aic_metrics: int = -1,
|
|
66
|
+
profiler_level: int = 0,
|
|
60
67
|
analyse_mode: int = -1,
|
|
61
|
-
|
|
68
|
+
activities: int = 0,
|
|
69
|
+
export_type: int = 0,
|
|
70
|
+
profile_memory: bool = False,
|
|
71
|
+
mstx: bool = False,
|
|
62
72
|
parallel_strategy: bool = False,
|
|
63
73
|
with_stack: bool = False,
|
|
64
74
|
data_simplification: bool = True,
|
|
@@ -66,11 +76,13 @@ class DynamicProfilerArgs:
|
|
|
66
76
|
**kwargs):
|
|
67
77
|
self._start_step = start_step
|
|
68
78
|
self._stop_step = stop_step
|
|
69
|
-
self.
|
|
79
|
+
self._aic_metrics = aic_metrics
|
|
70
80
|
self._profiler_level = profiler_level
|
|
71
|
-
self._profile_framework = profile_framework
|
|
72
81
|
self._analyse_mode = analyse_mode
|
|
73
|
-
self.
|
|
82
|
+
self._activities = activities
|
|
83
|
+
self._export_type = export_type
|
|
84
|
+
self._profile_memory = profile_memory
|
|
85
|
+
self._mstx = mstx
|
|
74
86
|
self._parallel_strategy = parallel_strategy
|
|
75
87
|
self._with_stack = with_stack
|
|
76
88
|
self._data_simplification = data_simplification
|
|
@@ -78,50 +90,38 @@ class DynamicProfilerArgs:
|
|
|
78
90
|
self._check_params_type()
|
|
79
91
|
|
|
80
92
|
def _check_params_type(self):
|
|
81
|
-
"""
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if not isinstance(self._with_stack, bool):
|
|
115
|
-
logger.warning("with_stack should be bool type, with_stack will be reset to False.")
|
|
116
|
-
self._with_stack = False
|
|
117
|
-
|
|
118
|
-
if not isinstance(self._data_simplification, bool):
|
|
119
|
-
logger.warning("data_simplification should be bool type, data_simplification will be reset to True.")
|
|
120
|
-
self._data_simplification = True
|
|
121
|
-
|
|
122
|
-
if not isinstance(self._is_valid, bool):
|
|
123
|
-
logger.warning("is_valid should be bool type, is_valid will be reset to False.")
|
|
124
|
-
self._is_valid = False
|
|
93
|
+
"""Check and enforce parameter types with lower complexity."""
|
|
94
|
+
# Define a parameter check rule. {Parameter name: (expected type, default value)}
|
|
95
|
+
param_rules = {
|
|
96
|
+
'_start_step': (int, -1),
|
|
97
|
+
'_stop_step': (int, -1),
|
|
98
|
+
'_aic_metrics': (int, -1),
|
|
99
|
+
'_profiler_level': (int, 0),
|
|
100
|
+
'_analyse_mode': (int, -1),
|
|
101
|
+
'_activities': (int, 0),
|
|
102
|
+
'_export_type': (int, 0),
|
|
103
|
+
'_profile_memory': (bool, False),
|
|
104
|
+
'_mstx': (bool, False),
|
|
105
|
+
'_parallel_strategy': (bool, False),
|
|
106
|
+
'_with_stack': (bool, False),
|
|
107
|
+
'_data_simplification': (bool, True),
|
|
108
|
+
'_is_valid': (bool, False)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
def _is_valid_type(value, expected_type):
|
|
112
|
+
"""Helper method for type checking."""
|
|
113
|
+
if expected_type is int and isinstance(value, bool):
|
|
114
|
+
return False
|
|
115
|
+
return isinstance(value, expected_type)
|
|
116
|
+
|
|
117
|
+
for param, (expected_type, default) in param_rules.items():
|
|
118
|
+
value = getattr(self, param)
|
|
119
|
+
if not _is_valid_type(value, expected_type):
|
|
120
|
+
logger.warning(
|
|
121
|
+
f"{param[1:]} should be {expected_type.__name__} type, "
|
|
122
|
+
f"will be reset to {default}."
|
|
123
|
+
)
|
|
124
|
+
setattr(self, param, default)
|
|
125
125
|
|
|
126
126
|
@property
|
|
127
127
|
def start_step(self):
|
|
@@ -162,7 +162,9 @@ class DynamicProfilerArgs:
|
|
|
162
162
|
def args(self):
|
|
163
163
|
""" get all args in DynamicProfilerArgs."""
|
|
164
164
|
self._profiler_level = self._convert_profiler_level(self._profiler_level)
|
|
165
|
-
self.
|
|
165
|
+
self._activities = self._convert_activities(self._activities)
|
|
166
|
+
self._aic_metrics = self._convert_aic_metrics(self._aic_metrics)
|
|
167
|
+
self._export_type = self._convert_export_type(self._export_type)
|
|
166
168
|
not_supported_args = ['_start_step', '_stop_step', '_analyse_mode', '_is_valid']
|
|
167
169
|
res = {}
|
|
168
170
|
for key, value in self.__dict__.items():
|
|
@@ -193,22 +195,57 @@ class DynamicProfilerArgs:
|
|
|
193
195
|
|
|
194
196
|
def _convert_profiler_level(self, profiler_level: int) -> ProfilerLevel:
|
|
195
197
|
""" convert profiler_level to real args in Profiler."""
|
|
198
|
+
if profiler_level == -1:
|
|
199
|
+
return ProfilerLevel.LevelNone
|
|
196
200
|
if profiler_level == 0:
|
|
197
201
|
return ProfilerLevel.Level0
|
|
198
202
|
if profiler_level == 1:
|
|
199
203
|
return ProfilerLevel.Level1
|
|
200
204
|
if profiler_level == 2:
|
|
201
205
|
return ProfilerLevel.Level2
|
|
202
|
-
return
|
|
203
|
-
|
|
204
|
-
def
|
|
205
|
-
""" convert
|
|
206
|
-
if
|
|
207
|
-
return
|
|
208
|
-
if
|
|
209
|
-
return
|
|
210
|
-
|
|
211
|
-
|
|
206
|
+
return ProfilerLevel.Level0
|
|
207
|
+
|
|
208
|
+
def _convert_activities(self, activities: int) -> ProfilerLevel:
|
|
209
|
+
""" convert activities to real args in Profiler."""
|
|
210
|
+
if activities == 0:
|
|
211
|
+
return [ProfilerActivity.CPU, ProfilerActivity.NPU]
|
|
212
|
+
if activities == 1:
|
|
213
|
+
return [ProfilerActivity.CPU]
|
|
214
|
+
if activities == 2:
|
|
215
|
+
return [ProfilerActivity.NPU]
|
|
216
|
+
return [ProfilerActivity.CPU, ProfilerActivity.NPU]
|
|
217
|
+
|
|
218
|
+
def _convert_aic_metrics(self, aic_metrics: int) -> AicoreMetrics:
|
|
219
|
+
""" convert aic_metrics to real args in Profiler."""
|
|
220
|
+
if aic_metrics == -1:
|
|
221
|
+
return AicoreMetrics.AiCoreNone
|
|
222
|
+
if aic_metrics == 0:
|
|
223
|
+
return AicoreMetrics.PipeUtilization
|
|
224
|
+
if aic_metrics == 1:
|
|
225
|
+
return AicoreMetrics.ArithmeticUtilization
|
|
226
|
+
if aic_metrics == 2:
|
|
227
|
+
return AicoreMetrics.Memory
|
|
228
|
+
if aic_metrics == 3:
|
|
229
|
+
return AicoreMetrics.MemoryL0
|
|
230
|
+
if aic_metrics == 4:
|
|
231
|
+
return AicoreMetrics.MemoryUB
|
|
232
|
+
if aic_metrics == 5:
|
|
233
|
+
return AicoreMetrics.ResourceConflictRatio
|
|
234
|
+
if aic_metrics == 6:
|
|
235
|
+
return AicoreMetrics.L2Cache
|
|
236
|
+
if aic_metrics == 7:
|
|
237
|
+
return AicoreMetrics.MemoryAccess
|
|
238
|
+
return AicoreMetrics.AiCoreNone
|
|
239
|
+
|
|
240
|
+
def _convert_export_type(self, export_type: int) -> ExportType:
|
|
241
|
+
""" convert export_type to real args in Profiler."""
|
|
242
|
+
if export_type == 0:
|
|
243
|
+
return [ExportType.Text]
|
|
244
|
+
if export_type == 1:
|
|
245
|
+
return [ExportType.Db]
|
|
246
|
+
if export_type == 2:
|
|
247
|
+
return [ExportType.Text, ExportType.Db]
|
|
248
|
+
return [ExportType.Text]
|
|
212
249
|
|
|
213
250
|
class DynamicProfilerMonitorBase(Callback):
|
|
214
251
|
"""
|
|
@@ -240,12 +277,17 @@ class DynamicProfilerMonitorBase(Callback):
|
|
|
240
277
|
self._last_stop_step = None
|
|
241
278
|
self._is_create_process = None
|
|
242
279
|
self._is_started = False
|
|
280
|
+
self._start_step = -1
|
|
281
|
+
self._stop_step = -1
|
|
282
|
+
self._step_num = 0
|
|
243
283
|
|
|
284
|
+
self._check_shm_for_killed()
|
|
244
285
|
self._init_cfg_json()
|
|
245
286
|
self._create_shm()
|
|
246
287
|
self._create_process()
|
|
247
288
|
atexit.register(self._clean_resource)
|
|
248
289
|
|
|
290
|
+
@no_exception_func()
|
|
249
291
|
def step_begin(self, run_context):
|
|
250
292
|
"""
|
|
251
293
|
Start profile at the begin of step.
|
|
@@ -277,7 +319,8 @@ class DynamicProfilerMonitorBase(Callback):
|
|
|
277
319
|
if self._profiler is None:
|
|
278
320
|
prof_path = os.path.join(self._output_path, f"rank{self._rank_id}_start{start_step}_stop{stop_step}")
|
|
279
321
|
PathManager.check_input_directory_path(prof_path)
|
|
280
|
-
self._profiler = Profiler(
|
|
322
|
+
self._profiler = Profiler(on_trace_ready=tensorboard_trace_handler(dir_name=prof_path),
|
|
323
|
+
start_profile=False, **prof_args.args)
|
|
281
324
|
print_msg(f"Rank {self._rank_id} create output path {prof_path}")
|
|
282
325
|
|
|
283
326
|
self._profiler.start()
|
|
@@ -287,6 +330,7 @@ class DynamicProfilerMonitorBase(Callback):
|
|
|
287
330
|
print_msg(f"Rank {self._rank_id} Dynamic profiler start at step {start_step}, "
|
|
288
331
|
f"will stop at step {stop_step}")
|
|
289
332
|
|
|
333
|
+
@no_exception_func()
|
|
290
334
|
def step_end(self, run_context):
|
|
291
335
|
"""
|
|
292
336
|
Stop profile at the end of step.
|
|
@@ -312,11 +356,140 @@ class DynamicProfilerMonitorBase(Callback):
|
|
|
312
356
|
if prof_args.analyse_mode:
|
|
313
357
|
self._profiler.analyse(mode=prof_args.analyse_mode)
|
|
314
358
|
else:
|
|
315
|
-
|
|
359
|
+
ProfilerInterface.finalize()
|
|
360
|
+
ProfilerInterface.clear()
|
|
316
361
|
self._profiler = None
|
|
317
362
|
self._is_started = False
|
|
318
363
|
print_msg(f"Rank {self._rank_id} Dynamic profiler stop at step {step_num}")
|
|
319
364
|
|
|
365
|
+
@no_exception_func()
|
|
366
|
+
def step(self):
|
|
367
|
+
"""
|
|
368
|
+
Used for Ascend, distinguish step collection and parsing performance data by dynamic profiler.
|
|
369
|
+
|
|
370
|
+
Raises:
|
|
371
|
+
RuntimeError: If the 'start_step' parameter setting is greater than the 'stop_step' parameter setting.
|
|
372
|
+
|
|
373
|
+
Examples:
|
|
374
|
+
>>> import json
|
|
375
|
+
>>> import os
|
|
376
|
+
>>> import numpy as np
|
|
377
|
+
>>>
|
|
378
|
+
>>> import mindspore
|
|
379
|
+
>>> import mindspore.dataset as ds
|
|
380
|
+
>>> from mindspore import context, nn
|
|
381
|
+
>>> from mindspore.profiler import DynamicProfilerMonitor
|
|
382
|
+
>>>
|
|
383
|
+
>>>
|
|
384
|
+
>>> class Net(nn.Cell):
|
|
385
|
+
... def __init__(self):
|
|
386
|
+
... super(Net, self).__init__()
|
|
387
|
+
... self.fc = nn.Dense(2, 2)
|
|
388
|
+
...
|
|
389
|
+
... def construct(self, x):
|
|
390
|
+
... return self.fc(x)
|
|
391
|
+
>>>
|
|
392
|
+
>>> def generator_net():
|
|
393
|
+
... for _ in range(2):
|
|
394
|
+
... yield np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32)
|
|
395
|
+
>>>
|
|
396
|
+
>>> def train(test_net):
|
|
397
|
+
... optimizer = nn.Momentum(test_net.trainable_params(), 1, 0.9)
|
|
398
|
+
... loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
|
|
399
|
+
... data = ds.GeneratorDataset(generator_net(), ["data", "label"])
|
|
400
|
+
... model = mindspore.train.Model(test_net, loss, optimizer)
|
|
401
|
+
... model.train(1, data)
|
|
402
|
+
>>>
|
|
403
|
+
>>> def change_cfg_json(json_path):
|
|
404
|
+
... with open(json_path, 'r', encoding='utf-8') as file:
|
|
405
|
+
... data = json.load(file)
|
|
406
|
+
...
|
|
407
|
+
... data['start_step'] = 6
|
|
408
|
+
... data['stop_step'] = 7
|
|
409
|
+
...
|
|
410
|
+
... with open(json_path, 'w', encoding='utf-8') as file:
|
|
411
|
+
... json.dump(data, file, ensure_ascii=False, indent=4)
|
|
412
|
+
>>>
|
|
413
|
+
>>> if __name__ == '__main__':
|
|
414
|
+
... # set json configuration file
|
|
415
|
+
... context.set_context(mode=mindspore.PYNATIVE_MODE)
|
|
416
|
+
... mindspore.set_device("Ascend")
|
|
417
|
+
... data_cfg = {
|
|
418
|
+
... "start_step": 2,
|
|
419
|
+
... "stop_step": 5,
|
|
420
|
+
... "aic_metrics": -1,
|
|
421
|
+
... "profiler_level": 0,
|
|
422
|
+
... "activities": 0,
|
|
423
|
+
... "export_type": 0,
|
|
424
|
+
... "profile_memory": False,
|
|
425
|
+
... "mstx": False,
|
|
426
|
+
... "analyse_mode": 0,
|
|
427
|
+
... "parallel_strategy": False,
|
|
428
|
+
... "with_stack": False,
|
|
429
|
+
... "data_simplification": True,
|
|
430
|
+
... }
|
|
431
|
+
... output_path = "./cfg_path"
|
|
432
|
+
... cfg_path = os.path.join(output_path, "profiler_config.json")
|
|
433
|
+
... os.makedirs(output_path, exist_ok=True)
|
|
434
|
+
... # set cfg file
|
|
435
|
+
... with open(cfg_path, 'w') as f:
|
|
436
|
+
... json.dump(data_cfg, f, indent=4)
|
|
437
|
+
... # cfg_path contains the json configuration file path, and output_path is the output path
|
|
438
|
+
... dp = DynamicProfilerMonitor(cfg_path=output_path, output_path=output_path)
|
|
439
|
+
... STEP_NUM = 15
|
|
440
|
+
... # Define a network of training models
|
|
441
|
+
... net = Net()
|
|
442
|
+
... for i in range(STEP_NUM):
|
|
443
|
+
... print(f"step {i}")
|
|
444
|
+
... train(net)
|
|
445
|
+
... # Modify the configuration file after step 7. For example, change start_step to 8 and stop_step to 10
|
|
446
|
+
... if i == 5:
|
|
447
|
+
... # Modify parameters in the JSON file
|
|
448
|
+
... change_cfg_json(os.path.join(output_path, "profiler_config.json"))
|
|
449
|
+
... # Call step collection
|
|
450
|
+
... dp.step()
|
|
451
|
+
"""
|
|
452
|
+
|
|
453
|
+
self._step_num += 1
|
|
454
|
+
prof_args = self._get_prof_args()
|
|
455
|
+
|
|
456
|
+
if not prof_args.is_valid:
|
|
457
|
+
logger.error("Dynamic profile json is not valid, please check the json file.")
|
|
458
|
+
return
|
|
459
|
+
|
|
460
|
+
if prof_args.start_step == -1 or prof_args.stop_step == -1:
|
|
461
|
+
return
|
|
462
|
+
|
|
463
|
+
# Skips the number of steps less than start_step
|
|
464
|
+
if self._step_num < prof_args.start_step:
|
|
465
|
+
return
|
|
466
|
+
|
|
467
|
+
if self._start_step != prof_args.start_step or self._stop_step != prof_args.stop_step:
|
|
468
|
+
# Update new start_step and stop_step
|
|
469
|
+
self._start_step = prof_args.start_step
|
|
470
|
+
self._stop_step = prof_args.stop_step
|
|
471
|
+
if self._start_step >= 0 and 0 <= self._start_step <= self._stop_step:
|
|
472
|
+
prof_path = os.path.join(self._output_path,
|
|
473
|
+
f"rank{self._rank_id}_start{self._start_step}_stop{self._stop_step}")
|
|
474
|
+
print_msg(f"Rank {self._rank_id} create output path {prof_path}")
|
|
475
|
+
print_msg(f"Rank {self._rank_id} Dynamic profile start at step {self._start_step}, "
|
|
476
|
+
f"will stop at step {self._stop_step}")
|
|
477
|
+
self._profiler = Profiler(schedule=schedule(wait=0, warmup=0,
|
|
478
|
+
active=self._stop_step - self._start_step + 1,
|
|
479
|
+
repeat=1,
|
|
480
|
+
skip_first=1),
|
|
481
|
+
on_trace_ready=tensorboard_trace_handler(dir_name=prof_path),
|
|
482
|
+
**prof_args.args)
|
|
483
|
+
else:
|
|
484
|
+
self._profiler = None
|
|
485
|
+
logger.error("Rank %d Dynamic profile start at step %d and stop at step %d in config_json must be "
|
|
486
|
+
"greater than or equal to 0, and stop step should not be less than start step",
|
|
487
|
+
self._rank_id, self._start_step, self._stop_step)
|
|
488
|
+
|
|
489
|
+
if self._profiler:
|
|
490
|
+
self._profiler.step()
|
|
491
|
+
|
|
492
|
+
@no_exception_func()
|
|
320
493
|
def on_train_end(self, run_context):
|
|
321
494
|
"""
|
|
322
495
|
Callback on trian end
|
|
@@ -357,6 +530,7 @@ class DynamicProfilerMonitorBase(Callback):
|
|
|
357
530
|
|
|
358
531
|
return start_step, stop_step
|
|
359
532
|
|
|
533
|
+
@no_exception_func()
|
|
360
534
|
def _init_cfg_json(self):
|
|
361
535
|
"""Init config json file"""
|
|
362
536
|
if self._rank_id == 0:
|
|
@@ -372,6 +546,7 @@ class DynamicProfilerMonitorBase(Callback):
|
|
|
372
546
|
"""Create a json monitor process based on whether the SharedMemory is successfully created"""
|
|
373
547
|
logger.error("Dynamic profiler _create_shm is not implemented")
|
|
374
548
|
|
|
549
|
+
@no_exception_func()
|
|
375
550
|
def _create_process(self):
|
|
376
551
|
"""Create json monitor process, one process will be created at one worker"""
|
|
377
552
|
if self._is_create_process:
|
|
@@ -385,18 +560,57 @@ class DynamicProfilerMonitorBase(Callback):
|
|
|
385
560
|
self._process = None
|
|
386
561
|
logger.info("Rank %d no need to create process.", self._rank_id)
|
|
387
562
|
|
|
563
|
+
@no_exception_func()
|
|
564
|
+
def _check_shm_for_killed(self):
|
|
565
|
+
"""
|
|
566
|
+
User killed process shm can not clean normally, so check this when create shm.
|
|
567
|
+
"""
|
|
568
|
+
if sys.version_info >= (3, 8):
|
|
569
|
+
shm_path = os.path.join("/dev/shm", self._shm_name)
|
|
570
|
+
else:
|
|
571
|
+
shm_path = self._shm_path
|
|
572
|
+
|
|
573
|
+
if not os.path.exists(shm_path):
|
|
574
|
+
return
|
|
575
|
+
|
|
576
|
+
MAX_TIME_DIFF = 30 # seconds
|
|
577
|
+
time_shm = os.stat(shm_path).st_ctime
|
|
578
|
+
cur_proc_time = self._get_pid_st_ctime(os.getpid())
|
|
579
|
+
|
|
580
|
+
if cur_proc_time and abs(cur_proc_time - time_shm) > MAX_TIME_DIFF:
|
|
581
|
+
raise RuntimeError("There maybe exist share memory before this task, if you kill last task, "
|
|
582
|
+
"dynamic profiler will not valid, please remove %s, and retry." % shm_path)
|
|
583
|
+
|
|
584
|
+
def _get_pid_st_ctime(self, pid):
|
|
585
|
+
"""Get pid st_ctime"""
|
|
586
|
+
try:
|
|
587
|
+
fd = os.open("/proc/" + str(pid), os.O_RDONLY, stat.S_IRUSR | stat.S_IRGRP)
|
|
588
|
+
stat_ino = os.fstat(fd)
|
|
589
|
+
os.close(fd)
|
|
590
|
+
create_time = stat_ino.st_ctime
|
|
591
|
+
return create_time
|
|
592
|
+
except FileNotFoundError:
|
|
593
|
+
logger.error("Process with PID %d does not exist.", pid)
|
|
594
|
+
except PermissionError:
|
|
595
|
+
logger.error("Permission denied when accessing PID %d.", pid)
|
|
596
|
+
except Exception as ex: # pylint: disable=W0703
|
|
597
|
+
logger.error("An error occurred while getting creation time for PID %d: %s", pid, str(ex))
|
|
598
|
+
|
|
388
599
|
|
|
389
600
|
if sys.version_info >= (3, 8):
|
|
601
|
+
@no_exception_func()
|
|
390
602
|
def write_bytes(shm, byte_data):
|
|
391
603
|
"""Write bytes to shared memory"""
|
|
392
604
|
shm.buf[:DynamicProfilerArgs.SIZE] = byte_data
|
|
393
605
|
else:
|
|
606
|
+
@no_exception_func()
|
|
394
607
|
def write_bytes(shm, byte_data):
|
|
395
608
|
"""Write bytes to shared memory"""
|
|
396
609
|
shm.seek(0)
|
|
397
610
|
shm.write(byte_data)
|
|
398
611
|
|
|
399
612
|
|
|
613
|
+
@no_exception_func()
|
|
400
614
|
def worker_func(loop_flag, poll_interval, shm, cfg_path):
|
|
401
615
|
""" Json monitor process worker function python version >= 3.8"""
|
|
402
616
|
last_file_t = None
|
|
@@ -430,15 +644,55 @@ if sys.version_info >= (3, 8):
|
|
|
430
644
|
from multiprocessing import shared_memory
|
|
431
645
|
from unittest.mock import patch
|
|
432
646
|
|
|
647
|
+
|
|
433
648
|
class DynamicProfilerMonitor(DynamicProfilerMonitorBase):
|
|
434
649
|
r"""
|
|
435
650
|
This class to enable the dynamic profile monitoring of MindSpore neural networks.
|
|
436
651
|
|
|
437
652
|
Args:
|
|
438
|
-
cfg_path (str): Dynamic profile json config file directory. The requirement is a shared path
|
|
439
|
-
that can be accessed by all nodes.
|
|
440
|
-
|
|
441
|
-
|
|
653
|
+
cfg_path (str): (Ascend only) Dynamic profile json config file directory. The requirement is a shared path
|
|
654
|
+
that can be accessed by all nodes. The parameters of the json configuration file are as follows:
|
|
655
|
+
|
|
656
|
+
- start_step (int, required) - Sets the step number at which the Profiler starts collecting data.
|
|
657
|
+
It is a relative value, with the first step of training being 1. The default value is -1, indicating
|
|
658
|
+
that data collection will not start during the entire training process.
|
|
659
|
+
- stop_step (int, required) - Sets the step number at which the Profiler stops collecting data. It is
|
|
660
|
+
a relative value, with the first step of training being 1. The stop_step must be greater than or
|
|
661
|
+
equal to start_step. The default value is -1, indicating that data collection will not start during
|
|
662
|
+
the entire training process.
|
|
663
|
+
- aic_metrics (int, optional) - The range of values corresponds to the Profiler. The default value -1
|
|
664
|
+
indicates that AI Core utilization is not collected, and 0 indicates PipeUtilization, 1 indicates
|
|
665
|
+
ArithmeticUtilization, 2 stands for Memory, 3 stands for MemoryL0, 4 stands for MemoryUB, 5 indicates
|
|
666
|
+
ResourceConflictRatio, 6 indicates L2Cache, 7 indicates MemoryAccess.
|
|
667
|
+
- profiler_level (int, optional) - Sets the level of performance data collection, where -1 represents
|
|
668
|
+
ProfilerLevel.LevelNone, 0 represents ProfilerLevel.Level0, 1 represents ProfilerLevel.Level1, and
|
|
669
|
+
2 represents ProfilerLevel.Level2. The default value is 0, indicating the ProfilerLevel.Level0
|
|
670
|
+
collection level.
|
|
671
|
+
- activities (int, optional) - Sets the devices for performance data collection, where 0 represents
|
|
672
|
+
CPU+NPU, 1 represents CPU, and 2 represents NPU. The default value is 0, indicating the collection
|
|
673
|
+
of CPU+NPU performance data.
|
|
674
|
+
- export_type (int, optional) - Sets the data type to export, where 0 represents text, 1 represents db,
|
|
675
|
+
and 2 represents text and db. The default value is 0, indicating only export text type data.
|
|
676
|
+
- profile_memory (bool, optional) - Set whether to collect memory performance data, true indicates that
|
|
677
|
+
memory performance data is collected, false indicates that memory performance data is not collected.
|
|
678
|
+
The default value is false, indicating that memory performance data is not collected.
|
|
679
|
+
- mstx (bool, optional) - Set whether to enable mstx, true indicates that mstx is enabled, false
|
|
680
|
+
indicates that mstx is disabled. The default value is false, indicating that mstx is not enabled.
|
|
681
|
+
- analyse_mode (int, optional) - Sets the mode for online analysis, corresponding to the analyse_mode
|
|
682
|
+
parameter of the mindspore.Profiler.analyse interface, where 0 represents "sync" and 1 represents
|
|
683
|
+
"async". The default value is -1, indicating that online analysis is not used.
|
|
684
|
+
- parallel_strategy (bool, optional) - Sets whether to collect parallel strategy performance data,
|
|
685
|
+
where true means to collect and false means not to collect. The default value is false, indicating
|
|
686
|
+
that parallel strategy performance data is not collected.
|
|
687
|
+
- with_stack (bool, optional) - Sets whether to collect call stack information, where true means to
|
|
688
|
+
collect and false means not to collect. The default value is false, indicating that call stack
|
|
689
|
+
information is not collected.
|
|
690
|
+
- data_simplification (bool, optional) - Sets whether to enable data simplification, where true means
|
|
691
|
+
to enable and false means not to enable. The default value is true, indicating that data
|
|
692
|
+
simplification is enabled.
|
|
693
|
+
|
|
694
|
+
output_path (str, optional): (Ascend only) Output data path. Default: ``"./dyn_profile_data"`` .
|
|
695
|
+
poll_interval (int, optional): (Ascend only) The polling period of the monitoring process, in seconds.
|
|
442
696
|
Default value: ``2``.
|
|
443
697
|
|
|
444
698
|
Raises:
|
|
@@ -488,12 +742,14 @@ if sys.version_info >= (3, 8):
|
|
|
488
742
|
""" Get prof_args py38"""
|
|
489
743
|
return DynamicProfilerArgs.from_bytes(self._shm.buf[:DynamicProfilerArgs.SIZE])
|
|
490
744
|
|
|
745
|
+
@no_exception_func()
|
|
491
746
|
def _clean_resource(self):
|
|
492
747
|
"""Clean resource py38"""
|
|
493
748
|
# stop profiler when stop_step over all train step
|
|
494
749
|
if self._profiler:
|
|
495
750
|
self._profiler.stop()
|
|
496
|
-
|
|
751
|
+
ProfilerInterface.finalize()
|
|
752
|
+
ProfilerInterface.clear()
|
|
497
753
|
self._profiler = None
|
|
498
754
|
logger.warning("Rank %d Dynamic profiler stop at end of training", self._rank_id)
|
|
499
755
|
|
|
@@ -505,7 +761,7 @@ if sys.version_info >= (3, 8):
|
|
|
505
761
|
logger.info("Rank %s process stop", self._rank_id)
|
|
506
762
|
|
|
507
763
|
# clear shared memory
|
|
508
|
-
if self._shm:
|
|
764
|
+
if self._shm and self._is_create_process:
|
|
509
765
|
try:
|
|
510
766
|
self._shm.close()
|
|
511
767
|
self._shm.unlink()
|
|
@@ -514,6 +770,7 @@ if sys.version_info >= (3, 8):
|
|
|
514
770
|
logger.warning("Rank %s unlink shm failed, may be removed", self._rank_id)
|
|
515
771
|
self._shm = None
|
|
516
772
|
|
|
773
|
+
@no_exception_func()
|
|
517
774
|
def _create_shm(self):
|
|
518
775
|
"""Create a json monitor process based on whether the SharedMemory is successfully created py38"""
|
|
519
776
|
try_times = 10
|
|
@@ -542,13 +799,19 @@ if sys.version_info >= (3, 8):
|
|
|
542
799
|
logger.warning("Rank %d shared memory create failed, "
|
|
543
800
|
"retry times = %d.", self._rank_id, try_times)
|
|
544
801
|
time.sleep(random.uniform(0, 0.02)) # sleep 0 ~ 20 ms
|
|
802
|
+
except Exception as e: # pylint: disable=W0703
|
|
803
|
+
# shm open failed because of other process create shm not finished
|
|
804
|
+
try_times -= 1
|
|
805
|
+
logger.warning("Rank %d shared memory open failed, error: %s, retry times = %d",
|
|
806
|
+
self._rank_id, str(e), try_times)
|
|
807
|
+
time.sleep(random.uniform(0, 0.02)) # sleep 0 ~ 20 ms
|
|
545
808
|
|
|
546
809
|
if try_times <= 0:
|
|
547
810
|
raise RuntimeError(f"Rank {self._rank_id} failed to create shared memory.")
|
|
548
811
|
|
|
549
812
|
else:
|
|
550
813
|
import mmap
|
|
551
|
-
|
|
814
|
+
|
|
552
815
|
|
|
553
816
|
class DynamicProfilerMonitor(DynamicProfilerMonitorBase):
|
|
554
817
|
r"""
|
|
@@ -617,12 +880,14 @@ else:
|
|
|
617
880
|
self._shm.seek(0)
|
|
618
881
|
return DynamicProfilerArgs.from_bytes(self._shm.read(DynamicProfilerArgs.SIZE))
|
|
619
882
|
|
|
883
|
+
@no_exception_func()
|
|
620
884
|
def _clean_resource(self):
|
|
621
885
|
"""Clean resource py37"""
|
|
622
886
|
# stop profiler when stop_step over all train step
|
|
623
887
|
if self._profiler:
|
|
624
888
|
self._profiler.stop()
|
|
625
|
-
|
|
889
|
+
ProfilerInterface.finalize()
|
|
890
|
+
ProfilerInterface.clear()
|
|
626
891
|
self._profiler = None
|
|
627
892
|
logger.warning("Rank %d Dynamic profiler stop at end of training", self._rank_id)
|
|
628
893
|
|
|
@@ -647,6 +912,7 @@ else:
|
|
|
647
912
|
logger.warning("Rank %s unlink shm failed, may be removed", self._rank_id)
|
|
648
913
|
self._shm = None
|
|
649
914
|
|
|
915
|
+
@no_exception_func()
|
|
650
916
|
def _create_shm(self):
|
|
651
917
|
"""Create a json monitor process based on whether the SharedMemory is successfully created py37"""
|
|
652
918
|
|