Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ paddle/fluid/op_use_default_grad_maker_PR.spec
paddle/fluid/operators/ops_extra_info.cc
paddle/phi/api/backward/backward_api.h
paddle/phi/api/backward/fused_backward_api.h
paddle/phi/api/backward/sparse_bw_api.h
paddle/phi/api/backward/sparse_backward_api.h
paddle/phi/api/backward/backward_api_base.h
paddle/phi/api/backward/fused_backward_api_base.h
paddle/phi/api/backward/sparse_backward_api_base.h
paddle/phi/api/include/api.h
paddle/phi/api/include/fused_api.h
paddle/phi/api/include/operants_base.h
Expand All @@ -19,12 +22,15 @@ paddle/phi/api/include/tensor_operants.h
paddle/phi/api/lib/api.cc
paddle/phi/api/lib/fused_api.cc
paddle/phi/api/lib/dygraph_api.*
paddle/phi/api/lib/backward_api.cc
paddle/phi/api/lib/fused_backward_api.cc
paddle/phi/api/lib/operants_manager.cc
paddle/phi/api/lib/sparse_api.cc
paddle/phi/api/lib/strings_api.cc
paddle/phi/api/lib/sparse_bw_api.cc
paddle/phi/api/lib/backward_api.cc
paddle/phi/api/lib/fused_backward_api.cc
paddle/phi/api/lib/sparse_backward_api.cc
paddle/phi/api/lib/backward_api_base.cc
paddle/phi/api/lib/fused_backward_api_base.cc
paddle/phi/api/lib/sparse_backward_api_base.cc
paddle/phi/api/lib/tensor_api.cc
paddle/phi/api/lib/tensor_operants.cc
paddle/phi/extension.h
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ cc_library(
if(NOT (NOT WITH_PYTHON AND ON_INFER))
cc_library(
final_dygraph_function
SRCS dygraph_functions.cc ${eager_manual_functions}
SRCS dygraph_functions.cc dygraph_grad_functions.cc
${eager_manual_functions}
DEPS ${eager_deps} final_dygraph_node)
add_dependencies(final_dygraph_function eager_codegen)
endif()
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
#include "paddle/fluid/framework/op_registry.h"
#include "paddle/fluid/imperative/tracer.h"
#include "paddle/phi/api/all.h"
#include "paddle/phi/api/backward/backward_api.h"
#include "paddle/phi/api/backward/sparse_bw_api.h"
#include "paddle/phi/api/backward/backward_api_base.h"
#include "paddle/phi/api/backward/sparse_backward_api_base.h"
#include "paddle/phi/core/platform/profiler/event_tracing.h"

#include "paddle/common/flags.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
#include "paddle/fluid/prim/api/composite_backward/composite_backward_api.h"
#include "paddle/fluid/prim/utils/utils.h"
#include "paddle/phi/api/all.h"
#include "paddle/phi/api/backward/backward_api.h"
#include "paddle/phi/api/backward/sparse_bw_api.h"
#include "paddle/phi/api/backward/backward_api_base.h"
#include "paddle/phi/api/backward/sparse_backward_api_base.h"
#include "paddle/phi/api/include/sparse_api.h"
#include "paddle/phi/api/lib/api_custom_impl.h"
#include "paddle/phi/core/platform/profiler/event_tracing.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
#include "paddle/fluid/framework/op_registry.h"
#include "paddle/fluid/imperative/tracer.h"
#include "paddle/phi/api/all.h"
#include "paddle/phi/api/backward/backward_api.h"
#include "paddle/phi/api/backward/sparse_bw_api.h"
#include "paddle/phi/api/backward/backward_api_base.h"
#include "paddle/phi/api/backward/sparse_backward_api_base.h"
#include "paddle/phi/api/include/sparse_api.h"
#include "paddle/phi/api/lib/api_custom_impl.h"
#include "paddle/phi/core/platform/profiler/event_tracing.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ def GenerateFileStructureForFinalDygraph(eager_dir):
| |- forwards
| |- "dygraph_functions.cc"
| |- "dygraph_functions.h"
| |- "dygraph_grad_functions.cc"
| |- "dygraph_grad_functions.h"
|
| |- backwards
| |- "nodes.cc"
Expand All @@ -42,10 +44,12 @@ def GenerateFileStructureForFinalDygraph(eager_dir):

# Empty files
dygraph_forward_api_h_path = os.path.join(
generated_dir, "dygraph_functions.h"
forwards_dir, "dygraph_functions.h"
)
empty_files = [dygraph_forward_api_h_path]
empty_files.append(os.path.join(forwards_dir, "dygraph_grad_functions.h"))
empty_files.append(os.path.join(forwards_dir, "dygraph_functions.cc"))
empty_files.append(os.path.join(forwards_dir, "dygraph_grad_functions.cc"))
empty_files.append(os.path.join(nodes_dir, "nodes.cc"))
empty_files.append(os.path.join(nodes_dir, "nodes.h"))

Expand Down
18 changes: 18 additions & 0 deletions paddle/fluid/eager/auto_code_generator/generator/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ set(tmp_forwards_cc_path
set(tmp_forwards_h_path
"${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/forwards/tmp_dygraph_functions.h"
)
set(tmp_backwards_cc_path
"${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/forwards/tmp_dygraph_grad_functions.cc"
)
set(tmp_backwards_h_path
"${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/forwards/tmp_dygraph_grad_functions.h"
)
set(tmp_nodes_cc_path
"${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/backwards/tmp_nodes.cc"
)
Expand All @@ -23,6 +29,12 @@ set(forwards_cc_path
set(forwards_h_path
"${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/forwards/dygraph_functions.h"
)
set(backwards_cc_path
"${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/forwards/dygraph_grad_functions.cc"
)
set(backwards_h_path
"${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/forwards/dygraph_grad_functions.h"
)
set(nodes_cc_path
"${PADDLE_SOURCE_DIR}/paddle/fluid/eager/api/generated/eager_generated/backwards/nodes.cc"
)
Expand All @@ -43,11 +55,17 @@ add_custom_target(
"--backward_yaml_path=${backward_yaml_path}"
"--forwards_cc_path=${tmp_forwards_cc_path}"
"--forwards_h_path=${tmp_forwards_h_path}"
"--backwards_cc_path=${tmp_backwards_cc_path}"
"--backwards_h_path=${tmp_backwards_h_path}"
"--nodes_cc_path=${tmp_nodes_cc_path}" "--nodes_h_path=${tmp_nodes_h_path}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_forwards_cc_path}
${forwards_cc_path}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_forwards_h_path}
${forwards_h_path}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_backwards_cc_path}
${backwards_cc_path}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_backwards_h_path}
${backwards_h_path}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_nodes_cc_path}
${nodes_cc_path}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_nodes_h_path}
Expand Down
82 changes: 55 additions & 27 deletions paddle/fluid/eager/auto_code_generator/generator/eager_gen.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,8 @@ def ParseArguments():
parser.add_argument('--nodes_cc_path', type=str)
parser.add_argument('--forwards_h_path', type=str)
parser.add_argument('--forwards_cc_path', type=str)
parser.add_argument('--backwards_h_path', type=str)
parser.add_argument('--backwards_cc_path', type=str)
parser.add_argument('--api_yaml_path', type=str)
parser.add_argument('--backward_yaml_path', type=str)

Expand Down Expand Up @@ -546,9 +548,9 @@ class {} : public egr::GradNodeBase {{
NODE_CC_FILE_TEMPLATE = """
#include "glog/logging.h"
#include "paddle/phi/api/all.h"
#include "paddle/phi/api/backward/backward_api.h"
#include "paddle/phi/api/backward/fused_backward_api.h"
#include "paddle/phi/api/backward/sparse_bw_api.h"
#include "paddle/phi/api/backward/backward_api_base.h"
#include "paddle/phi/api/backward/fused_backward_api_base.h"
#include "paddle/phi/api/backward/sparse_backward_api_base.h"
#include "paddle/fluid/imperative/tracer.h"
#include "paddle/fluid/framework/op_registry.h"
#include "paddle/phi/core/platform/profiler/event_tracing.h"
Expand Down Expand Up @@ -578,19 +580,28 @@ class {} : public egr::GradNodeBase {{

{}
"""
FORWARD_CC_HEADER = """
#include "paddle/fluid/eager/api/generated/eager_generated/forwards/dygraph_functions.h"
#include "paddle/fluid/eager/api/manual/eager_manual/dygraph_forward_api.h"
"""

BACKWARD_CC_HEADER = """
#include "paddle/fluid/eager/api/generated/eager_generated/forwards/dygraph_grad_functions.h"
#include "paddle/phi/api/backward/sparse_backward_api.h"
#include "paddle/phi/api/backward/fused_backward_api.h"
#include "paddle/phi/api/backward/backward_api.h"
"""
FORWARD_CC_FILE_TEMPLATE = """
#include "paddle/phi/api/lib/dygraph_api.h"
#include "paddle/fluid/eager/api/generated/eager_generated/forwards/dygraph_functions.h"
#include "paddle/fluid/eager/api/generated/eager_generated/backwards/nodes.h"
#include "paddle/fluid/eager/eager_layout_auto_tune.h"
#include "paddle/phi/api/include/strings_api.h"
#include "paddle/phi/api/include/sparse_api.h"

#include "paddle/fluid/eager/api/utils/global_utils.h"
#include "paddle/phi/core/platform/profiler/event_tracing.h"
#include "paddle/phi/backends/gpu/gpu_info.h"
#include "paddle/fluid/eager/nan_inf_utils.h"
#include "paddle/fluid/eager/api/manual/eager_manual/dygraph_forward_api.h"

#include "paddle/common/flags.h"
#include "paddle/phi/api/lib/data_transform.h"
#include "paddle/fluid/eager/type_promotion_utils.h"
Expand All @@ -612,9 +623,8 @@ class {} : public egr::GradNodeBase {{
#include "paddle/phi/api/all.h"
#include "paddle/fluid/eager/utils.h"
#include "paddle/fluid/framework/op_registry.h"
#include "paddle/fluid/eager/api/manual/eager_manual/dygraph_forward_api.h"
#include "paddle/utils/test_macros.h"

#include "paddle/fluid/eager/api/manual/eager_manual/dygraph_forward_api.h"
using CPUPlace = phi::CPUPlace;
{}
{}
Expand Down Expand Up @@ -3299,23 +3309,33 @@ def GenerateNodeHFile(filepath, node_declaration_str):
f.write(file_contents)


def GenerateForwardCCFile(filepath, forward_definition_str):
def GenerateForwardCCFile(filepath, forward_definition_str, grad_flag):
if os.path.exists(filepath):
os.remove(filepath)

core_ops_info_str = GenerateCoreOpInfoDefinition()
file_contents = FORWARD_CC_FILE_TEMPLATE.format(
if not grad_flag:
file_contents = FORWARD_CC_HEADER
core_ops_info_str = " "
else:
file_contents = BACKWARD_CC_HEADER
core_ops_info_str = GenerateCoreOpInfoDefinition()

file_contents += FORWARD_CC_FILE_TEMPLATE.format(
core_ops_info_str, forward_definition_str
)

with open(filepath, 'a') as f:
f.write(file_contents)


def GenerateForwardHFile(filepath, forward_function_declaration_str):
def GenerateForwardHFile(filepath, forward_function_declaration_str, grad_flag):
if os.path.exists(filepath):
os.remove(filepath)
if not grad_flag:
core_ops_info_str = ""
else:
core_ops_info_str = GenerateCoreOpInfoDeclaration()

core_ops_info_str = GenerateCoreOpInfoDeclaration()
file_contents = FORWARD_H_FILE_TEMPLATE.format(
core_ops_info_str, forward_function_declaration_str
)
Expand All @@ -3336,6 +3356,8 @@ def GenerateForwardHFile(filepath, forward_function_declaration_str):
forward_declaration_str = ""
forward_definition_str = ""

backward_declaration_str = ""
backward_definition_str = ""
# merge dygraph_ops.yaml and ops.yaml, dygraph_backward.yaml and backward.yaml
all_ops = []
all_bw = []
Expand Down Expand Up @@ -3380,6 +3402,20 @@ def GenerateForwardHFile(filepath, forward_function_declaration_str):
forward_declaration_str += generator.forward_declaration_str + "\n"
forward_definition_str += generator.forward_definition_str + "\n"

# Generate Files
nodes_h_path = args.nodes_h_path
nodes_cc_path = args.nodes_cc_path
forwards_h_path = args.forwards_h_path
forwards_cc_path = args.forwards_cc_path

GenerateNodeCCFile(nodes_cc_path, node_definition_str)
GenerateNodeHFile(nodes_h_path, node_declaration_str)
GenerateForwardCCFile(forwards_cc_path, forward_definition_str, False)
GenerateForwardHFile(forwards_h_path, forward_declaration_str, False)

backwards_h_path = args.backwards_h_path
backwards_cc_path = args.backwards_cc_path

for i in range(len(backward_yaml_paths)):
backward_yaml_path = backward_yaml_paths[i]
if backward_yaml_path.endswith('/backward.yaml'):
Expand All @@ -3395,18 +3431,10 @@ def GenerateForwardHFile(filepath, forward_function_declaration_str):

generator_grad.run(True)

node_declaration_str += generator_grad.node_declaration_str + "\n"
node_definition_str += generator_grad.node_definition_str + "\n"

forward_declaration_str += generator_grad.forward_declaration_str + "\n"
forward_definition_str += generator_grad.forward_definition_str + "\n"
# Generate Files
nodes_h_path = args.nodes_h_path
nodes_cc_path = args.nodes_cc_path
forwards_h_path = args.forwards_h_path
forwards_cc_path = args.forwards_cc_path
backward_declaration_str += (
generator_grad.forward_declaration_str + "\n"
)
backward_definition_str += generator_grad.forward_definition_str + "\n"

GenerateNodeCCFile(nodes_cc_path, node_definition_str)
GenerateNodeHFile(nodes_h_path, node_declaration_str)
GenerateForwardCCFile(forwards_cc_path, forward_definition_str)
GenerateForwardHFile(forwards_h_path, forward_declaration_str)
GenerateForwardCCFile(backwards_cc_path, backward_definition_str, True)
GenerateForwardHFile(backwards_h_path, backward_declaration_str, True)
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,7 @@ def FindParsingFunctionFromAttributeType(atype):
#include "paddle/phi/core/platform/profiler/event_tracing.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_grad_functions.h"
#include "paddle/fluid/eager/api/manual/eager_manual/dygraph_forward_api.h"
#include "paddle/fluid/eager/utils.h"
#include "paddle/fluid/pybind/eager_custom_python_api.h"
Expand Down
2 changes: 1 addition & 1 deletion paddle/fluid/operators/custom_device_common_op_registry.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ limitations under the License. */
#include "paddle/fluid/operators/collective/c_concat_op.h"
#include "paddle/fluid/operators/load_combine_op.h"
#include "paddle/fluid/operators/save_combine_op.h"
#include "paddle/phi/api/backward/backward_api.h"
#include "paddle/phi/api/backward/backward_api_base.h"
#include "paddle/phi/api/include/api.h"
#include "paddle/phi/backends/device_manager.h"
#include "paddle/phi/core/distributed/comm_context_manager.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ namespace prim {
using Tensor = paddle::Tensor;
using IntArray = paddle::experimental::IntArrayBase<paddle::Tensor>;
// This function should have as same signature as phi, which defined in
// paddle/phi/api/backward/backward_api.h
// paddle/phi/api/backward/backward_api_base.h

template <typename T>
void pow_grad(const Tensor& x,
Expand Down
2 changes: 1 addition & 1 deletion paddle/phi/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ Described as follows:
The automatic generation of the C++ API is generated by parsing the YAML configuration file. The YAML configuration file is divided into:

- Forward API configuration file(`paddle/phi/ops/yaml/ops.yaml`. After parsing, the generated code file is `paddle/phi/api/include/api.h` and `paddle/phi/api/lib/api.cc`)
- Backward API configuration file(`paddle/phi/ops/yaml/backward.yaml`. After parsing, the generated code file is `paddle/phi/api/backward/backward_api.h` and `paddle/phi/api/lib/backward_api.cc`)
- Backward API configuration file(`paddle/phi/ops/yaml/backward.yaml`. After parsing, the generated code file is `paddle/phi/api/backward/backward_api_base.h` and `paddle/phi/api/lib/backward_api_base.cc`, `paddle/phi/api/backward/backward_api.h` and `paddle/phi/api/lib/backward_api.cc`, xxx_impl api has void return type, xxx api has Tensor/vector<Tensor> return type)

The key to C++ API generation lies in the configuration of the YAML file. Taking `matmul` as an example, the forward and backward configuration are as follows:

Expand Down
Loading