mindspore 2.5.0__cp39-cp39-win_amd64.whl → 2.6.0rc1__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/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +6 -4
- 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 -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
|
@@ -22,12 +22,14 @@ function signatures, and generates conversion stubs for PyBoost operations.
|
|
|
22
22
|
|
|
23
23
|
import re
|
|
24
24
|
|
|
25
|
-
import
|
|
26
|
-
from
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
from
|
|
30
|
-
from
|
|
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
|
|
31
33
|
|
|
32
34
|
|
|
33
35
|
class OpTemplateParser:
|
|
@@ -57,7 +59,8 @@ class OpTemplateParser:
|
|
|
57
59
|
call_args_types = []
|
|
58
60
|
for op_arg in op_args:
|
|
59
61
|
is_optional = is_optional_param(op_arg)
|
|
60
|
-
call_args_types.append(get_input_dtype(
|
|
62
|
+
call_args_types.append(get_input_dtype(
|
|
63
|
+
op_arg.arg_dtype, is_optional))
|
|
61
64
|
return call_args_types
|
|
62
65
|
|
|
63
66
|
def parse_call_args_with_types(self):
|
|
@@ -95,7 +98,8 @@ class OpTemplateParser:
|
|
|
95
98
|
call_args_with_tensor.append(call_arg)
|
|
96
99
|
elif tuple_input_to_cpp_type(op_arg.arg_dtype) and pyboost_utils.is_tensor_list(op_arg):
|
|
97
100
|
need_malloc_tensors.append(call_arg + "_vector")
|
|
98
|
-
tensor_list_convert.append(
|
|
101
|
+
tensor_list_convert.append(
|
|
102
|
+
get_tuple_input_convert(call_arg, op_arg.arg_dtype))
|
|
99
103
|
call_args_with_tensor.append(call_arg + "_vector")
|
|
100
104
|
else:
|
|
101
105
|
call_args_with_tensor.append(call_arg)
|
|
@@ -139,14 +143,17 @@ class OpTemplateParser:
|
|
|
139
143
|
for op_arg, call_arg in zip(self.op_proto.op_args, call_args):
|
|
140
144
|
if number_input_to_cpp_type(op_arg.arg_dtype):
|
|
141
145
|
call_args_after_convert.append(call_arg + "_imm")
|
|
142
|
-
const_number_convert.append(
|
|
146
|
+
const_number_convert.append(
|
|
147
|
+
get_const_number_convert(call_arg, op_arg))
|
|
143
148
|
elif tuple_input_to_cpp_type(op_arg.arg_dtype):
|
|
144
149
|
call_args_after_convert.append(call_arg + "_vector")
|
|
145
|
-
value_tuple_convert.append(
|
|
150
|
+
value_tuple_convert.append(
|
|
151
|
+
get_tuple_input_convert(call_arg, op_arg.arg_dtype))
|
|
146
152
|
else:
|
|
147
153
|
call_args_after_convert.append(call_arg)
|
|
148
154
|
if const_number_convert:
|
|
149
|
-
const_number_convert.insert(
|
|
155
|
+
const_number_convert.insert(
|
|
156
|
+
0, '// Convert ValuePtr to c++ scalar\n')
|
|
150
157
|
if value_tuple_convert:
|
|
151
158
|
value_tuple_convert.insert(0, '// ValueTuple to std::vector\n')
|
|
152
159
|
return call_args_after_convert, value_tuple_convert, const_number_convert
|
|
@@ -192,7 +199,8 @@ class OpTemplateParser:
|
|
|
192
199
|
args_signature = self.op_proto.op_args_signature
|
|
193
200
|
if args_signature is not None:
|
|
194
201
|
dtype_group = args_signature.dtype_group
|
|
195
|
-
indexes = {arg.arg_name: index for index,
|
|
202
|
+
indexes = {arg.arg_name: index for index,
|
|
203
|
+
arg in enumerate(self.op_proto.op_args)}
|
|
196
204
|
if dtype_group is not None:
|
|
197
205
|
match = re.findall(r'\((.*?)\)', dtype_group)
|
|
198
206
|
for item in match:
|
|
@@ -292,7 +300,8 @@ class OpTemplateParser:
|
|
|
292
300
|
op_outputs = 'outputs'
|
|
293
301
|
call_outputs = 'outputs_'
|
|
294
302
|
else:
|
|
295
|
-
raise Exception(
|
|
303
|
+
raise Exception(
|
|
304
|
+
"Not support return type {}".format(returns_type[0]))
|
|
296
305
|
elif len(returns_type) > 1:
|
|
297
306
|
outputs_str = ''
|
|
298
307
|
for i in range(len(returns_type)):
|
|
@@ -390,43 +399,62 @@ class OpTemplateParser:
|
|
|
390
399
|
str: Generated argument handler processing code.
|
|
391
400
|
"""
|
|
392
401
|
tensor_arg_handler_prt_template = Template(
|
|
393
|
-
"
|
|
394
|
-
"(*pynative::${func_str}(\"${func_name}\", \"${op_arg_name}\",
|
|
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"
|
|
395
407
|
)
|
|
396
408
|
function_arg_handler_prt_template = Template(
|
|
397
|
-
"
|
|
398
|
-
"(*${func_str}(\"${func_name}\", \"${op_arg_name}\",
|
|
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"
|
|
399
413
|
)
|
|
400
414
|
arg_handler_prt_template = (
|
|
401
415
|
tensor_arg_handler_prt_template) if is_tensor_api else function_arg_handler_prt_template
|
|
402
416
|
|
|
403
417
|
arg_handler_template = Template(
|
|
404
|
-
"
|
|
405
|
-
"pynative::${func_str}(\"${func_name}\", \"${op_arg_name}\",
|
|
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"
|
|
406
422
|
)
|
|
407
423
|
arg_handler_optional_template = Template(
|
|
408
|
-
'if (!py::isinstance<py::none>(
|
|
424
|
+
'if (!py::isinstance<py::none>(parse_args.arg_list_[${idx}])) {\n'
|
|
409
425
|
' ${arg_handler_str}\n'
|
|
410
426
|
'}\n'
|
|
411
427
|
)
|
|
412
|
-
|
|
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"}
|
|
413
437
|
arg_handler_processor = []
|
|
414
438
|
op_args = op_proto.op_args
|
|
415
439
|
for idx, op_arg in enumerate(op_args):
|
|
416
440
|
arg_handler = op_arg.arg_handler
|
|
417
|
-
func_str = ''.join(word.capitalize()
|
|
441
|
+
func_str = ''.join(word.capitalize()
|
|
442
|
+
for word in arg_handler.split('_'))
|
|
418
443
|
if arg_handler:
|
|
419
444
|
op_arg_name = op_arg.arg_name
|
|
445
|
+
new_type = arg_handler_type_map[arg_handler]
|
|
420
446
|
if func_str in ("StrToEnum", "DtypeToTypeId"):
|
|
421
447
|
arg_handler_str = arg_handler_prt_template.replace(func_str=func_str,
|
|
422
448
|
func_name=func_name,
|
|
423
449
|
op_arg_name=op_arg_name,
|
|
424
|
-
idx=idx
|
|
450
|
+
idx=idx,
|
|
451
|
+
new_type=new_type)
|
|
425
452
|
else:
|
|
426
453
|
arg_handler_str = arg_handler_template.replace(func_str=func_str,
|
|
427
454
|
func_name=func_name,
|
|
428
455
|
op_arg_name=op_arg_name,
|
|
429
|
-
idx=idx
|
|
456
|
+
idx=idx,
|
|
457
|
+
new_type=new_type)
|
|
430
458
|
|
|
431
459
|
if op_arg.default == "None":
|
|
432
460
|
arg_handler_str = arg_handler_optional_template.replace(idx=idx,
|
|
@@ -434,3 +462,56 @@ class OpTemplateParser:
|
|
|
434
462
|
arg_handler_processor.append(arg_handler_str)
|
|
435
463
|
|
|
436
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]
|
|
@@ -22,15 +22,16 @@ the necessary header files for the generated functions.
|
|
|
22
22
|
|
|
23
23
|
import os
|
|
24
24
|
|
|
25
|
-
import
|
|
26
|
-
|
|
27
|
-
import
|
|
28
|
-
from
|
|
29
|
-
|
|
30
|
-
from
|
|
31
|
-
from
|
|
32
|
-
from
|
|
33
|
-
|
|
25
|
+
import common.template as template
|
|
26
|
+
import common.gen_constants as K
|
|
27
|
+
from common.template import Template
|
|
28
|
+
from common.gen_utils import save_file
|
|
29
|
+
from common.op_proto import OpProto
|
|
30
|
+
from common.base_generator import BaseGenerator
|
|
31
|
+
from pyboost import pyboost_utils
|
|
32
|
+
from pyboost.pyboost_utils import get_convert_type_str, is_optional_param, is_op_multi_output, get_input_args_type_str, is_tensor_list
|
|
33
|
+
|
|
34
|
+
from .op_template_parser import OpTemplateParser
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
class PyboostFunctionsGenerator(BaseGenerator):
|
|
@@ -45,7 +46,7 @@ class PyboostFunctionsGenerator(BaseGenerator):
|
|
|
45
46
|
def __init__(self):
|
|
46
47
|
"""Initializes the PyboostFunctionsGenerator with the necessary templates."""
|
|
47
48
|
self.pyboost_func_include_header_template = Template(
|
|
48
|
-
f'#include "{K.
|
|
49
|
+
f'#include "{K.MS_PYBOOST_BASE_PATH}/auto_generate/${{operator_name}}.h"\n'
|
|
49
50
|
)
|
|
50
51
|
self.convert_optional_to_value_template = Template(
|
|
51
52
|
"auto ${output} = PyNativeAlgo::PyBoost::OptionalToValue(${input});\n"
|
|
@@ -59,14 +60,17 @@ class PyboostFunctionsGenerator(BaseGenerator):
|
|
|
59
60
|
'op_run_info->requires_grad);\n'
|
|
60
61
|
)
|
|
61
62
|
self.convert_template = Template("auto $arg_name = converter.${convert_func}(args, $arg_index);\n")
|
|
63
|
+
self.input_args_template = Template(" const ${arg_type}& ${arg_name},")
|
|
62
64
|
self.PYBOOST_FUNCTION_TEMPLATE = template.PYBOOST_FUNCTION_TEMPLATE
|
|
63
65
|
self.PYBOOST_COMM_FUNCTION_TEMPLATE = template.PYBOOST_COMM_FUNCTION_TEMPLATE
|
|
66
|
+
self.PYBOOST_FUNCTION_DYNAMIC_OUTPUT_TEMPLATE = template.PYBOOST_FUNCTION_DYNAMIC_OUTPUT_TEMPLATE
|
|
64
67
|
self.REGISTER_DEFINE_TEMPLATE = template.REGISTER_DEFINE_TEMPLATE
|
|
65
68
|
self.REGISTER_TEMPLATE = template.REGISTER_TEMPLATE
|
|
66
69
|
self.PYBOOST_HEADER_TEMPLATE = template.PYBOOST_FUNCTIONS_CC_TEMPLATE
|
|
67
70
|
self.TENSOR_FUNC_CLASS_REG = template.TENSOR_FUNC_CLASS_REG
|
|
71
|
+
self.OP_DEF_INC_HEAD_TEMPLATE = template.OP_DEF_INC_HEAD_TEMPLATE
|
|
68
72
|
|
|
69
|
-
def generate(self, work_path, op_protos
|
|
73
|
+
def generate(self, work_path, op_protos):
|
|
70
74
|
"""
|
|
71
75
|
Generates the C++ PyBoost functions and writes them to the specified files.
|
|
72
76
|
|
|
@@ -77,7 +81,6 @@ class PyboostFunctionsGenerator(BaseGenerator):
|
|
|
77
81
|
Args:
|
|
78
82
|
work_path (str): The file path where the generated files will be saved.
|
|
79
83
|
op_protos (list): A list of operator prototypes containing information about the operators to be processed.
|
|
80
|
-
tensor_func_protos_data(dict): A dict of tensor prototypes containing device-related information.
|
|
81
84
|
|
|
82
85
|
Returns:
|
|
83
86
|
None
|
|
@@ -85,6 +88,7 @@ class PyboostFunctionsGenerator(BaseGenerator):
|
|
|
85
88
|
pyboost_func_str = ''
|
|
86
89
|
pyboost_func_pybind_def = ''
|
|
87
90
|
pyboost_func_include_headers_str = ''
|
|
91
|
+
ops_inc_head_set = set()
|
|
88
92
|
for op_proto in op_protos:
|
|
89
93
|
if op_proto.op_dispatch is None or not op_proto.op_dispatch.enable:
|
|
90
94
|
continue
|
|
@@ -100,15 +104,16 @@ class PyboostFunctionsGenerator(BaseGenerator):
|
|
|
100
104
|
grad_args_str = self._get_grad_args_str(op_proto)
|
|
101
105
|
cast_args_str = self._get_cast_to_value_str(op_proto)
|
|
102
106
|
view_arg_str = self._get_first_str(op_proto.op_view, grad_args_str)
|
|
107
|
+
op_input_args_str = self._get_input_args_str(op_proto)
|
|
103
108
|
view_arg_str = ", " + view_arg_str if view_arg_str else ''
|
|
104
109
|
multi_ouptut_str = 'Multi' if is_op_multi_output(op_proto.op_returns) else ''
|
|
105
|
-
|
|
106
|
-
function_tpl = self.
|
|
107
|
-
if op_proto.op_dispatch.is_comm_op else self.PYBOOST_FUNCTION_TEMPLATE
|
|
110
|
+
output_num_str = len(op_proto.op_returns)
|
|
111
|
+
function_tpl = self._get_function_tpl(op_proto)
|
|
108
112
|
pyboost_func_str += function_tpl.replace(func_name=op_pyboost_func_name,
|
|
109
113
|
op_def_name=op_def_name_str,
|
|
110
114
|
type_num=type_num,
|
|
111
115
|
same_type=same_type,
|
|
116
|
+
input_args=op_input_args_str,
|
|
112
117
|
parser_body=parser_body_str,
|
|
113
118
|
op_name=op_proto.op_class.name,
|
|
114
119
|
class_name=op_proto.op_class.name,
|
|
@@ -120,6 +125,7 @@ class PyboostFunctionsGenerator(BaseGenerator):
|
|
|
120
125
|
cast_args=cast_args_str,
|
|
121
126
|
view_arg=view_arg_str,
|
|
122
127
|
is_multi=multi_ouptut_str,
|
|
128
|
+
output_num=output_num_str,
|
|
123
129
|
operator_name=op_proto.op_name)
|
|
124
130
|
pyboost_func_str = pyboost_func_str + template.NEW_LINE + template.NEW_LINE
|
|
125
131
|
pyboost_op_name = op_parser.get_pyboost_name()
|
|
@@ -130,9 +136,11 @@ class PyboostFunctionsGenerator(BaseGenerator):
|
|
|
130
136
|
class_name=op_proto.op_class.name)
|
|
131
137
|
pyboost_func_include_headers_str += self.pyboost_func_include_header_template.replace(
|
|
132
138
|
operator_name=op_proto.op_name)
|
|
139
|
+
ops_inc_head_set.add(self.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_proto.op_class.name[0].lower()))
|
|
133
140
|
register_func_str = self.REGISTER_TEMPLATE.replace(register_func=pyboost_func_pybind_def)
|
|
134
141
|
function_class_register = self._get_function_class_register(op_protos)
|
|
135
|
-
pyboost_func_file = self.PYBOOST_HEADER_TEMPLATE.replace(
|
|
142
|
+
pyboost_func_file = self.PYBOOST_HEADER_TEMPLATE.replace(ops_inc=list(sorted(ops_inc_head_set)),
|
|
143
|
+
include_op_header=pyboost_func_include_headers_str,
|
|
136
144
|
function_body=pyboost_func_str,
|
|
137
145
|
register_function_body=register_func_str,
|
|
138
146
|
function_class_register=function_class_register)
|
|
@@ -140,7 +148,6 @@ class PyboostFunctionsGenerator(BaseGenerator):
|
|
|
140
148
|
file_name = "pyboost_functions.cc"
|
|
141
149
|
save_file(save_path, file_name, pyboost_func_file)
|
|
142
150
|
|
|
143
|
-
|
|
144
151
|
def _get_cast_args_with_type_str(self, op_proto, cast_args_str):
|
|
145
152
|
args_with_type = []
|
|
146
153
|
for op_arg, cast_args_name in zip(op_proto.op_args, cast_args_str):
|
|
@@ -148,7 +155,6 @@ class PyboostFunctionsGenerator(BaseGenerator):
|
|
|
148
155
|
args_with_type.append("const " + input_dtype + " &" + cast_args_name)
|
|
149
156
|
return list(args_with_type)
|
|
150
157
|
|
|
151
|
-
|
|
152
158
|
def _get_function_class_register(self, op_protos) -> str:
|
|
153
159
|
"""
|
|
154
160
|
Generates a function class registration string for tensor functions.
|
|
@@ -189,10 +195,33 @@ class PyboostFunctionsGenerator(BaseGenerator):
|
|
|
189
195
|
convert_type_str = get_convert_type_str('type', is_optional)
|
|
190
196
|
else:
|
|
191
197
|
convert_type_str = get_convert_type_str(op_arg.arg_dtype, is_optional)
|
|
198
|
+
|
|
192
199
|
parser_func_str += self.convert_template.replace(arg_name=op_arg.arg_name, convert_func=convert_type_str,
|
|
193
200
|
arg_index=pyboost_utils.get_index(index))
|
|
194
201
|
return parser_func_str
|
|
195
202
|
|
|
203
|
+
|
|
204
|
+
def _get_input_args_str(self, op_proto: OpProto) -> str:
|
|
205
|
+
"""
|
|
206
|
+
Generates the input arguments list for the pyboost operator.
|
|
207
|
+
|
|
208
|
+
Args:
|
|
209
|
+
op_proto (OpProto): The operator prototype containing the argument information.
|
|
210
|
+
|
|
211
|
+
Returns:
|
|
212
|
+
str: The generated input arguments list as a string.
|
|
213
|
+
"""
|
|
214
|
+
parser_func_str = ''
|
|
215
|
+
for _, op_arg in enumerate(op_proto.op_args):
|
|
216
|
+
is_optional = is_optional_param(op_arg)
|
|
217
|
+
if op_arg.is_type_id:
|
|
218
|
+
arg_type_str = get_input_args_type_str('type', is_optional)
|
|
219
|
+
else:
|
|
220
|
+
arg_type_str = get_input_args_type_str(op_arg.arg_dtype, is_optional)
|
|
221
|
+
parser_func_str += self.input_args_template.replace(arg_name=op_arg.arg_name, arg_type=arg_type_str)
|
|
222
|
+
return parser_func_str[:-1]
|
|
223
|
+
|
|
224
|
+
|
|
196
225
|
def _get_convert_stub_str(self, op_proto: OpProto):
|
|
197
226
|
"""
|
|
198
227
|
Generates the conversion stub code for the operator's arguments.
|
|
@@ -368,3 +397,11 @@ class PyboostFunctionsGenerator(BaseGenerator):
|
|
|
368
397
|
arg_str = grad_arg
|
|
369
398
|
break
|
|
370
399
|
return arg_str
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
def _get_function_tpl(self, op_proto: OpProto):
|
|
403
|
+
if len(op_proto.op_returns) == 1 and is_tensor_list(op_proto.op_returns[0]):
|
|
404
|
+
# op output size is unknown
|
|
405
|
+
return self.PYBOOST_FUNCTION_DYNAMIC_OUTPUT_TEMPLATE
|
|
406
|
+
return self.PYBOOST_COMM_FUNCTION_TEMPLATE \
|
|
407
|
+
if op_proto.op_dispatch.is_comm_op else self.PYBOOST_FUNCTION_TEMPLATE
|
mindspore/ops_generate/{pyboost_functions_h_generator.py → pyboost/pyboost_functions_h_generator.py}
RENAMED
|
@@ -22,13 +22,15 @@ operation's primitive and arguments. The generated file is saved to the specifie
|
|
|
22
22
|
|
|
23
23
|
import os
|
|
24
24
|
|
|
25
|
-
import template
|
|
25
|
+
import common.template as template
|
|
26
|
+
import common.gen_constants as K
|
|
27
|
+
from common.template import Template
|
|
28
|
+
from common.gen_utils import save_file
|
|
29
|
+
from common.base_generator import BaseGenerator
|
|
30
|
+
from common.op_proto import OpProto
|
|
26
31
|
|
|
27
|
-
from
|
|
28
|
-
import
|
|
29
|
-
from gen_utils import save_file
|
|
30
|
-
from op_template_parser import OpTemplateParser
|
|
31
|
-
from base_generator import BaseGenerator
|
|
32
|
+
from .op_template_parser import OpTemplateParser
|
|
33
|
+
from .pyboost_utils import is_optional_param, get_input_args_type_str
|
|
32
34
|
|
|
33
35
|
|
|
34
36
|
class PyboostFunctionsHeaderGenerator(BaseGenerator):
|
|
@@ -41,8 +43,13 @@ class PyboostFunctionsHeaderGenerator(BaseGenerator):
|
|
|
41
43
|
self.PYBOOST_FUNCTION_HEADER_TEMPLATE = template.PYBOOST_FUNCTION_HEADER_TEMPLATE
|
|
42
44
|
|
|
43
45
|
self.pyboost_func_template = Template(
|
|
44
|
-
'py::object
|
|
46
|
+
'py::object PYNATIVE_EXPORT ${func_name}_Base(const PrimitivePtr &prim, const py::list &args);'
|
|
45
47
|
)
|
|
48
|
+
self.pyboost_op_func_template = Template(
|
|
49
|
+
'py::object ME_EXPORT ${func_name}_OP(const PrimitivePtr &prim, '
|
|
50
|
+
'const std::vector<ops::OP_DTYPE>& source_type, ${input_args});'
|
|
51
|
+
)
|
|
52
|
+
self.input_args_template = Template(" const ${arg_type}& ${arg_name},")
|
|
46
53
|
|
|
47
54
|
def generate(self, work_path, op_protos):
|
|
48
55
|
"""
|
|
@@ -55,14 +62,39 @@ class PyboostFunctionsHeaderGenerator(BaseGenerator):
|
|
|
55
62
|
Returns:
|
|
56
63
|
None: The method writes the generated header file to the specified directory.
|
|
57
64
|
"""
|
|
58
|
-
|
|
65
|
+
prim_func_list = []
|
|
66
|
+
op_func_list_str = []
|
|
59
67
|
for op_proto in op_protos:
|
|
60
68
|
if op_proto.op_dispatch is None or not op_proto.op_dispatch.enable:
|
|
61
69
|
continue
|
|
62
70
|
op_parser = OpTemplateParser(op_proto)
|
|
63
71
|
op_pyboost_func_name = op_parser.get_pyboost_func_name()
|
|
64
|
-
|
|
65
|
-
|
|
72
|
+
op_input_args_str = self._get_input_args_str(op_proto)
|
|
73
|
+
prim_func_list.append(self.pyboost_func_template.replace(func_name=op_pyboost_func_name))
|
|
74
|
+
op_func_list_str.append(self.pyboost_op_func_template.replace(func_name=op_pyboost_func_name,
|
|
75
|
+
input_args=op_input_args_str))
|
|
76
|
+
pyboost_func_h_str = self.PYBOOST_FUNCTION_HEADER_TEMPLATE.replace(prim_func_list=prim_func_list,
|
|
77
|
+
op_func_list=op_func_list_str)
|
|
66
78
|
save_path = os.path.join(work_path, K.PIPELINE_PYBOOST_FUNC_GEN_PATH)
|
|
67
79
|
file_name = "pyboost_functions.h"
|
|
68
80
|
save_file(save_path, file_name, pyboost_func_h_str)
|
|
81
|
+
|
|
82
|
+
def _get_input_args_str(self, op_proto: OpProto) -> str:
|
|
83
|
+
"""
|
|
84
|
+
Generates the input arguments list for the pyboost operator.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
op_proto (OpProto): The operator prototype containing the argument information.
|
|
88
|
+
|
|
89
|
+
Returns:
|
|
90
|
+
str: The generated input arguments list as a string.
|
|
91
|
+
"""
|
|
92
|
+
parser_func_str = ''
|
|
93
|
+
for _, op_arg in enumerate(op_proto.op_args):
|
|
94
|
+
is_optional = is_optional_param(op_arg)
|
|
95
|
+
if op_arg.is_type_id:
|
|
96
|
+
arg_type_str = get_input_args_type_str('type', is_optional)
|
|
97
|
+
else:
|
|
98
|
+
arg_type_str = get_input_args_type_str(op_arg.arg_dtype, is_optional)
|
|
99
|
+
parser_func_str += self.input_args_template.replace(arg_name=op_arg.arg_name, arg_type=arg_type_str)
|
|
100
|
+
return parser_func_str[:-1]
|
|
@@ -22,11 +22,11 @@ argument processing and includes appropriate documentation descriptions.
|
|
|
22
22
|
|
|
23
23
|
import os
|
|
24
24
|
|
|
25
|
-
import template
|
|
26
|
-
import gen_constants as K
|
|
27
|
-
from gen_utils import save_file
|
|
28
|
-
from op_proto import OpProto
|
|
29
|
-
from base_generator import BaseGenerator
|
|
25
|
+
import common.template as template
|
|
26
|
+
import common.gen_constants as K
|
|
27
|
+
from common.gen_utils import save_file
|
|
28
|
+
from common.op_proto import OpProto
|
|
29
|
+
from common.base_generator import BaseGenerator
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class PyboostFunctionsPyGenerator(BaseGenerator):
|
|
@@ -78,7 +78,7 @@ class PyboostFunctionsPyGenerator(BaseGenerator):
|
|
|
78
78
|
func_args=func_args,
|
|
79
79
|
input_args=input_args,
|
|
80
80
|
func_impl_name=func_impl_name)
|
|
81
|
-
py_header =
|
|
81
|
+
py_header = template.PY_LICENSE_STR + self.IMPORT_PYBOOST_FUNC_HEADER
|
|
82
82
|
save_file(os.path.join(work_path, K.PY_AUTO_GEN_PATH), "gen_extend_func.py", py_header + gen_py)
|
|
83
83
|
|
|
84
84
|
def _get_op_description_dict(self, doc_yaml_data):
|
|
@@ -21,14 +21,15 @@ function definitions, includes necessary headers, and generates the registration
|
|
|
21
21
|
|
|
22
22
|
import os
|
|
23
23
|
|
|
24
|
-
import template
|
|
25
|
-
from template import Template
|
|
26
|
-
from gen_utils import save_file
|
|
27
|
-
import gen_constants as K
|
|
28
|
-
from op_proto import OpProto
|
|
29
|
-
from base_generator import BaseGenerator
|
|
30
|
-
from
|
|
31
|
-
|
|
24
|
+
import common.template as template
|
|
25
|
+
from common.template import Template
|
|
26
|
+
from common.gen_utils import save_file
|
|
27
|
+
import common.gen_constants as K
|
|
28
|
+
from common.op_proto import OpProto
|
|
29
|
+
from common.base_generator import BaseGenerator
|
|
30
|
+
from pyboost import pyboost_utils
|
|
31
|
+
|
|
32
|
+
from .op_template_parser import OpTemplateParser
|
|
32
33
|
|
|
33
34
|
|
|
34
35
|
class PyboostGradFunctionsGenerator(BaseGenerator):
|
|
@@ -44,7 +45,7 @@ class PyboostGradFunctionsGenerator(BaseGenerator):
|
|
|
44
45
|
def __init__(self):
|
|
45
46
|
super().__init__()
|
|
46
47
|
self.pyboost_func_include_header_template = Template(
|
|
47
|
-
f'#include "{K.
|
|
48
|
+
f'#include "{K.MS_PYBOOST_BASE_PATH}/auto_generate/${{operator_name}}.h"\n')
|
|
48
49
|
self.GEN_OPS_DEF_HEADER_TEMPLATE = template.GEN_OPS_DEF_HEADER_TEMPLATE
|
|
49
50
|
self.contiguous_template = Template(
|
|
50
51
|
"convert_$arg_name = runtime::ValueConverter::ContiguousTensorValue($device_target, convert_$arg_name);\n")
|
|
@@ -101,7 +102,7 @@ class PyboostGradFunctionsGenerator(BaseGenerator):
|
|
|
101
102
|
template.PYBOOST_GRAD_HEADER_TEMPLATE.replace(include_op_header=pyboost_func_include_headers_str,
|
|
102
103
|
function_body=pyboost_func_str,
|
|
103
104
|
register_function_body=register_func_str)
|
|
104
|
-
save_path = os.path.join(work_path, K.
|
|
105
|
+
save_path = os.path.join(work_path, K.PYBOOST_GRAD_FUNC_GEN_PATH)
|
|
105
106
|
file_name = "pyboost_grad_functions.cc"
|
|
106
107
|
save_file(save_path, file_name, pyboost_func_file)
|
|
107
108
|
|
mindspore/ops_generate/{pyboost_inner_prim_generator.py → pyboost/pyboost_inner_prim_generator.py}
RENAMED
|
@@ -22,13 +22,14 @@ that can be used to call the Pyboost primitive implementations.
|
|
|
22
22
|
"""
|
|
23
23
|
|
|
24
24
|
import os
|
|
25
|
-
import template
|
|
26
|
-
import gen_constants as K
|
|
27
|
-
from gen_utils import save_file
|
|
25
|
+
import common.template as template
|
|
26
|
+
import common.gen_constants as K
|
|
27
|
+
from common.gen_utils import save_file
|
|
28
28
|
|
|
29
|
-
from op_proto import OpProto
|
|
30
|
-
from
|
|
31
|
-
|
|
29
|
+
from common.op_proto import OpProto
|
|
30
|
+
from common.base_generator import BaseGenerator
|
|
31
|
+
|
|
32
|
+
from .op_template_parser import OpTemplateParser
|
|
32
33
|
|
|
33
34
|
|
|
34
35
|
class PyboostInnerPrimGenerator(BaseGenerator):
|
|
@@ -72,7 +73,7 @@ class PyboostInnerPrimGenerator(BaseGenerator):
|
|
|
72
73
|
None
|
|
73
74
|
"""
|
|
74
75
|
gen_py = ''
|
|
75
|
-
gen_header =
|
|
76
|
+
gen_header = template.PY_LICENSE_STR + self.IMPORT_PYBOOST_PRIM_HEADER
|
|
76
77
|
for op_proto in op_protos:
|
|
77
78
|
# only process pyboost enabled scenario
|
|
78
79
|
if op_proto.op_dispatch is None:
|
|
@@ -22,14 +22,14 @@ while the PyboostGradFunctionsHeaderGenerator creates the corresponding function
|
|
|
22
22
|
|
|
23
23
|
import os
|
|
24
24
|
|
|
25
|
-
import pyboost_utils
|
|
26
|
-
from pyboost_utils import is_optional_param
|
|
27
|
-
import template
|
|
28
|
-
from template import Template
|
|
29
|
-
import gen_constants as K
|
|
30
|
-
from gen_utils import save_file
|
|
31
|
-
from op_proto import OpProto
|
|
32
|
-
from base_generator import BaseGenerator
|
|
25
|
+
from pyboost import pyboost_utils
|
|
26
|
+
from pyboost.pyboost_utils import is_optional_param
|
|
27
|
+
import common.template as template
|
|
28
|
+
from common.template import Template
|
|
29
|
+
import common.gen_constants as K
|
|
30
|
+
from common.gen_utils import save_file
|
|
31
|
+
from common.op_proto import OpProto
|
|
32
|
+
from common.base_generator import BaseGenerator
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
class PyboostGradFunctionsCppGenerator(BaseGenerator):
|
|
@@ -55,7 +55,7 @@ class PyboostGradFunctionsCppGenerator(BaseGenerator):
|
|
|
55
55
|
self.native_function_multi_output_template = template.MULTI_OUTPUT_TEMPLATE
|
|
56
56
|
self.native_function_single_output_template = "const auto &output_value = op->outputs()[0];\n"
|
|
57
57
|
self.native_include_header_template = Template(
|
|
58
|
-
f'#include "{K.
|
|
58
|
+
f'#include "{K.MS_PYBOOST_BASE_PATH}/auto_generate/${{operator_name}}.h"\n')
|
|
59
59
|
self.convert_template = Template(
|
|
60
60
|
"auto convert_$arg_name = runtime::ValueConverter::${convert_func}(ConvertNode2Value($arg_name));\n")
|
|
61
61
|
|
|
@@ -76,6 +76,7 @@ class PyboostGradFunctionsCppGenerator(BaseGenerator):
|
|
|
76
76
|
"""
|
|
77
77
|
pyboost_func_str = ''
|
|
78
78
|
pyboost_func_include_headers_str = ''
|
|
79
|
+
ops_inc_head_set = set()
|
|
79
80
|
for op_proto in op_protos:
|
|
80
81
|
if op_proto.op_dispatch is None:
|
|
81
82
|
continue
|
|
@@ -103,9 +104,12 @@ class PyboostGradFunctionsCppGenerator(BaseGenerator):
|
|
|
103
104
|
pyboost_func_str = pyboost_func_str + template.NEW_LINE
|
|
104
105
|
pyboost_func_include_headers_str += (
|
|
105
106
|
self.native_include_header_template.replace(operator_name=op_proto.op_name))
|
|
107
|
+
ops_inc_head_set.add(
|
|
108
|
+
template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_proto.op_class.name[0].lower()))
|
|
106
109
|
native_grad_func_file = \
|
|
107
110
|
self.PYBOOST_NATIVE_GRAD_FUNCTIONS_TEMPLATE.replace(include_op_header=pyboost_func_include_headers_str,
|
|
108
|
-
function_body=pyboost_func_str
|
|
111
|
+
function_body=pyboost_func_str,
|
|
112
|
+
ops_inc=list(sorted(ops_inc_head_set)))
|
|
109
113
|
save_file(os.path.join(work_path, K.PYBOOST_NATIVE_GRAD_FUNC_GEN_PATH),
|
|
110
114
|
"pyboost_native_grad_functions.cc", native_grad_func_file)
|
|
111
115
|
|