[GPU] Don't optimize crop if its user is a reshape that can be optimized (#9537)
Crop uses more eltwise assign kernel which yields better performance than reshape_ref.
This commit is contained in:
parent
583d97314a
commit
954172a010
@ -269,6 +269,10 @@ void concat_in_place_optimization::optimize_cascade(concatenation_node& node, st
|
|||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
static bool can_reshape_be_optimized(const reshape_node& node) {
|
||||||
|
return node.is_in_place() && node.get_fused_activations_funcs().empty();
|
||||||
|
}
|
||||||
|
|
||||||
// ToDo remove friendship relation from program_node
|
// ToDo remove friendship relation from program_node
|
||||||
void prepare_buffer_fusing::run(program& p) {
|
void prepare_buffer_fusing::run(program& p) {
|
||||||
bool is_debug = p.get_options().get<build_option_type::debug>()->enabled();
|
bool is_debug = p.get_options().get<build_option_type::debug>()->enabled();
|
||||||
@ -310,6 +314,11 @@ void prepare_buffer_fusing::run(program& p) {
|
|||||||
return;
|
return;
|
||||||
if (user->is_type<loop>() || user->is_type<non_max_suppression>())
|
if (user->is_type<loop>() || user->is_type<non_max_suppression>())
|
||||||
return;
|
return;
|
||||||
|
if (user->is_type<reshape>()) {
|
||||||
|
auto& reshape_node = user->as<reshape>();
|
||||||
|
if (can_reshape_be_optimized(reshape_node))
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node.get_dependencies().size() == 1 && node.get_users().size() > 0) {
|
if (node.get_dependencies().size() == 1 && node.get_users().size() > 0) {
|
||||||
@ -387,10 +396,7 @@ void prepare_buffer_fusing::run(program& p) {
|
|||||||
continue;
|
continue;
|
||||||
program_helpers::do_for_types<reshape>(*node, [&p](reshape_node& node) {
|
program_helpers::do_for_types<reshape>(*node, [&p](reshape_node& node) {
|
||||||
node.get_output_layout();
|
node.get_output_layout();
|
||||||
if (node.is_in_place() && node.get_fused_activations_funcs().empty())
|
node.can_be_optimized(can_reshape_be_optimized(node));
|
||||||
node.can_be_optimized(true);
|
|
||||||
else
|
|
||||||
node.can_be_optimized(false);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user