未验证 提交 e73857a3 编写于 作者: J Jack Zhou 提交者: GitHub

Add string api python c code gen (#40992)

上级 023d8771
...@@ -8,6 +8,8 @@ set(forwards_cc_path "${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eage ...@@ -8,6 +8,8 @@ set(forwards_cc_path "${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eage
set(forwards_h_path "${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/forwards/dygraph_functions.h") set(forwards_h_path "${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/forwards/dygraph_functions.h")
set(nodes_cc_path "${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/backwards/nodes.cc") set(nodes_cc_path "${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/backwards/nodes.cc")
set(nodes_h_path "${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/backwards/nodes.h") set(nodes_h_path "${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/backwards/nodes.h")
# StringTensor only needs forward api
set(fwd_api_yaml_path "${PADDLE_SOURCE_DIR}/python/paddle/utils/code_gen/strings_api.yaml")
message("Final State Eager CodeGen") message("Final State Eager CodeGen")
add_custom_target(eager_final_state_codegen add_custom_target(eager_final_state_codegen
...@@ -30,7 +32,7 @@ set(python_c_output_path "${PADDLE_SOURCE_DIR}/paddle/fluid/pybind/eager_final_s ...@@ -30,7 +32,7 @@ set(python_c_output_path "${PADDLE_SOURCE_DIR}/paddle/fluid/pybind/eager_final_s
add_custom_target(eager_final_state_python_c_codegen add_custom_target(eager_final_state_python_c_codegen
COMMAND "${PYTHON_EXECUTABLE}" "${PADDLE_SOURCE_DIR}/paddle/fluid/eager/auto_code_generator/final_state_generator/python_c_gen.py" COMMAND "${PYTHON_EXECUTABLE}" "${PADDLE_SOURCE_DIR}/paddle/fluid/eager/auto_code_generator/final_state_generator/python_c_gen.py"
"--api_yaml_path=${api_yaml_path}" "--api_yaml_path=${api_yaml_path},${fwd_api_yaml_path}"
"--output_path=${tmp_python_c_output_path}" "--output_path=${tmp_python_c_output_path}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_python_c_output_path} ${python_c_output_path} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_python_c_output_path} ${python_c_output_path}
VERBATIM VERBATIM
......
...@@ -421,3 +421,5 @@ class YamlGeneratorBase: ...@@ -421,3 +421,5 @@ class YamlGeneratorBase:
api_yaml_path = self.api_yaml_path api_yaml_path = self.api_yaml_path
if "sparse" in api_yaml_path: if "sparse" in api_yaml_path:
self.namespace = "sparse::" self.namespace = "sparse::"
elif "strings" in api_yaml_path:
self.namespace = "strings::"
...@@ -125,7 +125,7 @@ FUNCTION_NAME_TEMPLATE = \ ...@@ -125,7 +125,7 @@ FUNCTION_NAME_TEMPLATE = \
PYTHON_C_FUNCTION_REG_TEMPLATE = \ PYTHON_C_FUNCTION_REG_TEMPLATE = \
""" """
{{\"final_state_{}\", (PyCFunction)(void(*)(void)) {}eager_final_state_api_{}, METH_VARARGS | METH_KEYWORDS, \"C++ interface function for {} in dygraph.\"}} {{\"final_state_{}{}\", (PyCFunction)(void(*)(void)) {}eager_final_state_api_{}, METH_VARARGS | METH_KEYWORDS, \"C++ interface function for {} in dygraph.\"}}
""" """
...@@ -142,6 +142,7 @@ PYTHON_C_WRAPPER_TEMPLATE = \ ...@@ -142,6 +142,7 @@ PYTHON_C_WRAPPER_TEMPLATE = \
#include "paddle/phi/common/scalar.h" #include "paddle/phi/common/scalar.h"
#include "paddle/phi/common/scalar_array.h" #include "paddle/phi/common/scalar_array.h"
#include "paddle/phi/api/include/sparse_api.h" #include "paddle/phi/api/include/sparse_api.h"
#include "paddle/phi/api/include/strings_api.h"
#include "paddle/fluid/pybind/op_function_common.h" #include "paddle/fluid/pybind/op_function_common.h"
#include "paddle/fluid/eager/api/generated/eager_generated/forwards/dygraph_functions.h" #include "paddle/fluid/eager/api/generated/eager_generated/forwards/dygraph_functions.h"
#include "paddle/fluid/pybind/exception.h" #include "paddle/fluid/pybind/exception.h"
...@@ -328,9 +329,13 @@ class PythonCSingleFunctionGenerator(FunctionGeneratorBase): ...@@ -328,9 +329,13 @@ class PythonCSingleFunctionGenerator(FunctionGeneratorBase):
get_eager_tensor_str, parse_attributes_str, fwd_function_name, get_eager_tensor_str, parse_attributes_str, fwd_function_name,
dygraph_function_call_str, return_str) dygraph_function_call_str, return_str)
# Set prefix of forward_api_name to avoid conflicts
prefix = self.namespace.strip("::")
forward_api_name_prefix = "" if prefix == "" else prefix + "_"
# Generate Python-C Function Registration # Generate Python-C Function Registration
self.python_c_function_reg_str = PYTHON_C_FUNCTION_REG_TEMPLATE.format( self.python_c_function_reg_str = PYTHON_C_FUNCTION_REG_TEMPLATE.format(
forward_api_name, namespace, forward_api_name, forward_api_name) forward_api_name_prefix, forward_api_name, namespace,
forward_api_name, forward_api_name)
if len(inplace_map) > 0: if len(inplace_map) > 0:
assert len( assert len(
...@@ -361,8 +366,8 @@ class PythonCSingleFunctionGenerator(FunctionGeneratorBase): ...@@ -361,8 +366,8 @@ class PythonCSingleFunctionGenerator(FunctionGeneratorBase):
# Generate Python-C Function Registration # Generate Python-C Function Registration
self.python_c_function_reg_str += "\n," + PYTHON_C_FUNCTION_REG_TEMPLATE.format( self.python_c_function_reg_str += "\n," + PYTHON_C_FUNCTION_REG_TEMPLATE.format(
inplaced_forward_api_name, namespace, inplaced_forward_api_name, forward_api_name_prefix, inplaced_forward_api_name, namespace,
inplaced_forward_api_name) inplaced_forward_api_name, inplaced_forward_api_name)
def run(self): def run(self):
# Initialized is_forward_only # Initialized is_forward_only
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册