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,16 +17,16 @@ Generate aclnn kernelmod or call func by input name in ops.yaml
|
|
|
17
17
|
"""
|
|
18
18
|
import argparse
|
|
19
19
|
import os
|
|
20
|
-
import stat
|
|
21
20
|
import re
|
|
22
21
|
import pathlib
|
|
23
22
|
import logging
|
|
24
|
-
import gen_utils
|
|
25
|
-
import template
|
|
26
|
-
|
|
27
|
-
from
|
|
28
|
-
from gen_constants import MS_OPS_KERNEL_PATH
|
|
29
|
-
import
|
|
23
|
+
import common.gen_utils as gen_utils
|
|
24
|
+
import common.template as template
|
|
25
|
+
import common.gen_constants as K
|
|
26
|
+
from common.op_proto import OpProto
|
|
27
|
+
from common.gen_constants import MS_OPS_KERNEL_PATH
|
|
28
|
+
from pyboost.pyboost_utils import AclnnUtils, get_dtypes
|
|
29
|
+
|
|
30
30
|
auto_gen = ''
|
|
31
31
|
|
|
32
32
|
|
|
@@ -37,25 +37,21 @@ def gen_h(kernelmod_name, aclnn_name, op_proto, kernelmod_h_path, need_update_sh
|
|
|
37
37
|
if not need_update_shape:
|
|
38
38
|
update_shape = "\n "
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
old_file = kernelmod_h_path + ".h"
|
|
42
|
-
flags = os.O_WRONLY | os.O_CREAT
|
|
43
|
-
mode = stat.S_IWUSR | stat.S_IRUSR
|
|
40
|
+
file_path = kernelmod_h_path + ".h"
|
|
44
41
|
aclnn_kernel_h_str = template.ACLNN_KERNEL_H_TEMPLATE.replace(aclnn_name=aclnn_name,
|
|
45
42
|
op_name=op_name.upper(),
|
|
46
43
|
auto_gen=auto_gen.upper(),
|
|
47
44
|
kernelmod_name=kernelmod_name,
|
|
48
45
|
update_shape=update_shape,
|
|
49
46
|
ops_kernel_path=MS_OPS_KERNEL_PATH)
|
|
50
|
-
|
|
51
|
-
h_file.write(aclnn_kernel_h_str)
|
|
52
|
-
gen_utils.check_change_and_replace_file(old_file, temp_file)
|
|
47
|
+
gen_utils.save_file(os.path.dirname(file_path), os.path.basename(file_path), aclnn_kernel_h_str)
|
|
53
48
|
|
|
54
49
|
|
|
55
50
|
def gen_cc(kernelmod_name, aclnn_name, op_proto, kernelmod_cc_path, need_update_shape):
|
|
56
51
|
"""generate cc files"""
|
|
57
52
|
op_name = op_proto.op_name
|
|
58
|
-
tuple_tensor_not_supported = template.TUPLE_TENSOR_NOT_SUPPORTED.replace(
|
|
53
|
+
tuple_tensor_not_supported = template.TUPLE_TENSOR_NOT_SUPPORTED.replace(
|
|
54
|
+
op_name=op_name)
|
|
59
55
|
input_templete = '\n '
|
|
60
56
|
inputs = ''
|
|
61
57
|
input_dtypes, output_dtypes, _ = get_dtypes(op_proto)
|
|
@@ -65,7 +61,7 @@ def gen_cc(kernelmod_name, aclnn_name, op_proto, kernelmod_cc_path, need_update_
|
|
|
65
61
|
if dtype != 'tensor':
|
|
66
62
|
if dtype == 'int':
|
|
67
63
|
dtype = 'int64_t'
|
|
68
|
-
input_templete += " auto {} =
|
|
64
|
+
input_templete += " auto {} = device::ascend::ConvertKernelTensor<{}>(inputs[kIndex{}]);\n".format(
|
|
69
65
|
n.arg_name, dtype, idx)
|
|
70
66
|
input_name = n.arg_name + ", "
|
|
71
67
|
if dtype == 'tuple[tensor]' and auto_gen == "_auto_gen":
|
|
@@ -78,7 +74,7 @@ def gen_cc(kernelmod_name, aclnn_name, op_proto, kernelmod_cc_path, need_update_
|
|
|
78
74
|
if dtype != 'tensor':
|
|
79
75
|
if dtype == 'int':
|
|
80
76
|
dtype = 'int64_t'
|
|
81
|
-
input_templete += " auto {} =
|
|
77
|
+
input_templete += " auto {} = device::ascend::ConvertKernelTensor<{}>(outputs[kIndex{}]);\n".format(
|
|
82
78
|
n.arg_name, dtype, idx)
|
|
83
79
|
output_name = n.arg_name + ", "
|
|
84
80
|
if dtype == 'tuple[tensor]' and auto_gen == "_auto_gen":
|
|
@@ -86,14 +82,12 @@ def gen_cc(kernelmod_name, aclnn_name, op_proto, kernelmod_cc_path, need_update_
|
|
|
86
82
|
inputs += output_name
|
|
87
83
|
inputs = inputs[:-2]
|
|
88
84
|
|
|
89
|
-
update_shape = template.update_output_shape_and_size_template.replace(
|
|
85
|
+
update_shape = template.update_output_shape_and_size_template.replace(
|
|
86
|
+
kernelmod_name=kernelmod_name)
|
|
90
87
|
if not need_update_shape:
|
|
91
88
|
update_shape = ""
|
|
92
89
|
|
|
93
|
-
|
|
94
|
-
old_file = kernelmod_cc_path + ".cc"
|
|
95
|
-
flags = os.O_WRONLY | os.O_CREAT
|
|
96
|
-
mode = stat.S_IWUSR | stat.S_IRUSR
|
|
90
|
+
file_path = kernelmod_cc_path + ".cc"
|
|
97
91
|
aclnn_kernel_cc_str = template.ACLNN_KERNEL_CC_TEMPLATE.replace(kernelmod_name=kernelmod_name,
|
|
98
92
|
input_templete=input_templete,
|
|
99
93
|
inputs=inputs,
|
|
@@ -102,9 +96,7 @@ def gen_cc(kernelmod_name, aclnn_name, op_proto, kernelmod_cc_path, need_update_
|
|
|
102
96
|
auto_gen_path=MS_OPS_KERNEL_PATH,
|
|
103
97
|
op_name=op_name,
|
|
104
98
|
auto_gen=auto_gen) + " "
|
|
105
|
-
|
|
106
|
-
cc_file.write(aclnn_kernel_cc_str)
|
|
107
|
-
gen_utils.check_change_and_replace_file(old_file, temp_file)
|
|
99
|
+
gen_utils.save_file(os.path.dirname(file_path), os.path.basename(file_path), aclnn_kernel_cc_str)
|
|
108
100
|
|
|
109
101
|
|
|
110
102
|
def generate(kernelmod_name, class_name, op_proto, h_and_cc, need_update_shape):
|
|
@@ -119,13 +111,12 @@ def gen_aclnn_kernel(op_proto: OpProto, need_update_shape=False, auto=False):
|
|
|
119
111
|
op_name = op_proto.op_name
|
|
120
112
|
skip_aclnn_list = {"slice", "expand_dims", "squeeze", "split", "generator"}
|
|
121
113
|
if op_name in skip_aclnn_list:
|
|
122
|
-
logging.warning(
|
|
114
|
+
logging.warning(
|
|
115
|
+
"Operator {%s} has no aclnn interface, no aclnn kernel will be generated.", op_name)
|
|
123
116
|
return
|
|
124
117
|
if check_op_registed(op_proto.op_name) and not auto:
|
|
125
118
|
logging.warning("Kernel {%s} is already registered.", op_name)
|
|
126
119
|
return
|
|
127
|
-
current_path = os.path.dirname(os.path.realpath(__file__))
|
|
128
|
-
work_path = os.path.join(current_path, '../../../../')
|
|
129
120
|
|
|
130
121
|
aclnn_path = f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn/'
|
|
131
122
|
# merge inner ops
|
|
@@ -133,39 +124,39 @@ def gen_aclnn_kernel(op_proto: OpProto, need_update_shape=False, auto=False):
|
|
|
133
124
|
aclnn_name = ''.join(word.capitalize() for word in op_name.split('_'))
|
|
134
125
|
kernelmod_name = op_proto.op_dispatch.ascend
|
|
135
126
|
if not dispatch or not op_proto.op_dispatch.enable:
|
|
136
|
-
raise ValueError(
|
|
127
|
+
raise ValueError(
|
|
128
|
+
"Op {} is not enabled dispatch, please check.".format(op_name))
|
|
137
129
|
global auto_gen
|
|
138
130
|
if auto:
|
|
139
|
-
if check_op_registed(op_name, True):
|
|
140
|
-
# Don't auto generate kernelmod if it is achieved manually.
|
|
141
|
-
return
|
|
142
131
|
auto_gen = "_auto_gen"
|
|
143
132
|
kernelmod_name = aclnn_name + "Ascend"
|
|
144
133
|
aclnn_path = f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn_auto_gen/'
|
|
145
|
-
pathlib.Path(os.path.join(
|
|
134
|
+
pathlib.Path(os.path.join(K.WORK_DIR, aclnn_path)
|
|
135
|
+
).mkdir(parents=True, exist_ok=True)
|
|
146
136
|
if dispatch.ascend is None:
|
|
147
137
|
raise ValueError("KernelMod {} is auto generated. If need achieve it, "
|
|
148
138
|
"please provide the KernelMod name in dispatch.".format(op_name))
|
|
149
139
|
op_class = op_proto.op_class
|
|
150
140
|
if op_class is not None and op_class.name is not None:
|
|
151
141
|
aclnn_name = op_class.name
|
|
152
|
-
kernelmod_h_and_cc_path = os.path.join(
|
|
153
|
-
|
|
142
|
+
kernelmod_h_and_cc_path = os.path.join(
|
|
143
|
+
K.WORK_DIR, aclnn_path + '{}_aclnn_kernel'.format(op_name))
|
|
144
|
+
generate(kernelmod_name, aclnn_name, op_proto,
|
|
145
|
+
kernelmod_h_and_cc_path, need_update_shape)
|
|
154
146
|
|
|
155
147
|
|
|
156
148
|
def get_registed_ops(file_path=f'{MS_OPS_KERNEL_PATH}/ascend/opapi/'):
|
|
157
149
|
'''get registered ops by search files'''
|
|
158
150
|
# default search in 'ops/kernel/ascend/opapi/'
|
|
159
|
-
|
|
160
|
-
work_path = os.path.join(current_path, '../../../../')
|
|
161
|
-
search_path = os.path.join(work_path, file_path)
|
|
151
|
+
search_path = os.path.join(K.WORK_DIR, file_path)
|
|
162
152
|
ret = []
|
|
163
153
|
try:
|
|
164
154
|
for root_path, _, files in os.walk(search_path):
|
|
165
155
|
for file_name in files:
|
|
166
156
|
with open(os.path.join(root_path, file_name), "r") as f:
|
|
167
157
|
file_context = f.read()
|
|
168
|
-
search_re = re.search(
|
|
158
|
+
search_re = re.search(
|
|
159
|
+
r"(?<=KERNEL_FACTORY_REG\()\w+(?=,)", file_context)
|
|
169
160
|
if search_re:
|
|
170
161
|
ret.append(search_re.group())
|
|
171
162
|
except OSError:
|
|
@@ -175,7 +166,8 @@ def get_registed_ops(file_path=f'{MS_OPS_KERNEL_PATH}/ascend/opapi/'):
|
|
|
175
166
|
|
|
176
167
|
|
|
177
168
|
registed_ops = get_registed_ops()
|
|
178
|
-
manual_registed_ops = get_registed_ops(
|
|
169
|
+
manual_registed_ops = get_registed_ops(
|
|
170
|
+
f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn/')
|
|
179
171
|
|
|
180
172
|
|
|
181
173
|
def check_op_registed(op_name, manual=False):
|
|
@@ -186,9 +178,7 @@ def check_op_registed(op_name, manual=False):
|
|
|
186
178
|
|
|
187
179
|
def generate_aclnn_reg_code(yaml_data):
|
|
188
180
|
"""generate aclnn register code"""
|
|
189
|
-
|
|
190
|
-
work_path = os.path.join(current_path, '../../../../')
|
|
191
|
-
ops_yaml_path = os.path.join(work_path, K.PY_OPS_GEN_PATH, "ops.yaml")
|
|
181
|
+
ops_yaml_path = os.path.join(K.WORK_DIR, K.PY_OPS_GEN_PATH, "ops.yaml")
|
|
192
182
|
yaml_str = gen_utils.safe_load_yaml(ops_yaml_path)
|
|
193
183
|
|
|
194
184
|
reg_code = f"""
|
|
@@ -205,17 +195,20 @@ namespace kernel {{
|
|
|
205
195
|
if Ascend is not None: # KernelMod is provided by yaml, don't auto generate it.
|
|
206
196
|
continue
|
|
207
197
|
if check_op_registed(operator_name):
|
|
208
|
-
logging.warning(
|
|
198
|
+
logging.warning(
|
|
199
|
+
"Kernel {%s} is already registered.", operator_name)
|
|
209
200
|
continue
|
|
210
201
|
_, _, none_tensor_exist = get_dtypes(operator_data)
|
|
211
202
|
if none_tensor_exist:
|
|
212
203
|
gen_aclnn_kernel(operator_name, yaml_str, auto=True)
|
|
213
204
|
continue
|
|
214
|
-
class_name = ''.join(word.capitalize()
|
|
205
|
+
class_name = ''.join(word.capitalize()
|
|
206
|
+
for word in operator_name.split('_'))
|
|
215
207
|
op_class = operator_data.get("class")
|
|
216
208
|
if op_class and op_class.get("name") is not None:
|
|
217
209
|
class_name = op_class.get("name")
|
|
218
|
-
inputs_outputs_num = len(operator_data.get(
|
|
210
|
+
inputs_outputs_num = len(operator_data.get(
|
|
211
|
+
"args")) + len(operator_data.get("returns"))
|
|
219
212
|
aclnn_name = AclnnUtils.get_aclnn_interface(class_name)
|
|
220
213
|
reg_code += f"""
|
|
221
214
|
MS_ACLNN_COMMON_KERNEL_FACTORY_REG({class_name}, {aclnn_name}, {inputs_outputs_num});"""
|
|
@@ -230,10 +223,13 @@ def generate_aclnn_reg_file(work_path, yaml_str):
|
|
|
230
223
|
"""
|
|
231
224
|
Generate nnacl kernelmod register
|
|
232
225
|
"""
|
|
233
|
-
tmp_register_file = work_path +
|
|
234
|
-
|
|
226
|
+
tmp_register_file = work_path + \
|
|
227
|
+
f'{MS_OPS_KERNEL_PATH}/ascend/opapi/tmp_aclnn_kernel_register.cc'
|
|
228
|
+
register_file = work_path + \
|
|
229
|
+
f'{MS_OPS_KERNEL_PATH}/ascend/opapi/aclnn_kernel_register_auto.cc'
|
|
235
230
|
reg_code = generate_aclnn_reg_code(yaml_str)
|
|
236
|
-
gen_utils.
|
|
231
|
+
gen_utils.save_file(
|
|
232
|
+
os.path.dirname(tmp_register_file), os.path.basename(tmp_register_file), gen_utils.cc_license_str + reg_code)
|
|
237
233
|
gen_utils.check_change_and_replace_file(register_file, tmp_register_file)
|
|
238
234
|
|
|
239
235
|
|
|
@@ -243,7 +239,8 @@ def main(op_name, need_update_shape):
|
|
|
243
239
|
|
|
244
240
|
|
|
245
241
|
parser = argparse.ArgumentParser(description="Generate aclnn KernelMod.")
|
|
246
|
-
parser.add_argument('-n', '--name', type=str, default=None,
|
|
242
|
+
parser.add_argument('-n', '--name', type=str, default=None,
|
|
243
|
+
help='Kernel name in yaml.')
|
|
247
244
|
parser.add_argument('-d', '--need_update_shape', type=bool, default=False,
|
|
248
245
|
help="Some kernel like:unique need update shape and size after launch. Default: False")
|
|
249
246
|
options, _ = parser.parse_known_args()
|
|
@@ -252,7 +249,8 @@ if __name__ == "__main__":
|
|
|
252
249
|
try:
|
|
253
250
|
name = options.name
|
|
254
251
|
if name is None:
|
|
255
|
-
raise ValueError(
|
|
252
|
+
raise ValueError(
|
|
253
|
+
"Please provide op name to generate aclnn kernelmod.")
|
|
256
254
|
is_need_update_shape = options.need_update_shape
|
|
257
255
|
main(name, is_need_update_shape)
|
|
258
256
|
except Exception as e: # pylint: disable=W0703
|
|
File without changes
|
|
@@ -17,11 +17,11 @@ Generates mindspore/common/_tensor_docs.py that attaches docs to tensor func API
|
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
19
|
import os
|
|
20
|
-
import gen_constants as K
|
|
21
|
-
from gen_utils import save_file
|
|
22
|
-
import template
|
|
23
|
-
from template import Template
|
|
24
|
-
from base_generator import BaseGenerator
|
|
20
|
+
import common.gen_constants as K
|
|
21
|
+
from common.gen_utils import save_file, safe_load_yaml_from_dir
|
|
22
|
+
import common.template as template
|
|
23
|
+
from common.template import Template
|
|
24
|
+
from common.base_generator import BaseGenerator
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class AddTensorDocsGenerator(BaseGenerator):
|
|
@@ -32,8 +32,9 @@ class AddTensorDocsGenerator(BaseGenerator):
|
|
|
32
32
|
def __init__(self):
|
|
33
33
|
self.ADD_TENSOR_DOCS_TEMPLATE = template.ADD_TENSOR_DOCS_TEMPLATE
|
|
34
34
|
self.attach_single_docstr_template = Template('attach_docstr("${api_name}", r"""${docstr}""")')
|
|
35
|
+
self.tensor_method_doc_yaml_dir_path = os.path.join(K.WORK_DIR, K.MS_TENSOR_METHOD_DOC_YAML_PATH)
|
|
35
36
|
|
|
36
|
-
def generate(self
|
|
37
|
+
def generate(self):
|
|
37
38
|
"""
|
|
38
39
|
Generates the content for the helper file and saves it to the specified path.
|
|
39
40
|
|
|
@@ -45,10 +46,11 @@ class AddTensorDocsGenerator(BaseGenerator):
|
|
|
45
46
|
None
|
|
46
47
|
"""
|
|
47
48
|
add_doc_statements = []
|
|
49
|
+
tensor_docs_data = safe_load_yaml_from_dir(self.tensor_method_doc_yaml_dir_path)
|
|
48
50
|
for api_name, tensor_doc in tensor_docs_data.items():
|
|
49
51
|
single_add_doc_statement = self.attach_single_docstr_template.replace(api_name=api_name,
|
|
50
52
|
docstr=tensor_doc['description'])
|
|
51
53
|
single_add_doc_statement += template.NEW_LINE
|
|
52
54
|
add_doc_statements.append(single_add_doc_statement)
|
|
53
55
|
_tensor_docs_py_str = self.ADD_TENSOR_DOCS_TEMPLATE.replace(add_doc_statements=add_doc_statements)
|
|
54
|
-
save_file(os.path.join(
|
|
56
|
+
save_file(os.path.join(K.WORK_DIR, K.ADD_TENSOR_DOCS_PY_PATH), "_tensor_docs.py", _tensor_docs_py_str)
|
|
@@ -18,14 +18,11 @@ Generates C++ helper files for primitive instance creation based on operator met
|
|
|
18
18
|
|
|
19
19
|
import os
|
|
20
20
|
|
|
21
|
-
import gen_constants as K
|
|
22
|
-
import gen_utils
|
|
23
|
-
import
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
import template
|
|
27
|
-
|
|
28
|
-
from base_generator import BaseGenerator
|
|
21
|
+
import common.gen_constants as K
|
|
22
|
+
import common.gen_utils as gen_utils
|
|
23
|
+
import common.template as template
|
|
24
|
+
from common.base_generator import BaseGenerator
|
|
25
|
+
from pyboost import pyboost_utils
|
|
29
26
|
|
|
30
27
|
|
|
31
28
|
class CppCreatePrimInstanceHelperGenerator(BaseGenerator):
|
|
@@ -56,7 +53,7 @@ class CppCreatePrimInstanceHelperGenerator(BaseGenerator):
|
|
|
56
53
|
"""
|
|
57
54
|
py_arg_default = self.generate_op_arg_default_value(op_protos)
|
|
58
55
|
py_labels = self.generate_op_labels(op_protos)
|
|
59
|
-
res_str = (template.
|
|
56
|
+
res_str = (template.PY_LICENSE_STR + py_arg_default + py_labels)
|
|
60
57
|
|
|
61
58
|
save_path = os.path.join(work_path, K.PY_AUTO_GEN_PATH)
|
|
62
59
|
file_name = "cpp_create_prim_instance_helper.py"
|
mindspore/ops_generate/{functional_map_cpp_generator.py → api/functional_map_cpp_generator.py}
RENAMED
|
@@ -17,11 +17,12 @@ Generates C++ functional map header files for graph mode.
|
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
19
|
import os
|
|
20
|
-
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
from gen_utils import save_file
|
|
24
|
-
from base_generator import BaseGenerator
|
|
20
|
+
|
|
21
|
+
import common.gen_constants as K
|
|
22
|
+
import common.template as template
|
|
23
|
+
from common.gen_utils import save_file, OrderedSet
|
|
24
|
+
from common.base_generator import BaseGenerator
|
|
25
|
+
from pyboost import pyboost_utils
|
|
25
26
|
|
|
26
27
|
|
|
27
28
|
class FunctionalMapCppGenerator(BaseGenerator):
|
|
@@ -79,9 +80,11 @@ class FunctionalMapCppGenerator(BaseGenerator):
|
|
|
79
80
|
Returns:
|
|
80
81
|
None
|
|
81
82
|
"""
|
|
83
|
+
ops_inc_head_set = set()
|
|
82
84
|
dep_method_decl_list = self._get_dep_method_decl_list(tensor_method_protos_data)
|
|
83
|
-
tensor_method_overload_list = self._get_functional_method_map(tensor_method_protos_data,
|
|
84
|
-
|
|
85
|
+
tensor_method_overload_list, op_inc_1 = self._get_functional_method_map(tensor_method_protos_data,
|
|
86
|
+
alias_func_mapping)
|
|
87
|
+
mint_overload_list, op_inc_2 = self._get_functional_mint_map(mint_func_protos_data, alias_func_mapping)
|
|
85
88
|
tensor_method_kw_only_args_list = self._get_tensor_method_kwonlyargs_map(tensor_method_protos_data)
|
|
86
89
|
mint_kw_only_args_list = self._get_mint_kwonlyargs_map(mint_func_protos_data, alias_func_mapping)
|
|
87
90
|
tensor_varargs_map_list = self._get_tensor_varargs_map_list(tensor_method_protos_data)
|
|
@@ -90,8 +93,12 @@ class FunctionalMapCppGenerator(BaseGenerator):
|
|
|
90
93
|
self._get_func_sigs_list(tensor_method_protos_data, alias_func_mapping, is_tensor_method=True))
|
|
91
94
|
funcs_mint_sigs_map = (
|
|
92
95
|
self._get_func_sigs_list(mint_func_protos_data, alias_func_mapping, is_tensor_method=False))
|
|
96
|
+
merge_op_inc = op_inc_1 | op_inc_2
|
|
97
|
+
for op_inc in merge_op_inc:
|
|
98
|
+
ops_inc_head_set.add(template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_inc[0].lower()))
|
|
93
99
|
functional_map_cc_code = (
|
|
94
|
-
self.FUNCTIONAL_MAP_CC_TEMPLATE.replace(
|
|
100
|
+
self.FUNCTIONAL_MAP_CC_TEMPLATE.replace(ops_inc=list(sorted(ops_inc_head_set)),
|
|
101
|
+
deprecated_method_decl=dep_method_decl_list,
|
|
95
102
|
tensor_method_map=tensor_method_overload_list,
|
|
96
103
|
mint_map=mint_overload_list,
|
|
97
104
|
tensor_method_kwonlyargs_map=tensor_method_kw_only_args_list,
|
|
@@ -100,7 +107,7 @@ class FunctionalMapCppGenerator(BaseGenerator):
|
|
|
100
107
|
mint_varargs_map=mint_varargs_map_list,
|
|
101
108
|
tensor_method_sigs_map=funcs_sig_map_list,
|
|
102
109
|
mint_sigs_map=funcs_mint_sigs_map))
|
|
103
|
-
save_path = os.path.join(work_path, K.
|
|
110
|
+
save_path = os.path.join(work_path, K.FUNCTIONAL_OVERLOAD_GEN_PATH)
|
|
104
111
|
save_file(save_path, "functional_map.cc", functional_map_cc_code)
|
|
105
112
|
save_file(save_path, "functional_map.h", self.FUNCTIONAL_MAP_H_TEMPLATE.replace())
|
|
106
113
|
|
|
@@ -138,7 +145,7 @@ class FunctionalMapCppGenerator(BaseGenerator):
|
|
|
138
145
|
Returns:
|
|
139
146
|
str: Generated function signatures string.
|
|
140
147
|
"""
|
|
141
|
-
sig_set =
|
|
148
|
+
sig_set = OrderedSet()
|
|
142
149
|
for tensor_proto in func_protos:
|
|
143
150
|
sig_set.add(self._generate_single_signature_str(func_api_name, tensor_proto, is_tensor_method))
|
|
144
151
|
sig_list = list(sig_set)
|
|
@@ -312,6 +319,8 @@ class FunctionalMapCppGenerator(BaseGenerator):
|
|
|
312
319
|
list: A list of strings, each representing a functional method map.
|
|
313
320
|
"""
|
|
314
321
|
|
|
322
|
+
op_inc_set = set()
|
|
323
|
+
|
|
315
324
|
def get_sort_func_method_list(func_protos):
|
|
316
325
|
"""
|
|
317
326
|
Retrieves a sorted list of operator primitives, prioritizing deprecated operators.
|
|
@@ -323,6 +332,7 @@ class FunctionalMapCppGenerator(BaseGenerator):
|
|
|
323
332
|
func_method_list.append(k_op_name)
|
|
324
333
|
else:
|
|
325
334
|
func_method_list.append(self.k_prim_op_template.replace(camel_op_name=k_op_name))
|
|
335
|
+
op_inc_set.add(k_op_name)
|
|
326
336
|
|
|
327
337
|
func_method_list.sort(key=lambda x: x.startswith("Deprecated"), reverse=True)
|
|
328
338
|
return func_method_list
|
|
@@ -340,13 +350,15 @@ class FunctionalMapCppGenerator(BaseGenerator):
|
|
|
340
350
|
self.functional_method_map_template.replace(op_name=alias,
|
|
341
351
|
sort_func_method_list_str=sort_func_method_list))
|
|
342
352
|
|
|
343
|
-
return deprecated_method_decl_list
|
|
353
|
+
return deprecated_method_decl_list, op_inc_set
|
|
344
354
|
|
|
345
355
|
def _get_functional_mint_map(self, mint_func_protos_data, alias_func_mapping):
|
|
346
356
|
"""
|
|
347
357
|
mint_func_protos_data (dict): A dictionary mapping mint API names to their prototype data.
|
|
348
358
|
"""
|
|
349
359
|
|
|
360
|
+
op_inc_set = set()
|
|
361
|
+
|
|
350
362
|
def get_mint_func_list(func_protos):
|
|
351
363
|
"""
|
|
352
364
|
Retrieves a sorted list of operator primitives, prioritizing deprecated operators.
|
|
@@ -355,6 +367,7 @@ class FunctionalMapCppGenerator(BaseGenerator):
|
|
|
355
367
|
for func_proto in func_protos:
|
|
356
368
|
k_op_name = pyboost_utils.get_op_name(func_proto.op_proto.op_name, func_proto.op_proto.op_class.name)
|
|
357
369
|
func_method_list.append(self.k_prim_op_template.replace(camel_op_name=k_op_name))
|
|
370
|
+
op_inc_set.add(k_op_name)
|
|
358
371
|
|
|
359
372
|
return func_method_list
|
|
360
373
|
|
|
@@ -369,7 +382,7 @@ class FunctionalMapCppGenerator(BaseGenerator):
|
|
|
369
382
|
mint_func_decl_list.append(
|
|
370
383
|
self.functional_method_map_template.replace(op_name=alias,
|
|
371
384
|
sort_func_method_list_str=mint_func_list))
|
|
372
|
-
return mint_func_decl_list
|
|
385
|
+
return mint_func_decl_list, op_inc_set
|
|
373
386
|
|
|
374
387
|
def _get_and_append_single_op_kw_only_args_list(self, func_protos, single_op_kw_only_args_list):
|
|
375
388
|
"""
|
|
@@ -21,12 +21,12 @@ constants for operator names based on given prototypes.
|
|
|
21
21
|
|
|
22
22
|
import os
|
|
23
23
|
|
|
24
|
-
import gen_constants as K
|
|
25
|
-
import gen_utils
|
|
26
|
-
import template
|
|
27
|
-
from template import Template
|
|
24
|
+
import common.gen_constants as K
|
|
25
|
+
import common.gen_utils as gen_utils
|
|
26
|
+
import common.template as template
|
|
27
|
+
from common.template import Template
|
|
28
28
|
|
|
29
|
-
from base_generator import BaseGenerator
|
|
29
|
+
from common.base_generator import BaseGenerator
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class FunctionalOverloadPyGenerator(BaseGenerator):
|
|
@@ -40,6 +40,7 @@ class FunctionalOverloadPyGenerator(BaseGenerator):
|
|
|
40
40
|
"""
|
|
41
41
|
self.FUNCTIONAL_OVERLOAD_PY_TEMPLATE = template.FUNCTIONAL_OVERLOAD_PY_TEMPLATE
|
|
42
42
|
|
|
43
|
+
self.mint_func_doc_yaml_dir_path = os.path.join(K.WORK_DIR, K.MS_MINT_FUNC_DOC_YAML_PATH)
|
|
43
44
|
self.import_mint_template = Template("from mindspore._c_expression import _${cpp_func_name}_instance\n")
|
|
44
45
|
self.mint_def_template = Template(
|
|
45
46
|
'def ${mint_func_name}(*args, **kwargs):\n'
|
|
@@ -47,7 +48,7 @@ class FunctionalOverloadPyGenerator(BaseGenerator):
|
|
|
47
48
|
' return _${cpp_func_name}_instance(*args, **kwargs)\n\n\n'
|
|
48
49
|
)
|
|
49
50
|
|
|
50
|
-
def generate(self, work_path, mint_func_protos_data,
|
|
51
|
+
def generate(self, work_path, mint_func_protos_data, alias_api_mapping):
|
|
51
52
|
"""
|
|
52
53
|
Generates python code for operator names and saves it to a header file.
|
|
53
54
|
|
|
@@ -56,6 +57,7 @@ class FunctionalOverloadPyGenerator(BaseGenerator):
|
|
|
56
57
|
function_doc_data (dict): A dictionary mapping function names to their docstring data.
|
|
57
58
|
alias_api_mapping (dict): A dictionary mapping aliases to their prototype data.
|
|
58
59
|
"""
|
|
60
|
+
function_doc_data = gen_utils.safe_load_yaml_from_dir(self.mint_func_doc_yaml_dir_path)
|
|
59
61
|
validate_func_docs(mint_func_protos_data, function_doc_data, alias_api_mapping)
|
|
60
62
|
import_mint_list, mint_init_list, mint_def_list, add_to_all_list = [], [], [], []
|
|
61
63
|
for mint_api_name, _ in mint_func_protos_data.items():
|
|
@@ -18,12 +18,12 @@ This module provides classes for generating C++ header and implementation files
|
|
|
18
18
|
|
|
19
19
|
import os
|
|
20
20
|
|
|
21
|
-
import template
|
|
22
|
-
from template import Template
|
|
23
|
-
import gen_constants as K
|
|
24
|
-
from gen_utils import save_file
|
|
25
|
-
from base_generator import BaseGenerator
|
|
26
|
-
from pyboost_utils import is_optional_param, get_input_dtype, get_return_type
|
|
21
|
+
import common.template as template
|
|
22
|
+
from common.template import Template
|
|
23
|
+
import common.gen_constants as K
|
|
24
|
+
from common.gen_utils import save_file
|
|
25
|
+
from common.base_generator import BaseGenerator
|
|
26
|
+
from pyboost.pyboost_utils import is_optional_param, get_input_dtype, get_return_type
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
class FunctionsHeaderGenerator(BaseGenerator):
|
|
@@ -57,7 +57,7 @@ class FunctionsHeaderGenerator(BaseGenerator):
|
|
|
57
57
|
return_type=return_type_str)
|
|
58
58
|
functions_list.append(functions)
|
|
59
59
|
pyboost_func_h_str = self.FUNCTIONS_H_TEMPLATE.replace(op_call_with_grad=functions_list)
|
|
60
|
-
save_path = os.path.join(work_path, K.
|
|
60
|
+
save_path = os.path.join(work_path, K.MS_PYBOOST_FUNCTIONS_AUTO_GEN_PATH)
|
|
61
61
|
file_name = "functions.h"
|
|
62
62
|
save_file(save_path, file_name, pyboost_func_h_str)
|
|
63
63
|
|
|
@@ -90,7 +90,7 @@ class FunctionsGenerator(BaseGenerator):
|
|
|
90
90
|
self.FUNCTIONS_CC_TEMPLATE = template.FUNCTIONS_CC_TEMPLATE
|
|
91
91
|
self.FUNCTION_BODY_TEMPLATE = template.FUNCTION_BODY_TEMPLATE
|
|
92
92
|
self.pyboost_func_include_header_template = Template(
|
|
93
|
-
f'#include "{K.
|
|
93
|
+
f'#include "{K.MS_PYBOOST_BASE_PATH}/auto_generate/${{operator_name}}.h"\n'
|
|
94
94
|
)
|
|
95
95
|
self.clone_inplace_input_template = Template(
|
|
96
96
|
'GetCloneFunc()(op, prim::kPrim${class_name}, device_target, {${grad_args}});'
|
|
@@ -106,15 +106,19 @@ class FunctionsGenerator(BaseGenerator):
|
|
|
106
106
|
"""
|
|
107
107
|
func_include_headers_list = []
|
|
108
108
|
op_call_with_grad_list = []
|
|
109
|
+
ops_inc_head_set = set()
|
|
109
110
|
for op_proto in op_protos:
|
|
110
111
|
if op_proto.op_dispatch is None or op_proto.op_dispatch.is_comm_op:
|
|
111
112
|
continue
|
|
112
113
|
func_include_headers_list.append(
|
|
113
114
|
self.pyboost_func_include_header_template.replace(operator_name=op_proto.op_name))
|
|
114
115
|
op_call_with_grad_list.append(self._get_function_body(op_proto))
|
|
116
|
+
ops_inc_head_set.add(
|
|
117
|
+
template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_proto.op_class.name[0].lower()))
|
|
115
118
|
pyboost_func_h_str = self.FUNCTIONS_CC_TEMPLATE.replace(op_call_with_grad=op_call_with_grad_list,
|
|
116
|
-
pyboost_op_header_include=func_include_headers_list
|
|
117
|
-
|
|
119
|
+
pyboost_op_header_include=func_include_headers_list,
|
|
120
|
+
ops_inc=list(sorted(ops_inc_head_set)))
|
|
121
|
+
save_path = os.path.join(work_path, K.MS_PYBOOST_FUNCTIONS_AUTO_GEN_PATH)
|
|
118
122
|
file_name = "functions.cc"
|
|
119
123
|
save_file(save_path, file_name, pyboost_func_h_str)
|
|
120
124
|
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Copyright 2025 Huawei Technologies Co., Ltd
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ============================================================================
|
|
15
|
+
"""
|
|
16
|
+
Generate api definition files
|
|
17
|
+
"""
|
|
18
|
+
import copy
|
|
19
|
+
|
|
20
|
+
from resources.resource_list import ResourceType
|
|
21
|
+
from common import gen_constants as K
|
|
22
|
+
from tensor_py_cc_generator import TensorPyCppGenerator
|
|
23
|
+
|
|
24
|
+
from .tensor_func_reg_cpp_generator import TensorFuncRegCppGenerator
|
|
25
|
+
from .functional_map_cpp_generator import FunctionalMapCppGenerator
|
|
26
|
+
from .add_tensor_docs_generator import AddTensorDocsGenerator
|
|
27
|
+
from .functional_overload_py_generator import FunctionalOverloadPyGenerator
|
|
28
|
+
from .cpp_create_prim_instance_helper_generator import CppCreatePrimInstanceHelperGenerator
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def gen_tensor_func_code(work_path, op_protos, func_protos, alias_api_mapping):
|
|
32
|
+
generator = TensorFuncRegCppGenerator()
|
|
33
|
+
generator.generate(work_path, op_protos, func_protos, alias_api_mapping)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def gen_functional_map_code(work_path, tensor_method_protos, mint_func_protos, alias_api_mapping):
|
|
37
|
+
generator = FunctionalMapCppGenerator()
|
|
38
|
+
generator.generate(work_path, tensor_method_protos, mint_func_protos, alias_api_mapping)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def gen_tensor_docs_code():
|
|
42
|
+
generator = AddTensorDocsGenerator()
|
|
43
|
+
generator.generate()
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def gen_functional_overload_py(work_path, mint_func_protos, alias_api_mapping):
|
|
47
|
+
generator = FunctionalOverloadPyGenerator()
|
|
48
|
+
generator.generate(work_path, mint_func_protos, alias_api_mapping)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def gen_tensor_py_cc(work_path, tensor_method_protos, alias_api_mapping):
|
|
52
|
+
generator = TensorPyCppGenerator()
|
|
53
|
+
generator.generate(work_path, tensor_method_protos, alias_api_mapping)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def generate_create_instance_helper_file(resource_mgr):
|
|
57
|
+
"""
|
|
58
|
+
Generate C++ helper file from yaml.
|
|
59
|
+
"""
|
|
60
|
+
op_protos = resource_mgr.get_resource(ResourceType.OP_PROTO)
|
|
61
|
+
tensor_method_protos = resource_mgr.get_resource(ResourceType.TENSOR_METHOD_PROTOS)
|
|
62
|
+
op_protos_with_deprecated = get_tensor_op_protos_with_deprecated(tensor_method_protos, op_protos)
|
|
63
|
+
generator = CppCreatePrimInstanceHelperGenerator()
|
|
64
|
+
generator.generate(K.WORK_DIR, op_protos_with_deprecated)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def get_tensor_op_protos_with_deprecated(func_protos, op_protos):
|
|
68
|
+
"""
|
|
69
|
+
Get op_protos with deprecated op_protos from func_protos.
|
|
70
|
+
"""
|
|
71
|
+
tensor_op_protos = copy.deepcopy(op_protos)
|
|
72
|
+
for _, item in func_protos.items():
|
|
73
|
+
for func_proto in item:
|
|
74
|
+
op_name = func_proto.op_proto.op_name
|
|
75
|
+
if "deprecated" in func_proto.op_proto.op_name:
|
|
76
|
+
func_proto.op_proto.op_class.name = ''.join(word.capitalize() for word in op_name.split('_'))
|
|
77
|
+
if func_proto.op_proto.op_name[-1] == '_':
|
|
78
|
+
func_proto.op_proto.op_class.name += '_'
|
|
79
|
+
tensor_op_protos.append(func_proto.op_proto)
|
|
80
|
+
return tensor_op_protos
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def generate_api_files(resource_mgr):
|
|
84
|
+
"""
|
|
85
|
+
Generate api-related files.
|
|
86
|
+
"""
|
|
87
|
+
work_path = K.WORK_DIR
|
|
88
|
+
op_protos = resource_mgr.get_resource(ResourceType.OP_PROTO)
|
|
89
|
+
tensor_method_protos = resource_mgr.get_resource(ResourceType.TENSOR_METHOD_PROTOS)
|
|
90
|
+
mint_func_protos = resource_mgr.get_resource(ResourceType.MINT_FUNC_PROTOS)
|
|
91
|
+
alias_api_mapping = resource_mgr.get_resource(ResourceType.ALIAS_API_MAPPING)
|
|
92
|
+
# generate create prim instance helper file
|
|
93
|
+
generate_create_instance_helper_file(resource_mgr)
|
|
94
|
+
# generate tensor_py func code
|
|
95
|
+
gen_tensor_func_code(work_path, op_protos, tensor_method_protos, alias_api_mapping)
|
|
96
|
+
# generate functional map code
|
|
97
|
+
gen_functional_map_code(work_path, tensor_method_protos, mint_func_protos, alias_api_mapping)
|
|
98
|
+
# generate _tensor_docs.py that attaches docs to tensor func APIs when import mindspore
|
|
99
|
+
gen_tensor_docs_code()
|
|
100
|
+
# generate functional_overload.py which init pybind mint APIs from cpp
|
|
101
|
+
gen_functional_overload_py(work_path, mint_func_protos, alias_api_mapping)
|
|
102
|
+
# generate tensor_py.cc
|
|
103
|
+
gen_tensor_py_cc(work_path, tensor_method_protos, alias_api_mapping)
|