diff --git a/src/plugins/intel_gpu/src/kernel_selector/cl_kernels/convolution_gpu_bfyx_f16_1x1.cl b/src/plugins/intel_gpu/src/kernel_selector/cl_kernels/convolution_gpu_bfyx_f16_1x1.cl index 542fa69ebc241b..109fa2de9841aa 100644 --- a/src/plugins/intel_gpu/src/kernel_selector/cl_kernels/convolution_gpu_bfyx_f16_1x1.cl +++ b/src/plugins/intel_gpu/src/kernel_selector/cl_kernels/convolution_gpu_bfyx_f16_1x1.cl @@ -122,8 +122,8 @@ KERNEL(convolution_b_fs_yx_fsv16_1x1)( { #endif // SLM_DIV_FACTOR > 1 vec_t src = 0; -#if INPUT_LEFTOVERS - if ((k + 1) * FEATURE_SLICE_SIZE >= INPUT0_FEATURE_NUM) + + if (INPUT_LEFTOVERS && ((k + 1) * FEATURE_SLICE_SIZE >= INPUT0_FEATURE_NUM)) { if (k * FEATURE_SLICE_SIZE + sglid < INPUT0_FEATURE_NUM) { @@ -143,7 +143,6 @@ KERNEL(convolution_b_fs_yx_fsv16_1x1)( } } else -#endif // INPUT_LEFTOVERS { #if PADDED_INPUT #if X_BLOCK_SIZE > 1 diff --git a/src/plugins/intel_gpu/src/kernel_selector/kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.cpp b/src/plugins/intel_gpu/src/kernel_selector/kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.cpp index 6fd074f8d8506d..7150d51ecf1e48 100644 --- a/src/plugins/intel_gpu/src/kernel_selector/kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.cpp +++ b/src/plugins/intel_gpu/src/kernel_selector/kernels/convolution/convolution_kernel_b_fs_yx_fsv16_1x1.cpp @@ -264,6 +264,8 @@ JitConstants ConvolutionKernel_b_fs_yx_fsv16_1x1::GetJitConstants(const convolut } if (params.inputs[0].Feature().v % tuning_data.feature_block_size != 0) { jit.AddConstant(MakeJitConstant("INPUT_LEFTOVERS", 1)); + } else { + jit.AddConstant(MakeJitConstant("INPUT_LEFTOVERS", 0)); } } else { DimensionAccessHelperJit input0_dims(params.inputs[0]); diff --git a/src/plugins/intel_gpu/tests/unit/test_cases/convolution_gpu_test.cpp b/src/plugins/intel_gpu/tests/unit/test_cases/convolution_gpu_test.cpp index f0243f055c3670..13934020bfdf66 100644 --- a/src/plugins/intel_gpu/tests/unit/test_cases/convolution_gpu_test.cpp +++ b/src/plugins/intel_gpu/tests/unit/test_cases/convolution_gpu_test.cpp @@ -10820,7 +10820,14 @@ TEST_P(conv_dyn_test, convolution_gpu_fsv16_1x1_no_bias) { return outputs_ref.at("conv").get_memory(); }; - auto in_layout = layout{ov::PartialShape{ov::Dimension(), ov::Dimension(p.in_shape[1]), ov::Dimension(), ov::Dimension()}, data_types::f16, format::b_fs_yx_fsv16}; + cldnn::layout in_layout; + if (p.in_shape[2] % 2 == 0) { + // input feature is static + in_layout = layout{ov::PartialShape{ov::Dimension(), ov::Dimension(p.in_shape[1]), ov::Dimension(), ov::Dimension()}, data_types::f16, format::b_fs_yx_fsv16}; + } else { + // input feature is dynamic + in_layout = layout{ov::PartialShape{ov::Dimension(), ov::Dimension(), ov::Dimension(), ov::Dimension()}, data_types::f16, format::b_fs_yx_fsv16}; + } auto input = engine.allocate_memory({ p.in_shape, data_types::f16, format::b_fs_yx_fsv16 }); auto weights = engine.allocate_memory({p.wei_shape, data_types::f16, is_grouped ? format::bfzyx : format::bfyx});