CMakeLists.txt 4.8 KB
Newer Older
L
luotao1 已提交
1 2
set(pass_file ${PADDLE_BINARY_DIR}/paddle/fluid/inference/api/paddle_inference_pass.h)
file(WRITE ${pass_file} "// Generated by the paddle/fluid/framework/ir/CMakeLists.txt.  DO NOT EDIT!\n\n")
L
luotao1 已提交
3
file(APPEND ${pass_file} "\#pragma once\n")
L
luotao1 已提交
4
file(APPEND ${pass_file} "\#include \"paddle/fluid/framework/ir/pass.h\"\n")
Y
Yan Chunwei 已提交
5 6 7


# Usage: pass_library(target inference) will append to paddle_inference_pass.h
8
unset(INFER_IR_PASSES CACHE) # clear the global variable
Y
Yan Chunwei 已提交
9
function(pass_library TARGET DEST)
L
luotao1 已提交
10 11 12 13
    set(options "")
    set(oneValueArgs "")
    set(multiValueArgs SRCS DEPS)
    cmake_parse_arguments(op_library "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
W
Wojciech Uss 已提交
14
    cc_library(${TARGET} SRCS ${TARGET}.cc DEPS graph_pattern_detector pass fuse_pass_base ${op_library_DEPS})
Y
Yan Chunwei 已提交
15 16 17 18
    # add more DEST here, such as train, dist and collect USE_PASS into a file automatically.
    if (${DEST} STREQUAL "base" OR ${DEST} STREQUAL "inference")
        message(STATUS "add pass ${TARGET} ${DEST}")
        file(APPEND ${pass_file} "USE_PASS(${TARGET});\n")
19
        set(INFER_IR_PASSES ${INFER_IR_PASSES} ${TARGET} CACHE INTERNAL "")
Y
Yan Chunwei 已提交
20
    endif()
L
luotao1 已提交
21 22
endfunction()

23

Y
yuyang18 已提交
24
cc_library(node SRCS node.cc DEPS proto_desc)
Y
Yan Chunwei 已提交
25
cc_library(graph SRCS graph.cc DEPS node pretty_log)
X
better  
Xin Pan 已提交
26
cc_library(graph_helper SRCS graph_helper.cc DEPS graph)
X
Xin Pan 已提交
27
cc_library(pass SRCS pass.cc DEPS graph node graph_helper)
28
cc_library(graph_traits SRCS graph_traits.cc DEPS graph)
L
luotao1 已提交
29
cc_library(graph_pattern_detector SRCS graph_pattern_detector.cc DEPS graph graph_helper graph_traits)
W
Wojciech Uss 已提交
30
cc_library(fuse_pass_base SRCS fuse_pass_base.cc DEPS pass)
L
luotao1 已提交
31

Y
Yan Chunwei 已提交
32 33
pass_library(graph_to_program_pass base)
pass_library(graph_viz_pass base)
M
minqiyang 已提交
34
pass_library(lock_free_optimize_pass base)
Y
Yan Chunwei 已提交
35 36 37 38
pass_library(fc_fuse_pass inference)
pass_library(attention_lstm_fuse_pass inference)
pass_library(infer_clean_graph_pass inference)
pass_library(fc_lstm_fuse_pass inference)
39
pass_library(embedding_fc_lstm_fuse_pass inference)
40
pass_library(fc_gru_fuse_pass inference)
Y
Yan Chunwei 已提交
41
pass_library(seq_concat_fc_fuse_pass inference)
42
pass_library(multi_batch_merge_pass base)
S
Sylwester Fraczek 已提交
43
pass_library(conv_bn_fuse_pass inference)
T
tensor-tang 已提交
44
pass_library(seqconv_eltadd_relu_fuse_pass inference)
T
tensor-tang 已提交
45
pass_library(seqpool_concat_fuse_pass inference)
T
tensor-tang 已提交
46
pass_library(repeated_fc_relu_fuse_pass inference)
47
pass_library(squared_mat_sub_fuse_pass inference)
48
pass_library(is_test_pass base)
49 50
pass_library(conv_elementwise_add_act_fuse_pass inference)
pass_library(conv_elementwise_add2_act_fuse_pass inference)
N
nhzlx 已提交
51
pass_library(conv_elementwise_add_fuse_pass inference)
N
nhzlx 已提交
52
pass_library(conv_affine_channel_fuse_pass inference)
53 54 55 56 57 58 59 60 61 62 63
pass_library(transpose_flatten_concat_fuse_pass inference)

# There may be many transpose-flatten structures in a model, and the output of
# these structures will be used as inputs to the concat Op. This pattern will
# be detected by our pass. The index here represents the number of structures in the
# pattern. We use index 3 ~ 6, because these quantities of structures are
# common in the models.
foreach (index RANGE 3 6)
   file(APPEND ${pass_file} "USE_PASS(transpose_flatten${index}_concat_fuse_pass);\n")
endforeach()

W
Wojciech Uss 已提交
64 65
if(WITH_MKLDNN)
    pass_library(mkldnn_placement_pass base)
S
Sylwester Fraczek 已提交
66
    pass_library(depthwise_conv_mkldnn_pass base)
M
Michal Gallus 已提交
67
    pass_library(conv_bias_mkldnn_fuse_pass inference)
W
Wojciech Uss 已提交
68
    pass_library(conv_relu_mkldnn_fuse_pass inference)
69
    pass_library(conv_elementwise_add_mkldnn_fuse_pass inference)
W
Wojciech Uss 已提交
70
endif()
71

C
chengduo 已提交
72
cc_library(fuse_elewise_add_act_pass SRCS fuse_elewise_add_act_pass.cc DEPS pass graph_pattern_detector )
73
cc_library(fuse_relu_depthwise_conv_pass SRCS fuse_relu_depthwise_conv_pass.cc DEPS pass graph_pattern_detector )
C
chengduo 已提交
74

L
luotao1 已提交
75
set(GLOB_PASS_LIB ${PASS_LIBRARY} CACHE INTERNAL "Global PASS library")
X
Xin Pan 已提交
76

77 78
cc_library(pass_builder SRCS pass_builder.cc DEPS pass)

X
Xin Pan 已提交
79
cc_test(node_test SRCS node_test.cc DEPS node)
X
Xin Pan 已提交
80 81 82
cc_test(pass_test SRCS pass_test.cc DEPS graph pass graph_helper)
cc_test(graph_test SRCS graph_test.cc DEPS graph graph_helper op_registry)
cc_test(graph_helper_test SRCS graph_helper_test.cc DEPS graph graph_helper op_registry)
X
Xin Pan 已提交
83
cc_test(graph_to_program_pass_test SRCS graph_to_program_pass_test.cc DEPS graph_to_program_pass)
84
cc_test(test_graph_pattern_detector SRCS graph_pattern_detector_tester.cc DEPS graph_pattern_detector)
L
luotao1 已提交
85
cc_test(test_fc_fuse_pass SRCS fc_fuse_pass_tester.cc DEPS fc_fuse_pass framework_proto)
86
cc_test(test_seqpool_concat_fuse_pass SRCS seqpool_concat_fuse_pass_tester.cc DEPS seqpool_concat_fuse_pass framework_proto)
87
cc_test(test_is_test_pass SRCS is_test_pass_tester.cc DEPS is_test_pass)
T
Tao Luo 已提交
88
if (WITH_MKLDNN)
S
Sylwester Fraczek 已提交
89
    cc_test(test_depthwise_conv_mkldnn_pass SRCS depthwise_conv_mkldnn_pass_tester.cc DEPS depthwise_conv_mkldnn_pass)
90
    cc_test(test_conv_relu_mkldnn_fuse_pass SRCS conv_relu_mkldnn_fuse_pass_tester.cc DEPS conv_relu_mkldnn_fuse_pass)
91
    cc_test(test_conv_elementwise_add_mkldnn_fuse_pass SRCS conv_elementwise_add_mkldnn_fuse_pass_tester.cc DEPS conv_elementwise_add_mkldnn_fuse_pass)
T
Tao Luo 已提交
92
endif ()