Skip to content

Commit fde9e0c

Browse files
committed
test=develop
2 parents 0633095 + 16e73e0 commit fde9e0c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+950
-408
lines changed

cmake/configure.cmake

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,26 @@ if(NOT CMAKE_CROSSCOMPILING)
6262
endif()
6363

6464
if(WIN32)
65-
# windows stupid compile option for all targets.
65+
# windows header option for all targets.
6666
add_definitions(-D_XKEYCHECK_H)
67+
# Use symbols instead of absolute path, reduce the cmake link command length.
68+
SET(CMAKE_C_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
69+
SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
70+
SET(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1)
71+
SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1)
72+
SET(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES 1)
73+
SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES 1)
74+
SET(CMAKE_C_RESPONSE_FILE_LINK_FLAG "@")
75+
SET(CMAKE_CXX_RESPONSE_FILE_LINK_FLAG "@")
76+
77+
# Specify the program to use when building static libraries
78+
SET(CMAKE_C_CREATE_STATIC_LIBRARY "<CMAKE_AR> lib <TARGET> <LINK_FLAGS> <OBJECTS>")
79+
SET(CMAKE_CXX_CREATE_STATIC_LIBRARY "<CMAKE_AR> lib <TARGET> <LINK_FLAGS> <OBJECTS>")
80+
81+
# set defination for the dll export
82+
if (NOT MSVC)
83+
message(FATAL "Windows build only support msvc. Which was binded by the nvcc compiler of NVIDIA.")
84+
endif(NOT MSVC)
6785
endif(WIN32)
6886

6987
if(NOT WITH_GOLANG)

cmake/flags.cmake

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ endfunction()
2727

2828
CheckCompilerCXX11Flag()
2929
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
30-
3130
# safe_set_flag
3231
#
3332
# Set a compile flag only if compiler is support
@@ -71,6 +70,20 @@ macro(safe_set_nvflag flag_name)
7170
endif()
7271
endmacro()
7372

73+
macro(safe_set_static_flag) # set c_flags and cxx_flags to static or shared
74+
if (BUILD_SHARED_LIBS)
75+
return() # if build shared libs, the flags keep same with '/MD'
76+
endif(BUILD_SHARED_LIBS)
77+
foreach(flag_var
78+
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
79+
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
80+
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
81+
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
82+
if(${flag_var} MATCHES "/MD")
83+
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
84+
endif(${flag_var} MATCHES "/MD")
85+
endforeach(flag_var)
86+
endmacro()
7487

7588
CHECK_CXX_SYMBOL_EXISTS(UINT64_MAX "stdint.h" UINT64_MAX_EXISTS)
7689
if(NOT UINT64_MAX_EXISTS)
@@ -97,9 +110,13 @@ SET(CMAKE_EXTRA_INCLUDE_FILES "")
97110

98111
# Common flags. the compiler flag used for C/C++ sources whenever release or debug
99112
# Do not care if this flag is support for gcc.
113+
114+
# https://github.com/PaddlePaddle/Paddle/issues/12773
115+
if (NOT WIN32)
100116
set(COMMON_FLAGS
101117
-fPIC
102118
-fno-omit-frame-pointer
119+
-Werror
103120
-Wall
104121
-Wextra
105122
-Wnon-virtual-dtor
@@ -114,11 +131,6 @@ set(COMMON_FLAGS
114131
-Wno-error=terminate # Warning in PADDLE_ENFORCE
115132
)
116133

117-
# https://github.com/PaddlePaddle/Paddle/issues/12773
118-
if (NOT WIN32)
119-
list(APPEND COMMON_FLAGS -Werror)
120-
endif()
121-
122134
set(GPU_COMMON_FLAGS
123135
-fPIC
124136
-fno-omit-frame-pointer
@@ -133,30 +145,53 @@ set(GPU_COMMON_FLAGS
133145
-Wno-error=array-bounds # Warnings in Eigen::array
134146
)
135147

148+
else(NOT WIN32)
149+
set(COMMON_FLAGS
150+
"/w") #disable all warnings.
151+
set(GPU_COMMON_FLAGS
152+
"/w") #disable all warnings
153+
endif(NOT WIN32)
154+
136155
if (APPLE)
137156
if(NOT CMAKE_CROSSCOMPILING)
138157
# On Mac OS X build fat binaries with x86_64 architectures by default.
139158
set (CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "Build architectures for OSX" FORCE)
140159
endif()
141-
else()
160+
endif(APPLE)
161+
162+
if(LINUX)
142163
set(GPU_COMMON_FLAGS
143164
-Wall
144165
-Wextra
145166
-Werror
146167
${GPU_COMMON_FLAGS})
147-
endif()
168+
endif(LINUX)
148169

149170
if(UNIX AND NOT APPLE)
150171
# except apple from nix*Os family
151172
set(LINUX TRUE)
152173
endif(UNIX AND NOT APPLE)
153174

154-
155175
foreach(flag ${COMMON_FLAGS})
156176
safe_set_cflag(CMAKE_C_FLAGS ${flag})
157177
safe_set_cxxflag(CMAKE_CXX_FLAGS ${flag})
178+
158179
endforeach()
159180

160181
foreach(flag ${GPU_COMMON_FLAGS})
161182
safe_set_nvflag(${flag})
162183
endforeach()
184+
185+
if(WIN32)
186+
# windows build turn off warnings.
187+
safe_set_static_flag()
188+
foreach(flag_var
189+
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
190+
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
191+
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
192+
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
193+
if(${flag_var} MATCHES "/W3")
194+
string(REGEX REPLACE "/W3" "/w" ${flag_var} "${${flag_var}}")
195+
endif(${flag_var} MATCHES "/W3")
196+
endforeach(flag_var)
197+
endif(WIN32)

paddle/contrib/float16/float16_transpiler.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ def _adjust_input(self, skip=False):
102102
continue
103103
for input_arg in current_op.input_arg_names:
104104
if input_arg in self.input_map:
105-
current_op.rename_input(input_arg,
106-
self.input_map[input_arg])
105+
current_op._rename_input(input_arg,
106+
self.input_map[input_arg])
107107

108108
def _remove_unused_var(self):
109109
'''
@@ -187,7 +187,7 @@ def find_op(var):
187187
shape=var.shape,
188188
persistable=var.persistable)
189189
find_op(var)
190-
var.op.rename_output(var_name, tmp_var_name)
190+
var.op._rename_output(var_name, tmp_var_name)
191191
self.block._insert_op(
192192
i,
193193
type="cast",

paddle/fluid/API.spec

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,9 @@ paddle.fluid.Program.global_block ArgSpec(args=['self'], varargs=None, keywords=
66
paddle.fluid.Program.list_vars ArgSpec(args=['self'], varargs=None, keywords=None, defaults=None)
77
paddle.fluid.Program.parse_from_string ArgSpec(args=['binary_str'], varargs=None, keywords=None, defaults=None)
88
paddle.fluid.Program.to_string ArgSpec(args=['self', 'throw_on_error', 'with_details'], varargs=None, keywords=None, defaults=(False,))
9-
paddle.fluid.Operator.__init__ ArgSpec(args=['self', 'block', 'desc', 'type', 'inputs', 'outputs', 'attrs'], varargs=None, keywords=None, defaults=(None, None, None, None))
10-
paddle.fluid.Operator.all_attrs ArgSpec(args=['self'], varargs=None, keywords=None, defaults=None)
11-
paddle.fluid.Operator.attr ArgSpec(args=['self', 'name'], varargs=None, keywords=None, defaults=None)
12-
paddle.fluid.Operator.attr_type ArgSpec(args=['self', 'name'], varargs=None, keywords=None, defaults=None)
13-
paddle.fluid.Operator.block_attr ArgSpec(args=['self', 'name'], varargs=None, keywords=None, defaults=None)
14-
paddle.fluid.Operator.block_attr_id ArgSpec(args=['self', 'name'], varargs=None, keywords=None, defaults=None)
15-
paddle.fluid.Operator.blocks_attr ArgSpec(args=['self', 'name'], varargs=None, keywords=None, defaults=None)
16-
paddle.fluid.Operator.blocks_attr_ids ArgSpec(args=['self', 'name'], varargs=None, keywords=None, defaults=None)
17-
paddle.fluid.Operator.has_attr ArgSpec(args=['self', 'name'], varargs=None, keywords=None, defaults=None)
18-
paddle.fluid.Operator.has_kernel ArgSpec(args=['self', 'op_type'], varargs=None, keywords=None, defaults=None)
19-
paddle.fluid.Operator.input ArgSpec(args=['self', 'name'], varargs=None, keywords=None, defaults=None)
20-
paddle.fluid.Operator.output ArgSpec(args=['self', 'name'], varargs=None, keywords=None, defaults=None)
21-
paddle.fluid.Operator.rename_input ArgSpec(args=['self', 'old_name', 'new_name'], varargs=None, keywords=None, defaults=None)
22-
paddle.fluid.Operator.rename_output ArgSpec(args=['self', 'old_name', 'new_name'], varargs=None, keywords=None, defaults=None)
23-
paddle.fluid.Operator.set_attr ArgSpec(args=['self', 'name', 'val'], varargs=None, keywords=None, defaults=None)
24-
paddle.fluid.Operator.to_string ArgSpec(args=['self', 'throw_on_error'], varargs=None, keywords=None, defaults=None)
259
paddle.fluid.default_startup_program ArgSpec(args=[], varargs=None, keywords=None, defaults=None)
2610
paddle.fluid.default_main_program ArgSpec(args=[], varargs=None, keywords=None, defaults=None)
2711
paddle.fluid.program_guard ArgSpec(args=[], varargs='args', keywords='kwds', defaults=None)
28-
paddle.fluid.get_var ArgSpec(args=['name', 'program'], varargs=None, keywords=None, defaults=(None,))
2912
paddle.fluid.name_scope ArgSpec(args=[], varargs='args', keywords='kwds', defaults=None)
3013
paddle.fluid.Executor.__init__ ArgSpec(args=['self', 'place'], varargs=None, keywords=None, defaults=None)
3114
paddle.fluid.Executor.close ArgSpec(args=['self'], varargs=None, keywords=None, defaults=None)
@@ -41,7 +24,7 @@ paddle.fluid.DistributeTranspiler.transpile ArgSpec(args=['self', 'trainer_id',
4124
paddle.fluid.memory_optimize ArgSpec(args=['input_program', 'skip_opt_set', 'print_log', 'level'], varargs=None, keywords=None, defaults=(None, False, 0))
4225
paddle.fluid.release_memory ArgSpec(args=['input_program', 'skip_opt_set'], varargs=None, keywords=None, defaults=(None,))
4326
paddle.fluid.DistributeTranspilerConfig.__init__
44-
paddle.fluid.ParallelExecutor.__init__ ArgSpec(args=['self', 'use_cuda', 'loss_name', 'main_program', 'share_vars_from', 'exec_strategy', 'build_strategy', 'num_trainers', 'trainer_id', 'scope'], varargs=None, keywords='kwargs', defaults=(None, None, None, None, None, 1, 0, None))
27+
paddle.fluid.ParallelExecutor.__init__ ArgSpec(args=['self', 'use_cuda', 'loss_name', 'main_program', 'share_vars_from', 'exec_strategy', 'build_strategy', 'num_trainers', 'trainer_id', 'scope'], varargs=None, keywords=None, defaults=(None, None, None, None, None, 1, 0, None))
4528
paddle.fluid.ParallelExecutor.run ArgSpec(args=['self', 'fetch_list', 'feed', 'feed_dict', 'return_numpy'], varargs=None, keywords=None, defaults=(None, None, True))
4629
paddle.fluid.ExecutionStrategy.__init__ __init__(self: paddle.fluid.core.ExecutionStrategy) -> None
4730
paddle.fluid.BuildStrategy.GradientScaleStrategy.__init__ __init__(self: paddle.fluid.core.GradientScaleStrategy, arg0: int) -> None
@@ -162,14 +145,14 @@ paddle.fluid.layers.unstack ArgSpec(args=['x', 'axis', 'num'], varargs=None, key
162145
paddle.fluid.layers.sequence_enumerate ArgSpec(args=['input', 'win_size', 'pad_value', 'name'], varargs=None, keywords=None, defaults=(0, None))
163146
paddle.fluid.layers.expand ArgSpec(args=['x', 'expand_times', 'name'], varargs=None, keywords=None, defaults=(None,))
164147
paddle.fluid.layers.sequence_concat ArgSpec(args=['input', 'name'], varargs=None, keywords=None, defaults=(None,))
165-
paddle.fluid.layers.scale ArgSpec(args=['x', 'scale', 'bias', 'bias_after_scale', 'act', 'name'], varargs=None, keywords=None, defaults=(1.0, 0.0, True, None, None))
166-
paddle.fluid.layers.elementwise_add ArgSpec(args=['x', 'y', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(-1, False, None, None))
167-
paddle.fluid.layers.elementwise_div ArgSpec(args=['x', 'y', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(-1, False, None, None))
168-
paddle.fluid.layers.elementwise_sub ArgSpec(args=['x', 'y', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(-1, False, None, None))
169-
paddle.fluid.layers.elementwise_mul ArgSpec(args=['x', 'y', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(-1, False, None, None))
170-
paddle.fluid.layers.elementwise_max ArgSpec(args=['x', 'y', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(-1, False, None, None))
171-
paddle.fluid.layers.elementwise_min ArgSpec(args=['x', 'y', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(-1, False, None, None))
172-
paddle.fluid.layers.elementwise_pow ArgSpec(args=['x', 'y', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(-1, False, None, None))
148+
paddle.fluid.layers.scale ArgSpec(args=['x', 'scale', 'bias', 'bias_after_scale', 'out', 'act', 'name'], varargs=None, keywords=None, defaults=(1.0, 0.0, True, None, None, None))
149+
paddle.fluid.layers.elementwise_add ArgSpec(args=['x', 'y', 'out', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(None, -1, False, None, None))
150+
paddle.fluid.layers.elementwise_div ArgSpec(args=['x', 'y', 'out', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(None, -1, False, None, None))
151+
paddle.fluid.layers.elementwise_sub ArgSpec(args=['x', 'y', 'out', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(None, -1, False, None, None))
152+
paddle.fluid.layers.elementwise_mul ArgSpec(args=['x', 'y', 'out', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(None, -1, False, None, None))
153+
paddle.fluid.layers.elementwise_max ArgSpec(args=['x', 'y', 'out', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(None, -1, False, None, None))
154+
paddle.fluid.layers.elementwise_min ArgSpec(args=['x', 'y', 'out', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(None, -1, False, None, None))
155+
paddle.fluid.layers.elementwise_pow ArgSpec(args=['x', 'y', 'out', 'axis', 'use_mkldnn', 'act', 'name'], varargs=None, keywords=None, defaults=(None, -1, False, None, None))
173156
paddle.fluid.layers.data ArgSpec(args=['name', 'shape', 'append_batch_size', 'dtype', 'lod_level', 'type', 'stop_gradient'], varargs=None, keywords=None, defaults=(True, 'float32', 0, VarType.LOD_TENSOR, True))
174157
paddle.fluid.layers.open_files ArgSpec(args=['filenames', 'shapes', 'lod_levels', 'dtypes', 'thread_num', 'buffer_size', 'pass_num', 'is_test'], varargs=None, keywords=None, defaults=(None, None, 1, None))
175158
paddle.fluid.layers.read_file ArgSpec(args=['reader'], varargs=None, keywords=None, defaults=None)
@@ -374,7 +357,7 @@ paddle.fluid.CPUPlace.__init__ __init__(self: paddle.fluid.core.CPUPlace) -> Non
374357
paddle.fluid.CUDAPlace.__init__ __init__(self: paddle.fluid.core.CUDAPlace, arg0: int) -> None
375358
paddle.fluid.CUDAPinnedPlace.__init__ __init__(self: paddle.fluid.core.CUDAPinnedPlace) -> None
376359
paddle.fluid.ParamAttr.__init__ ArgSpec(args=['self', 'name', 'initializer', 'learning_rate', 'regularizer', 'trainable', 'gradient_clip', 'do_model_average'], varargs=None, keywords=None, defaults=(None, None, 1.0, None, True, None, False))
377-
paddle.fluid.WeightNormParamAttr.__init__ ArgSpec(args=['self', 'dim'], varargs=None, keywords='kwargs', defaults=(None,))
360+
paddle.fluid.WeightNormParamAttr.__init__ ArgSpec(args=['self', 'dim', 'name', 'initializer', 'learning_rate', 'regularizer', 'trainable', 'gradient_clip', 'do_model_average'], varargs=None, keywords=None, defaults=(None, None, None, 1.0, None, True, None, False))
378361
paddle.fluid.DataFeeder.__init__ ArgSpec(args=['self', 'feed_list', 'place', 'program'], varargs=None, keywords=None, defaults=(None,))
379362
paddle.fluid.DataFeeder.decorate_reader ArgSpec(args=['self', 'reader', 'multi_devices', 'num_places', 'drop_last'], varargs=None, keywords=None, defaults=(None, True))
380363
paddle.fluid.DataFeeder.feed ArgSpec(args=['self', 'iterable'], varargs=None, keywords=None, defaults=None)

paddle/fluid/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@ if(WITH_INFERENCE)
1313
# NOTE: please add subdirectory inference at last.
1414
add_subdirectory(inference)
1515
endif()
16+
17+
add_subdirectory(train)

paddle/fluid/framework/ir/conv_relu_mkldnn_fuse_pass.cc

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ std::unique_ptr<ir::Graph> ConvReLUFusePass::ApplyImpl(
2626
PADDLE_ENFORCE(graph.get());
2727
FusePassBase::Init("conv_relu_mkldnn_fuse", graph.get());
2828

29-
std::unordered_set<Node*> nodes2delete;
30-
3129
GraphPatternDetector gpd;
3230
auto* conv_input = gpd.mutable_pattern()
3331
->NewNode("conv_relu_mkldnn_fuse/conv_input")
@@ -42,36 +40,20 @@ std::unique_ptr<ir::Graph> ConvReLUFusePass::ApplyImpl(
4240
Graph* g) {
4341
VLOG(4) << "handle ConvReLU fuse";
4442
GET_IR_NODE_FROM_SUBGRAPH(conv_weight, conv_weight,
45-
conv_relu_pattern); // Filter
46-
GET_IR_NODE_FROM_SUBGRAPH(conv_bias, conv_bias, conv_relu_pattern); // Bias
47-
GET_IR_NODE_FROM_SUBGRAPH(conv_out, conv_out, conv_relu_pattern); // tmp
43+
conv_relu_pattern); // Filter
44+
GET_IR_NODE_FROM_SUBGRAPH(conv_out, conv_out, conv_relu_pattern); // tmp
4845
GET_IR_NODE_FROM_SUBGRAPH(conv, conv, conv_relu_pattern); // CONV op
4946
GET_IR_NODE_FROM_SUBGRAPH(relu_out, relu_out, conv_relu_pattern); // Out
5047
GET_IR_NODE_FROM_SUBGRAPH(relu, relu, conv_relu_pattern); // ReLU op
5148

52-
// Create an ConvReLU Node.
53-
OpDesc desc;
54-
std::string conv_relu_i_in = subgraph.at(conv_input)->Name();
55-
std::string conv_relu_w_in = conv_weight->Name();
56-
std::string conv_relu_b_in = conv_bias->Name();
57-
std::string conv_relu_out = relu_out->Name();
58-
desc.SetInput("Input", std::vector<std::string>({conv_relu_i_in}));
59-
desc.SetInput("Filter", std::vector<std::string>({conv_relu_w_in}));
60-
desc.SetInput("Bias", std::vector<std::string>({conv_relu_b_in}));
61-
desc.SetOutput("Output", std::vector<std::string>({conv_relu_out}));
62-
desc.SetType("conv2d");
63-
for (auto& attr : conv->Op()->GetAttrMap()) {
64-
desc.SetAttr(attr.first, attr.second);
65-
}
66-
desc.SetAttr("fuse_relu", true);
67-
auto conv_relu_node = g->CreateOpNode(&desc); // OpDesc will be copied.
68-
GraphSafeRemoveNodes(graph.get(), {conv, relu, conv_out});
49+
// Transform Conv node into ConvReLU node.
50+
OpDesc* desc = conv->Op();
51+
desc->SetOutput("Output", std::vector<std::string>({relu_out->Name()}));
52+
desc->SetAttr("fuse_relu", true);
53+
GraphSafeRemoveNodes(graph.get(), {relu, conv_out});
6954

7055
PADDLE_ENFORCE(subgraph.count(conv_input));
71-
IR_NODE_LINK_TO(subgraph.at(conv_input), conv_relu_node);
72-
IR_NODE_LINK_TO(conv_weight, conv_relu_node);
73-
IR_NODE_LINK_TO(conv_bias, conv_relu_node);
74-
IR_NODE_LINK_TO(conv_relu_node, relu_out);
56+
IR_NODE_LINK_TO(conv, relu_out);
7557

7658
found_conv_relu_count++;
7759
};

paddle/fluid/framework/ir/conv_relu_mkldnn_fuse_pass_tester.cc

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,13 @@ TEST(ConvReLUFusePass, basic) {
8585

8686
for (auto* node : graph->Nodes()) {
8787
if (node->IsOp() && node->Op()->Type() == "conv2d") {
88-
if (node->Op()->HasAttr("use_mkldnn")) {
89-
bool use_mkldnn = boost::get<bool>(node->Op()->GetAttr("use_mkldnn"));
90-
if (use_mkldnn) {
91-
if (node->Op()->HasAttr("fuse_relu")) {
92-
bool fuse_relu = boost::get<bool>(node->Op()->GetAttr("fuse_relu"));
93-
if (fuse_relu) {
94-
++conv_relu_count;
95-
}
96-
}
97-
}
88+
auto* op = node->Op();
89+
ASSERT_TRUE(op->HasAttr("use_mkldnn"));
90+
EXPECT_TRUE(boost::get<bool>(op->GetAttr("use_mkldnn")));
91+
ASSERT_TRUE(op->HasAttr("fuse_relu"));
92+
bool fuse_relu = boost::get<bool>(op->GetAttr("fuse_relu"));
93+
if (fuse_relu) {
94+
++conv_relu_count;
9895
}
9996
}
10097
}

paddle/fluid/framework/ir/graph_pattern_detector.cc

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -638,11 +638,6 @@ PDNode *patterns::ConvReLU::operator()(
638638
->AsInput()
639639
->assert_is_persistable_var()
640640
->assert_is_op_input("conv2d", "Filter");
641-
// Bias
642-
auto *conv_bias_var = pattern->NewNode(conv_bias_repr())
643-
->AsInput()
644-
->assert_is_persistable_var()
645-
->assert_is_op_input("conv2d", "Bias");
646641
// intermediate variable, will be removed in the IR after fuse.
647642
auto *conv_out_var = pattern->NewNode(conv_out_repr())
648643
->AsIntermediate()
@@ -653,8 +648,7 @@ PDNode *patterns::ConvReLU::operator()(
653648
->AsOutput()
654649
->assert_is_op_output("relu");
655650

656-
conv_op->LinksFrom({conv_input, conv_weight_var, conv_bias_var})
657-
.LinksTo({conv_out_var});
651+
conv_op->LinksFrom({conv_input, conv_weight_var}).LinksTo({conv_out_var});
658652
relu_op->LinksFrom({conv_out_var}).LinksTo({relu_out_var});
659653
return relu_out_var;
660654
}

paddle/fluid/framework/ir/graph_pattern_detector.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ struct PatternBase {
379379
// op: conv + relu
380380
// named nodes:
381381
// conv_input, conv_weight,
382-
// conv_bias, conv_out, conv,
382+
// conv_out, conv,
383383
// relu_out, relu
384384
struct ConvReLU : public PatternBase {
385385
ConvReLU(PDPattern* pattern, const std::string& name_scope)
@@ -392,7 +392,6 @@ struct ConvReLU : public PatternBase {
392392
PATTERN_DECL_NODE(relu);
393393
// declare variable node's name
394394
PATTERN_DECL_NODE(conv_weight);
395-
PATTERN_DECL_NODE(conv_bias);
396395
PATTERN_DECL_NODE(conv_out);
397396
PATTERN_DECL_NODE(relu_out);
398397
};

paddle/fluid/framework/ir/graph_traits.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
#include "paddle/fluid/framework/ir/graph_traits.h"
1616

17+
#include <vector>
18+
1719
namespace paddle {
1820
namespace framework {
1921
namespace ir {

0 commit comments

Comments
 (0)