mindspore 2.4.10__cp311-cp311-win_amd64.whl → 2.6.0rc1__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +13 -6
- mindspore/_c_dataengine.cp311-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp311-win_amd64.pyd +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -0
- mindspore/_checkparam.py +3 -38
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +83 -0
- mindspore/_extends/parse/deprecated/__init__.py +0 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
- mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
- mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
- mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
- mindspore/_extends/parse/parser.py +46 -197
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +217 -98
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +11 -5
- mindspore/atlprov.dll +0 -0
- mindspore/avcodec-59.dll +0 -0
- mindspore/avdevice-59.dll +0 -0
- mindspore/avfilter-8.dll +0 -0
- mindspore/avformat-59.dll +0 -0
- mindspore/avutil-57.dll +0 -0
- mindspore/boost/__init__.py +2 -2
- mindspore/boost/base.py +3 -7
- mindspore/boost/boost_cell_wrapper.py +138 -43
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +6 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -2
- mindspore/common/_stub_tensor.py +30 -14
- mindspore/common/_tensor_cpp_method.py +17 -0
- mindspore/common/_tensor_docs.py +4760 -0
- mindspore/common/api.py +435 -371
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +39 -36
- mindspore/common/dump.py +9 -6
- mindspore/common/file_system.py +9 -1
- mindspore/common/generator.py +2 -0
- mindspore/common/hook_handle.py +6 -2
- mindspore/common/initializer.py +13 -10
- mindspore/common/jit_begin_end.py +94 -0
- mindspore/common/jit_config.py +6 -1
- mindspore/common/jit_context.py +76 -0
- mindspore/common/jit_trace.py +378 -0
- mindspore/common/lazy_inline.py +9 -3
- mindspore/common/mindir_util.py +10 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +135 -52
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +951 -1992
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +52 -2
- mindspore/communication/comm_func.py +240 -181
- mindspore/communication/management.py +95 -26
- mindspore/context.py +314 -566
- mindspore/dataset/__init__.py +65 -37
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/callback/ds_callback.py +2 -1
- mindspore/dataset/core/config.py +87 -6
- mindspore/dataset/engine/cache_admin.py +3 -3
- mindspore/dataset/engine/cache_client.py +6 -5
- mindspore/dataset/engine/datasets.py +292 -267
- mindspore/dataset/engine/datasets_audio.py +22 -8
- mindspore/dataset/engine/datasets_standard_format.py +46 -27
- mindspore/dataset/engine/datasets_text.py +78 -48
- mindspore/dataset/engine/datasets_user_defined.py +182 -116
- mindspore/dataset/engine/datasets_vision.py +120 -44
- mindspore/dataset/engine/iterators.py +283 -63
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/obs/util.py +8 -0
- mindspore/dataset/engine/queue.py +40 -0
- mindspore/dataset/engine/samplers.py +289 -43
- mindspore/dataset/engine/serializer_deserializer.py +3 -2
- mindspore/dataset/engine/validators.py +53 -11
- mindspore/dataset/text/__init__.py +7 -6
- mindspore/dataset/text/transforms.py +6 -5
- mindspore/dataset/text/utils.py +3 -3
- mindspore/dataset/transforms/__init__.py +0 -9
- mindspore/dataset/transforms/py_transforms_util.py +17 -0
- mindspore/dataset/transforms/transforms.py +31 -14
- mindspore/dataset/utils/browse_dataset.py +1 -1
- mindspore/dataset/vision/__init__.py +2 -9
- mindspore/dataset/vision/transforms.py +202 -158
- mindspore/dataset/vision/utils.py +7 -5
- mindspore/dataset/vision/validators.py +1 -2
- mindspore/device_context/__init__.py +21 -0
- mindspore/device_context/ascend/__init__.py +25 -0
- mindspore/device_context/ascend/device.py +72 -0
- mindspore/device_context/ascend/op_debug.py +153 -0
- mindspore/device_context/ascend/op_precision.py +193 -0
- mindspore/device_context/ascend/op_tuning.py +123 -0
- mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
- mindspore/device_context/cpu/device.py +62 -0
- mindspore/device_context/cpu/op_tuning.py +43 -0
- mindspore/device_context/gpu/__init__.py +21 -0
- mindspore/device_context/gpu/device.py +70 -0
- mindspore/device_context/gpu/op_precision.py +67 -0
- mindspore/device_context/gpu/op_tuning.py +175 -0
- mindspore/device_manager.py +170 -0
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/llm_boost/__init__.py +1 -0
- mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
- mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
- mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
- mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
- mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
- mindspore/experimental/llm_boost/register.py +1 -0
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +6 -6
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +7 -0
- mindspore/experimental/optim/adamax.py +4 -4
- mindspore/experimental/optim/adamw.py +4 -0
- mindspore/experimental/optim/asgd.py +1 -1
- mindspore/experimental/optim/lr_scheduler.py +73 -46
- mindspore/experimental/optim/radam.py +34 -31
- mindspore/experimental/optim/rprop.py +1 -1
- mindspore/experimental/optim/sgd.py +1 -1
- mindspore/hal/contiguous_tensors_handle.py +6 -10
- mindspore/hal/device.py +55 -53
- mindspore/hal/event.py +52 -52
- mindspore/hal/memory.py +157 -117
- mindspore/hal/stream.py +150 -109
- mindspore/include/api/context.h +0 -1
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +50 -0
- mindspore/mindrecord/__init__.py +21 -8
- mindspore/mindrecord/config.py +17 -316
- mindspore/mindrecord/filereader.py +1 -9
- mindspore/mindrecord/filewriter.py +5 -15
- mindspore/mindrecord/mindpage.py +1 -9
- mindspore/mindspore_backend_common.dll +0 -0
- mindspore/mindspore_backend_manager.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_dump.dll +0 -0
- mindspore/mindspore_frontend.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_memory_pool.dll +0 -0
- mindspore/mindspore_ms_backend.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
- mindspore/mindspore_ops_kernel_common.dll +0 -0
- mindspore/mindspore_profiler.dll +0 -0
- mindspore/mindspore_pyboost.dll +0 -0
- mindspore/mindspore_pynative.dll +0 -0
- mindspore/mindspore_res_manager.dll +0 -0
- mindspore/mindspore_runtime_pipeline.dll +0 -0
- mindspore/mint/__init__.py +796 -759
- mindspore/mint/distributed/__init__.py +70 -4
- mindspore/mint/distributed/distributed.py +2679 -44
- mindspore/mint/linalg/__init__.py +8 -0
- mindspore/mint/nn/__init__.py +743 -22
- mindspore/mint/nn/functional.py +716 -23
- mindspore/mint/nn/layer/__init__.py +21 -4
- mindspore/mint/nn/layer/_functions.py +334 -0
- mindspore/mint/nn/layer/activation.py +276 -1
- mindspore/mint/nn/layer/basic.py +123 -0
- mindspore/mint/nn/layer/conv.py +921 -0
- mindspore/mint/nn/layer/normalization.py +223 -28
- mindspore/mint/nn/layer/padding.py +797 -0
- mindspore/mint/nn/layer/pooling.py +235 -0
- mindspore/mint/optim/__init__.py +3 -1
- mindspore/mint/optim/adam.py +223 -0
- mindspore/mint/optim/adamw.py +26 -19
- mindspore/mint/optim/sgd.py +171 -0
- mindspore/mint/special/__init__.py +2 -1
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/multiprocessing/__init__.py +5 -0
- mindspore/nn/__init__.py +4 -1
- mindspore/nn/cell.py +1370 -189
- mindspore/nn/dynamic_lr.py +2 -1
- mindspore/nn/layer/activation.py +29 -27
- mindspore/nn/layer/basic.py +51 -35
- mindspore/nn/layer/channel_shuffle.py +3 -3
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +22 -17
- mindspore/nn/layer/embedding.py +12 -11
- mindspore/nn/layer/normalization.py +56 -49
- mindspore/nn/layer/padding.py +4 -3
- mindspore/nn/layer/pooling.py +120 -42
- mindspore/nn/layer/rnn_cells.py +1 -1
- mindspore/nn/layer/rnns.py +2 -1
- mindspore/nn/layer/timedistributed.py +5 -5
- mindspore/nn/layer/transformer.py +59 -36
- mindspore/nn/learning_rate_schedule.py +8 -4
- mindspore/nn/loss/loss.py +58 -55
- mindspore/nn/optim/ada_grad.py +7 -5
- mindspore/nn/optim/adadelta.py +11 -9
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +17 -13
- mindspore/nn/optim/adamax.py +8 -7
- mindspore/nn/optim/adasum.py +5 -5
- mindspore/nn/optim/asgd.py +1 -1
- mindspore/nn/optim/ftrl.py +11 -9
- mindspore/nn/optim/lamb.py +1 -1
- mindspore/nn/optim/lars.py +1 -4
- mindspore/nn/optim/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +3 -3
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +11 -9
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- mindspore/nn/optim/thor.py +2 -1
- mindspore/nn/probability/bijector/bijector.py +17 -11
- mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
- mindspore/nn/probability/bijector/invert.py +2 -2
- mindspore/nn/probability/bijector/scalar_affine.py +3 -3
- mindspore/nn/probability/bijector/softplus.py +3 -2
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +1 -1
- mindspore/nn/probability/distribution/cauchy.py +4 -2
- mindspore/nn/probability/distribution/exponential.py +6 -7
- mindspore/nn/probability/distribution/gamma.py +2 -2
- mindspore/nn/probability/distribution/gumbel.py +2 -2
- mindspore/nn/probability/distribution/half_normal.py +5 -3
- mindspore/nn/probability/distribution/logistic.py +5 -3
- mindspore/nn/probability/distribution/poisson.py +1 -1
- mindspore/nn/probability/distribution/uniform.py +5 -3
- mindspore/nn/reinforcement/_tensors_queue.py +1 -1
- mindspore/nn/reinforcement/tensor_array.py +1 -1
- mindspore/nn/utils/init.py +13 -11
- mindspore/nn/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +181 -122
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +6 -7
- mindspore/numpy/array_creations.py +63 -65
- mindspore/numpy/array_ops.py +149 -144
- mindspore/numpy/logic_ops.py +41 -42
- mindspore/numpy/math_ops.py +365 -363
- mindspore/numpy/utils.py +17 -18
- mindspore/numpy/utils_const.py +5 -6
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +5 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
- mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
- mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
- mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
- mindspore/ops/_op_impl/cpu/__init__.py +1 -0
- mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
- mindspore/ops/_register_for_op.py +0 -11
- mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
- mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
- mindspore/ops/_vmap/vmap_array_ops.py +27 -25
- mindspore/ops/_vmap/vmap_base.py +0 -2
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
- mindspore/ops/_vmap/vmap_math_ops.py +15 -16
- mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +236 -46
- mindspore/ops/auto_generate/gen_extend_func.py +764 -124
- mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
- mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
- mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +20 -25
- mindspore/ops/composite/math_ops.py +6 -16
- mindspore/ops/composite/multitype_ops/__init__.py +5 -2
- mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
- mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
- mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
- mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
- mindspore/ops/function/__init__.py +40 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +2089 -2403
- mindspore/ops/function/clip_func.py +80 -23
- mindspore/ops/function/debug_func.py +57 -57
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +2 -2
- mindspore/ops/function/linalg_func.py +47 -78
- mindspore/ops/function/math_func.py +4501 -3802
- mindspore/ops/function/nn_func.py +1726 -620
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +18 -84
- mindspore/ops/function/random_func.py +440 -387
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +6 -6
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +24 -17
- mindspore/ops/functional.py +22 -7
- mindspore/ops/functional_overload.py +1440 -0
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +13 -7
- mindspore/ops/operations/_custom_ops_utils.py +247 -0
- mindspore/ops/operations/_embedding_cache_ops.py +4 -4
- mindspore/ops/operations/_grad_ops.py +2 -43
- mindspore/ops/operations/_infer_ops.py +2 -1
- mindspore/ops/operations/_inner_ops.py +43 -84
- mindspore/ops/operations/_ms_kernel.py +4 -10
- mindspore/ops/operations/_rl_inner_ops.py +1 -1
- mindspore/ops/operations/_scalar_ops.py +3 -2
- mindspore/ops/operations/_sequence_ops.py +1 -1
- mindspore/ops/operations/_tensor_array.py +1 -1
- mindspore/ops/operations/array_ops.py +81 -324
- mindspore/ops/operations/comm_ops.py +154 -108
- mindspore/ops/operations/custom_ops.py +232 -78
- mindspore/ops/operations/debug_ops.py +153 -59
- mindspore/ops/operations/inner_ops.py +7 -5
- mindspore/ops/operations/linalg_ops.py +1 -57
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +928 -180
- mindspore/ops/operations/math_ops.py +32 -234
- mindspore/ops/operations/nn_ops.py +210 -498
- mindspore/ops/operations/other_ops.py +62 -9
- mindspore/ops/operations/random_ops.py +13 -7
- mindspore/ops/operations/reshard_ops.py +1 -1
- mindspore/ops/operations/sparse_ops.py +2 -2
- mindspore/ops/primitive.py +66 -53
- mindspore/ops/tensor_method.py +1888 -0
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
- mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
- mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
- mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
- mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
- mindspore/ops_generate/api/functions_cc_generator.py +237 -0
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/api/op_api_proto.py +235 -0
- mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/base_generator.py +11 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/common/gen_utils.py +348 -0
- mindspore/ops_generate/common/op_proto.py +473 -0
- mindspore/ops_generate/common/template.py +523 -0
- mindspore/ops_generate/gen_ops.py +22 -1069
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
- mindspore/ops_generate/op_def/ops_def_cc_generator.py +299 -0
- mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
- mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
- mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
- mindspore/ops_generate/op_def_py/__init__.py +0 -0
- mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
- mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
- mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
- mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
- mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
- mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
- mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
- mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
- mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
- mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
- mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
- mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
- mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
- mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
- mindspore/ops_generate/resources/__init__.py +0 -0
- mindspore/ops_generate/resources/resource_list.py +30 -0
- mindspore/ops_generate/resources/resource_loader.py +36 -0
- mindspore/ops_generate/resources/resource_manager.py +64 -0
- mindspore/ops_generate/resources/yaml_loader.py +88 -0
- mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
- mindspore/parallel/__init__.py +7 -3
- mindspore/parallel/_auto_parallel_context.py +152 -34
- mindspore/parallel/_cell_wrapper.py +130 -15
- mindspore/parallel/_parallel_serialization.py +107 -5
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +199 -23
- mindspore/parallel/algo_parameter_config.py +4 -4
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +698 -35
- mindspore/parallel/cluster/process_entity/_api.py +276 -50
- mindspore/parallel/cluster/process_entity/_utils.py +41 -6
- mindspore/parallel/cluster/run.py +21 -4
- mindspore/parallel/function/__init__.py +24 -0
- mindspore/parallel/function/reshard_func.py +259 -0
- mindspore/parallel/nn/__init__.py +25 -0
- mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
- mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
- mindspore/parallel/parameter_broadcast.py +25 -14
- mindspore/parallel/shard.py +137 -58
- mindspore/parallel/transform_safetensors.py +363 -305
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +22 -5
- mindspore/profiler/analysis/__init__.py +0 -0
- mindspore/profiler/analysis/parser/__init__.py +0 -0
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
- mindspore/profiler/analysis/parser/base_parser.py +158 -0
- mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
- mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
- mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +106 -0
- mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
- mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
- mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
- mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
- mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
- mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
- mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
- mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
- mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
- mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
- mindspore/profiler/analysis/task_manager.py +131 -0
- mindspore/profiler/analysis/time_converter.py +84 -0
- mindspore/profiler/analysis/viewer/__init__.py +0 -0
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
- mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
- mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
- mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
- mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
- mindspore/profiler/analysis/work_flow.py +73 -0
- mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
- mindspore/profiler/common/command_executor.py +90 -0
- mindspore/profiler/common/constant.py +186 -3
- mindspore/profiler/common/file_manager.py +208 -0
- mindspore/profiler/common/log.py +130 -0
- mindspore/profiler/common/msprof_cmd_tool.py +221 -0
- mindspore/profiler/common/path_manager.py +395 -0
- mindspore/profiler/common/process_bar.py +168 -0
- mindspore/profiler/common/process_pool.py +9 -3
- mindspore/profiler/common/profiler_context.py +500 -0
- mindspore/profiler/common/profiler_info.py +304 -0
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_output_path.py +284 -0
- mindspore/profiler/common/profiler_parameters.py +251 -0
- mindspore/profiler/common/profiler_path_manager.py +179 -0
- mindspore/profiler/common/record_function.py +76 -0
- mindspore/profiler/common/tlv_decoder.py +76 -0
- mindspore/profiler/common/util.py +75 -2
- mindspore/profiler/dynamic_profiler.py +341 -75
- mindspore/profiler/envprofiler.py +163 -0
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +242 -0
- mindspore/profiler/platform/__init__.py +21 -0
- mindspore/profiler/platform/base_profiler.py +40 -0
- mindspore/profiler/platform/cpu_profiler.py +124 -0
- mindspore/profiler/platform/gpu_profiler.py +74 -0
- mindspore/profiler/platform/npu_profiler.py +335 -0
- mindspore/profiler/profiler.py +1073 -90
- mindspore/profiler/profiler_action_controller.py +187 -0
- mindspore/profiler/profiler_interface.py +118 -0
- mindspore/profiler/schedule.py +243 -0
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +2 -3
- mindspore/run_check/_check_version.py +27 -20
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +37 -0
- mindspore/runtime/device.py +27 -0
- mindspore/runtime/event.py +209 -0
- mindspore/runtime/executor.py +177 -0
- mindspore/runtime/memory.py +409 -0
- mindspore/runtime/stream.py +460 -0
- mindspore/runtime/thread_bind_core.py +401 -0
- mindspore/safeguard/rewrite_obfuscation.py +12 -9
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/__init__.py +8 -8
- mindspore/train/_utils.py +88 -25
- mindspore/train/amp.py +9 -5
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +53 -55
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_early_stop.py +1 -1
- mindspore/train/callback/_flops_collector.py +103 -68
- mindspore/train/callback/_history.py +8 -5
- mindspore/train/callback/_lambda_callback.py +2 -2
- mindspore/train/callback/_landscape.py +0 -3
- mindspore/train/callback/_loss_monitor.py +2 -1
- mindspore/train/callback/_on_request_exit.py +6 -5
- mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
- mindspore/train/callback/_summary_collector.py +52 -19
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -107
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +15 -16
- mindspore/train/loss_scale_manager.py +8 -7
- mindspore/train/metrics/accuracy.py +3 -3
- mindspore/train/metrics/confusion_matrix.py +9 -9
- mindspore/train/metrics/error.py +3 -3
- mindspore/train/metrics/hausdorff_distance.py +4 -4
- mindspore/train/metrics/mean_surface_distance.py +3 -3
- mindspore/train/metrics/metric.py +0 -12
- mindspore/train/metrics/occlusion_sensitivity.py +4 -2
- mindspore/train/metrics/precision.py +11 -10
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +174 -46
- mindspore/train/model.py +184 -113
- mindspore/train/serialization.py +622 -978
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +2 -3
- mindspore/train/train_thor/model_thor.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +6 -3
- mindspore/utils/dryrun.py +140 -0
- mindspore/utils/hooks.py +81 -0
- mindspore/utils/runtime_execution_order_check.py +550 -0
- mindspore/utils/utils.py +138 -4
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +3 -3
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +587 -418
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +1 -1
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/common/_tensor_overload.py +0 -139
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_aclnn_implement.py +0 -263
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/gen_pyboost_func.py +0 -1052
- mindspore/ops_generate/gen_utils.py +0 -209
- mindspore/ops_generate/op_proto.py +0 -145
- mindspore/ops_generate/template.py +0 -261
- mindspore/profiler/envprofiling.py +0 -254
- mindspore/profiler/profiling.py +0 -1926
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2020-
|
|
1
|
+
# Copyright 2020-2025 Huawei Technologies Co., Ltd
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -25,7 +25,7 @@ from abc import abstractmethod, ABCMeta
|
|
|
25
25
|
from packaging import version
|
|
26
26
|
import numpy as np
|
|
27
27
|
from mindspore import log as logger
|
|
28
|
-
from mindspore.
|
|
28
|
+
from mindspore.log import vlog_print
|
|
29
29
|
from ..version import __version__
|
|
30
30
|
|
|
31
31
|
|
|
@@ -258,7 +258,7 @@ class AscendEnvChecker(EnvChecker):
|
|
|
258
258
|
|
|
259
259
|
def __init__(self, library_path):
|
|
260
260
|
self.library_path = library_path
|
|
261
|
-
self.version = ["7.
|
|
261
|
+
self.version = ["7.6", "7.7"]
|
|
262
262
|
|
|
263
263
|
# env
|
|
264
264
|
self.path = os.getenv("PATH")
|
|
@@ -275,6 +275,7 @@ class AscendEnvChecker(EnvChecker):
|
|
|
275
275
|
self.python_path_check = "opp/built-in/op_impl/ai_core/tbe"
|
|
276
276
|
self.ld_lib_path_check_fwk = "/lib64"
|
|
277
277
|
self.ascend_opp_path_check = "/op"
|
|
278
|
+
self.ascend_opp_kernel_path_check = "/opp_kernel"
|
|
278
279
|
self.v = ""
|
|
279
280
|
|
|
280
281
|
@staticmethod
|
|
@@ -286,12 +287,6 @@ class AscendEnvChecker(EnvChecker):
|
|
|
286
287
|
|
|
287
288
|
def check_custom_version(self):
|
|
288
289
|
"""custom op version check"""
|
|
289
|
-
custom_ascendc_soc_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)),
|
|
290
|
-
"../lib/plugin/ascend/custom_ascendc_910b/op_impl/ai_core/tbe/kernel",
|
|
291
|
-
MSContext.get_instance().get_ascend_soc_version())
|
|
292
|
-
if not os.path.exists(custom_ascendc_soc_dir):
|
|
293
|
-
logger.debug(f"The path {custom_ascendc_soc_dir} of the custom ascend c operator does not exist.")
|
|
294
|
-
return False
|
|
295
290
|
|
|
296
291
|
if not Path(self.compiler_version).is_file():
|
|
297
292
|
return True
|
|
@@ -347,27 +342,35 @@ class AscendEnvChecker(EnvChecker):
|
|
|
347
342
|
logger.warning(f"MindSpore version {mindspore_version} and \"te\" wheel package version {v} does not "
|
|
348
343
|
"match. For details, refer to the installation guidelines: "
|
|
349
344
|
"https://www.mindspore.cn/install")
|
|
350
|
-
from hccl import sys_version as hccl_version
|
|
351
|
-
v = '.'.join(hccl_version.__sys_version__.split('.')[0:2])
|
|
352
|
-
if v not in supported_version:
|
|
353
|
-
attention_warning = True
|
|
354
|
-
logger.warning(f"MindSpore version {mindspore_version} and \"hccl\" wheel package version {v} does not "
|
|
355
|
-
"match. For details, refer to the installation guidelines: "
|
|
356
|
-
"https://www.mindspore.cn/install")
|
|
357
345
|
# DO NOT modify exception type to any other, you DO NOT know what kind of exceptions the te will throw.
|
|
358
346
|
# pylint: disable=broad-except
|
|
359
347
|
except Exception as e:
|
|
360
348
|
logger.error(f"CheckFailed: {e}")
|
|
361
|
-
logger.
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
"https://www.mindspore.cn/install")
|
|
349
|
+
logger.critical("MindSpore relies on whl packages of \"te\" in the \"latest\" folder of the "
|
|
350
|
+
"Ascend AI software package (Ascend Data Center Solution). Please check whether they are "
|
|
351
|
+
"installed correctly or not, refer to the match info on: https://www.mindspore.cn/install")
|
|
365
352
|
if attention_warning:
|
|
366
353
|
warning_countdown = 3
|
|
367
354
|
for i in range(warning_countdown, 0, -1):
|
|
368
355
|
logger.warning(f"Please pay attention to the above warning, countdown: {i}")
|
|
369
356
|
time.sleep(1)
|
|
370
357
|
|
|
358
|
+
def check_opp_kernel(self):
|
|
359
|
+
"""
|
|
360
|
+
opp kernel install check
|
|
361
|
+
"""
|
|
362
|
+
from mindspore._c_expression import MSContext
|
|
363
|
+
soc_version = MSContext.get_instance().get_ascend_soc_version()
|
|
364
|
+
if soc_version == "ascend310":
|
|
365
|
+
return
|
|
366
|
+
|
|
367
|
+
opp_kernel_path = self.ascend_opp_path.replace("opp", "opp_kernel")
|
|
368
|
+
if not os.path.exists(opp_kernel_path):
|
|
369
|
+
logger.critical("MindSpore relies on \"Ascend opp_kernel\" folder of the Ascend AI software package ("
|
|
370
|
+
"Ascend Data Center Solution). Please check whether they are installed correctly or not, "
|
|
371
|
+
"refer to the match info on: https://www.mindspore.cn/install")
|
|
372
|
+
raise Exception("Ascend opp_kernel is not installed")
|
|
373
|
+
|
|
371
374
|
def set_env(self):
|
|
372
375
|
curr_path = os.path.realpath(os.path.dirname(__file__))
|
|
373
376
|
cust_aicpu_path = os.path.realpath(os.path.join(curr_path, "../lib/plugin/ascend/custom_aicpu_ops"))
|
|
@@ -396,6 +399,8 @@ class AscendEnvChecker(EnvChecker):
|
|
|
396
399
|
# check te version after set te env
|
|
397
400
|
self.check_deps_version()
|
|
398
401
|
|
|
402
|
+
self.check_opp_kernel()
|
|
403
|
+
|
|
399
404
|
def _check_env(self):
|
|
400
405
|
"""ascend dependence path check"""
|
|
401
406
|
if self.path is None or self.path_check not in self.path:
|
|
@@ -472,6 +477,7 @@ def check_version_and_env_config():
|
|
|
472
477
|
logger.warning("Pre-Load Library libgomp.so.1 failed, which might cause TLS memory allocation failure. If "
|
|
473
478
|
"the failure occurs, please refer to the FAQ for a solution: "
|
|
474
479
|
"https://www.mindspore.cn/docs/en/master/faq/installation.html.")
|
|
480
|
+
from mindspore._c_expression import MSContext, ms_ctx_param
|
|
475
481
|
MSContext.get_instance().register_check_env_callback(check_env)
|
|
476
482
|
MSContext.get_instance().register_set_env_callback(set_env)
|
|
477
483
|
MSContext.get_instance().set_device_target_inner(MSContext.get_instance().get_param(ms_ctx_param.device_target))
|
|
@@ -516,3 +522,4 @@ def _add_cuda_path():
|
|
|
516
522
|
_set_pb_env()
|
|
517
523
|
check_version_and_env_config()
|
|
518
524
|
_add_cuda_path()
|
|
525
|
+
vlog_print("1", "ME", __file__, sys._getframe().f_lineno, "Initialization MindSpore.")
|
mindspore/run_check/run_check.py
CHANGED
|
@@ -47,7 +47,7 @@ def _check_mul():
|
|
|
47
47
|
def run_check():
|
|
48
48
|
"""
|
|
49
49
|
Provide a convenient API to check if the installation is successful or failed.
|
|
50
|
-
If the version in the check result is not
|
|
50
|
+
If the version in the check result is not as expected, use :func:`mindspore.set_context` to set device_target
|
|
51
51
|
before run_check().
|
|
52
52
|
|
|
53
53
|
Examples:
|
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
"""
|
|
17
|
+
The runtime interface.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
from mindspore.runtime.executor import launch_blocking, dispatch_threads_num, set_cpu_affinity, set_kernel_launch_group
|
|
21
|
+
from mindspore.runtime.memory import set_memory, memory_stats, memory_reserved, max_memory_reserved, empty_cache,\
|
|
22
|
+
reset_peak_memory_stats, memory_summary, memory_allocated,\
|
|
23
|
+
max_memory_allocated, reset_max_memory_reserved, reset_max_memory_allocated
|
|
24
|
+
from mindspore.runtime.stream import Stream, synchronize, set_cur_stream, current_stream, \
|
|
25
|
+
default_stream, communication_stream, StreamCtx
|
|
26
|
+
from mindspore.runtime.event import Event
|
|
27
|
+
from .executor import launch_blocking
|
|
28
|
+
|
|
29
|
+
__all__ = [
|
|
30
|
+
"launch_blocking", "dispatch_threads_num", "set_cpu_affinity", "set_kernel_launch_group",
|
|
31
|
+
"Stream", "communication_stream", "synchronize", "set_cur_stream", "current_stream", "default_stream", "StreamCtx",
|
|
32
|
+
"set_memory", "memory_stats", "memory_reserved", "max_memory_reserved", "empty_cache", "reset_peak_memory_stats",
|
|
33
|
+
"memory_summary", "memory_allocated", "max_memory_allocated", "reset_max_memory_reserved",
|
|
34
|
+
"reset_max_memory_allocated", "Event"
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
__all__.sort()
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Copyright 2025 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
|
+
"""Runtime inner interfaces."""
|
|
17
|
+
|
|
18
|
+
from mindspore import log as logger
|
|
19
|
+
import mindspore as ms
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _is_supported():
|
|
23
|
+
device_target = ms.context.get_context("device_target")
|
|
24
|
+
if device_target == 'CPU':
|
|
25
|
+
logger.error(f"CPU device is not supported. Please use correct device")
|
|
26
|
+
return False
|
|
27
|
+
return True
|
|
@@ -0,0 +1,209 @@
|
|
|
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
|
+
"""Runtime event class"""
|
|
16
|
+
from mindspore._c_expression import Event as Event_
|
|
17
|
+
from mindspore._c_expression import Stream as Stream_
|
|
18
|
+
from mindspore._c_expression import current_stream as current_stream_
|
|
19
|
+
from mindspore import _checkparam as Validator
|
|
20
|
+
from .device import _is_supported
|
|
21
|
+
|
|
22
|
+
function_event_status = {'Event': False, 'wait': False}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Event(Event_):
|
|
26
|
+
r"""
|
|
27
|
+
Wrapper around a device event.
|
|
28
|
+
|
|
29
|
+
Device events are synchronization markers that can be used to monitor the device’s progress,
|
|
30
|
+
to accurately measure timing, and to synchronize device streams.
|
|
31
|
+
|
|
32
|
+
The underlying device events are lazily initialized when the event is first recorded.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
enable_timing (bool, optional): indicates if the event should measure time (default: ``False``)
|
|
36
|
+
blocking (bool, optional): if ``True``, `wait` will be blocking (default: ``False``)
|
|
37
|
+
|
|
38
|
+
Supported Platforms:
|
|
39
|
+
``Ascend`` ``GPU``
|
|
40
|
+
|
|
41
|
+
Examples:
|
|
42
|
+
>>> import mindspore as ms
|
|
43
|
+
>>> import numpy as np
|
|
44
|
+
>>> from mindspore import Tensor, ops
|
|
45
|
+
>>> ms.set_device("Ascend", 0)
|
|
46
|
+
>>> start = ms.runtime.Event(enable_timing=True)
|
|
47
|
+
>>> end = ms.runtime.Event(enable_timing=True)
|
|
48
|
+
>>> s1 = ms.runtime.Stream()
|
|
49
|
+
>>> s2 = ms.runtime.Stream()
|
|
50
|
+
>>> a = Tensor(np.ones([2, 2]), ms.float32)
|
|
51
|
+
>>> b = Tensor(np.ones([2, 2]), ms.float32)
|
|
52
|
+
>>> c = Tensor(np.ones([2, 2]), ms.float32)
|
|
53
|
+
>>> with ms.runtime.StreamCtx(s1):
|
|
54
|
+
... d = ops.matmul(a, b)
|
|
55
|
+
... start.record()
|
|
56
|
+
>>> c += 2
|
|
57
|
+
>>> end.record()
|
|
58
|
+
>>> with ms.runtime.StreamCtx(s2):
|
|
59
|
+
... start.synchronize()
|
|
60
|
+
... end.synchronize()
|
|
61
|
+
... e = c + d
|
|
62
|
+
>>> ms.runtime.synchronize()
|
|
63
|
+
>>> print(e)
|
|
64
|
+
[[5. 5.]
|
|
65
|
+
[5. 5.]]
|
|
66
|
+
>>> elapsed_time = start.elapsed_time(end)
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
def __init__(self, enable_timing=False, blocking=False):
|
|
70
|
+
if not function_event_status['Event']:
|
|
71
|
+
function_event_status['Event'] = True
|
|
72
|
+
if not _is_supported():
|
|
73
|
+
return
|
|
74
|
+
# pylint: disable=useless-super-delegation
|
|
75
|
+
Validator.check_bool(enable_timing, "enable_timing", "Event")
|
|
76
|
+
Validator.check_bool(blocking, "blocking", "Event")
|
|
77
|
+
super().__init__(enable_timing, blocking)
|
|
78
|
+
|
|
79
|
+
def record(self, stream=None):
|
|
80
|
+
r"""
|
|
81
|
+
Records the event in a given stream.
|
|
82
|
+
|
|
83
|
+
Uses :func:`mindspore.runtime.current_stream()` if no `stream` is specified. The
|
|
84
|
+
stream's device must match the event's device.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
stream (Stream, optional): a stream to record. If this argument is ``None``,
|
|
88
|
+
current stream will be used. Default value: ``None``.
|
|
89
|
+
|
|
90
|
+
Raises:
|
|
91
|
+
TypeError: If 'stream' is neither a :class:`mindspore.runtime.Stream` nor a ``None``.
|
|
92
|
+
"""
|
|
93
|
+
if stream is None:
|
|
94
|
+
stream = current_stream_()
|
|
95
|
+
if not isinstance(stream, Stream_):
|
|
96
|
+
raise TypeError(
|
|
97
|
+
f"For 'record', the argument 'stream' should be Stream,"
|
|
98
|
+
f" but got {type(stream)}."
|
|
99
|
+
)
|
|
100
|
+
super().record(stream)
|
|
101
|
+
|
|
102
|
+
def wait(self, stream=None):
|
|
103
|
+
r"""
|
|
104
|
+
Makes all future work submitted to the given stream wait for this
|
|
105
|
+
event.
|
|
106
|
+
|
|
107
|
+
Use :func:`mindspore.runtime.current_stream()` if no `stream` is specified.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
stream (Stream, optional): a stream to record. If this argument is ``None``,
|
|
111
|
+
current stream will be used. Default value: ``None``.
|
|
112
|
+
|
|
113
|
+
Raises:
|
|
114
|
+
TypeError: If 'stream' is neither a :class:`mindspore.runtime.Stream` nor a ``None``.
|
|
115
|
+
|
|
116
|
+
Supported Platforms:
|
|
117
|
+
``Ascend`` ``GPU``
|
|
118
|
+
|
|
119
|
+
Examples:
|
|
120
|
+
>>> import mindspore as ms
|
|
121
|
+
>>> import numpy as np
|
|
122
|
+
>>> from mindspore import Tensor, ops
|
|
123
|
+
>>> ms.set_device("Ascend", 0)
|
|
124
|
+
>>> event = ms.runtime.Event()
|
|
125
|
+
>>> s1 = ms.runtime.Stream()
|
|
126
|
+
>>> s2 = ms.runtime.Stream()
|
|
127
|
+
>>> a = Tensor(np.ones([2, 2]), ms.float32)
|
|
128
|
+
>>> b = Tensor(np.ones([2, 2]), ms.float32)
|
|
129
|
+
>>> with ms.runtime.StreamCtx(s1):
|
|
130
|
+
... c = ops.matmul(a, b)
|
|
131
|
+
... event.record()
|
|
132
|
+
>>> event.wait()
|
|
133
|
+
>>> d = c + 2
|
|
134
|
+
>>> ms.runtime.synchronize()
|
|
135
|
+
>>> print(d)
|
|
136
|
+
[[4. 4.]
|
|
137
|
+
[4. 4.]]
|
|
138
|
+
"""
|
|
139
|
+
if not function_event_status['wait']:
|
|
140
|
+
function_event_status['wait'] = True
|
|
141
|
+
if not _is_supported():
|
|
142
|
+
return
|
|
143
|
+
if stream is None:
|
|
144
|
+
stream = current_stream_()
|
|
145
|
+
if not isinstance(stream, Stream_):
|
|
146
|
+
raise TypeError(
|
|
147
|
+
f"For 'wait', the argument 'stream' should be Stream,"
|
|
148
|
+
f" but got {type(stream)}."
|
|
149
|
+
)
|
|
150
|
+
super().wait(stream)
|
|
151
|
+
|
|
152
|
+
def synchronize(self):
|
|
153
|
+
r"""
|
|
154
|
+
Waits for the event to complete.
|
|
155
|
+
|
|
156
|
+
Waits until the completion of all work currently captured in this event.
|
|
157
|
+
This prevents the CPU thread from proceeding until the event completes.
|
|
158
|
+
"""
|
|
159
|
+
# pylint: disable=useless-super-delegation
|
|
160
|
+
super().synchronize()
|
|
161
|
+
|
|
162
|
+
def query(self):
|
|
163
|
+
r"""
|
|
164
|
+
Checks if all work currently captured by event has completed.
|
|
165
|
+
|
|
166
|
+
Returns:
|
|
167
|
+
A boolean indicating if all work currently captured by event has completed.
|
|
168
|
+
|
|
169
|
+
Supported Platforms:
|
|
170
|
+
``Ascend`` ``GPU``
|
|
171
|
+
|
|
172
|
+
Examples:
|
|
173
|
+
>>> import mindspore as ms
|
|
174
|
+
>>> import numpy as np
|
|
175
|
+
>>> from mindspore import Tensor, ops
|
|
176
|
+
>>> ms.set_device("Ascend", 0)
|
|
177
|
+
>>> a = Tensor(np.ones([1024, 2048]), ms.float32)
|
|
178
|
+
>>> b = Tensor(np.ones([2048, 4096]), ms.float32)
|
|
179
|
+
>>> s1 = ms.runtime.Stream()
|
|
180
|
+
>>> with ms.runtime.StreamCtx(s1):
|
|
181
|
+
... c = ops.matmul(a, b)
|
|
182
|
+
... ev = s1.record_event()
|
|
183
|
+
>>> s1.synchronize()
|
|
184
|
+
>>> assert ev.query()
|
|
185
|
+
"""
|
|
186
|
+
# pylint: disable=useless-super-delegation
|
|
187
|
+
return super().query()
|
|
188
|
+
|
|
189
|
+
def elapsed_time(self, end_event):
|
|
190
|
+
r"""
|
|
191
|
+
Returns the time elapsed in milliseconds after the event was
|
|
192
|
+
recorded and before the end_event was recorded.
|
|
193
|
+
|
|
194
|
+
Args:
|
|
195
|
+
end_event (Event): end event.
|
|
196
|
+
|
|
197
|
+
Returns:
|
|
198
|
+
float, the time elapsed in milliseconds.
|
|
199
|
+
|
|
200
|
+
Raises:
|
|
201
|
+
TypeError: If 'end_event' is not a :class:`mindspore.runtime.Event`.
|
|
202
|
+
"""
|
|
203
|
+
# pylint: disable=useless-super-delegation
|
|
204
|
+
if not isinstance(end_event, Event):
|
|
205
|
+
raise TypeError(
|
|
206
|
+
f"For 'elapsed_time', the argument 'end_event' should be Event,"
|
|
207
|
+
f" but got {type(end_event)}."
|
|
208
|
+
)
|
|
209
|
+
return super().elapsed_time(end_event)
|
|
@@ -0,0 +1,177 @@
|
|
|
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
|
+
"""Executor manager interfaces."""
|
|
17
|
+
from mindspore._c_expression import RuntimeConf
|
|
18
|
+
from mindspore.runtime.thread_bind_core import _get_cpu_affinity_policy
|
|
19
|
+
from mindspore._checkparam import args_type_check
|
|
20
|
+
from mindspore import _checkparam as Validator
|
|
21
|
+
from mindspore import log as logger
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def launch_blocking():
|
|
26
|
+
"""
|
|
27
|
+
Indicates that synchronizing the execution of the startup device reduces the execution performance of the program.
|
|
28
|
+
|
|
29
|
+
- In the initial state when this interface is not called, the operator executes asynchronously on the device.
|
|
30
|
+
In this case, when an error occurs in the execution of the operator,
|
|
31
|
+
it will not be possible to locate the position of the particular error script code.
|
|
32
|
+
- When this interface is called, the operator is executed in a synchronized manner on the device.
|
|
33
|
+
At this point, when an error occurs in the execution of the operator,
|
|
34
|
+
the location of the erroneous script code can be located based on the error call stack.
|
|
35
|
+
|
|
36
|
+
Examples:
|
|
37
|
+
>>> import mindspore as ms
|
|
38
|
+
>>> ms.set_device("Ascend", 1)
|
|
39
|
+
>>> ms.runtime.launch_blocking()
|
|
40
|
+
"""
|
|
41
|
+
return RuntimeConf.get_instance().set_launch_blocking()
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@args_type_check(threads_num=int)
|
|
45
|
+
def dispatch_threads_num(threads_num):
|
|
46
|
+
"""
|
|
47
|
+
Set the threads number of runtime used.
|
|
48
|
+
|
|
49
|
+
The framework set the runtime number of threads are 5 by default.
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
threads_num (int): The threads number of runtime used.
|
|
53
|
+
|
|
54
|
+
Examples:
|
|
55
|
+
>>> import mindspore as ms
|
|
56
|
+
>>> ms.set_device("Ascend", 1)
|
|
57
|
+
>>> ms.runtime.dispatch_threads_num(6)
|
|
58
|
+
"""
|
|
59
|
+
if RuntimeConf.get_instance().is_dispatch_threads_num_configured():
|
|
60
|
+
raise RuntimeError("The 'dispatch_threads_num' can not be set repeatedly.")
|
|
61
|
+
|
|
62
|
+
threads_num = Validator.check_positive_int(threads_num, "threads_num")
|
|
63
|
+
|
|
64
|
+
return RuntimeConf.get_instance().set_dispatch_threads_num(threads_num)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@args_type_check(enable_affinity=bool, affinity_cpu_list=dict)
|
|
68
|
+
def set_cpu_affinity(enable_affinity, affinity_cpu_list=None):
|
|
69
|
+
"""
|
|
70
|
+
Enable thread-level core binding to assign specific CPU cores to MindSpore's main modules (main thread, pynative,
|
|
71
|
+
runtime, minddata), to prevent unstable performance caused by MindSpore's threads seizing CPU.
|
|
72
|
+
|
|
73
|
+
Note:
|
|
74
|
+
- Provides two binding modes: 1. Automatically generates binding policies based on available CPUs, NUMA nodes,
|
|
75
|
+
and device resources in the environment to bind cores at thread level. 2. Thread-level bonding based on
|
|
76
|
+
customized bonding policies passed in by `affinity_cpu_list`.
|
|
77
|
+
|
|
78
|
+
- The automated bind-core policy generation scenario invokes system commands to obtain CPU, NUMA node, and
|
|
79
|
+
device resources on the environment, and some commands cannot be executed successfully due to environment
|
|
80
|
+
differences; the automated bind-core policy generated will vary according to the resources available on the
|
|
81
|
+
environment:
|
|
82
|
+
|
|
83
|
+
1. `cat /sys/fs/cgroup/cpuset/cpuset.cpus`, to obtain the available CPU resources on the environment; if the
|
|
84
|
+
execution of this command fails, the bind-core function will not take effect.
|
|
85
|
+
2. `npu-smi info -m`, get the available NPU resources on the environment; if the execution of this command
|
|
86
|
+
fails, the bind-core policy will be generated only based on the available CPU resources,
|
|
87
|
+
without considering the device affinity.
|
|
88
|
+
3. `npu-smi info -t board -i {NPU_ID} -c {CHIP_ID}`, get NPU details based on the logical ID of the device;
|
|
89
|
+
if the execution of this command fails, the bind-core policy is generated based on the available CPU
|
|
90
|
+
resources only, regardless of device affinity.
|
|
91
|
+
4. `lspci -s {PCIe_No} -vvv`, get the hardware information of the device on the environment; if the execution
|
|
92
|
+
of this command fails, the bind-core policy is generated only based on the available CPU resources,
|
|
93
|
+
without considering the device affinity.
|
|
94
|
+
5. `lscpu`, get information about CPUs and NUMA nodes on the environment; if the execution of this command
|
|
95
|
+
fails, only the available CPU resources are used to generate the bind-core policy, without considering
|
|
96
|
+
the device affinity.
|
|
97
|
+
|
|
98
|
+
Args:
|
|
99
|
+
enable_affinity (bool): Switches on/off thread-level core binding.
|
|
100
|
+
affinity_cpu_list (dict, optional): Specifies a customized bind-core policy. The key to be passed
|
|
101
|
+
into the dict needs to be in string ``"deviceX"`` format, and the value needs to be in list
|
|
102
|
+
``["cpuidX-cpuidY"]`` format. Default: ``None``, i.e., use the bind-core policy generated automatically
|
|
103
|
+
based on the environment. It is allowed to pass the empty dict ``{}``, in which case the bind-core
|
|
104
|
+
policy generated automatically based on the environment will be used.
|
|
105
|
+
|
|
106
|
+
Raises:
|
|
107
|
+
TypeError: The parameter `enable_affinity` is not a boolean.
|
|
108
|
+
TypeError: The parameter `affinity_cpu_list` is neither a dictionary nor a ``None``.
|
|
109
|
+
ValueError: The key of parameter `affinity_cpu_list` is not a string.
|
|
110
|
+
ValueError: The key of parameter `affinity_cpu_list` is not in ``"deviceX"`` format.
|
|
111
|
+
ValueError: The parameter `affinity_cpu_list` has a value that is not a list.
|
|
112
|
+
ValueError: The element in value of parameter `affinity_cpu_list` is not a string.
|
|
113
|
+
ValueError: The element in value for parameter `affinity_cpu_list` does not match ``["cpuidX-cpuidY"]``.
|
|
114
|
+
RuntimeError: Automatically generated binding policy or customized binding policy scenario where the number
|
|
115
|
+
of CPU cores assigned to each device is less than 7.
|
|
116
|
+
RuntimeError: A custom-specified binding policy scenario where the CPU assigned to a device is not
|
|
117
|
+
available in the environment.
|
|
118
|
+
RuntimeError: The `mindspore.runtime.set_cpu_affinity` API is called repeatedly.
|
|
119
|
+
|
|
120
|
+
Examples:
|
|
121
|
+
>>> import mindspore as ms
|
|
122
|
+
>>> ms.set_device("Ascend", 1)
|
|
123
|
+
>>> ms.runtime.set_cpu_affinity(True)
|
|
124
|
+
>>>
|
|
125
|
+
>>> import mindspore as ms
|
|
126
|
+
>>> ms.set_device("Ascend", 1)
|
|
127
|
+
>>> ms.runtime.set_cpu_affinity(True, {"device0":["0-9"],"device1":["10-15","20-29"],"device2":["35-45"]})
|
|
128
|
+
"""
|
|
129
|
+
if RuntimeConf.get_instance().is_thread_bind_core_configured():
|
|
130
|
+
raise RuntimeError("The 'mindspore.runtime.set_cpu_affinity' cannot be set repeatedly.")
|
|
131
|
+
if enable_affinity:
|
|
132
|
+
module_bind_core_policy, bind_policy_flag = _get_cpu_affinity_policy(affinity_cpu_list)
|
|
133
|
+
if not module_bind_core_policy:
|
|
134
|
+
logger.warning("set_cpu_affinity is not enabled because the environment does not meet the "
|
|
135
|
+
"basic conditions for binding core.")
|
|
136
|
+
RuntimeConf.get_instance().set_thread_bind_core_configured()
|
|
137
|
+
return
|
|
138
|
+
if bind_policy_flag:
|
|
139
|
+
RuntimeConf.get_instance().thread_bind_core_with_policy(module_bind_core_policy)
|
|
140
|
+
else:
|
|
141
|
+
RuntimeConf.get_instance().thread_bind_core(module_bind_core_policy)
|
|
142
|
+
else:
|
|
143
|
+
RuntimeConf.get_instance().set_thread_bind_core_configured()
|
|
144
|
+
return
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
@args_type_check(thread_num=int, kernel_group_num=int)
|
|
148
|
+
def set_kernel_launch_group(thread_num=2, kernel_group_num=8):
|
|
149
|
+
"""
|
|
150
|
+
O0 mode supports operator batch parallel delivery interface, supports enabling
|
|
151
|
+
parallel delivery, and configures parallel number.
|
|
152
|
+
|
|
153
|
+
Args:
|
|
154
|
+
thread_num (int, optional): The number of concurrent threads, generally not recommended
|
|
155
|
+
to increase. The `thread_num` and the number of threads configured by the existing interface
|
|
156
|
+
mindspore.runtime.dispatch_threads_num are independent of each other. Default value is ``2``.
|
|
157
|
+
kernel_group_num (int, optional): Total number of operator groups,
|
|
158
|
+
kernel_group_num/thread_num groups per thread. Default value is ``8``.
|
|
159
|
+
|
|
160
|
+
Examples:
|
|
161
|
+
>>> import mindspore as ms
|
|
162
|
+
>>> ms.runtime.set_kernel_launch_group(thread_num=2, kernel_group_num=8)
|
|
163
|
+
"""
|
|
164
|
+
if RuntimeConf.get_instance().is_kernel_launch_group_configured():
|
|
165
|
+
raise RuntimeError("The 'kernel_launch_group' can not be set repeatedly.")
|
|
166
|
+
|
|
167
|
+
if thread_num < 1:
|
|
168
|
+
raise ValueError(f"The value of thread_num should be at least 1, but got {thread_num}")
|
|
169
|
+
|
|
170
|
+
if kernel_group_num < 1:
|
|
171
|
+
raise ValueError(f"The value of kernel_group_num should be at least 1, but got {kernel_group_num}")
|
|
172
|
+
|
|
173
|
+
if (kernel_group_num % thread_num) != 0:
|
|
174
|
+
raise ValueError(f"Invalid parameter value, kernel_group_num: {kernel_group_num} cannot "
|
|
175
|
+
f"be evenly divisible by thread_num: {thread_num}")
|
|
176
|
+
|
|
177
|
+
return RuntimeConf.get_instance().set_kernel_launch_group(thread_num, kernel_group_num)
|