mindspore 2.4.10__cp311-cp311-win_amd64.whl → 2.6.0__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +13 -6
- mindspore/_c_dataengine.cp311-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp311-win_amd64.pyd +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -0
- mindspore/_checkparam.py +3 -38
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +83 -0
- mindspore/_extends/parse/deprecated/__init__.py +0 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
- mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
- mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
- mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
- mindspore/_extends/parse/parser.py +47 -198
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +229 -99
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +11 -5
- mindspore/atlprov.dll +0 -0
- mindspore/avcodec-59.dll +0 -0
- mindspore/avdevice-59.dll +0 -0
- mindspore/avfilter-8.dll +0 -0
- mindspore/avformat-59.dll +0 -0
- mindspore/avutil-57.dll +0 -0
- mindspore/boost/__init__.py +2 -2
- mindspore/boost/base.py +3 -7
- mindspore/boost/boost_cell_wrapper.py +138 -43
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +6 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -2
- mindspore/common/_stub_tensor.py +30 -14
- mindspore/common/_tensor_cpp_method.py +17 -0
- mindspore/common/_tensor_docs.py +4760 -0
- mindspore/common/api.py +480 -372
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +39 -36
- mindspore/common/dump.py +9 -6
- mindspore/common/file_system.py +9 -1
- mindspore/common/generator.py +5 -0
- mindspore/common/hook_handle.py +6 -2
- mindspore/common/initializer.py +13 -10
- mindspore/common/jit_begin_end.py +94 -0
- mindspore/common/jit_config.py +6 -1
- mindspore/common/jit_context.py +76 -0
- mindspore/common/jit_trace.py +378 -0
- mindspore/common/lazy_inline.py +9 -3
- mindspore/common/mindir_util.py +10 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +135 -52
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +975 -1981
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +52 -2
- mindspore/communication/comm_func.py +240 -181
- mindspore/communication/management.py +95 -26
- mindspore/context.py +324 -573
- mindspore/dataset/__init__.py +65 -37
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/callback/ds_callback.py +2 -1
- mindspore/dataset/core/config.py +87 -6
- mindspore/dataset/engine/cache_admin.py +3 -3
- mindspore/dataset/engine/cache_client.py +6 -5
- mindspore/dataset/engine/datasets.py +292 -267
- mindspore/dataset/engine/datasets_audio.py +22 -8
- mindspore/dataset/engine/datasets_standard_format.py +46 -27
- mindspore/dataset/engine/datasets_text.py +78 -48
- mindspore/dataset/engine/datasets_user_defined.py +183 -117
- mindspore/dataset/engine/datasets_vision.py +120 -44
- mindspore/dataset/engine/iterators.py +283 -63
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/obs/util.py +8 -0
- mindspore/dataset/engine/queue.py +40 -0
- mindspore/dataset/engine/samplers.py +289 -43
- mindspore/dataset/engine/serializer_deserializer.py +3 -2
- mindspore/dataset/engine/validators.py +53 -11
- mindspore/dataset/text/__init__.py +7 -6
- mindspore/dataset/text/transforms.py +6 -5
- mindspore/dataset/text/utils.py +3 -3
- mindspore/dataset/transforms/__init__.py +0 -9
- mindspore/dataset/transforms/py_transforms_util.py +17 -0
- mindspore/dataset/transforms/transforms.py +31 -14
- mindspore/dataset/utils/browse_dataset.py +1 -1
- mindspore/dataset/vision/__init__.py +2 -9
- mindspore/dataset/vision/transforms.py +202 -158
- mindspore/dataset/vision/utils.py +7 -5
- mindspore/dataset/vision/validators.py +1 -2
- mindspore/device_context/__init__.py +21 -0
- mindspore/device_context/ascend/__init__.py +25 -0
- mindspore/device_context/ascend/device.py +72 -0
- mindspore/device_context/ascend/op_debug.py +153 -0
- mindspore/device_context/ascend/op_precision.py +193 -0
- mindspore/device_context/ascend/op_tuning.py +123 -0
- mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
- mindspore/device_context/cpu/device.py +62 -0
- mindspore/device_context/cpu/op_tuning.py +43 -0
- mindspore/device_context/gpu/__init__.py +21 -0
- mindspore/device_context/gpu/device.py +70 -0
- mindspore/device_context/gpu/op_precision.py +67 -0
- mindspore/device_context/gpu/op_tuning.py +175 -0
- mindspore/device_manager.py +170 -0
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/llm_boost/__init__.py +1 -0
- mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
- mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +209 -0
- mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
- mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
- mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
- mindspore/experimental/llm_boost/register.py +1 -0
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +6 -6
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +7 -0
- mindspore/experimental/optim/adamax.py +4 -4
- mindspore/experimental/optim/adamw.py +4 -0
- mindspore/experimental/optim/asgd.py +1 -1
- mindspore/experimental/optim/lr_scheduler.py +73 -46
- mindspore/experimental/optim/radam.py +34 -31
- mindspore/experimental/optim/rprop.py +1 -1
- mindspore/experimental/optim/sgd.py +1 -1
- mindspore/hal/contiguous_tensors_handle.py +6 -10
- mindspore/hal/device.py +55 -53
- mindspore/hal/event.py +52 -52
- mindspore/hal/memory.py +179 -120
- mindspore/hal/stream.py +150 -109
- mindspore/include/api/context.h +0 -1
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +50 -0
- mindspore/mindrecord/__init__.py +21 -8
- mindspore/mindrecord/config.py +17 -316
- mindspore/mindrecord/filereader.py +1 -9
- mindspore/mindrecord/filewriter.py +5 -15
- mindspore/mindrecord/mindpage.py +1 -9
- mindspore/mindspore_backend_common.dll +0 -0
- mindspore/mindspore_backend_manager.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_dump.dll +0 -0
- mindspore/mindspore_frontend.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_memory_pool.dll +0 -0
- mindspore/mindspore_ms_backend.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
- mindspore/mindspore_ops_kernel_common.dll +0 -0
- mindspore/mindspore_profiler.dll +0 -0
- mindspore/mindspore_pyboost.dll +0 -0
- mindspore/mindspore_pynative.dll +0 -0
- mindspore/mindspore_res_manager.dll +0 -0
- mindspore/mindspore_runtime_pipeline.dll +0 -0
- mindspore/mint/__init__.py +798 -761
- mindspore/mint/distributed/__init__.py +70 -4
- mindspore/mint/distributed/distributed.py +2679 -44
- mindspore/mint/linalg/__init__.py +8 -0
- mindspore/mint/nn/__init__.py +743 -22
- mindspore/mint/nn/functional.py +716 -23
- mindspore/mint/nn/layer/__init__.py +21 -4
- mindspore/mint/nn/layer/_functions.py +334 -0
- mindspore/mint/nn/layer/activation.py +276 -1
- mindspore/mint/nn/layer/basic.py +123 -0
- mindspore/mint/nn/layer/conv.py +933 -0
- mindspore/mint/nn/layer/normalization.py +223 -28
- mindspore/mint/nn/layer/padding.py +797 -0
- mindspore/mint/nn/layer/pooling.py +235 -0
- mindspore/mint/optim/__init__.py +3 -1
- mindspore/mint/optim/adam.py +223 -0
- mindspore/mint/optim/adamw.py +26 -19
- mindspore/mint/optim/sgd.py +171 -0
- mindspore/mint/special/__init__.py +2 -1
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/multiprocessing/__init__.py +5 -0
- mindspore/nn/__init__.py +4 -1
- mindspore/nn/cell.py +1373 -192
- mindspore/nn/dynamic_lr.py +2 -1
- mindspore/nn/layer/activation.py +29 -27
- mindspore/nn/layer/basic.py +51 -35
- mindspore/nn/layer/channel_shuffle.py +3 -3
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +53 -42
- mindspore/nn/layer/embedding.py +12 -11
- mindspore/nn/layer/normalization.py +56 -49
- mindspore/nn/layer/padding.py +4 -3
- mindspore/nn/layer/pooling.py +120 -42
- mindspore/nn/layer/rnn_cells.py +1 -1
- mindspore/nn/layer/rnns.py +2 -1
- mindspore/nn/layer/timedistributed.py +5 -5
- mindspore/nn/layer/transformer.py +59 -36
- mindspore/nn/learning_rate_schedule.py +8 -4
- mindspore/nn/loss/loss.py +58 -55
- mindspore/nn/optim/ada_grad.py +7 -5
- mindspore/nn/optim/adadelta.py +11 -9
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +19 -15
- mindspore/nn/optim/adamax.py +8 -7
- mindspore/nn/optim/adasum.py +5 -5
- mindspore/nn/optim/asgd.py +3 -1
- mindspore/nn/optim/ftrl.py +11 -9
- mindspore/nn/optim/lamb.py +1 -1
- mindspore/nn/optim/lars.py +1 -4
- mindspore/nn/optim/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +3 -3
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +11 -9
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- mindspore/nn/optim/thor.py +2 -1
- mindspore/nn/probability/bijector/bijector.py +17 -11
- mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
- mindspore/nn/probability/bijector/invert.py +2 -2
- mindspore/nn/probability/bijector/scalar_affine.py +3 -3
- mindspore/nn/probability/bijector/softplus.py +3 -2
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +1 -1
- mindspore/nn/probability/distribution/cauchy.py +4 -2
- mindspore/nn/probability/distribution/exponential.py +6 -7
- mindspore/nn/probability/distribution/gamma.py +2 -2
- mindspore/nn/probability/distribution/gumbel.py +2 -2
- mindspore/nn/probability/distribution/half_normal.py +5 -3
- mindspore/nn/probability/distribution/logistic.py +5 -3
- mindspore/nn/probability/distribution/poisson.py +1 -1
- mindspore/nn/probability/distribution/uniform.py +5 -3
- mindspore/nn/reinforcement/_tensors_queue.py +1 -1
- mindspore/nn/reinforcement/tensor_array.py +1 -1
- mindspore/nn/utils/init.py +13 -11
- mindspore/nn/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +181 -122
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +6 -7
- mindspore/numpy/array_creations.py +63 -65
- mindspore/numpy/array_ops.py +149 -144
- mindspore/numpy/logic_ops.py +41 -42
- mindspore/numpy/math_ops.py +361 -359
- mindspore/numpy/utils.py +17 -18
- mindspore/numpy/utils_const.py +5 -6
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +5 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
- mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
- mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
- mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
- mindspore/ops/_op_impl/cpu/__init__.py +1 -0
- mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
- mindspore/ops/_register_for_op.py +0 -11
- mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
- mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
- mindspore/ops/_vmap/vmap_array_ops.py +52 -25
- mindspore/ops/_vmap/vmap_base.py +0 -2
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
- mindspore/ops/_vmap/vmap_math_ops.py +15 -16
- mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +258 -46
- mindspore/ops/auto_generate/gen_extend_func.py +757 -185
- mindspore/ops/auto_generate/gen_ops_def.py +4197 -2243
- mindspore/ops/auto_generate/gen_ops_prim.py +16976 -6055
- mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +20 -25
- mindspore/ops/composite/math_ops.py +6 -16
- mindspore/ops/composite/multitype_ops/__init__.py +5 -2
- mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
- mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
- mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
- mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
- mindspore/ops/function/__init__.py +40 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +2089 -2403
- mindspore/ops/function/clip_func.py +80 -23
- mindspore/ops/function/debug_func.py +57 -57
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +2 -2
- mindspore/ops/function/linalg_func.py +47 -78
- mindspore/ops/function/math_func.py +4351 -3813
- mindspore/ops/function/nn_func.py +1712 -637
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +18 -84
- mindspore/ops/function/random_func.py +452 -387
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +6 -6
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +26 -18
- mindspore/ops/functional.py +23 -7
- mindspore/ops/functional_overload.py +1548 -0
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +23 -15
- mindspore/ops/operations/_custom_ops_utils.py +235 -0
- mindspore/ops/operations/_embedding_cache_ops.py +4 -4
- mindspore/ops/operations/_grad_ops.py +2 -43
- mindspore/ops/operations/_infer_ops.py +2 -1
- mindspore/ops/operations/_inner_ops.py +43 -84
- mindspore/ops/operations/_ms_kernel.py +4 -10
- mindspore/ops/operations/_rl_inner_ops.py +1 -1
- mindspore/ops/operations/_scalar_ops.py +3 -2
- mindspore/ops/operations/_sequence_ops.py +1 -1
- mindspore/ops/operations/_tensor_array.py +1 -1
- mindspore/ops/operations/array_ops.py +81 -324
- mindspore/ops/operations/comm_ops.py +154 -108
- mindspore/ops/operations/custom_ops.py +298 -87
- mindspore/ops/operations/debug_ops.py +157 -59
- mindspore/ops/operations/inner_ops.py +7 -5
- mindspore/ops/operations/linalg_ops.py +1 -57
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +928 -180
- mindspore/ops/operations/math_ops.py +32 -234
- mindspore/ops/operations/nn_ops.py +212 -531
- mindspore/ops/operations/other_ops.py +62 -9
- mindspore/ops/operations/random_ops.py +13 -7
- mindspore/ops/operations/reshard_ops.py +1 -1
- mindspore/ops/operations/sparse_ops.py +2 -2
- mindspore/ops/primitive.py +66 -53
- mindspore/ops/tensor_method.py +1895 -0
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
- mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
- mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
- mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
- mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
- mindspore/ops_generate/api/functions_cc_generator.py +237 -0
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/api/op_api_proto.py +235 -0
- mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/base_generator.py +11 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/common/gen_utils.py +348 -0
- mindspore/ops_generate/common/op_proto.py +473 -0
- mindspore/ops_generate/common/template.py +523 -0
- mindspore/ops_generate/gen_ops.py +22 -1069
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
- mindspore/ops_generate/op_def/ops_def_cc_generator.py +296 -0
- mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
- mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
- mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
- mindspore/ops_generate/op_def_py/__init__.py +0 -0
- mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
- mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
- mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
- mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
- mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
- mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
- mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
- mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
- mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
- mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
- mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
- mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
- mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
- mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
- mindspore/ops_generate/resources/__init__.py +0 -0
- mindspore/ops_generate/resources/resource_list.py +30 -0
- mindspore/ops_generate/resources/resource_loader.py +36 -0
- mindspore/ops_generate/resources/resource_manager.py +64 -0
- mindspore/ops_generate/resources/yaml_loader.py +88 -0
- mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
- mindspore/parallel/__init__.py +7 -3
- mindspore/parallel/_auto_parallel_context.py +159 -40
- mindspore/parallel/_cell_wrapper.py +132 -15
- mindspore/parallel/_parallel_serialization.py +107 -5
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +199 -23
- mindspore/parallel/algo_parameter_config.py +4 -4
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +700 -35
- mindspore/parallel/cluster/process_entity/_api.py +276 -50
- mindspore/parallel/cluster/process_entity/_utils.py +41 -6
- mindspore/parallel/cluster/run.py +21 -4
- mindspore/parallel/function/__init__.py +24 -0
- mindspore/parallel/function/reshard_func.py +258 -0
- mindspore/parallel/nn/__init__.py +25 -0
- mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
- mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
- mindspore/parallel/parameter_broadcast.py +25 -14
- mindspore/parallel/shard.py +137 -59
- mindspore/parallel/transform_safetensors.py +364 -305
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +22 -5
- mindspore/profiler/analysis/__init__.py +0 -0
- mindspore/profiler/analysis/parser/__init__.py +0 -0
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
- mindspore/profiler/analysis/parser/base_parser.py +158 -0
- mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
- mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
- mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +109 -0
- mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
- mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
- mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
- mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
- mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
- mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
- mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
- mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
- mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
- mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
- mindspore/profiler/analysis/task_manager.py +131 -0
- mindspore/profiler/analysis/time_converter.py +84 -0
- mindspore/profiler/analysis/viewer/__init__.py +0 -0
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
- mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
- mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
- mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
- mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
- mindspore/profiler/analysis/work_flow.py +73 -0
- mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
- mindspore/profiler/common/command_executor.py +90 -0
- mindspore/profiler/common/constant.py +186 -3
- mindspore/profiler/common/file_manager.py +208 -0
- mindspore/profiler/common/log.py +130 -0
- mindspore/profiler/common/msprof_cmd_tool.py +221 -0
- mindspore/profiler/common/path_manager.py +395 -0
- mindspore/profiler/common/process_bar.py +168 -0
- mindspore/profiler/common/process_pool.py +9 -3
- mindspore/profiler/common/profiler_context.py +500 -0
- mindspore/profiler/common/profiler_info.py +304 -0
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_output_path.py +284 -0
- mindspore/profiler/common/profiler_parameters.py +251 -0
- mindspore/profiler/common/profiler_path_manager.py +179 -0
- mindspore/profiler/common/record_function.py +76 -0
- mindspore/profiler/common/tlv_decoder.py +76 -0
- mindspore/profiler/common/util.py +75 -2
- mindspore/profiler/dynamic_profiler.py +341 -75
- mindspore/profiler/envprofiler.py +163 -0
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +242 -0
- mindspore/profiler/platform/__init__.py +21 -0
- mindspore/profiler/platform/base_profiler.py +40 -0
- mindspore/profiler/platform/cpu_profiler.py +124 -0
- mindspore/profiler/platform/gpu_profiler.py +74 -0
- mindspore/profiler/platform/npu_profiler.py +335 -0
- mindspore/profiler/profiler.py +1073 -90
- mindspore/profiler/profiler_action_controller.py +187 -0
- mindspore/profiler/profiler_interface.py +118 -0
- mindspore/profiler/schedule.py +243 -0
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +2 -3
- mindspore/run_check/_check_version.py +27 -20
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +37 -0
- mindspore/runtime/device.py +27 -0
- mindspore/runtime/event.py +209 -0
- mindspore/runtime/executor.py +177 -0
- mindspore/runtime/memory.py +416 -0
- mindspore/runtime/stream.py +460 -0
- mindspore/runtime/thread_bind_core.py +401 -0
- mindspore/safeguard/rewrite_obfuscation.py +12 -9
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/__init__.py +8 -8
- mindspore/train/_utils.py +96 -27
- mindspore/train/amp.py +9 -5
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +53 -55
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_early_stop.py +1 -1
- mindspore/train/callback/_flops_collector.py +103 -68
- mindspore/train/callback/_history.py +8 -5
- mindspore/train/callback/_lambda_callback.py +2 -2
- mindspore/train/callback/_landscape.py +0 -3
- mindspore/train/callback/_loss_monitor.py +2 -1
- mindspore/train/callback/_on_request_exit.py +6 -5
- mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
- mindspore/train/callback/_summary_collector.py +52 -19
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +228 -108
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +15 -16
- mindspore/train/loss_scale_manager.py +8 -7
- mindspore/train/metrics/accuracy.py +3 -3
- mindspore/train/metrics/confusion_matrix.py +9 -9
- mindspore/train/metrics/error.py +3 -3
- mindspore/train/metrics/hausdorff_distance.py +4 -4
- mindspore/train/metrics/mean_surface_distance.py +3 -3
- mindspore/train/metrics/metric.py +0 -12
- mindspore/train/metrics/occlusion_sensitivity.py +4 -2
- mindspore/train/metrics/precision.py +11 -10
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +174 -46
- mindspore/train/model.py +269 -136
- mindspore/train/serialization.py +622 -978
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +2 -3
- mindspore/train/train_thor/model_thor.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +6 -3
- mindspore/utils/dryrun.py +140 -0
- mindspore/utils/hooks.py +81 -0
- mindspore/utils/runtime_execution_order_check.py +552 -0
- mindspore/utils/utils.py +138 -4
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/METADATA +3 -3
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/RECORD +587 -418
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/entry_points.txt +1 -1
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/common/_tensor_overload.py +0 -139
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_aclnn_implement.py +0 -263
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/gen_pyboost_func.py +0 -1052
- mindspore/ops_generate/gen_utils.py +0 -209
- mindspore/ops_generate/op_proto.py +0 -145
- mindspore/ops_generate/template.py +0 -261
- mindspore/profiler/envprofiling.py +0 -254
- mindspore/profiler/profiling.py +0 -1926
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/WHEEL +0 -0
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/top_level.txt +0 -0
|
@@ -12,25 +12,14 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ============================================================================
|
|
15
|
+
|
|
15
16
|
"""
|
|
16
|
-
|
|
17
|
+
The cpu device context interface.
|
|
17
18
|
"""
|
|
18
|
-
import os
|
|
19
|
-
|
|
20
|
-
# op_def
|
|
21
|
-
OP_DEF_AUTO_GENERATE_PATH = "op_def/auto_generate"
|
|
22
|
-
MS_OP_DEF_AUTO_GENERATE_PATH = "mindspore/ops/op_def/auto_generate"
|
|
23
|
-
YAML_PATH = "op_def/yaml"
|
|
24
|
-
MS_YAML_PATH = "mindspore/ops/" + YAML_PATH
|
|
25
|
-
PY_AUTO_GEN_PATH = "mindspore/python/mindspore/ops/auto_generate"
|
|
26
|
-
PY_OPS_GEN_PATH = "mindspore/python/mindspore/ops_generate"
|
|
27
19
|
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
from mindspore.device_context.cpu.op_tuning import threads_num
|
|
21
|
+
from mindspore.device_context.cpu.device import is_available, device_count
|
|
30
22
|
|
|
31
|
-
|
|
32
|
-
MS_OPS_VIEW_PATH = "mindspore/ops/view"
|
|
23
|
+
__all__ = ["threads_num", "is_available", "device_count"]
|
|
33
24
|
|
|
34
|
-
|
|
35
|
-
MS_OPS_KERNEL_PATH = "mindspore/ops/kernel"
|
|
36
|
-
MS_COMMON_PYBOOST_KERNEL_PATH = os.path.join(MS_OPS_KERNEL_PATH, "common/pyboost")
|
|
25
|
+
__all__.sort()
|
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
|
|
16
|
+
"""The CPU device interfaces."""
|
|
17
|
+
from mindspore._c_expression import MSContext
|
|
18
|
+
from mindspore import log as logger
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def is_available():
|
|
22
|
+
"""
|
|
23
|
+
Return whether cpu backend is available.
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
Bool, whether the cpu backend is available for this MindSpore package.
|
|
27
|
+
|
|
28
|
+
Examples:
|
|
29
|
+
>>> import mindspore as ms
|
|
30
|
+
>>> print(ms.device_context.cpu.is_available())
|
|
31
|
+
True
|
|
32
|
+
"""
|
|
33
|
+
# MindSpore will try to load plugins in "import mindspore", and availability status will be stored.
|
|
34
|
+
context = MSContext.get_instance()
|
|
35
|
+
if not context.is_pkg_support_device("CPU"):
|
|
36
|
+
logger.warning(f"The CPU device is not available.")
|
|
37
|
+
load_plugin_error = context.load_plugin_error()
|
|
38
|
+
if load_plugin_error != "":
|
|
39
|
+
logger.warning(
|
|
40
|
+
f"Here's error when loading plugin for MindSpore package."
|
|
41
|
+
f"Error message: {load_plugin_error}"
|
|
42
|
+
)
|
|
43
|
+
return False
|
|
44
|
+
return True
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def device_count():
|
|
48
|
+
"""
|
|
49
|
+
Returns compute-capable device count of CPU.
|
|
50
|
+
|
|
51
|
+
Note:
|
|
52
|
+
- For CPU hardware, 1 is always returned.
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
int, The number of compute-capable CPU devices.
|
|
56
|
+
|
|
57
|
+
Examples:
|
|
58
|
+
>>> import mindspore as ms
|
|
59
|
+
>>> print(ms.device_context.cpu.device_count())
|
|
60
|
+
1
|
|
61
|
+
"""
|
|
62
|
+
return 1
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
|
|
16
|
+
"""Op tuning interfaces."""
|
|
17
|
+
|
|
18
|
+
from mindspore._c_expression import RuntimeConf
|
|
19
|
+
from mindspore import _checkparam as Validator
|
|
20
|
+
from mindspore._checkparam import args_type_check
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@args_type_check(num=int)
|
|
24
|
+
def threads_num(num):
|
|
25
|
+
"""
|
|
26
|
+
Set the threads number of CPU kernel used.
|
|
27
|
+
|
|
28
|
+
The framework set the threads number of CPU kernel used are ``25`` by default.
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
num (int): The threads number of CPU kernel used.
|
|
32
|
+
|
|
33
|
+
Examples:
|
|
34
|
+
>>> import mindspore as ms
|
|
35
|
+
>>> ms.set_device("Ascend", 1)
|
|
36
|
+
>>> ms.device_context.cpu.op_tuning.threads_num(10)
|
|
37
|
+
"""
|
|
38
|
+
if RuntimeConf.get_instance().is_op_threads_num_configured():
|
|
39
|
+
raise RuntimeError("The 'threads_num' can not be set repeatedly.")
|
|
40
|
+
|
|
41
|
+
num = Validator.check_positive_int(num, "num")
|
|
42
|
+
|
|
43
|
+
return RuntimeConf.get_instance().set_op_threads_num(num)
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
"""init file for GPU device context"""
|
|
16
|
+
|
|
17
|
+
from .device import device_count, is_available
|
|
18
|
+
from .op_precision import *
|
|
19
|
+
from .op_tuning import *
|
|
20
|
+
|
|
21
|
+
__all__ = ["device_count", "is_available"]
|
|
@@ -0,0 +1,70 @@
|
|
|
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
|
+
|
|
16
|
+
"""Device context GPU interfaces"""
|
|
17
|
+
import mindspore as ms
|
|
18
|
+
from mindspore import log as logger
|
|
19
|
+
from mindspore._c_expression import MSContext
|
|
20
|
+
try:
|
|
21
|
+
from mindspore._c_expression import gpu_get_device_count
|
|
22
|
+
except ImportError:
|
|
23
|
+
pass
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def device_count():
|
|
27
|
+
"""
|
|
28
|
+
Return the number of GPUs available.
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
Bool, the number of GPUs available.
|
|
32
|
+
|
|
33
|
+
Examples:
|
|
34
|
+
>>> import mindspore as ms
|
|
35
|
+
>>> ms.device_context.gpu.device.device_count()
|
|
36
|
+
"""
|
|
37
|
+
if not MSContext.get_instance().is_pkg_support_device("GPU") or not is_available():
|
|
38
|
+
raise RuntimeError(f"Device_target GPU not exist.")
|
|
39
|
+
|
|
40
|
+
return gpu_get_device_count()
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def is_available():
|
|
44
|
+
"""
|
|
45
|
+
Return a bool indicating if CUDA is currently available.
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
Bool, indicating if CUDA is currently available.
|
|
49
|
+
|
|
50
|
+
Examples:
|
|
51
|
+
>>> import mindspore as ms
|
|
52
|
+
>>> ms.device_context.gpu.device.is_available()
|
|
53
|
+
"""
|
|
54
|
+
# MindSpore will try to load plugins in "import mindspore", and availability status will be stored.
|
|
55
|
+
if not MSContext.get_instance().is_pkg_support_device("GPU"):
|
|
56
|
+
logger.warning(f"Device GPU is not available.")
|
|
57
|
+
load_plugin_error = MSContext.get_instance().load_plugin_error()
|
|
58
|
+
if load_plugin_error != "":
|
|
59
|
+
logger.warning(f"Here's error when loading plugin for MindSpore package."
|
|
60
|
+
f"Error message: {load_plugin_error}")
|
|
61
|
+
return False
|
|
62
|
+
return True
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _is_supported():
|
|
66
|
+
device_target = ms.context.get_context("device_target")
|
|
67
|
+
if device_target == 'CPU' or device_target == 'Ascend':
|
|
68
|
+
logger.error(f"{device_target} device is not supported. Please use correct device")
|
|
69
|
+
return False
|
|
70
|
+
return True
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
|
|
16
|
+
"""Op precision interfaces."""
|
|
17
|
+
|
|
18
|
+
from mindspore._checkparam import args_type_check
|
|
19
|
+
from .device import _is_supported
|
|
20
|
+
try:
|
|
21
|
+
from mindspore._c_expression import GPUOpPrecisionConf
|
|
22
|
+
except ImportError:
|
|
23
|
+
pass
|
|
24
|
+
|
|
25
|
+
function_status = {'matmul_allow_tf32': False, 'conv_allow_tf32': False}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@args_type_check(value=bool)
|
|
29
|
+
def matmul_allow_tf32(value):
|
|
30
|
+
"""
|
|
31
|
+
Whether to convert FP32 to TF32 for Matmul operators.
|
|
32
|
+
For detailed information, please refer to `CUBLAS_COMPUTE_32F_FAST_TF32 <https://docs.nvidia.com/cuda/cublas/index.html>`_.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
value (bool): Whether to convert FP32 to TF32 for Matmul operators. If not configured, the framework
|
|
36
|
+
defaults to ``False``.
|
|
37
|
+
|
|
38
|
+
Examples:
|
|
39
|
+
>>> import mindspore as ms
|
|
40
|
+
>>> ms.device_context.gpu.op_precision.matmul_allow_tf32(True)
|
|
41
|
+
"""
|
|
42
|
+
if not function_status['matmul_allow_tf32']:
|
|
43
|
+
function_status['matmul_allow_tf32'] = True
|
|
44
|
+
if not _is_supported():
|
|
45
|
+
return
|
|
46
|
+
GPUOpPrecisionConf.get_instance().matmul_allow_tf32(value)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@args_type_check(value=bool)
|
|
50
|
+
def conv_allow_tf32(value):
|
|
51
|
+
"""
|
|
52
|
+
Whether to convert FP32 to TF32 for Conv operators.
|
|
53
|
+
For detailed information, please refer to `CUBLAS_COMPUTE_32F_FAST_TF32 <https://docs.nvidia.com/cuda/cublas/index.html>`_.
|
|
54
|
+
|
|
55
|
+
Args:
|
|
56
|
+
value (bool): Whether to convert FP32 to HF32 for Conv operators. If not configured, the framework defaults
|
|
57
|
+
to ``True``.
|
|
58
|
+
|
|
59
|
+
Examples:
|
|
60
|
+
>>> import mindspore as ms
|
|
61
|
+
>>> ms.device_context.gpu.op_precision.conv_allow_tf32(False)
|
|
62
|
+
"""
|
|
63
|
+
if not function_status['conv_allow_tf32']:
|
|
64
|
+
function_status['conv_allow_tf32'] = True
|
|
65
|
+
if not _is_supported():
|
|
66
|
+
return
|
|
67
|
+
GPUOpPrecisionConf.get_instance().conv_allow_tf32(value)
|
|
@@ -0,0 +1,175 @@
|
|
|
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
|
+
|
|
16
|
+
"""Op tuning interfaces."""
|
|
17
|
+
|
|
18
|
+
try:
|
|
19
|
+
from mindspore._c_expression import GPUOpTuningConf
|
|
20
|
+
except ImportError:
|
|
21
|
+
pass
|
|
22
|
+
from .device import _is_supported
|
|
23
|
+
|
|
24
|
+
function_status = {'conv_fprop_algo': False, 'conv_wgrad_algo': False, 'conv_dgrad_algo': False}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def conv_fprop_algo(mode):
|
|
28
|
+
"""
|
|
29
|
+
Specifies convolution forward algorithm.
|
|
30
|
+
For detailed information, please refer to `NVIDA cuDNN about cudnnConvolutionForward <https://docs.nvidia.com/deeplearning/cudnn/latest/api/cudnn-cnn-library.html>`_.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
mode (str): convolution forward algorithm. If not configured, the framework defaults to 'normal'.
|
|
34
|
+
The value range is as follows:
|
|
35
|
+
|
|
36
|
+
- normal: Use the cuDNN's heuristic search algorithm, the appropriate convolution algorithm will be quickly
|
|
37
|
+
selected based on the convolution shape and type. This parameter does not guarantee optimal performance.
|
|
38
|
+
- performance: Use the cuDNN's trial search algorithm, all convolution algorithms will be trial run based on
|
|
39
|
+
the convolution shape and type, and the optimal algorithm will be selected. This parameter ensures optimal
|
|
40
|
+
performance.
|
|
41
|
+
- implicit_gemm: This algorithm expresses the convolution as a matrix product without actually explicitly
|
|
42
|
+
forming the matrix that holds the input tensor data.
|
|
43
|
+
- precomp_gemm: This algorithm expresses convolution as a matrix product without actually explicitly
|
|
44
|
+
forming the matrix that holds the input tensor data, but still needs some memory workspace to precompute
|
|
45
|
+
some indices in order to facilitate the implicit construction of the matrix that holds the input tensor
|
|
46
|
+
data.
|
|
47
|
+
- gemm: This algorithm expresses the convolution as an explicit matrix product. A significant memory
|
|
48
|
+
workspace is needed to store the matrix that holds the input tensor data.
|
|
49
|
+
- direct: This algorithm expresses the convolution as a direct convolution, without implicitly or explicitly
|
|
50
|
+
doing a matrix multiplication.
|
|
51
|
+
- fft: This algorithm uses the Fast-Fourier Transform approach to compute the convolution. A significant
|
|
52
|
+
memory workspace is needed to store intermediate results.
|
|
53
|
+
- fft_tiling: This algorithm uses the Fast-Fourier Transform approach but splits the inputs into tiles. A
|
|
54
|
+
significant memory workspace is needed to store intermediate results but less than fft algorithm for large
|
|
55
|
+
size images.
|
|
56
|
+
- winograd: This algorithm uses the Winograd Transform approach to compute the convolution. A reasonably
|
|
57
|
+
sized workspace is needed to store intermediate results.
|
|
58
|
+
- winograd_nonfused: This algorithm uses the Winograd Transform approach to compute the convolution. A
|
|
59
|
+
significant workspace may be needed to store intermediate results.
|
|
60
|
+
|
|
61
|
+
Examples:
|
|
62
|
+
>>> import mindspore as ms
|
|
63
|
+
>>> ms.device_context.gpu.op_tuning.conv_fprop_algo("performance")
|
|
64
|
+
"""
|
|
65
|
+
if not function_status['conv_fprop_algo']:
|
|
66
|
+
function_status['conv_fprop_algo'] = True
|
|
67
|
+
if not _is_supported():
|
|
68
|
+
return
|
|
69
|
+
conv_fprop_algo_mode = ["normal", "performance", "implicit_gemm", "precomp_gemm", "gemm", "direct",
|
|
70
|
+
"fft", "fft_tiling", "winograd", "winograd_nonfused"]
|
|
71
|
+
if mode in conv_fprop_algo_mode:
|
|
72
|
+
GPUOpTuningConf.get_instance().set_conv_fprop_algo(mode)
|
|
73
|
+
else:
|
|
74
|
+
raise ValueError(
|
|
75
|
+
f"For 'mindspore.device_context.gpu.op_tuning.conv_fprop_algo', the argument must be in "
|
|
76
|
+
f"{conv_fprop_algo_mode} but got {mode}."
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def conv_wgrad_algo(mode):
|
|
81
|
+
"""
|
|
82
|
+
Specifies convolution filter grad algorithm.
|
|
83
|
+
For detailed information, please refer to `NVIDA cuDNN <https://docs.nvidia.com/deeplearning/cudnn/latest/api/cudnn-cnn-library.html>`_.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
mode (str): convolution filter grad algorithm. If not configured, the framework defaults to 'normal'.
|
|
87
|
+
The value range is as follows:
|
|
88
|
+
|
|
89
|
+
- normal: Use the cuDNN's heuristic search algorithm, the appropriate convolution algorithm will be quickly
|
|
90
|
+
selected based on the convolution shape and type. This parameter does not guarantee optimal performance.
|
|
91
|
+
- performance: Use the cuDNN's trial search algorithm, all convolution algorithms will be trial run based on
|
|
92
|
+
the convolution shape and type, and the optimal algorithm will be selected. This parameter ensures optimal
|
|
93
|
+
performance.
|
|
94
|
+
- algo_0: This algorithm expresses the convolution as a sum of matrix products without actually explicitly
|
|
95
|
+
forming the matrix that holds the input tensor data. The sum is done using the atomic add operation, thus
|
|
96
|
+
the results are non-deterministic.
|
|
97
|
+
- algo_1: This algorithm expresses the convolution as a matrix product without actually explicitly forming
|
|
98
|
+
the matrix that holds the input tensor data. The results are deterministic.
|
|
99
|
+
- algo_3: This algorithm is similar to algo_0 but uses some small workspace to precompute some indices. The
|
|
100
|
+
results are also non-deterministic.
|
|
101
|
+
- fft: This algorithm uses a Fast-Fourier Transform approach to compute the convolution. A significant memory
|
|
102
|
+
workspace is needed to store intermediate results. The results are deterministic.
|
|
103
|
+
- fft_tiling: This algorithm uses the Fast-Fourier Transform approach but splits the inputs into tiles. A
|
|
104
|
+
significant memory workspace is needed to store intermediate results but less than fft for large size
|
|
105
|
+
images. The results are deterministic.
|
|
106
|
+
- winograd_nonfused: This algorithm uses the Winograd Transform approach to compute the convolution. A
|
|
107
|
+
significant workspace may be needed to store intermediate results. The results are deterministic.
|
|
108
|
+
|
|
109
|
+
Examples:
|
|
110
|
+
>>> import mindspore as ms
|
|
111
|
+
>>> ms.device_context.gpu.op_tuning.conv_wgrad_algo("performance")
|
|
112
|
+
"""
|
|
113
|
+
if not function_status['conv_wgrad_algo']:
|
|
114
|
+
function_status['conv_wgrad_algo'] = True
|
|
115
|
+
if not _is_supported():
|
|
116
|
+
return
|
|
117
|
+
conv_wgrad_algo_mode = ["normal", "performance", "algo_0", "algo_1", "fft", "algo_3",
|
|
118
|
+
"fft_tiling", "winograd_nonfused"]
|
|
119
|
+
|
|
120
|
+
if mode in conv_wgrad_algo_mode:
|
|
121
|
+
GPUOpTuningConf.get_instance().set_conv_wgrad_algo(mode)
|
|
122
|
+
else:
|
|
123
|
+
raise ValueError(
|
|
124
|
+
f"For 'mindspore.device_context.gpu.op_tuning.conv_wgrad_algo', the argument must be in "
|
|
125
|
+
f"{conv_wgrad_algo_mode} but got {mode}."
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def conv_dgrad_algo(mode):
|
|
130
|
+
"""
|
|
131
|
+
Specifies convolution data grad algorithm.
|
|
132
|
+
For detailed information, please refer to `NVIDA cuDNN <https://docs.nvidia.com/deeplearning/cudnn/latest/api/cudnn-cnn-library.html>`_.
|
|
133
|
+
|
|
134
|
+
Args:
|
|
135
|
+
mode (str): convolution data grad algorithm. If not configured, the framework defaults to 'normal'.
|
|
136
|
+
The value range is as follows:
|
|
137
|
+
|
|
138
|
+
- normal: Use the cuDNN's heuristic search algorithm, the appropriate convolution algorithm will be quickly
|
|
139
|
+
selected based on the convolution shape and type. This parameter does not guarantee optimal performance.
|
|
140
|
+
- performance: Use the cuDNN's trial search algorithm, all convolution algorithms will be trial run based on
|
|
141
|
+
the convolution shape and type, and the optimal algorithm will be selected. This parameter ensures optimal
|
|
142
|
+
performance.
|
|
143
|
+
- algo_0: This algorithm expresses the convolution as a sum of matrix products without actually explicitly
|
|
144
|
+
forming the matrix that holds the input tensor data. The sum is done using the atomic add operation, thus
|
|
145
|
+
the results are non-deterministic.
|
|
146
|
+
- algo_1: This algorithm expresses the convolution as a matrix product without actually explicitly forming
|
|
147
|
+
the matrix that holds the input tensor data. The results are deterministic.
|
|
148
|
+
- fft: This algorithm uses a Fast-Fourier Transform approach to compute the convolution. A significant memory
|
|
149
|
+
workspace is needed to store intermediate results. The results are deterministic.
|
|
150
|
+
- fft_tiling: This algorithm uses the Fast-Fourier Transform approach but splits the inputs into tiles. A
|
|
151
|
+
significant memory workspace is needed to store intermediate results but less than fft for large size
|
|
152
|
+
images. The results are deterministic.
|
|
153
|
+
- winograd: This algorithm uses the Winograd Transform approach to compute the convolution. A reasonably
|
|
154
|
+
sized workspace is needed to store intermediate results. The results are deterministic.
|
|
155
|
+
- winograd_nonfused: This algorithm uses the Winograd Transform approach to compute the convolution. A
|
|
156
|
+
significant workspace may be needed to store intermediate results. The results are deterministic.
|
|
157
|
+
|
|
158
|
+
Examples:
|
|
159
|
+
>>> import mindspore as ms
|
|
160
|
+
>>> ms.device_context.gpu.op_tuning.conv_dgrad_algo("performance")
|
|
161
|
+
"""
|
|
162
|
+
if not function_status['conv_dgrad_algo']:
|
|
163
|
+
function_status['conv_dgrad_algo'] = True
|
|
164
|
+
if not _is_supported():
|
|
165
|
+
return
|
|
166
|
+
conv_dgrad_algo_mode = ["normal", "performance", "algo_0", "algo_1", "fft", "fft_tiling",
|
|
167
|
+
"winograd", "winograd_nonfused"]
|
|
168
|
+
|
|
169
|
+
if mode in conv_dgrad_algo_mode:
|
|
170
|
+
GPUOpTuningConf.get_instance().set_conv_dgrad_algo(mode)
|
|
171
|
+
else:
|
|
172
|
+
raise ValueError(
|
|
173
|
+
f"For 'mindspore.device_context.gpu.op_tuning.conv_dgrad_algo', the argument must be in "
|
|
174
|
+
f"{conv_dgrad_algo_mode} but got {mode}."
|
|
175
|
+
)
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Copyright 2024 Huawei Technologies Co., Ltd
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ============================================================================
|
|
15
|
+
|
|
16
|
+
"""Device manager interfaces."""
|
|
17
|
+
|
|
18
|
+
import os
|
|
19
|
+
from mindspore import log as logger
|
|
20
|
+
from mindspore._c_expression import DeviceManagerConf, DeviceContextManager, MSContext, CollectiveManager
|
|
21
|
+
from mindspore._checkparam import args_type_check
|
|
22
|
+
from mindspore.parallel._ps_context import _need_reset_device_target_for_ps
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
__all__ = ['set_device', 'set_deterministic', 'get_current_device']
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class DeviceInfo(tuple):
|
|
29
|
+
"""
|
|
30
|
+
DeviceInfo class. Store the current device target and the corresponding device id.
|
|
31
|
+
"""
|
|
32
|
+
def __new__(cls, device_target, device_id):
|
|
33
|
+
return super().__new__(cls, (device_target, device_id))
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def device_target(self):
|
|
37
|
+
return self[0]
|
|
38
|
+
|
|
39
|
+
@property
|
|
40
|
+
def device_id(self):
|
|
41
|
+
return self[1]
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@args_type_check(device_target=str, device_id=int)
|
|
45
|
+
def set_device(device_target, device_id=None):
|
|
46
|
+
"""
|
|
47
|
+
Set device target and device id for running environment.
|
|
48
|
+
|
|
49
|
+
Note:
|
|
50
|
+
- The `device_target` must be set in the ["CPU", "GPU", "Ascend"], there is no default value.
|
|
51
|
+
- Suggest setting `device_target` and `device_id` before calling :func:`mindspore.communication.init`.
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
device_target (str): The target device to run, only support "Ascend", "GPU", and "CPU".
|
|
55
|
+
device_id (int, optional): ID of the target device, the value must be in [0, device_num_per_host-1],
|
|
56
|
+
where device_num_per_host refers to the total number of devices on the host. Default: ``None`` .
|
|
57
|
+
The frame will set different default behaviours according to the scenario:
|
|
58
|
+
if it is a single-card scenario, the frame will be set to 0.
|
|
59
|
+
In a distributed scenario where msrun is started, the framework will
|
|
60
|
+
automatically negotiate the available device_id values.
|
|
61
|
+
In a distributed scenario with other startup methods, the frame is set to 0.
|
|
62
|
+
|
|
63
|
+
Examples:
|
|
64
|
+
>>> import mindspore as ms
|
|
65
|
+
>>> ms.set_device("Ascend", 1)
|
|
66
|
+
"""
|
|
67
|
+
valid_targets = ["CPU", "GPU", "Ascend"]
|
|
68
|
+
if device_target not in valid_targets:
|
|
69
|
+
raise ValueError(f"The argument 'device_target' must be one of {valid_targets}, but got {device_target}.")
|
|
70
|
+
# If in Parameter Server mode, Ascend card should not be used by server and scheduler.
|
|
71
|
+
if _need_reset_device_target_for_ps(device_target):
|
|
72
|
+
logger.info("Reset device target to CPU when set_device.")
|
|
73
|
+
device_target = "CPU"
|
|
74
|
+
|
|
75
|
+
is_default = False
|
|
76
|
+
if device_id is None:
|
|
77
|
+
device_id = 0
|
|
78
|
+
is_default = True
|
|
79
|
+
if device_id < 0:
|
|
80
|
+
raise ValueError("The device id must bigger than or equal to 0.")
|
|
81
|
+
|
|
82
|
+
MSContext.get_instance().set_device_target_inner(device_target)
|
|
83
|
+
|
|
84
|
+
if DeviceManagerConf.get_instance().is_device_enable():
|
|
85
|
+
old_device_target = DeviceManagerConf.get_instance().get_device_target()
|
|
86
|
+
old_device_id = DeviceManagerConf.get_instance().get_device_id()
|
|
87
|
+
if old_device_target != device_target or old_device_id != device_id:
|
|
88
|
+
raise RuntimeError("The 'mindspore.set_device' can not be modified.")
|
|
89
|
+
return
|
|
90
|
+
|
|
91
|
+
device_context = DeviceContextManager.get_instance().get_device_context(device_target)
|
|
92
|
+
if device_context is not None and device_context.initialized():
|
|
93
|
+
raise RuntimeError("The runtime has been initialized, please set it before the kernel is executed, "
|
|
94
|
+
"or before calling 'mindspore.communication.init()'. "
|
|
95
|
+
"Suggest setting it as early as possible.")
|
|
96
|
+
DeviceManagerConf.get_instance().set_device(device_target, device_id, is_default)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def get_current_device():
|
|
100
|
+
"""
|
|
101
|
+
Get device target and device id in the current running environment.
|
|
102
|
+
|
|
103
|
+
Examples:
|
|
104
|
+
>>> import mindspore as ms
|
|
105
|
+
>>> ms.set_device("Ascend", 1)
|
|
106
|
+
>>> ms.get_current_device()
|
|
107
|
+
('Ascend', 1)
|
|
108
|
+
>>> ms.get_current_device().device_target
|
|
109
|
+
'Ascend'
|
|
110
|
+
>>> ms.get_current_device().device_id
|
|
111
|
+
1
|
|
112
|
+
"""
|
|
113
|
+
device_target = DeviceManagerConf.get_instance().get_device_target()
|
|
114
|
+
device_id = DeviceManagerConf.get_instance().get_device_id()
|
|
115
|
+
return DeviceInfo(device_target, device_id)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
@args_type_check(deterministic=bool)
|
|
119
|
+
def set_deterministic(deterministic):
|
|
120
|
+
"""
|
|
121
|
+
Enables or disables deterministic computing.
|
|
122
|
+
|
|
123
|
+
When deterministic computing is enabled, the same output is generated if an operator is executed
|
|
124
|
+
for multiple times with the same hardware and input.This often slows down operator execution.
|
|
125
|
+
In distributed scenario, we suggest user to set deterministic mode before
|
|
126
|
+
calling :func:`mindspore.communication.init` to enable deterministic operation for
|
|
127
|
+
communication operators in the global communication group.
|
|
128
|
+
|
|
129
|
+
The framework not enabled deterministic computation by default.
|
|
130
|
+
|
|
131
|
+
Args:
|
|
132
|
+
deterministic (bool): Whether to enable deterministic computing.
|
|
133
|
+
|
|
134
|
+
Examples:
|
|
135
|
+
>>> import mindspore as ms
|
|
136
|
+
>>> ms.set_deterministic(True)
|
|
137
|
+
"""
|
|
138
|
+
# Check the configuration environment whether valid.
|
|
139
|
+
if DeviceManagerConf.get_instance().is_deterministic_configured():
|
|
140
|
+
raise RuntimeError("The 'mindspore.set_deterministic' can not be set repeatedly.")
|
|
141
|
+
|
|
142
|
+
# Must wait for all async created groups to be initialized so that
|
|
143
|
+
# deterministic feature could be consistent between all processes.
|
|
144
|
+
CollectiveManager.get_instance().wait_all_comm_init()
|
|
145
|
+
|
|
146
|
+
# Check the hccl_deterministic and te_parallel_compiler.
|
|
147
|
+
hccl_deterministic = os.getenv("HCCL_DETERMINISTIC")
|
|
148
|
+
te_parallel_compiler = os.getenv("TE_PARALLEL_COMPILER")
|
|
149
|
+
if deterministic:
|
|
150
|
+
if hccl_deterministic and hccl_deterministic != "true":
|
|
151
|
+
logger.warning(f"Environment 'HCCL_DETERMINISTIC' should be 'true' when set deterministic='True', but "
|
|
152
|
+
f"got '{hccl_deterministic}'. 'HCCL_DETERMINISTIC' will be set to 'true'.")
|
|
153
|
+
if te_parallel_compiler and te_parallel_compiler != "1":
|
|
154
|
+
logger.warning(f"Environment 'TE_PARALLEL_COMPILER' should be '1' when set deterministic='True', but "
|
|
155
|
+
f"got '{te_parallel_compiler}'. 'TE_PARALLEL_COMPILER' will be set to '1'.")
|
|
156
|
+
os.environ["HCCL_DETERMINISTIC"] = "true"
|
|
157
|
+
os.environ["TE_PARALLEL_COMPILER"] = "1"
|
|
158
|
+
else:
|
|
159
|
+
if hccl_deterministic and hccl_deterministic != "false":
|
|
160
|
+
logger.warning(f"Environment 'HCCL_DETERMINISTIC' should not be set or be 'false' when set "
|
|
161
|
+
f"deterministic='False', but got '{hccl_deterministic}'. 'HCCL_DETERMINISTIC' "
|
|
162
|
+
f"will be unset.")
|
|
163
|
+
del os.environ["HCCL_DETERMINISTIC"]
|
|
164
|
+
if te_parallel_compiler and te_parallel_compiler != "0":
|
|
165
|
+
logger.warning(f"Environment 'TE_PARALLEL_COMPILER' should not be set or be '0' when set "
|
|
166
|
+
f"deterministic='False', but got '{te_parallel_compiler}'. 'TE_PARALLEL_COMPILER' "
|
|
167
|
+
f"will be unset.")
|
|
168
|
+
del os.environ["TE_PARALLEL_COMPILER"]
|
|
169
|
+
|
|
170
|
+
DeviceManagerConf.get_instance().set_deterministic(deterministic)
|
mindspore/dnnl.dll
CHANGED
|
Binary file
|
mindspore/dpcmi.dll
CHANGED
|
Binary file
|