mindspore 2.5.0__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 +6 -4
- 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 -33
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +19 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +22 -3
- 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 +24 -193
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +97 -74
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +16 -11
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +4 -4
- 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 +2 -2
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +4 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -1
- mindspore/common/_stub_tensor.py +5 -10
- mindspore/common/_tensor_cpp_method.py +1 -1
- mindspore/common/_tensor_docs.py +1915 -3287
- mindspore/common/api.py +341 -354
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +5 -2
- mindspore/common/dump.py +7 -5
- mindspore/common/file_system.py +3 -0
- mindspore/common/hook_handle.py +5 -3
- mindspore/common/initializer.py +10 -6
- 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 +2 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +106 -39
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +297 -714
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +47 -2
- mindspore/communication/comm_func.py +70 -53
- mindspore/communication/management.py +83 -17
- mindspore/context.py +214 -560
- mindspore/dataset/__init__.py +44 -20
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/core/config.py +3 -3
- mindspore/dataset/engine/cache_client.py +1 -1
- mindspore/dataset/engine/datasets.py +102 -120
- mindspore/dataset/engine/datasets_audio.py +22 -22
- mindspore/dataset/engine/datasets_standard_format.py +43 -24
- mindspore/dataset/engine/datasets_text.py +78 -85
- mindspore/dataset/engine/datasets_user_defined.py +108 -76
- mindspore/dataset/engine/datasets_vision.py +111 -108
- mindspore/dataset/engine/iterators.py +5 -3
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/samplers.py +279 -57
- mindspore/dataset/engine/serializer_deserializer.py +2 -1
- mindspore/dataset/engine/validators.py +10 -0
- 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/transforms.py +3 -3
- 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/device_context/ascend/op_debug.py +60 -1
- mindspore/device_context/ascend/op_tuning.py +0 -4
- mindspore/device_manager.py +39 -3
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +22 -26
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +4 -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 +40 -22
- mindspore/experimental/optim/radam.py +5 -5
- 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 -81
- mindspore/hal/event.py +38 -55
- mindspore/hal/memory.py +93 -144
- mindspore/hal/stream.py +81 -125
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +40 -2
- mindspore/mindrecord/__init__.py +20 -7
- 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 +131 -700
- mindspore/mint/distributed/__init__.py +5 -1
- mindspore/mint/distributed/distributed.py +194 -109
- mindspore/mint/linalg/__init__.py +2 -0
- mindspore/mint/nn/__init__.py +280 -18
- mindspore/mint/nn/functional.py +282 -64
- mindspore/mint/nn/layer/__init__.py +4 -0
- mindspore/mint/nn/layer/_functions.py +7 -3
- mindspore/mint/nn/layer/activation.py +120 -13
- mindspore/mint/nn/layer/conv.py +218 -24
- mindspore/mint/nn/layer/normalization.py +15 -16
- mindspore/mint/nn/layer/padding.py +1 -1
- mindspore/mint/nn/layer/pooling.py +66 -1
- mindspore/mint/optim/__init__.py +2 -1
- mindspore/mint/optim/sgd.py +171 -0
- 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/nn/__init__.py +4 -1
- mindspore/nn/cell.py +1250 -176
- mindspore/nn/layer/activation.py +23 -21
- mindspore/nn/layer/basic.py +22 -16
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +22 -17
- mindspore/nn/layer/embedding.py +9 -8
- mindspore/nn/layer/normalization.py +48 -42
- mindspore/nn/layer/pooling.py +75 -31
- mindspore/nn/layer/transformer.py +11 -10
- mindspore/nn/learning_rate_schedule.py +4 -2
- mindspore/nn/loss/loss.py +27 -19
- mindspore/nn/optim/ada_grad.py +6 -5
- mindspore/nn/optim/adadelta.py +9 -7
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +16 -12
- 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/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +2 -2
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +9 -7
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- 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/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +178 -117
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +3 -3
- mindspore/numpy/array_creations.py +3 -3
- mindspore/numpy/array_ops.py +1 -1
- mindspore/numpy/math_ops.py +4 -4
- mindspore/numpy/utils.py +1 -2
- mindspore/numpy/utils_const.py +1 -2
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +3 -2
- mindspore/ops/_grad_experimental/grad_comm_ops.py +18 -3
- mindspore/ops/_grad_experimental/grad_debug_ops.py +8 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -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 -4
- mindspore/ops/_vmap/vmap_array_ops.py +7 -6
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +2 -1
- mindspore/ops/_vmap/vmap_math_ops.py +4 -7
- mindspore/ops/_vmap/vmap_nn_ops.py +9 -8
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +102 -49
- mindspore/ops/auto_generate/gen_extend_func.py +281 -135
- mindspore/ops/auto_generate/gen_ops_def.py +2574 -2326
- mindspore/ops/auto_generate/gen_ops_prim.py +8566 -2755
- mindspore/ops/auto_generate/pyboost_inner_prim.py +106 -76
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +19 -24
- 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 +2 -3
- 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 -1
- 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 +28 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +1629 -2345
- mindspore/ops/function/clip_func.py +38 -45
- mindspore/ops/function/debug_func.py +36 -44
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +1 -1
- mindspore/ops/function/linalg_func.py +46 -78
- mindspore/ops/function/math_func.py +3035 -3705
- mindspore/ops/function/nn_func.py +676 -241
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +17 -30
- mindspore/ops/function/random_func.py +204 -361
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +5 -5
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +24 -17
- mindspore/ops/functional.py +6 -4
- mindspore/ops/functional_overload.py +547 -4
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +10 -5
- mindspore/ops/operations/_custom_ops_utils.py +247 -0
- mindspore/ops/operations/_grad_ops.py +1 -10
- mindspore/ops/operations/_inner_ops.py +5 -76
- 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 +37 -22
- mindspore/ops/operations/comm_ops.py +150 -107
- mindspore/ops/operations/custom_ops.py +221 -23
- mindspore/ops/operations/debug_ops.py +115 -16
- mindspore/ops/operations/inner_ops.py +1 -1
- mindspore/ops/operations/linalg_ops.py +1 -58
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +746 -79
- mindspore/ops/operations/math_ops.py +21 -18
- mindspore/ops/operations/nn_ops.py +65 -191
- 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 +43 -32
- mindspore/ops/tensor_method.py +232 -13
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/{aclnn_kernel_register_auto_cc_generator.py → aclnn/aclnn_kernel_register_auto_cc_generator.py} +43 -18
- mindspore/ops_generate/{gen_aclnn_implement.py → aclnn/gen_aclnn_implement.py} +49 -51
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/{add_tensor_docs_generator.py → api/add_tensor_docs_generator.py} +9 -7
- mindspore/ops_generate/{cpp_create_prim_instance_helper_generator.py → api/cpp_create_prim_instance_helper_generator.py} +6 -9
- mindspore/ops_generate/{functional_map_cpp_generator.py → api/functional_map_cpp_generator.py} +25 -12
- mindspore/ops_generate/{functional_overload_py_generator.py → api/functional_overload_py_generator.py} +8 -6
- mindspore/ops_generate/{functions_cc_generator.py → api/functions_cc_generator.py} +14 -10
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/{op_api_proto.py → api/op_api_proto.py} +98 -69
- mindspore/ops_generate/{tensor_func_reg_cpp_generator.py → api/tensor_func_reg_cpp_generator.py} +82 -43
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/{gen_utils.py → common/gen_utils.py} +72 -19
- mindspore/ops_generate/{op_proto.py → common/op_proto.py} +64 -1
- mindspore/ops_generate/{template.py → common/template.py} +96 -84
- mindspore/ops_generate/gen_ops.py +23 -325
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/{lite_ops_cpp_generator.py → op_def/lite_ops_cpp_generator.py} +47 -11
- mindspore/ops_generate/{ops_def_cc_generator.py → op_def/ops_def_cc_generator.py} +18 -7
- mindspore/ops_generate/{ops_def_h_generator.py → op_def/ops_def_h_generator.py} +5 -5
- mindspore/ops_generate/{ops_name_h_generator.py → op_def/ops_name_h_generator.py} +30 -15
- 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_generator.py → op_def_py/op_def_py_generator.py} +6 -5
- mindspore/ops_generate/{op_prim_py_generator.py → op_def_py/op_prim_py_generator.py} +24 -15
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/{auto_grad_impl_cc_generator.py → pyboost/auto_grad_impl_cc_generator.py} +11 -7
- mindspore/ops_generate/{auto_grad_reg_cc_generator.py → pyboost/auto_grad_reg_cc_generator.py} +7 -7
- mindspore/ops_generate/{gen_pyboost_func.py → pyboost/gen_pyboost_func.py} +40 -16
- mindspore/ops_generate/{op_template_parser.py → pyboost/op_template_parser.py} +105 -24
- mindspore/ops_generate/{pyboost_functions_cpp_generator.py → pyboost/pyboost_functions_cpp_generator.py} +55 -18
- mindspore/ops_generate/{pyboost_functions_h_generator.py → pyboost/pyboost_functions_h_generator.py} +42 -10
- mindspore/ops_generate/{pyboost_functions_py_generator.py → pyboost/pyboost_functions_py_generator.py} +6 -6
- mindspore/ops_generate/{pyboost_grad_function_cpp_generator.py → pyboost/pyboost_grad_function_cpp_generator.py} +11 -10
- mindspore/ops_generate/{pyboost_inner_prim_generator.py → pyboost/pyboost_inner_prim_generator.py} +8 -7
- mindspore/ops_generate/{pyboost_native_grad_functions_generator.py → pyboost/pyboost_native_grad_functions_generator.py} +14 -10
- mindspore/ops_generate/{pyboost_op_cpp_code_generator.py → pyboost/pyboost_op_cpp_code_generator.py} +140 -53
- mindspore/ops_generate/{pyboost_overload_functions_cpp_generator.py → pyboost/pyboost_overload_functions_cpp_generator.py} +28 -15
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +88 -4
- 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 +6 -2
- mindspore/parallel/_auto_parallel_context.py +133 -6
- mindspore/parallel/_cell_wrapper.py +130 -15
- mindspore/parallel/_parallel_serialization.py +95 -4
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +198 -25
- mindspore/parallel/algo_parameter_config.py +3 -3
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +656 -37
- mindspore/parallel/cluster/process_entity/_api.py +151 -19
- mindspore/parallel/cluster/run.py +1 -1
- 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 +24 -13
- mindspore/parallel/shard.py +137 -61
- mindspore/parallel/transform_safetensors.py +287 -95
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +9 -5
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +6 -2
- mindspore/profiler/analysis/parser/ms_framework_parser.py +4 -4
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -4
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +22 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +241 -86
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +41 -2
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +33 -35
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +7 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +8 -3
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +141 -30
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +5 -6
- mindspore/profiler/common/ascend_msprof_exporter.py +5 -4
- mindspore/profiler/common/constant.py +12 -0
- mindspore/profiler/common/msprof_cmd_tool.py +42 -23
- mindspore/profiler/common/path_manager.py +24 -0
- mindspore/profiler/common/profiler_context.py +26 -2
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_parameters.py +59 -18
- mindspore/profiler/common/profiler_path_manager.py +66 -7
- mindspore/profiler/dynamic_profiler.py +112 -79
- mindspore/profiler/envprofiler.py +26 -1
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +57 -14
- mindspore/profiler/platform/npu_profiler.py +33 -7
- mindspore/profiler/profiler.py +541 -45
- mindspore/profiler/profiler_action_controller.py +1 -1
- mindspore/profiler/profiler_interface.py +4 -0
- mindspore/profiler/schedule.py +57 -22
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +1 -1
- mindspore/run_check/_check_version.py +25 -14
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +2 -2
- mindspore/runtime/executor.py +40 -11
- mindspore/runtime/memory.py +25 -8
- 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 +35 -7
- mindspore/train/amp.py +1 -1
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +24 -40
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_flops_collector.py +2 -3
- mindspore/train/callback/_history.py +7 -4
- 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 +8 -13
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +179 -103
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +4 -5
- 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 +8 -6
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +19 -12
- mindspore/train/model.py +176 -103
- mindspore/train/serialization.py +246 -988
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +3 -2
- mindspore/utils/dryrun.py +4 -2
- mindspore/utils/hooks.py +81 -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.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +2 -1
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +483 -438
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -136
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_constants.py +0 -190
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/ops_primitive_h_generator.py +0 -81
- /mindspore/ops_generate/{base_generator.py → common/base_generator.py} +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -17,7 +17,11 @@
|
|
|
17
17
|
import ast
|
|
18
18
|
import os
|
|
19
19
|
from collections import defaultdict
|
|
20
|
-
|
|
20
|
+
|
|
21
|
+
import common.gen_constants as K
|
|
22
|
+
from common.gen_utils import safe_load_yaml_from_dir
|
|
23
|
+
from resources.resource_loader import ResourceLoader
|
|
24
|
+
from resources.resource_list import ResourceType
|
|
21
25
|
|
|
22
26
|
|
|
23
27
|
class OpApiProto:
|
|
@@ -50,7 +54,8 @@ def get_tensor_method_ast_dict():
|
|
|
50
54
|
for all functions defined in the 'tensor_method.py' file.
|
|
51
55
|
"""
|
|
52
56
|
tensor_method_ast_dict = dict()
|
|
53
|
-
tensor_method_file = os.path.join(
|
|
57
|
+
tensor_method_file = os.path.join(
|
|
58
|
+
K.WORK_DIR, K.PY_MS_DIR, 'ops/tensor_method.py')
|
|
54
59
|
with open(tensor_method_file, "r", encoding="utf-8") as file:
|
|
55
60
|
tree = ast.parse(file.read(), filename=tensor_method_file)
|
|
56
61
|
for node in ast.walk(tree):
|
|
@@ -59,72 +64,91 @@ def get_tensor_method_ast_dict():
|
|
|
59
64
|
return tensor_method_ast_dict
|
|
60
65
|
|
|
61
66
|
|
|
62
|
-
|
|
67
|
+
class OpApiProtoLoader(ResourceLoader):
|
|
63
68
|
"""
|
|
64
|
-
Loads
|
|
69
|
+
Loads api related proto data.
|
|
65
70
|
"""
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
71
|
+
def __init__(self, op_protos, deprecated_op_protos, func_op_protos):
|
|
72
|
+
self.op_api_data = safe_load_yaml_from_dir(os.path.join(K.WORK_DIR, K.MS_OP_API_YAML_PATH))
|
|
73
|
+
self.op_protos = op_protos + func_op_protos
|
|
74
|
+
self.deprecated_op_protos = deprecated_op_protos
|
|
75
|
+
|
|
76
|
+
def load(self):
|
|
77
|
+
"""
|
|
78
|
+
Loads tensor function prototypes from YAML data and returns them as a dictionary.
|
|
79
|
+
"""
|
|
80
|
+
op_protos_dict = {}
|
|
81
|
+
for op_proto in self.op_protos:
|
|
82
|
+
op_protos_dict[op_proto.op_name] = op_proto
|
|
83
|
+
for deprecated_op_proto in self.deprecated_op_protos:
|
|
84
|
+
op_protos_dict[deprecated_op_proto.op_name] = deprecated_op_proto
|
|
85
|
+
tensor_method_protos = defaultdict(list)
|
|
86
|
+
mint_func_protos = defaultdict(list)
|
|
87
|
+
alias_api_mapping = defaultdict(list)
|
|
88
|
+
tensor_method_def_ast_dict = get_tensor_method_ast_dict()
|
|
89
|
+
for func_name, tensor_func_data in self.op_api_data.items():
|
|
90
|
+
func_data_list = [tensor_func_data] if isinstance(
|
|
91
|
+
tensor_func_data, dict) else tensor_func_data
|
|
92
|
+
for func_data in func_data_list:
|
|
93
|
+
func_keys = func_data.keys()
|
|
94
|
+
check_op_api_yaml_keys(func_name, set(
|
|
95
|
+
func_keys), K.TENSOR_FUNC_KEYS)
|
|
96
|
+
if 'alias' in func_data:
|
|
97
|
+
alias_api_mapping[func_data['alias']].append(func_name)
|
|
98
|
+
continue
|
|
99
|
+
op_name = _get_op_name_from_op_yaml(func_name, func_data)
|
|
100
|
+
op_proto = op_protos_dict.get(op_name, None)
|
|
101
|
+
if op_proto is None:
|
|
102
|
+
raise TypeError(
|
|
103
|
+
f"For generating tensor functions, op_proto should not be empty. Func name is {func_name}")
|
|
104
|
+
py_method = func_data.get('py_method', '')
|
|
105
|
+
if py_method == '':
|
|
106
|
+
raise TypeError(
|
|
107
|
+
f'For generating tensor functions, py method should not be empty. Func name is {func_name}')
|
|
108
|
+
if py_method not in tensor_method_def_ast_dict:
|
|
109
|
+
raise TypeError(
|
|
110
|
+
f"{py_method} is not defined in tensor_method.py.")
|
|
111
|
+
kw_only_args = func_data.get('kwonlyargs', None)
|
|
112
|
+
if kw_only_args:
|
|
113
|
+
kw_only_args = [item.strip()
|
|
114
|
+
for item in kw_only_args.split(',')]
|
|
115
|
+
check_kwonlyargs(func_data, kw_only_args, op_name,
|
|
116
|
+
op_proto, py_method, tensor_method_def_ast_dict)
|
|
117
|
+
varargs = func_data.get('varargs', None)
|
|
118
|
+
if varargs:
|
|
119
|
+
varargs = [item.strip() for item in varargs.split(',')]
|
|
120
|
+
check_varargs(varargs, op_name)
|
|
121
|
+
ascend = func_data.get('Ascend', 'aclnn')
|
|
122
|
+
gpu = func_data.get('GPU', 'aclnn')
|
|
123
|
+
cpu = func_data.get('CPU', 'aclnn')
|
|
124
|
+
interface = func_data.get('interface')
|
|
125
|
+
if interface is None:
|
|
126
|
+
raise ValueError(
|
|
127
|
+
f"For generating tensor or functional interfaces, field interface must exist. "
|
|
128
|
+
f"Op name is {func_name}")
|
|
129
|
+
|
|
130
|
+
interface = ', '.join(part.strip()
|
|
131
|
+
for part in interface.split(','))
|
|
132
|
+
|
|
133
|
+
if interface not in {'tensor', 'function', 'tensor, function', 'function, tensor'}:
|
|
134
|
+
raise ValueError(
|
|
135
|
+
f"The value of field 'interface' must be one of 'tensor', 'function', "
|
|
136
|
+
f"'tensor, function', or 'function, tensor'. File name is {func_name}.yaml"
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
proto = OpApiProto(func_name=func_name, op_proto=op_proto, py_method=py_method,
|
|
140
|
+
kw_only_args=kw_only_args, varargs=varargs, ascend=ascend, gpu=gpu, cpu=cpu)
|
|
141
|
+
|
|
142
|
+
if 'tensor' in interface:
|
|
143
|
+
tensor_method_protos[func_name].append(proto)
|
|
144
|
+
if 'function' in interface:
|
|
145
|
+
mint_func_protos[func_name].append(proto)
|
|
146
|
+
|
|
147
|
+
return {ResourceType.TENSOR_METHOD_PROTOS: tensor_method_protos,
|
|
148
|
+
ResourceType.MINT_FUNC_PROTOS: mint_func_protos,
|
|
149
|
+
ResourceType.ALIAS_API_MAPPING: alias_api_mapping}
|
|
150
|
+
|
|
151
|
+
|
|
128
152
|
|
|
129
153
|
|
|
130
154
|
def check_kwonlyargs(func_data, kw_only_args, op_name, op_proto, py_method, tensor_method_def_ast_dict):
|
|
@@ -160,13 +184,15 @@ def _get_op_name_from_op_yaml(func_name: str, func_data: dict) -> str:
|
|
|
160
184
|
"""Extracts the operation name from the given YAML function data."""
|
|
161
185
|
op_yaml = func_data.get('op_yaml', '')
|
|
162
186
|
if op_yaml == '':
|
|
163
|
-
raise TypeError(
|
|
187
|
+
raise TypeError(
|
|
188
|
+
f'For generating tensor functions, op yaml should not be empty, func name is {func_name}')
|
|
164
189
|
if 'deprecated' in op_yaml:
|
|
165
190
|
op_name = op_yaml.replace('/', '_').replace('_method.yaml', '')
|
|
166
191
|
else:
|
|
167
192
|
op_name = op_yaml.replace('_op.yaml', '')
|
|
168
193
|
if op_name == '':
|
|
169
|
-
raise TypeError(
|
|
194
|
+
raise TypeError(
|
|
195
|
+
f'For generating tensor functions, op name should not be empty, func name is {func_name}')
|
|
170
196
|
return op_name
|
|
171
197
|
|
|
172
198
|
|
|
@@ -193,6 +219,7 @@ def categorize_func_data(func_protos_data):
|
|
|
193
219
|
single_op_func_data = {}
|
|
194
220
|
overload_op_func_data = {}
|
|
195
221
|
all_op_func_data = {}
|
|
222
|
+
op_class_name_set = set()
|
|
196
223
|
for func_api_name, func_protos in func_protos_data.items():
|
|
197
224
|
if len(func_protos) == 1:
|
|
198
225
|
func_name = func_protos[0].func_name
|
|
@@ -202,5 +229,7 @@ def categorize_func_data(func_protos_data):
|
|
|
202
229
|
elif len(func_protos) > 1:
|
|
203
230
|
overload_op_func_data[func_api_name] = func_protos
|
|
204
231
|
all_op_func_data[func_api_name] = func_protos
|
|
232
|
+
for func_proto in func_protos:
|
|
233
|
+
op_class_name_set.add(func_proto.op_proto.op_class.name)
|
|
205
234
|
|
|
206
|
-
return all_op_func_data, single_op_func_data, overload_op_func_data
|
|
235
|
+
return all_op_func_data, single_op_func_data, overload_op_func_data, op_class_name_set
|
mindspore/ops_generate/{tensor_func_reg_cpp_generator.py → api/tensor_func_reg_cpp_generator.py}
RENAMED
|
@@ -23,15 +23,15 @@ that can be used to call the Pyboost primitive implementations.
|
|
|
23
23
|
|
|
24
24
|
import os
|
|
25
25
|
|
|
26
|
-
import template
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
import
|
|
30
|
-
import
|
|
31
|
-
from
|
|
32
|
-
from
|
|
33
|
-
from
|
|
34
|
-
|
|
26
|
+
import common.template as template
|
|
27
|
+
import common.gen_constants as K
|
|
28
|
+
from common.template import Template
|
|
29
|
+
from common.gen_utils import save_file
|
|
30
|
+
from common.base_generator import BaseGenerator
|
|
31
|
+
from common.op_proto import OpProto
|
|
32
|
+
from pyboost.op_template_parser import OpTemplateParser
|
|
33
|
+
from pyboost import pyboost_utils
|
|
34
|
+
import api.op_api_proto as op_api_proto
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
class TensorFuncRegCppGenerator(BaseGenerator):
|
|
@@ -53,7 +53,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
53
53
|
self.TENSOR_FUNC_UT_OVERLOAD_BODY = template.TENSOR_FUNC_UT_OVERLOAD_BODY
|
|
54
54
|
self.TENSOR_CPP_METHOD = template.TENSOR_CPP_METHOD
|
|
55
55
|
|
|
56
|
-
self.func_def_reg = Template(
|
|
56
|
+
self.func_def_reg = Template(
|
|
57
|
+
"tensor_class->def(\"${func_name}\", TensorMethod${cpp_func_name});\n")
|
|
57
58
|
self.single_case_template = Template(
|
|
58
59
|
'case ${case_id}:\n'
|
|
59
60
|
' ${device_dispatcher}\n'
|
|
@@ -78,8 +79,10 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
78
79
|
self.pyboost_return_template = Template(
|
|
79
80
|
'${arg_handler_processor}\n'
|
|
80
81
|
'MS_LOG(INFO) << "Call Tensor${class_name}";\n'
|
|
81
|
-
'
|
|
82
|
-
'
|
|
82
|
+
'auto res = mindspore::pynative::'
|
|
83
|
+
'${pyboost_function}(mindspore::prim::kPrim${class_name}, parse_args.src_types_, ${convert_args});\n'
|
|
84
|
+
'trace::Capture(parse_args.arg_list_, "${class_name}", &res);\n'
|
|
85
|
+
'return res;\n'
|
|
83
86
|
)
|
|
84
87
|
self.callback_python_template = Template(
|
|
85
88
|
'MS_LOG(INFO) << "Callback python method: ${py_method}";\n'
|
|
@@ -109,31 +112,44 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
109
112
|
alias_func_mapping (dict): A dictionary mapping function name to its alias function names.
|
|
110
113
|
"""
|
|
111
114
|
|
|
112
|
-
all_op_func_data, single_op_func_data, overload_op_func_data =
|
|
113
|
-
func_protos_data)
|
|
115
|
+
all_op_func_data, single_op_func_data, overload_op_func_data, op_class_name_set = \
|
|
116
|
+
op_api_proto.categorize_func_data(func_protos_data)
|
|
114
117
|
|
|
115
118
|
tensor_method_list = self._get_op_enum_name_list(op_protos)
|
|
116
119
|
func_call_body_list = []
|
|
117
|
-
self._create_single_op_source_files(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
120
|
+
self._create_single_op_source_files(
|
|
121
|
+
single_op_func_data, func_call_body_list)
|
|
122
|
+
self._create_overload_op_source_files(
|
|
123
|
+
overload_op_func_data, func_call_body_list)
|
|
124
|
+
merge_func_call_body = pyboost_utils.merge_strings_by_chunk_size(
|
|
125
|
+
func_call_body_list)
|
|
126
|
+
ops_inc_head_set = set()
|
|
127
|
+
for op_class_name in op_class_name_set:
|
|
128
|
+
ops_inc_head_set.add(template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_class_name[0].lower()))
|
|
121
129
|
for i, func_body_chunk_str in enumerate(merge_func_call_body):
|
|
122
|
-
tensor_api_source = self.TENSOR_API_SOURCE.replace(
|
|
130
|
+
tensor_api_source = self.TENSOR_API_SOURCE.replace(
|
|
131
|
+
ops_inc=list(sorted(ops_inc_head_set)),
|
|
132
|
+
tenosr_func_call_body=func_body_chunk_str)
|
|
123
133
|
save_file(os.path.join(work_path, K.TENSOR_API_PATH), f"tensor_api_{i}.cc",
|
|
124
134
|
tensor_api_source)
|
|
125
135
|
|
|
126
136
|
func_def_body_list, tensor_cpp_methods_list, tensor_api_declaration_list = self._get_sorted_func_def_body(
|
|
127
137
|
all_op_func_data, alias_func_mapping)
|
|
128
|
-
tensor_api_header = self.TENSOR_API_HEADER.replace(
|
|
138
|
+
tensor_api_header = self.TENSOR_API_HEADER.replace(
|
|
139
|
+
tensor_api_declaration_list=tensor_api_declaration_list)
|
|
129
140
|
save_file(os.path.join(work_path, K.TENSOR_API_PATH), f"tensor_api.h",
|
|
130
141
|
tensor_api_header)
|
|
131
|
-
self._generate_func_name_for_stub_tensor(
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
142
|
+
self._generate_func_name_for_stub_tensor(
|
|
143
|
+
work_path, tensor_cpp_methods_list)
|
|
144
|
+
func_cc_reg = self.TENSOR_FUNC_CC_REG.replace(
|
|
145
|
+
func_def_body=func_def_body_list)
|
|
146
|
+
tensor_methods = self.TENSOR_FUNC_UTILS.replace(
|
|
147
|
+
tensor_methods=tensor_method_list)
|
|
148
|
+
|
|
149
|
+
save_file(os.path.join(work_path, K.TENSOR_FUNC_REGISTER_PATH),
|
|
150
|
+
"tensor_func_utils.h", tensor_methods)
|
|
151
|
+
save_file(os.path.join(work_path, K.TENSOR_API_PATH),
|
|
152
|
+
"tensor_func_reg.cc", func_cc_reg)
|
|
137
153
|
|
|
138
154
|
def _get_op_enum_name_list(self, op_protos):
|
|
139
155
|
"""
|
|
@@ -169,7 +185,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
169
185
|
"""
|
|
170
186
|
tensor_cpp_methods_str = self.TENSOR_CPP_METHOD.replace(
|
|
171
187
|
tensor_cpp_methods_list_str=str(tensor_cpp_methods_list))
|
|
172
|
-
save_file(os.path.join(work_path, K.ADD_TENSOR_DOCS_PY_PATH),
|
|
188
|
+
save_file(os.path.join(work_path, K.ADD_TENSOR_DOCS_PY_PATH),
|
|
189
|
+
"_tensor_cpp_method.py", tensor_cpp_methods_str)
|
|
173
190
|
|
|
174
191
|
def _get_sorted_func_def_body(self, all_op_func_data, alias_func_mapping):
|
|
175
192
|
"""
|
|
@@ -197,9 +214,11 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
197
214
|
if len(func_protos) == 1:
|
|
198
215
|
func_proto = func_protos[0]
|
|
199
216
|
func_name = func_proto.func_name
|
|
200
|
-
func_def_body_list.append(self.func_def_reg.replace(
|
|
217
|
+
func_def_body_list.append(self.func_def_reg.replace(
|
|
218
|
+
func_name=func_name, cpp_func_name=cpp_func_name))
|
|
201
219
|
tensor_cpp_methods_list.append(func_name)
|
|
202
|
-
tensor_api_declaration_list += self.header_func_header_template.replace(
|
|
220
|
+
tensor_api_declaration_list += self.header_func_header_template.replace(
|
|
221
|
+
cpp_func_name=cpp_func_name)
|
|
203
222
|
if func_name in alias_func_mapping:
|
|
204
223
|
for alias_func_name in alias_func_mapping[func_name]:
|
|
205
224
|
func_def_body_list.append(
|
|
@@ -209,7 +228,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
209
228
|
func_def_body_list.append(
|
|
210
229
|
self.func_def_reg.replace(func_name=func_api_name, cpp_func_name=cpp_func_name))
|
|
211
230
|
tensor_cpp_methods_list.append(func_api_name)
|
|
212
|
-
tensor_api_declaration_list += self.header_func_header_template.replace(
|
|
231
|
+
tensor_api_declaration_list += self.header_func_header_template.replace(
|
|
232
|
+
cpp_func_name=cpp_func_name)
|
|
213
233
|
if func_api_name in alias_func_mapping:
|
|
214
234
|
for alias_func_name in alias_func_mapping[func_api_name]:
|
|
215
235
|
func_def_body_list.append(self.func_def_reg.replace(func_name=alias_func_name,
|
|
@@ -230,14 +250,16 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
230
250
|
for func_api_name, func_proto in single_op_func_data.items():
|
|
231
251
|
func_name = func_proto.func_name
|
|
232
252
|
cpp_func_name = pyboost_utils.format_func_api_name(func_api_name)
|
|
233
|
-
device_dispatcher_str = self._get_device_dispatchers_str(
|
|
253
|
+
device_dispatcher_str = self._get_device_dispatchers_str(
|
|
254
|
+
func_proto)
|
|
234
255
|
signature_str = self._generate_single_signature_str(
|
|
235
256
|
func_proto.op_proto, func_proto.kw_only_args, func_proto.varargs
|
|
236
257
|
)
|
|
237
258
|
op_args = func_proto.op_proto.op_args
|
|
238
259
|
max_size = len(op_args)
|
|
239
260
|
self_index = self._get_input_tensor_index(func_proto)
|
|
240
|
-
ut_body = self.TENSOR_FUNC_UT_BODY.replace(
|
|
261
|
+
ut_body = self.TENSOR_FUNC_UT_BODY.replace(
|
|
262
|
+
py_method=func_proto.py_method)
|
|
241
263
|
tensor_func_single_call_body = self.TENSOR_FUNC_CALL_BODY.replace(cpp_func_name=cpp_func_name,
|
|
242
264
|
func_name=func_name,
|
|
243
265
|
device_dispatcher=device_dispatcher_str,
|
|
@@ -258,7 +280,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
258
280
|
list: Updated str list for generating C++ function call bodies.
|
|
259
281
|
"""
|
|
260
282
|
for func_api_name, func_protos in overload_op_func_data.items():
|
|
261
|
-
tensor_func_overload_call_body = self._get_overload_func_call_str(
|
|
283
|
+
tensor_func_overload_call_body = self._get_overload_func_call_str(
|
|
284
|
+
func_api_name, func_protos)
|
|
262
285
|
func_call_body_list.append(tensor_func_overload_call_body)
|
|
263
286
|
|
|
264
287
|
def _get_overload_func_call_str(self, func_api_name, func_protos):
|
|
@@ -275,7 +298,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
275
298
|
signatures_str = self._generate_func_signatures_list_str(func_protos)
|
|
276
299
|
dispatch_cases = self._get_dispatch_cases(func_protos)
|
|
277
300
|
ut_dispatch_cases = self._get_ut_dispatch_cases(func_protos)
|
|
278
|
-
ut_overload_body = self.TENSOR_FUNC_UT_OVERLOAD_BODY.replace(
|
|
301
|
+
ut_overload_body = self.TENSOR_FUNC_UT_OVERLOAD_BODY.replace(
|
|
302
|
+
ut_dispatch_cases=ut_dispatch_cases)
|
|
279
303
|
|
|
280
304
|
max_size = 0
|
|
281
305
|
self_index = 0
|
|
@@ -311,7 +335,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
311
335
|
if not first_sig:
|
|
312
336
|
sig_str += ',\n'
|
|
313
337
|
first_sig = False
|
|
314
|
-
sig_str += self._generate_single_signature_str(
|
|
338
|
+
sig_str += self._generate_single_signature_str(
|
|
339
|
+
op_proto, tensor_proto.kw_only_args, tensor_proto.varargs)
|
|
315
340
|
return sig_str
|
|
316
341
|
|
|
317
342
|
def _generate_single_signature_str(self, op_proto: OpProto, kw_only_args, varargs) -> str:
|
|
@@ -331,9 +356,11 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
331
356
|
op_name = func_proto.op_proto.op_class.name
|
|
332
357
|
op_args = func_proto.op_proto.op_args
|
|
333
358
|
if op_name in K.INPUT_NAME_MAP:
|
|
334
|
-
self_index = [i for i in range(
|
|
359
|
+
self_index = [i for i in range(
|
|
360
|
+
len(op_args)) if op_args[i].arg_name == K.INPUT_NAME_MAP[op_name]]
|
|
335
361
|
else:
|
|
336
|
-
self_index = [i for i in range(
|
|
362
|
+
self_index = [i for i in range(
|
|
363
|
+
len(op_args)) if op_args[i].arg_name in K.INPUT_ARGS_NAME]
|
|
337
364
|
if len(self_index) != 1:
|
|
338
365
|
raise ValueError(
|
|
339
366
|
f'There must be only one field named \'input\'. But got {len(self_index)} in {op_name}')
|
|
@@ -351,7 +378,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
351
378
|
"""
|
|
352
379
|
dispatch_cases_str = ''
|
|
353
380
|
for idx, func_proto in enumerate(func_protos):
|
|
354
|
-
device_dispatcher_str = self._get_device_dispatchers_str(
|
|
381
|
+
device_dispatcher_str = self._get_device_dispatchers_str(
|
|
382
|
+
func_proto)
|
|
355
383
|
dispatch_cases_str += self.single_case_template.replace(case_id=idx,
|
|
356
384
|
device_dispatcher=device_dispatcher_str)
|
|
357
385
|
dispatch_cases_str += 'default:\n'
|
|
@@ -370,7 +398,8 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
370
398
|
"""
|
|
371
399
|
dispatch_cases_str = ''
|
|
372
400
|
for idx, func_proto in enumerate(func_protos):
|
|
373
|
-
device_dispatcher_str = self.callback_python_in_ut_template.replace(
|
|
401
|
+
device_dispatcher_str = self.callback_python_in_ut_template.replace(
|
|
402
|
+
py_method=func_proto.py_method)
|
|
374
403
|
dispatch_cases_str += self.single_case_in_ut_template.replace(case_id=idx,
|
|
375
404
|
device_dispatcher=device_dispatcher_str)
|
|
376
405
|
dispatch_cases_str += 'default:\n'
|
|
@@ -387,9 +416,12 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
387
416
|
Returns:
|
|
388
417
|
str: Generated device-specific dispatch string.
|
|
389
418
|
"""
|
|
390
|
-
ascend_dispatcher_str = self._get_single_device_dispatcher_str(
|
|
391
|
-
|
|
392
|
-
|
|
419
|
+
ascend_dispatcher_str = self._get_single_device_dispatcher_str(
|
|
420
|
+
func_proto, 'ascend')
|
|
421
|
+
cpu_dispatcher_str = self._get_single_device_dispatcher_str(
|
|
422
|
+
func_proto, 'cpu')
|
|
423
|
+
gpu_dispatcher_str = self._get_single_device_dispatcher_str(
|
|
424
|
+
func_proto, 'gpu')
|
|
393
425
|
device_dispatcher_str = self.device_dispatcher_template.replace(ascend_dispatcher=ascend_dispatcher_str,
|
|
394
426
|
cpu_dispatcher=cpu_dispatcher_str,
|
|
395
427
|
gpu_dispatcher=gpu_dispatcher_str)
|
|
@@ -409,8 +441,15 @@ class TensorFuncRegCppGenerator(BaseGenerator):
|
|
|
409
441
|
func_proto_device = getattr(func_proto, device)
|
|
410
442
|
if func_proto_device == 'pyboost':
|
|
411
443
|
arg_handler_processor_str = self._get_arg_handler_processor(func_proto.func_name, func_proto.op_proto)
|
|
444
|
+
op_parser = OpTemplateParser(func_proto.op_proto)
|
|
445
|
+
op_pyboost_func_name = op_parser.get_pyboost_func_name() + "_OP"
|
|
446
|
+
convert_args_str = op_parser.get_convert_args_str(func_proto.op_proto, is_tensor_api=True)
|
|
447
|
+
self_index = op_parser.get_input_tensor_index(func_proto.op_proto)
|
|
412
448
|
return self.pyboost_return_template.replace(arg_handler_processor=arg_handler_processor_str,
|
|
413
|
-
class_name=func_proto.op_proto.op_class.name
|
|
449
|
+
class_name=func_proto.op_proto.op_class.name,
|
|
450
|
+
pyboost_function=op_pyboost_func_name,
|
|
451
|
+
self_index=self_index,
|
|
452
|
+
convert_args=convert_args_str)
|
|
414
453
|
|
|
415
454
|
if func_proto_device == 'py_method':
|
|
416
455
|
return self.callback_python_template.replace(py_method=func_proto.py_method)
|
|
File without changes
|
|
@@ -0,0 +1,91 @@
|
|
|
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 contains the constant strings used in generating ops files.
|
|
17
|
+
|
|
18
|
+
Constants:
|
|
19
|
+
PY_LICENSE: License strings used for .py files
|
|
20
|
+
CC_LICENSE: License strings used for .h/.cc files
|
|
21
|
+
......
|
|
22
|
+
Other constant strings in the module are used for generation paths
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
import os
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
WORK_DIR = os.path.normpath(os.path.join(
|
|
29
|
+
os.path.dirname(os.path.realpath(__file__)), '../../../../../'))
|
|
30
|
+
|
|
31
|
+
PY_MS_DIR = "mindspore/python/mindspore"
|
|
32
|
+
PY_OPS_GEN_PATH = "mindspore/python/mindspore/ops_generate"
|
|
33
|
+
PY_AUTO_GEN_PATH = "mindspore/python/mindspore/ops/auto_generate"
|
|
34
|
+
|
|
35
|
+
# op_def
|
|
36
|
+
OP_DEF_AUTO_GENERATE_PATH = "op_def/auto_generate"
|
|
37
|
+
MS_OP_DEF_AUTO_GENERATE_PATH = "mindspore/ops/op_def/auto_generate"
|
|
38
|
+
MS_OP_DEF_YAML_PATH = "mindspore/ops/op_def/yaml"
|
|
39
|
+
MS_OP_DEF_FUNC_OP_YAML_PATH = "mindspore/ops/op_def/func_op"
|
|
40
|
+
MS_OP_DEPRECATED_DEF_YAML_PATH = "mindspore/ops/op_def/deprecated"
|
|
41
|
+
MS_OP_API_YAML_PATH = "mindspore/ops/api_def"
|
|
42
|
+
MS_TENSOR_METHOD_DOC_YAML_PATH = "mindspore/ops/api_def/method_doc"
|
|
43
|
+
MS_MINT_FUNC_DOC_YAML_PATH = "mindspore/ops/api_def/function_doc"
|
|
44
|
+
MS_MINT_FUNC_OVERLOAD_PATH = "mindspore/python/mindspore/ops"
|
|
45
|
+
PYBOOST_NATIVE_GRAD_FUNC_GEN_PATH = "mindspore/ccsrc/pynative/grad/function/auto_generate"
|
|
46
|
+
PYBOOST_AUTO_GRAD_FUNC_GEN_PATH = "mindspore/ccsrc/pynative/op_function/auto_generate"
|
|
47
|
+
PIPELINE_PYBOOST_FUNC_GEN_PATH = "mindspore/ccsrc/pynative/op_function/auto_generate"
|
|
48
|
+
FUNCTIONAL_OVERLOAD_GEN_PATH = "mindspore/ccsrc/frontend/operator/composite/auto_generate"
|
|
49
|
+
PYBOOST_GRAD_FUNC_GEN_PATH = "mindspore/ccsrc/pyboost/grad_functions/auto_generate"
|
|
50
|
+
TENSOR_FUNC_REGISTER_PATH = "mindspore/ccsrc/pynative/op_function/auto_generate"
|
|
51
|
+
TENSOR_API_PATH = "mindspore/ccsrc/pybind_api/ir/tensor_api/auto_generate"
|
|
52
|
+
ADD_TENSOR_DOCS_PY_PATH = "mindspore/python/mindspore/common"
|
|
53
|
+
ADD_MINT_DOCS_PY_PATH = "mindspore/python/mindspore/mint"
|
|
54
|
+
TENSOR_PY_CC_PATH = "mindspore/ccsrc/pybind_api/ir/tensor_register/auto_generate"
|
|
55
|
+
|
|
56
|
+
# yaml keys def
|
|
57
|
+
OP_KEYS = {'args', 'args_signature', 'returns', 'function',
|
|
58
|
+
'class', 'view', 'dispatch', 'labels', 'bprop_expander'}
|
|
59
|
+
ARG_KEYS = {'dtype', 'default', 'prim_init', 'type_cast', 'arg_handler'}
|
|
60
|
+
RETURN_KEYS = {'dtype', 'inplace', 'type_cast'}
|
|
61
|
+
ARG_SIGNATURE_KEYS = {'rw_write', 'rw_read', 'rw_ref', 'dtype_group'}
|
|
62
|
+
CLASS_KEYS = {'name', 'disable'}
|
|
63
|
+
FUNCTION_KEYS = {'name', 'disable'}
|
|
64
|
+
DISPATCH_KEYS = {'enable', 'is_comm_op', 'Ascend', 'GPU', 'CPU'}
|
|
65
|
+
TENSOR_FUNC_KEYS = {'op_yaml', 'py_method', 'kwonlyargs',
|
|
66
|
+
'varargs', 'alias', 'Ascend', 'GPU', 'CPU', 'interface'}
|
|
67
|
+
|
|
68
|
+
# func signature parsing
|
|
69
|
+
ARG_HANDLER_MAP = {"to_2d_paddings": "int|tuple[int]|list[int]",
|
|
70
|
+
"dtype_to_type_id": "type",
|
|
71
|
+
"to_kernel_size": "int|tuple[int]|list[int]",
|
|
72
|
+
"to_strides": "int|tuple[int]|list[int]",
|
|
73
|
+
"str_to_enum": "str",
|
|
74
|
+
"to_pair": "int|tuple[int]|list[int]|float",
|
|
75
|
+
"to_dilations": "tuple[int]|list[int]|int",
|
|
76
|
+
"to_output_padding": "int|tuple[int]|list[int]",
|
|
77
|
+
"to_rates": "int|tuple[int]|list[int]"}
|
|
78
|
+
INPUT_ARGS_NAME = {"input", "x", "input_x"}
|
|
79
|
+
INPUT_NAME_MAP = {"DeprecatedExpandAs": "input"}
|
|
80
|
+
|
|
81
|
+
# infer
|
|
82
|
+
MS_OPS_FUNC_IMPL_PATH = "mindspore/ops/infer/ops_func_impl"
|
|
83
|
+
|
|
84
|
+
# view
|
|
85
|
+
MS_OPS_VIEW_PATH = "mindspore/ops/view"
|
|
86
|
+
|
|
87
|
+
# kernel
|
|
88
|
+
MS_OPS_KERNEL_PATH = "mindspore/ops/kernel"
|
|
89
|
+
MS_PYBOOST_FUNCTIONS_AUTO_GEN_PATH = "mindspore/ccsrc/pyboost/functions/auto_generate"
|
|
90
|
+
MS_COMMON_PYBOOST_KERNEL_PATH = os.path.join(MS_OPS_KERNEL_PATH, "common/pyboost")
|
|
91
|
+
MS_PYBOOST_BASE_PATH = "mindspore/ccsrc/pyboost"
|