From b799e3eb91af636dfe89c8c69f07830b8d193891 Mon Sep 17 00:00:00 2001 From: Sungeun Kim Date: Thu, 8 Dec 2022 16:52:30 +0900 Subject: [PATCH] [GPU] set b_fs_yx_fsv32 for first conv and dt is U8. (#14454) * set b_fs_yx_fsv32 for first conv and dt is U8. * check input format is bfyx. --- src/plugins/intel_gpu/src/graph/layout_optimizer.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/plugins/intel_gpu/src/graph/layout_optimizer.cpp b/src/plugins/intel_gpu/src/graph/layout_optimizer.cpp index 319dd82e983..f91291fc223 100644 --- a/src/plugins/intel_gpu/src/graph/layout_optimizer.cpp +++ b/src/plugins/intel_gpu/src/graph/layout_optimizer.cpp @@ -1832,6 +1832,15 @@ void layout_optimizer::select_preferred_formats_for_onednn(program_node& node, d node.set_preferred_input_fmt(idx, src_fmt); auto dst_fmt = onednn::find_data_format(prim_desc.dst_desc()); + // Errata: Best impl for shallow input conv with zero-point ops is ocl:xe_lp. + if (node.is_type() && src_fmt == format::bfyx) { + auto& conv = node.as(); + if (conv.get_input_layouts()[0].feature() <= 8 && conv.activations_zero_points_term() && + conv.get_input_layouts()[0].data_type == data_types::u8 && conv.get_output_layout().data_type == data_types::u8) { + dst_fmt = format::b_fs_yx_fsv32; + } + } + if (node.get_preferred_output_fmt() == format::any) { for (size_t usr = 0 ; usr < node.get_users().size() ; usr++) node.set_preferred_output_fmt(usr, dst_fmt);