CMakeLists.txt 8.2 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 8
add_subdirectory(fuse_optimizer_ops_pass)
add_subdirectory(memory_optimize_pass)
add_subdirectory(multi_devices_graph_pass)
9 10 11
if(NOT APPLE AND NOT WIN32)
    add_subdirectory(fusion_group)
endif()
Y
Yan Chunwei 已提交
12 13

# Usage: pass_library(target inference) will append to paddle_inference_pass.h
14
unset(INFER_IR_PASSES CACHE) # clear the global variable
Y
Yan Chunwei 已提交
15
function(pass_library TARGET DEST)
L
luotao1 已提交
16 17
    set(options "")
    set(oneValueArgs "")
18
    set(multiValueArgs SRCS DEPS DIR)
19 20
    set(targetPrefix "")

21 22 23
    cmake_parse_arguments(pass_library "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
    if(pass_library_DIR)
        cc_library(${TARGET} SRCS ${pass_library_DIR}/${TARGET}.cc DEPS graph_pattern_detector pass fuse_pass_base ${pass_library_DEPS})
24
    else()
25
        cc_library(${TARGET} SRCS ${TARGET}.cc DEPS graph_pattern_detector pass fuse_pass_base ${pass_library_DEPS})
26 27
    endif()

Y
Yan Chunwei 已提交
28 29 30 31
    # 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")
32
        set(INFER_IR_PASSES ${INFER_IR_PASSES} ${TARGET} CACHE INTERNAL "")
Y
Yan Chunwei 已提交
33
    endif()
L
luotao1 已提交
34 35
endfunction()

Y
yuyang18 已提交
36
cc_library(node SRCS node.cc DEPS proto_desc)
Y
Yan Chunwei 已提交
37
cc_library(graph SRCS graph.cc DEPS node pretty_log)
X
better  
Xin Pan 已提交
38
cc_library(graph_helper SRCS graph_helper.cc DEPS graph)
X
Xin Pan 已提交
39
cc_library(pass SRCS pass.cc DEPS graph node graph_helper)
40
cc_library(graph_traits SRCS graph_traits.cc DEPS graph)
L
luotao1 已提交
41
cc_library(graph_pattern_detector SRCS graph_pattern_detector.cc DEPS graph graph_helper graph_traits)
42
cc_library(subgraph_detector SRCS subgraph_detector.cc DEPS graph_pattern_detector executor)
W
Wojciech Uss 已提交
43
cc_library(fuse_pass_base SRCS fuse_pass_base.cc DEPS pass)
44
cc_library(placement_pass_base SRCS placement_pass_base.cc DEPS pass)
L
luotao1 已提交
45

46
cc_library(coalesce_grad_tensor_pass SRCS coalesce_grad_tensor_pass.cc DEPS graph graph_helper)
47

Y
Yan Chunwei 已提交
48 49
pass_library(graph_to_program_pass base)
pass_library(graph_viz_pass base)
M
minqiyang 已提交
50
pass_library(lock_free_optimize_pass base)
Y
Yan Chunwei 已提交
51 52 53
pass_library(fc_fuse_pass inference)
pass_library(attention_lstm_fuse_pass inference)
pass_library(fc_lstm_fuse_pass inference)
54
pass_library(embedding_fc_lstm_fuse_pass inference)
55
pass_library(fc_gru_fuse_pass inference)
Y
Yan Chunwei 已提交
56
pass_library(seq_concat_fc_fuse_pass inference)
57
pass_library(multi_batch_merge_pass base)
S
Sylwester Fraczek 已提交
58
pass_library(conv_bn_fuse_pass inference)
T
tensor-tang 已提交
59
pass_library(seqconv_eltadd_relu_fuse_pass inference)
T
tensor-tang 已提交
60
pass_library(seqpool_concat_fuse_pass inference)
61
pass_library(seqpool_cvm_concat_fuse_pass inference)
T
tensor-tang 已提交
62
pass_library(repeated_fc_relu_fuse_pass inference)
63
pass_library(squared_mat_sub_fuse_pass inference)
64
pass_library(is_test_pass base)
65 66
pass_library(conv_elementwise_add_act_fuse_pass inference)
pass_library(conv_elementwise_add2_act_fuse_pass inference)
N
nhzlx 已提交
67
pass_library(conv_elementwise_add_fuse_pass inference)
N
nhzlx 已提交
68
pass_library(conv_affine_channel_fuse_pass inference)
69
pass_library(transpose_flatten_concat_fuse_pass inference)
70
pass_library(identity_scale_op_clean_pass base)
Q
qingqing01 已提交
71
pass_library(sync_batch_norm_pass base)
L
luotao1 已提交
72
pass_library(runtime_context_cache_pass base)
N
nhzlx 已提交
73 74
pass_library(quant_conv2d_dequant_fuse_pass inference)
pass_library(fillconstant_elementwisemul_fuse inference)
75
pass_library(shuffle_channel_detect_pass inference)
76
pass_library(delete_quant_dequant_op_pass inference)
77
pass_library(simplify_with_basic_ops_pass base)
78
pass_library(fc_elementwise_layernorm_fuse_pass base)
79
pass_library(multihead_matmul_fuse_pass inference)
80 81 82
if(WITH_GPU)
    pass_library(cudnn_placement_pass base DEPS placement_pass_base)
endif()
83

84
if(ANAKIN_SUBGRAPH)
N
nhzlx 已提交
85 86
pass_library(simplify_anakin_priorbox_detection_out_pass inference)
endif()
87

W
Wojciech Uss 已提交
88
if(WITH_MKLDNN)
89 90 91 92 93 94 95 96 97 98
    pass_library(mkldnn_placement_pass base DEPS placement_pass_base DIR mkldnn)
    pass_library(depthwise_conv_mkldnn_pass base DIR mkldnn)
    pass_library(conv_bias_mkldnn_fuse_pass inference DIR mkldnn)
    pass_library(conv_activation_mkldnn_fuse_pass inference DIR mkldnn)
    pass_library(conv_concat_relu_mkldnn_fuse_pass inference DIR mkldnn)
    pass_library(conv_elementwise_add_mkldnn_fuse_pass inference DIR mkldnn)
    pass_library(fc_mkldnn_pass inference DIR mkldnn)
    pass_library(cpu_quantize_placement_pass base DIR mkldnn)
    pass_library(cpu_quantize_pass inference DIR mkldnn)
    pass_library(cpu_quantize_squash_pass inference DIR mkldnn)
W
Wojciech Uss 已提交
99
endif()
100

M
mozga-intel 已提交
101 102
if(WITH_NGRAPH)
    cc_library(ngraph_subgraph_pass SRCS ngraph_subgraph_pass.cc DEPS ngraph_bridge
103
               subgraph_detector fuse_pass_base ${op_library_DEPS})
M
mozga-intel 已提交
104 105 106 107 108
    set(pass_file ${PADDLE_BINARY_DIR}/paddle/fluid/inference/api/paddle_inference_pass.h)
    file(APPEND ${pass_file} "USE_PASS(ngraph_subgraph_pass);\n")
    set(INFER_IR_PASSES ${INFER_IR_PASSES} ngraph_subgraph_pass CACHE INTERNAL "")
endif()

C
chengduo 已提交
109
cc_library(fuse_elewise_add_act_pass SRCS fuse_elewise_add_act_pass.cc DEPS pass graph_pattern_detector )
110
cc_library(fuse_relu_depthwise_conv_pass SRCS fuse_relu_depthwise_conv_pass.cc DEPS pass graph_pattern_detector )
C
chengduo 已提交
111

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

114 115
cc_library(pass_builder SRCS pass_builder.cc DEPS pass)

X
Xin Pan 已提交
116
cc_test(node_test SRCS node_test.cc DEPS node)
X
Xin Pan 已提交
117 118 119
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 已提交
120
cc_test(graph_to_program_pass_test SRCS graph_to_program_pass_test.cc DEPS graph_to_program_pass)
121
cc_test(test_graph_pattern_detector SRCS graph_pattern_detector_tester.cc DEPS graph_pattern_detector)
L
luotao1 已提交
122
cc_test(test_fc_fuse_pass SRCS fc_fuse_pass_tester.cc DEPS fc_fuse_pass framework_proto)
123
cc_test(test_seqpool_concat_fuse_pass SRCS seqpool_concat_fuse_pass_tester.cc DEPS seqpool_concat_fuse_pass framework_proto)
124
cc_test(test_seqpool_cvm_concat_fuse_pass SRCS seqpool_cvm_concat_fuse_pass_tester.cc DEPS seqpool_cvm_concat_fuse_pass framework_proto)
125
cc_test(test_repeated_fc_relu_fuse_pass SRCS repeated_fc_relu_fuse_pass_tester.cc DEPS repeated_fc_relu_fuse_pass framework_proto)
126
cc_test(test_is_test_pass SRCS is_test_pass_tester.cc DEPS is_test_pass)
127
cc_test(test_simplify_with_basic_ops_pass SRCS simplify_with_basic_ops_pass_tester.cc DEPS simplify_with_basic_ops_pass)
128
cc_test(test_fc_elementwise_layernorm_fuse_pass SRCS fc_elementwise_layernorm_fuse_pass_tester.cc DEPS fc_elementwise_layernorm_fuse_pass)
129
cc_test(test_multihead_matmul_fuse_pass SRCS multihead_matmul_fuse_pass_tester.cc DEPS multihead_matmul_fuse_pass)
130
cc_test(test_conv_bn_fuse_pass SRCS conv_bn_fuse_pass_tester.cc DEPS conv_bn_fuse_pass)
131 132 133
if(WITH_GPU)
    cc_test(test_cudnn_placement_pass SRCS cudnn_placement_pass_tester.cc DEPS cudnn_placement_pass)
endif()
Q
qingqing01 已提交
134 135 136
if(NOT WIN32)
    cc_test(test_sync_batch_norm_pass SRCS sync_batch_norm_pass_tester.cc DEPS sync_batch_norm_pass)
endif()
T
Tao Luo 已提交
137
if (WITH_MKLDNN)
138
    cc_test(test_depthwise_conv_mkldnn_pass SRCS mkldnn/depthwise_conv_mkldnn_pass_tester.cc DEPS depthwise_conv_mkldnn_pass)
139
    cc_test(test_conv_bias_mkldnn_fuse_pass SRCS mkldnn/conv_bias_mkldnn_fuse_pass_tester.cc DEPS conv_bias_mkldnn_fuse_pass naive_executor)
140
    cc_test(test_conv_activation_mkldnn_fuse_pass SRCS mkldnn/conv_activation_mkldnn_fuse_pass_tester.cc DEPS conv_activation_mkldnn_fuse_pass)
141
    cc_test(test_conv_concat_relu_mkldnn_fuse_pass SRCS mkldnn/conv_concat_relu_mkldnn_fuse_pass_tester.cc DEPS conv_concat_relu_mkldnn_fuse_pass)
142
    cc_test(test_conv_elementwise_add_mkldnn_fuse_pass SRCS mkldnn/conv_elementwise_add_mkldnn_fuse_pass_tester.cc DEPS conv_elementwise_add_mkldnn_fuse_pass)
143
    cc_test(test_mkldnn_placement_pass SRCS mkldnn/mkldnn_placement_pass_tester.cc DEPS mkldnn_placement_pass)
144 145 146
    cc_test(test_cpu_quantize_placement_pass SRCS mkldnn/cpu_quantize_placement_pass_tester.cc DEPS cpu_quantize_placement_pass)
    cc_test(test_cpu_quantize_pass SRCS mkldnn/cpu_quantize_pass_tester.cc DEPS cpu_quantize_pass naive_executor)
    cc_test(test_cpu_quantize_squash_pass SRCS mkldnn/cpu_quantize_squash_pass_tester.cc DEPS cpu_quantize_squash_pass naive_executor)
T
Tao Luo 已提交
147
endif ()