diff --git a/src/plugins/intel_gpu/src/graph/graph_optimizer/reorder_inputs.cpp b/src/plugins/intel_gpu/src/graph/graph_optimizer/reorder_inputs.cpp index 1ef86de90ea1ff..dfe6876686e7c5 100644 --- a/src/plugins/intel_gpu/src/graph/graph_optimizer/reorder_inputs.cpp +++ b/src/plugins/intel_gpu/src/graph/graph_optimizer/reorder_inputs.cpp @@ -12,6 +12,7 @@ #include "to_string_utils.h" #include "pooling_inst.h" #include "fully_connected_inst.h" +#include "loop_inst.h" #ifdef ENABLE_ONEDNN_FOR_GPU #include "gemm_inst.h" @@ -444,6 +445,15 @@ void insert_reorders_in_dir(program& p, const std::map(get_node(next))->is_type() && dir == direction_e::forwards) + || (node->is_type() && dir == direction_e::backwards)) + && in_layout.get_rank() != out_layout.get_rank()) { + // Don't add reorder if the ranks of prev and node are different. + // issue case 1) scatter_nd_update(bfyx:2x100x4) -> reorder(bfzyx:2x100x4) -> loop(bfzyx:2x100x1x1x360) + // >> added reorder has abnormal format. + continue; + } + auto reorder_pair = rf.get_reorder(predecessor->id(), port_idx, in_layout, diff --git a/src/plugins/intel_gpu/src/graph/layout_optimizer.cpp b/src/plugins/intel_gpu/src/graph/layout_optimizer.cpp index 4a4838435b85a3..400c5149f8e6f7 100644 --- a/src/plugins/intel_gpu/src/graph/layout_optimizer.cpp +++ b/src/plugins/intel_gpu/src/graph/layout_optimizer.cpp @@ -1322,6 +1322,8 @@ format layout_optimizer::get_preferred_format(program_node& node) { node.set_preferred_input_fmt(0, format::get_default_format(node.as().get_primitive()->input_rank)); } else if (node.is_type()) { expected = format::get_default_format(node.get_output_layout().get_rank()); + } else if (node.is_type()) { + expected = format::get_default_format(node.get_output_layout().get_rank()); } else if (node.is_type()) { if (node.as().get_primitive()->mode == dft_mode::real && node.as().get_primitive()->direction == dft_direction::forward) {