mindspore 2.4.10__cp39-cp39-win_amd64.whl → 2.6.0__cp39-cp39-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/__init__.py +13 -6
- mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp39-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/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/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/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/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/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/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/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 +564 -395
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/entry_points.txt +1 -1
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/common/_tensor_overload.py +0 -139
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_aclnn_implement.py +0 -263
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/gen_pyboost_func.py +0 -1052
- mindspore/ops_generate/gen_utils.py +0 -209
- mindspore/ops_generate/op_proto.py +0 -145
- mindspore/ops_generate/template.py +0 -261
- mindspore/profiler/envprofiling.py +0 -254
- mindspore/profiler/profiling.py +0 -1926
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/WHEEL +0 -0
- {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,517 @@
|
|
|
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
|
+
This module defines the OpTemplateParser class for parsing operator prototypes.
|
|
17
|
+
|
|
18
|
+
The OpTemplateParser class is responsible for converting attributes of OpProto instances into strings
|
|
19
|
+
that can be directly used to fill in code templates. It handles the parsing of argument types,
|
|
20
|
+
function signatures, and generates conversion stubs for PyBoost operations.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
import re
|
|
24
|
+
|
|
25
|
+
import common.gen_constants as K
|
|
26
|
+
from common.template import Template
|
|
27
|
+
from common.op_proto import OpProto
|
|
28
|
+
|
|
29
|
+
from . import pyboost_utils
|
|
30
|
+
from .pyboost_utils import get_input_dtype, tuple_input_to_cpp_type, get_return_type, \
|
|
31
|
+
number_input_to_cpp_type, get_const_number_convert, get_tuple_input_convert, is_optional_param, \
|
|
32
|
+
get_input_args_type_str
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class OpTemplateParser:
|
|
36
|
+
"""
|
|
37
|
+
Parses operator prototypes and generates template-compatible strings.
|
|
38
|
+
|
|
39
|
+
This class converts the attributes of an OpProto instance into the strings needed for code generation
|
|
40
|
+
in PyBoost operations.
|
|
41
|
+
|
|
42
|
+
Attributes:
|
|
43
|
+
op_proto (OpProto): The operator prototype containing the relevant information.
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
def __init__(self, op_proto: OpProto):
|
|
47
|
+
self.op_proto = op_proto
|
|
48
|
+
|
|
49
|
+
def _parse_call_args_types(self, op_args):
|
|
50
|
+
"""
|
|
51
|
+
Parses the data types of the call arguments for the operator.
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
op_args (list): A list of operator arguments.
|
|
55
|
+
|
|
56
|
+
Returns:
|
|
57
|
+
list: A list of data types for the call arguments.
|
|
58
|
+
"""
|
|
59
|
+
call_args_types = []
|
|
60
|
+
for op_arg in op_args:
|
|
61
|
+
is_optional = is_optional_param(op_arg)
|
|
62
|
+
call_args_types.append(get_input_dtype(
|
|
63
|
+
op_arg.arg_dtype, is_optional))
|
|
64
|
+
return call_args_types
|
|
65
|
+
|
|
66
|
+
def parse_call_args_with_types(self):
|
|
67
|
+
"""
|
|
68
|
+
Parses the original call arguments and their types for the operator.
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
list: A list of formatted strings representing the call arguments with their types.
|
|
72
|
+
"""
|
|
73
|
+
call_args = self.parse_original_call_args(self.op_proto.op_args)
|
|
74
|
+
call_args_types = self._parse_call_args_types(self.op_proto.op_args)
|
|
75
|
+
call_args_with_types = []
|
|
76
|
+
for type_name, arg_name in zip(call_args_types, call_args):
|
|
77
|
+
call_args_with_types.append("const " + type_name + " &" + arg_name)
|
|
78
|
+
return call_args_with_types
|
|
79
|
+
|
|
80
|
+
def parse_need_malloc_tensors(self):
|
|
81
|
+
"""
|
|
82
|
+
Parses the operator arguments to identify which tensors require memory allocation.
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
tuple: A tuple containing:
|
|
86
|
+
- need_malloc_tensors (list): Arguments that need memory allocation.
|
|
87
|
+
- tensor_list_convert (list): Conversions needed for tensor lists.
|
|
88
|
+
- call_args_with_tensor (list): The call arguments formatted for tensors.
|
|
89
|
+
"""
|
|
90
|
+
need_malloc_tensors = []
|
|
91
|
+
tensor_list_convert = []
|
|
92
|
+
call_args_with_tensor = []
|
|
93
|
+
call_args = self.parse_original_call_args(self.op_proto.op_args)
|
|
94
|
+
for op_arg, call_arg in zip(self.op_proto.op_args, call_args):
|
|
95
|
+
if pyboost_utils.is_tensor(op_arg):
|
|
96
|
+
call_arg = op_arg.arg_name + "_tensor"
|
|
97
|
+
need_malloc_tensors.append(call_arg)
|
|
98
|
+
call_args_with_tensor.append(call_arg)
|
|
99
|
+
elif tuple_input_to_cpp_type(op_arg.arg_dtype) and pyboost_utils.is_tensor_list(op_arg):
|
|
100
|
+
need_malloc_tensors.append(call_arg + "_vector")
|
|
101
|
+
tensor_list_convert.append(
|
|
102
|
+
get_tuple_input_convert(call_arg, op_arg.arg_dtype))
|
|
103
|
+
call_args_with_tensor.append(call_arg + "_vector")
|
|
104
|
+
else:
|
|
105
|
+
call_args_with_tensor.append(call_arg)
|
|
106
|
+
return need_malloc_tensors, tensor_list_convert, call_args_with_tensor
|
|
107
|
+
|
|
108
|
+
def parse_original_call_args(self, op_args):
|
|
109
|
+
"""
|
|
110
|
+
Parses the original call arguments from the operator prototype.
|
|
111
|
+
|
|
112
|
+
Args:
|
|
113
|
+
op_args (list): A list of operator arguments.
|
|
114
|
+
|
|
115
|
+
Returns:
|
|
116
|
+
list: A list of formatted strings representing the original call arguments.
|
|
117
|
+
"""
|
|
118
|
+
call_args = []
|
|
119
|
+
for op_arg in op_args:
|
|
120
|
+
if pyboost_utils.is_tensor(op_arg):
|
|
121
|
+
call_arg = op_arg.arg_name + "_tensor"
|
|
122
|
+
elif pyboost_utils.is_tensor_list(op_arg):
|
|
123
|
+
call_arg = op_arg.arg_name + "_tensor_list"
|
|
124
|
+
else:
|
|
125
|
+
call_arg = op_arg.arg_name
|
|
126
|
+
call_args.append(call_arg)
|
|
127
|
+
return call_args
|
|
128
|
+
|
|
129
|
+
def op_args_converter(self):
|
|
130
|
+
"""
|
|
131
|
+
Converts operator arguments to the corresponding C++ data types.
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
tuple: A tuple containing:
|
|
135
|
+
- call_args_after_convert (list): The converted call arguments.
|
|
136
|
+
- value_tuple_convert (list): Conversions needed for value tuples.
|
|
137
|
+
- const_number_convert (list): Conversions needed for constant numbers.
|
|
138
|
+
"""
|
|
139
|
+
call_args_after_convert = []
|
|
140
|
+
value_tuple_convert = []
|
|
141
|
+
const_number_convert = []
|
|
142
|
+
call_args = self.parse_original_call_args(self.op_proto.op_args)
|
|
143
|
+
for op_arg, call_arg in zip(self.op_proto.op_args, call_args):
|
|
144
|
+
if number_input_to_cpp_type(op_arg.arg_dtype):
|
|
145
|
+
call_args_after_convert.append(call_arg + "_imm")
|
|
146
|
+
const_number_convert.append(
|
|
147
|
+
get_const_number_convert(call_arg, op_arg))
|
|
148
|
+
elif tuple_input_to_cpp_type(op_arg.arg_dtype):
|
|
149
|
+
call_args_after_convert.append(call_arg + "_vector")
|
|
150
|
+
value_tuple_convert.append(
|
|
151
|
+
get_tuple_input_convert(call_arg, op_arg.arg_dtype))
|
|
152
|
+
else:
|
|
153
|
+
call_args_after_convert.append(call_arg)
|
|
154
|
+
if const_number_convert:
|
|
155
|
+
const_number_convert.insert(
|
|
156
|
+
0, '// Convert ValuePtr to c++ scalar\n')
|
|
157
|
+
if value_tuple_convert:
|
|
158
|
+
value_tuple_convert.insert(0, '// ValueTuple to std::vector\n')
|
|
159
|
+
return call_args_after_convert, value_tuple_convert, const_number_convert
|
|
160
|
+
|
|
161
|
+
def get_pyboost_func_name(self):
|
|
162
|
+
"""
|
|
163
|
+
Gets the PyBoost function name based on the operator's class name.
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
str: The generated PyBoost function name.
|
|
167
|
+
"""
|
|
168
|
+
return "Pyboost_" + self.op_proto.op_class.name
|
|
169
|
+
|
|
170
|
+
def get_pyboost_name(self):
|
|
171
|
+
"""
|
|
172
|
+
Gets the PyBoost name for the operator.
|
|
173
|
+
|
|
174
|
+
Returns:
|
|
175
|
+
str: The generated PyBoost name for the operator.
|
|
176
|
+
"""
|
|
177
|
+
return "pyboost_" + self.op_proto.op_name
|
|
178
|
+
|
|
179
|
+
def get_op_def_name_str(self):
|
|
180
|
+
"""
|
|
181
|
+
Gets the operator definition name string.
|
|
182
|
+
|
|
183
|
+
Returns:
|
|
184
|
+
str: The generated operator definition name string.
|
|
185
|
+
"""
|
|
186
|
+
return "g" + self.op_proto.op_class.name
|
|
187
|
+
|
|
188
|
+
def gen_signature_same_type_table(self):
|
|
189
|
+
"""
|
|
190
|
+
Generates a signature table for arguments of the same type.
|
|
191
|
+
|
|
192
|
+
Returns:
|
|
193
|
+
tuple: A tuple containing:
|
|
194
|
+
- type_num (int): The number of argument types.
|
|
195
|
+
- signature_table (str): The generated signature table as a string.
|
|
196
|
+
"""
|
|
197
|
+
signature_table = ''
|
|
198
|
+
type_num = 0
|
|
199
|
+
args_signature = self.op_proto.op_args_signature
|
|
200
|
+
if args_signature is not None:
|
|
201
|
+
dtype_group = args_signature.dtype_group
|
|
202
|
+
indexes = {arg.arg_name: index for index,
|
|
203
|
+
arg in enumerate(self.op_proto.op_args)}
|
|
204
|
+
if dtype_group is not None:
|
|
205
|
+
match = re.findall(r'\((.*?)\)', dtype_group)
|
|
206
|
+
for item in match:
|
|
207
|
+
name_args = item.replace(' ', '').split(",")
|
|
208
|
+
signature_table += '{'
|
|
209
|
+
for arg in name_args:
|
|
210
|
+
arg_index = indexes[arg]
|
|
211
|
+
signature_table += f"""{arg_index}, """
|
|
212
|
+
signature_table = signature_table[:-2]
|
|
213
|
+
signature_table += '}, '
|
|
214
|
+
type_num += 1
|
|
215
|
+
signature_table = signature_table[:-2]
|
|
216
|
+
return type_num, signature_table
|
|
217
|
+
|
|
218
|
+
def get_call_args_tensor(self):
|
|
219
|
+
"""
|
|
220
|
+
Retrieves the call arguments that are of tensor type.
|
|
221
|
+
|
|
222
|
+
Returns:
|
|
223
|
+
list: A list of call arguments that are tensors.
|
|
224
|
+
"""
|
|
225
|
+
call_args_tensor = []
|
|
226
|
+
call_args_types = self._parse_call_args_types(self.op_proto.op_args)
|
|
227
|
+
call_args = self.parse_original_call_args(self.op_proto.op_args)
|
|
228
|
+
for _type, arg_name in zip(call_args_types, call_args):
|
|
229
|
+
if _type in ("mindspore::tensor::BaseTensorPtr", "std::optional<mindspore::tensor::BaseTensorPtr>"):
|
|
230
|
+
call_args_tensor.append(arg_name)
|
|
231
|
+
return call_args_tensor
|
|
232
|
+
|
|
233
|
+
def has_prim_init(self):
|
|
234
|
+
"""
|
|
235
|
+
Checks if any arguments require primitive initialization.
|
|
236
|
+
|
|
237
|
+
Returns:
|
|
238
|
+
bool: True if any argument requires primitive initialization, otherwise False.
|
|
239
|
+
"""
|
|
240
|
+
op_args = self.op_proto.op_args
|
|
241
|
+
has_prim_init = False
|
|
242
|
+
for op_arg in op_args:
|
|
243
|
+
prim_init = op_arg.is_prim_init
|
|
244
|
+
if prim_init:
|
|
245
|
+
has_prim_init = True
|
|
246
|
+
break
|
|
247
|
+
return has_prim_init
|
|
248
|
+
|
|
249
|
+
def generate_pyboost_op_func_return_type(self):
|
|
250
|
+
"""
|
|
251
|
+
Generates the C++ return type for the PyBoost operator function.
|
|
252
|
+
|
|
253
|
+
Returns:
|
|
254
|
+
str: The generated C++ return type for the function.
|
|
255
|
+
|
|
256
|
+
Raises:
|
|
257
|
+
Exception: If no valid return type is found.
|
|
258
|
+
"""
|
|
259
|
+
returns_type = []
|
|
260
|
+
type_convert_to_base = {
|
|
261
|
+
'std::vector<mindspore::tensor::TensorPtr>': 'std::vector<mindspore::tensor::BaseTensorPtr>',
|
|
262
|
+
'mindspore::tensor::TensorPtr': 'mindspore::tensor::BaseTensorPtr'
|
|
263
|
+
}
|
|
264
|
+
for return_obj in self.op_proto.op_returns:
|
|
265
|
+
temp_return = get_return_type(return_obj.arg_dtype)
|
|
266
|
+
if temp_return in type_convert_to_base:
|
|
267
|
+
returns_type.append(type_convert_to_base[temp_return])
|
|
268
|
+
else:
|
|
269
|
+
raise Exception("Not return found")
|
|
270
|
+
if len(returns_type) == 1:
|
|
271
|
+
cpp_func_return = returns_type[0]
|
|
272
|
+
elif len(returns_type) > 1:
|
|
273
|
+
cpp_func_return = "std::tuple<"
|
|
274
|
+
cpp_func_return += ','.join(s for s in returns_type)
|
|
275
|
+
cpp_func_return += ">"
|
|
276
|
+
else:
|
|
277
|
+
raise Exception("Not return found")
|
|
278
|
+
return cpp_func_return
|
|
279
|
+
|
|
280
|
+
def generate_pyboost_outputs(self):
|
|
281
|
+
"""
|
|
282
|
+
Generates the output variables for the PyBoost operator function.
|
|
283
|
+
|
|
284
|
+
Returns:
|
|
285
|
+
tuple: A tuple containing:
|
|
286
|
+
- op_outputs (str): The output variable representation for the operator.
|
|
287
|
+
- call_outputs (str): The call output variable representation for the operator.
|
|
288
|
+
"""
|
|
289
|
+
op_outputs = ''
|
|
290
|
+
call_outputs = ''
|
|
291
|
+
returns_type = []
|
|
292
|
+
for return_obj in self.op_proto.op_returns:
|
|
293
|
+
returns_type.append(get_return_type(return_obj.arg_dtype))
|
|
294
|
+
|
|
295
|
+
if len(returns_type) == 1:
|
|
296
|
+
if returns_type[0] == 'mindspore::tensor::TensorPtr':
|
|
297
|
+
op_outputs = 'outputs[0]'
|
|
298
|
+
call_outputs = 'outputs_[0]'
|
|
299
|
+
elif returns_type[0] == "std::vector<mindspore::tensor::TensorPtr>":
|
|
300
|
+
op_outputs = 'outputs'
|
|
301
|
+
call_outputs = 'outputs_'
|
|
302
|
+
else:
|
|
303
|
+
raise Exception(
|
|
304
|
+
"Not support return type {}".format(returns_type[0]))
|
|
305
|
+
elif len(returns_type) > 1:
|
|
306
|
+
outputs_str = ''
|
|
307
|
+
for i in range(len(returns_type)):
|
|
308
|
+
outputs_str += 'outputs[{}],'.format(i)
|
|
309
|
+
op_outputs = outputs_str[:-1]
|
|
310
|
+
|
|
311
|
+
outputs_str = ''
|
|
312
|
+
for i in range(len(returns_type)):
|
|
313
|
+
outputs_str += 'outputs_[{}],'.format(i)
|
|
314
|
+
outputs_str = outputs_str[:-1]
|
|
315
|
+
call_outputs = "std::make_tuple(" + outputs_str + ")"
|
|
316
|
+
|
|
317
|
+
return op_outputs, call_outputs
|
|
318
|
+
|
|
319
|
+
def _is_input_arg(self, arg_name, op_name):
|
|
320
|
+
res = False
|
|
321
|
+
if op_name in K.INPUT_NAME_MAP and arg_name == K.INPUT_NAME_MAP[op_name]:
|
|
322
|
+
res = True
|
|
323
|
+
elif op_name not in K.INPUT_NAME_MAP and arg_name in K.INPUT_ARGS_NAME:
|
|
324
|
+
res = True
|
|
325
|
+
return res
|
|
326
|
+
|
|
327
|
+
def generate_signature_str(self, kw_only_args=None, varargs=None, *, is_tensor_api: bool) -> str:
|
|
328
|
+
"""
|
|
329
|
+
Generates a single function signature string for the given operation prototype.
|
|
330
|
+
|
|
331
|
+
Args:
|
|
332
|
+
kw_only_args (list[str]): List of keyword-only argument names.
|
|
333
|
+
varargs (list[str]): List of variable args names.
|
|
334
|
+
|
|
335
|
+
Kwargs:
|
|
336
|
+
is_tensor_api (bool): Whether this function is used in the Tensor API scenario.
|
|
337
|
+
|
|
338
|
+
Returns:
|
|
339
|
+
str: Generated function signature string.
|
|
340
|
+
"""
|
|
341
|
+
|
|
342
|
+
op_name = self.op_proto.op_class.name
|
|
343
|
+
args_str = f'"{op_name}('
|
|
344
|
+
first_arg = True
|
|
345
|
+
kw_args_init_flag = False
|
|
346
|
+
|
|
347
|
+
arg_index = 0
|
|
348
|
+
for arg in self.op_proto.op_args:
|
|
349
|
+
arg_name = arg.arg_name
|
|
350
|
+
|
|
351
|
+
if is_tensor_api and self._is_input_arg(arg_name, op_name):
|
|
352
|
+
continue
|
|
353
|
+
|
|
354
|
+
single_arg = ''
|
|
355
|
+
if not first_arg:
|
|
356
|
+
single_arg = ', '
|
|
357
|
+
|
|
358
|
+
arg_handler = arg.arg_handler
|
|
359
|
+
if arg_handler:
|
|
360
|
+
if arg_handler in K.ARG_HANDLER_MAP:
|
|
361
|
+
arg_dtype = K.ARG_HANDLER_MAP[arg_handler]
|
|
362
|
+
else:
|
|
363
|
+
raise ValueError(
|
|
364
|
+
f"Generate failed. Check if {arg_handler} is registered in TensorFuncRegCppGenerator.")
|
|
365
|
+
else:
|
|
366
|
+
arg_dtype = arg.arg_dtype
|
|
367
|
+
for cast_type in arg.type_cast:
|
|
368
|
+
arg_dtype += f'|{cast_type}'
|
|
369
|
+
|
|
370
|
+
# handle varargs params
|
|
371
|
+
if varargs and arg_name in varargs and arg_index == 0:
|
|
372
|
+
single_arg += f"{arg_dtype} *{arg_name}"
|
|
373
|
+
else:
|
|
374
|
+
single_arg += f"{arg_dtype} {arg_name}"
|
|
375
|
+
|
|
376
|
+
if arg.as_init_arg:
|
|
377
|
+
single_arg += f"={arg.default}"
|
|
378
|
+
|
|
379
|
+
# handle keyword-only params
|
|
380
|
+
if kw_only_args and not kw_args_init_flag and arg_name == kw_only_args[0]:
|
|
381
|
+
single_arg = ("*, " if first_arg else ", *") + single_arg
|
|
382
|
+
kw_args_init_flag = True
|
|
383
|
+
|
|
384
|
+
args_str += single_arg
|
|
385
|
+
first_arg = False
|
|
386
|
+
arg_index += 1
|
|
387
|
+
|
|
388
|
+
return args_str + ')"'
|
|
389
|
+
|
|
390
|
+
def get_arg_handler_processor(self, func_name, op_proto, *, is_tensor_api):
|
|
391
|
+
"""
|
|
392
|
+
Generates argument handler processing code for the given function prototype.
|
|
393
|
+
|
|
394
|
+
Args:
|
|
395
|
+
func_name (str): The name of the function.
|
|
396
|
+
op_proto (OpProto): Operator prototype instance to generate argument processing for.
|
|
397
|
+
|
|
398
|
+
Returns:
|
|
399
|
+
str: Generated argument handler processing code.
|
|
400
|
+
"""
|
|
401
|
+
tensor_arg_handler_prt_template = Template(
|
|
402
|
+
"parse_args.arg_list_[${idx}] = "
|
|
403
|
+
"py::cast((*pynative::${func_str}(\"${func_name}\", \"${op_arg_name}\", \
|
|
404
|
+
parse_args.arg_list_[${idx}]))->value());\n"
|
|
405
|
+
"parse_args.src_types_[${idx}] = ops::OP_DTYPE::DT_BEGIN;\n"
|
|
406
|
+
"parse_args.dst_types_[${idx}] = ${new_type};\n"
|
|
407
|
+
)
|
|
408
|
+
function_arg_handler_prt_template = Template(
|
|
409
|
+
"parse_args.arg_list_[${idx}] = "
|
|
410
|
+
"py::cast((*${func_str}(\"${func_name}\", \"${op_arg_name}\", parse_args.arg_list_[${idx}]))->value());\n"
|
|
411
|
+
"parse_args.src_types_[${idx}] = ops::OP_DTYPE::DT_BEGIN;\n"
|
|
412
|
+
"parse_args.dst_types_[${idx}] = ${new_type};\n"
|
|
413
|
+
)
|
|
414
|
+
arg_handler_prt_template = (
|
|
415
|
+
tensor_arg_handler_prt_template) if is_tensor_api else function_arg_handler_prt_template
|
|
416
|
+
|
|
417
|
+
arg_handler_template = Template(
|
|
418
|
+
"parse_args.arg_list_[${idx}] = "
|
|
419
|
+
"py::cast(pynative::${func_str}(\"${func_name}\", \"${op_arg_name}\", parse_args.arg_list_[${idx}]));\n"
|
|
420
|
+
"parse_args.src_types_[${idx}] = ops::OP_DTYPE::DT_BEGIN;\n"
|
|
421
|
+
"parse_args.dst_types_[${idx}] = ${new_type};\n"
|
|
422
|
+
)
|
|
423
|
+
arg_handler_optional_template = Template(
|
|
424
|
+
'if (!py::isinstance<py::none>(parse_args.arg_list_[${idx}])) {\n'
|
|
425
|
+
' ${arg_handler_str}\n'
|
|
426
|
+
'}\n'
|
|
427
|
+
)
|
|
428
|
+
arg_handler_type_map = {"to_2d_paddings": "ops::OP_DTYPE::DT_TUPLE_INT",
|
|
429
|
+
"dtype_to_type_id": "ops::OP_DTYPE::DT_INT",
|
|
430
|
+
"to_kernel_size": "ops::OP_DTYPE::DT_TUPLE_INT",
|
|
431
|
+
"to_strides": "ops::OP_DTYPE::DT_TUPLE_INT",
|
|
432
|
+
"str_to_enum": "ops::OP_DTYPE::DT_INT",
|
|
433
|
+
"to_pair": "ops::OP_DTYPE::DT_TUPLE_INT",
|
|
434
|
+
"to_dilations": "ops::OP_DTYPE::DT_TUPLE_INT",
|
|
435
|
+
"to_output_padding": "ops::OP_DTYPE::DT_TUPLE_INT",
|
|
436
|
+
"to_rates": "ops::OP_DTYPE::DT_TUPLE_INT"}
|
|
437
|
+
arg_handler_processor = []
|
|
438
|
+
op_args = op_proto.op_args
|
|
439
|
+
for idx, op_arg in enumerate(op_args):
|
|
440
|
+
arg_handler = op_arg.arg_handler
|
|
441
|
+
func_str = ''.join(word.capitalize()
|
|
442
|
+
for word in arg_handler.split('_'))
|
|
443
|
+
if arg_handler:
|
|
444
|
+
op_arg_name = op_arg.arg_name
|
|
445
|
+
new_type = arg_handler_type_map[arg_handler]
|
|
446
|
+
if func_str in ("StrToEnum", "DtypeToTypeId"):
|
|
447
|
+
arg_handler_str = arg_handler_prt_template.replace(func_str=func_str,
|
|
448
|
+
func_name=func_name,
|
|
449
|
+
op_arg_name=op_arg_name,
|
|
450
|
+
idx=idx,
|
|
451
|
+
new_type=new_type)
|
|
452
|
+
else:
|
|
453
|
+
arg_handler_str = arg_handler_template.replace(func_str=func_str,
|
|
454
|
+
func_name=func_name,
|
|
455
|
+
op_arg_name=op_arg_name,
|
|
456
|
+
idx=idx,
|
|
457
|
+
new_type=new_type)
|
|
458
|
+
|
|
459
|
+
if op_arg.default == "None":
|
|
460
|
+
arg_handler_str = arg_handler_optional_template.replace(idx=idx,
|
|
461
|
+
arg_handler_str=arg_handler_str)
|
|
462
|
+
arg_handler_processor.append(arg_handler_str)
|
|
463
|
+
|
|
464
|
+
return arg_handler_processor
|
|
465
|
+
|
|
466
|
+
def get_input_tensor_index(self, op_proto):
|
|
467
|
+
"""
|
|
468
|
+
Get index of input.
|
|
469
|
+
|
|
470
|
+
Args:
|
|
471
|
+
op_proto (OpProto): Function prototype to generate dispatch strings for.
|
|
472
|
+
|
|
473
|
+
Returns:
|
|
474
|
+
int: Index of input.
|
|
475
|
+
"""
|
|
476
|
+
op_name = op_proto.op_class.name
|
|
477
|
+
op_args = op_proto.op_args
|
|
478
|
+
if op_name in K.INPUT_NAME_MAP:
|
|
479
|
+
self_index = [i for i in range(
|
|
480
|
+
len(op_args)) if op_args[i].arg_name == K.INPUT_NAME_MAP[op_name]]
|
|
481
|
+
else:
|
|
482
|
+
self_index = [i for i in range(
|
|
483
|
+
len(op_args)) if op_args[i].arg_name in K.INPUT_ARGS_NAME]
|
|
484
|
+
if len(self_index) != 1:
|
|
485
|
+
raise ValueError(
|
|
486
|
+
f'There must be only one field named \'input\'. But got {len(self_index)} in {op_name}')
|
|
487
|
+
return self_index[0]
|
|
488
|
+
|
|
489
|
+
def get_convert_args_str(self, op_proto, is_tensor_api):
|
|
490
|
+
"""
|
|
491
|
+
Generates argument convert processing code for the given function prototype.
|
|
492
|
+
|
|
493
|
+
Args:
|
|
494
|
+
op_proto (OpProto): Operator prototype instance to generate argument processing for.
|
|
495
|
+
|
|
496
|
+
Returns:
|
|
497
|
+
str: Generated argument convert processing code.
|
|
498
|
+
"""
|
|
499
|
+
self_index = 0
|
|
500
|
+
if is_tensor_api:
|
|
501
|
+
self_index = self.get_input_tensor_index(op_proto)
|
|
502
|
+
convert_args_str = ""
|
|
503
|
+
for idx, op_arg in enumerate(op_proto.op_args):
|
|
504
|
+
if is_tensor_api:
|
|
505
|
+
if self_index == idx:
|
|
506
|
+
convert_args_str += "input_tensor, "
|
|
507
|
+
continue
|
|
508
|
+
is_optional = is_optional_param(op_arg)
|
|
509
|
+
arg_convert_template = Template("parse_args.ConvertOptional<${des_type}>(${index}), ") if is_optional \
|
|
510
|
+
else Template("parse_args.Convert<${des_type}>(${index}), ")
|
|
511
|
+
if op_arg.is_type_id:
|
|
512
|
+
arg_type_str = get_input_args_type_str('type', False)
|
|
513
|
+
else:
|
|
514
|
+
arg_type_str = get_input_args_type_str(op_arg.arg_dtype, False)
|
|
515
|
+
convert_args_str += arg_convert_template.replace(index=idx,
|
|
516
|
+
des_type=arg_type_str[:-3])
|
|
517
|
+
return convert_args_str[:-2]
|