From 0e3c4cc103caf43745603ec068187e3683acf2f4 Mon Sep 17 00:00:00 2001 From: "Min, Byungil" Date: Wed, 22 Dec 2021 18:17:08 +0900 Subject: [PATCH] Modify padding checking logic to enable new model (#9310) + Modified a way to add padding in prepare_padding + Changed condition of assertion for onednn padding Signed-off-by: Min, Byungil --- .../clDNN/src/graph_optimizer/prepare_padding.cpp | 7 ++++++- .../src/graph_optimizer/remove_redundant_reorders.cpp | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_padding.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_padding.cpp index d7aff78742e..190a32824dd 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_padding.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/prepare_padding.cpp @@ -30,7 +30,12 @@ void prepare_padding::run(program& p) { auto add_required_padding = [&p](program_node& node, padding& needed_padding) { // Add extra reorder for cldnn primitive to handle required padding if needed auto& input = node.get_dependency(0); - if (input.get_preferred_impl_type() == impl_types::onednn && + bool is_usr_onednn = false; + for (auto& input_usr : input.get_users()) + if (input_usr->get_preferred_impl_type() == impl_types::onednn) + is_usr_onednn = true; + + if ((input.get_preferred_impl_type() == impl_types::onednn || is_usr_onednn) && node.get_preferred_impl_type() == impl_types::ocl && static_cast(needed_padding)) { auto new_reorder = std::make_shared(node.id() + "_padding_reorder_for_" + input.id(), input.id(), input.get_output_layout()); diff --git a/inference-engine/thirdparty/clDNN/src/graph_optimizer/remove_redundant_reorders.cpp b/inference-engine/thirdparty/clDNN/src/graph_optimizer/remove_redundant_reorders.cpp index dad1f44d94e..6437620a048 100644 --- a/inference-engine/thirdparty/clDNN/src/graph_optimizer/remove_redundant_reorders.cpp +++ b/inference-engine/thirdparty/clDNN/src/graph_optimizer/remove_redundant_reorders.cpp @@ -544,8 +544,8 @@ void remove_redundant_reorders::run(program& p) { n->set_preferred_impl_type(preferred_impl); } - // Validate fused layout when onednn is enable - if (n->get_preferred_impl_type() == impl_types::onednn && !lo.are_layouts_suitable_for_onednn(*n)) { + // Validate fused layout when onednn is enable in post_optimize_graph + if (!enable_reorder_fusing && n->get_preferred_impl_type() == impl_types::onednn && !lo.are_layouts_suitable_for_onednn(*n)) { throw std::runtime_error("Onednn doesnot support padded input or output"); } }