From 040870125e509241d3a08e2ad075ec81efeb1ccd Mon Sep 17 00:00:00 2001 From: zyfncg Date: Fri, 25 Mar 2022 10:22:24 +0800 Subject: [PATCH] Scalar support marking data_type in yaml (#40867) * Scalar support marking data_type in yaml * fix code-gene bug --- .../final_state_generator/codegen_utils.py | 12 ++++++--- python/paddle/utils/code_gen/api.yaml | 10 ++++---- python/paddle/utils/code_gen/api_base.py | 25 ++++++++----------- python/paddle/utils/code_gen/sparse_api.yaml | 2 +- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/paddle/fluid/eager/auto_code_generator/final_state_generator/codegen_utils.py b/paddle/fluid/eager/auto_code_generator/final_state_generator/codegen_utils.py index 6e1bee37a4..e907b6bd1b 100644 --- a/paddle/fluid/eager/auto_code_generator/final_state_generator/codegen_utils.py +++ b/paddle/fluid/eager/auto_code_generator/final_state_generator/codegen_utils.py @@ -30,15 +30,19 @@ core_ops_args_info = {} core_ops_args_type_info = {} yaml_types_mapping = { - 'int' : 'int', 'int32' : 'int32_t', 'int64' : 'int64_t', 'size_t' : 'size_t', \ + 'int' : 'int', 'int32_t' : 'int32_t', 'int64_t' : 'int64_t', 'size_t' : 'size_t', \ 'float' : 'float', 'double' : 'double', 'bool' : 'bool', \ 'str' : 'std::string', \ 'Place' : 'paddle::experimental::Place', 'DataLayout' : 'paddle::experimental::DataLayout', 'DataType' : 'paddle::experimental::DataType', \ - 'int64[]' : 'std::vector', 'int[]' : 'std::vector', + 'int64_t[]' : 'std::vector', 'int[]' : 'std::vector', 'Tensor' : 'Tensor', 'Tensor[]' : 'std::vector', 'Tensor[Tensor[]]' : 'std::vector>', 'Scalar' : 'paddle::experimental::Scalar', + 'Scalar(int)' : 'paddle::experimental::Scalar', + 'Scalar(int64_t)' : 'paddle::experimental::Scalar', + 'Scalar(float)' : 'paddle::experimental::Scalar', + 'Scalar(double)' : 'paddle::experimental::Scalar', 'ScalarArray' : 'paddle::experimental::ScalarArray' } @@ -254,8 +258,8 @@ def ParseYamlForward(args_str, returns_str): fargs = r'(.*?)' wspace = r'\s*' - args_pattern = f'\({fargs}\)' - args_str = re.search(args_pattern, args_str).group(1) + args_pattern = f'^\({fargs}\)$' + args_str = re.search(args_pattern, args_str.strip()).group(1) inputs_list, attrs_list = ParseYamlArgs(args_str) returns_list = ParseYamlReturns(returns_str) diff --git a/python/paddle/utils/code_gen/api.yaml b/python/paddle/utils/code_gen/api.yaml index 40d5b593a0..e1b13ab440 100644 --- a/python/paddle/utils/code_gen/api.yaml +++ b/python/paddle/utils/code_gen/api.yaml @@ -19,7 +19,7 @@ - api : concat - args : (Tensor[] x, Scalar axis) + args : (Tensor[] x, Scalar(int64_t) axis) output : Tensor infer_meta : func : ConcatInferMeta @@ -123,7 +123,7 @@ backward : matmul_grad - api : mean - args : (Tensor x, int64[] axis={}, bool keep_dim=false) + args : (Tensor x, int64_t[] axis={}, bool keep_dim=false) output : Tensor infer_meta : func : ReduceInferMeta @@ -198,7 +198,7 @@ func : sotfmax - api : split - args : (Tensor x, ScalarArray num_or_sections, Scalar axis) + args : (Tensor x, ScalarArray num_or_sections, Scalar(int) axis) output : Tensor[] invoke : split_impl(x, num_or_sections, axis) @@ -212,7 +212,7 @@ backward : subtract_grad - api : sum - args : (Tensor x, int64[] axis={}, DataType dtype=DataType::UNDEFINED, bool keep_dim=false) + args : (Tensor x, int64_t[] axis={}, DataType dtype=DataType::UNDEFINED, bool keep_dim=false) output : Tensor infer_meta : func : SumInferMeta @@ -227,7 +227,7 @@ - api : one_hot - args : (Tensor x, Scalar num_classes) + args : (Tensor x, Scalar(int) num_classes) output : Tensor infer_meta : func : OneHotInferMeta diff --git a/python/paddle/utils/code_gen/api_base.py b/python/paddle/utils/code_gen/api_base.py index a42691d320..be407b5755 100644 --- a/python/paddle/utils/code_gen/api_base.py +++ b/python/paddle/utils/code_gen/api_base.py @@ -89,10 +89,13 @@ class BaseAPI(object): attr_types_map = { 'ScalarArray': 'const ScalarArray&', 'Scalar': 'const Scalar&', - 'uint8': 'uint8_t', + 'Scalar(int)': 'const Scalar&', + 'Scalar(int64_t)': 'const Scalar&', + 'Scalar(float)': 'const Scalar&', + 'Scalar(dobule)': 'const Scalar&', 'int': 'int', - 'int32': 'int32_t', - 'int64': 'int64_t', + 'int32_t': 'int32_t', + 'int64_t': 'int64_t', 'long': 'long', 'size_t': 'size_t', 'float': 'float', @@ -102,27 +105,21 @@ class BaseAPI(object): 'Place': 'Place', 'DataLayout': 'DataLayout', 'DataType': 'DataType', - 'int64[]': 'const std::vector&', - 'int[]': 'const std::vector&', - 'long[]': 'const std::vector&' + 'int64_t[]': 'const std::vector&', + 'int[]': 'const std::vector&' } optional_types_trans = { 'Tensor': 'const paddle::optional&', 'Tensor[]': 'const paddle::optional>&', - 'ScalarArray': 'const paddle::optional&', - 'Scalar': 'const paddle::optional&', 'int': 'paddle::optional', - 'int32': 'paddle::optional', - 'int64': 'paddle::optional', - 'size_t': 'paddle::optional', + 'int32_t': 'paddle::optional', + 'int64_t': 'paddle::optional', 'float': 'paddle::optional', 'double': 'paddle::optional', 'bool': 'paddle::optional', 'Place': 'paddle::optional', 'DataLayout': 'paddle::optional', - 'DataType': 'paddle::optional', - 'int64[]': 'paddle::optional>', - 'int[]': 'paddle::optional>' + 'DataType': 'paddle::optional' } args_declare_str = "" diff --git a/python/paddle/utils/code_gen/sparse_api.yaml b/python/paddle/utils/code_gen/sparse_api.yaml index c43e175215..770aaeae88 100644 --- a/python/paddle/utils/code_gen/sparse_api.yaml +++ b/python/paddle/utils/code_gen/sparse_api.yaml @@ -13,7 +13,7 @@ invoke : to_dense_impl(x) - api : to_sparse_coo - args : (Tensor x, int64 sparse_dim) + args : (Tensor x, int64_t sparse_dim) output : Tensor(out@SparseCooTensor) invoke : to_sparse_coo_impl(x, sparse_dim) -- GitLab