[GPU] Added missing supports_image initialization in EngineInfo. Fix some kernels with image support (#14885)

This commit is contained in:
Vladimir Paramuzov 2023-01-12 13:06:01 +04:00 committed by GitHub
parent 974af13788
commit 9c7beee5e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 13 additions and 9 deletions

View File

@ -1021,6 +1021,7 @@ void set_params(const kernel_impl_params& param_info, kernel_selector::params& p
params.engineInfo.supports_intel_subgroups_short = device_info.supports_intel_subgroups_short;
params.engineInfo.supports_intel_subgroups_char = device_info.supports_intel_subgroups_char;
params.engineInfo.supports_intel_required_subgroup_size = device_info.supports_intel_required_subgroup_size;
params.engineInfo.supports_image = device_info.supports_image;
params.engineInfo.supports_imad = device_info.supports_imad;
params.engineInfo.supports_immad = device_info.supports_immad;

View File

@ -55,14 +55,14 @@ KERNEL(convolution_gpu_bfyx_1x1_hgemm_buf_16x1)(
// 512 MADs
half8 B0 = as_half8(_sub_group_block_read_us8(weights, coordB));
half8 B0 = as_half8(intel_sub_group_block_read_us8(weights, coordB));
coordB.y += 8;
half8 B8 = as_half8(_sub_group_block_read_us8(weights, coordB));
half8 B8 = as_half8(intel_sub_group_block_read_us8(weights, coordB));
coordB.y += 8;
half8 B16 = as_half8(_sub_group_block_read_us8(weights, coordB));
half8 B16 = as_half8(intel_sub_group_block_read_us8(weights, coordB));
coordB.y += 8;
half8 B24 = as_half8(_sub_group_block_read_us8(weights, coordB));
half8 B24 = as_half8(intel_sub_group_block_read_us8(weights, coordB));
coordB.y += 8;
half8 A0 = A_load[K8*0 + k8];

View File

@ -297,7 +297,7 @@ KERNEL(convolution_gpu_winograd_6x3_s1_fused)
// Fetch 8 channels of Winograd components from f(k,s)
#if FILTER_LAYOUT_IMAGE_2D_WEIGHTS_WINOGRAD_6x3_S1_FBXYB || FILTER_LAYOUT_IMAGE_2D_WEIGHTS_WINOGRAD_6x3_S1_XFBYB
const UNIT_TYPE_8 f00 = as_half8(_sub_group_block_read_us8(U, (int2)(coordU0.x, coordU0.y)));
const UNIT_TYPE_8 f00 = as_half8(intel_sub_group_block_read_us8(U, (int2)(coordU0.x, coordU0.y)));
#else
const UNIT_TYPE_8 f00 = (UNIT_TYPE_8)(
as_half(_sub_group_block_read_us((__global unsigned short *)&U[flatA + 0 * WEIGHTWIDTH])),
@ -467,7 +467,7 @@ KERNEL(convolution_gpu_winograd_6x3_s1_fused)
DOT8i_7(M6.s1, f00, V8, 10 + c8);
#if FILTER_LAYOUT_IMAGE_2D_WEIGHTS_WINOGRAD_6x3_S1_FBXYB || FILTER_LAYOUT_IMAGE_2D_WEIGHTS_WINOGRAD_6x3_S1_XFBYB
const UNIT_TYPE_8 f01 = as_half8(_sub_group_block_read_us8(U, (int2)(coordU0.x + 16 * sizeof(UNIT_TYPE), coordU0.y)));
const UNIT_TYPE_8 f01 = as_half8(intel_sub_group_block_read_us8(U, (int2)(coordU0.x + 16 * sizeof(UNIT_TYPE), coordU0.y)));
#else
const UNIT_TYPE_8 f01 = (UNIT_TYPE_8)(
as_half(_sub_group_block_read_us((__global unsigned short *)&U[flatA + 16 + 0 * WEIGHTWIDTH])),
@ -637,7 +637,7 @@ KERNEL(convolution_gpu_winograd_6x3_s1_fused)
DOT8i_7(M6.s1, f01, V8, 12 + c8);
#if FILTER_LAYOUT_IMAGE_2D_WEIGHTS_WINOGRAD_6x3_S1_FBXYB || FILTER_LAYOUT_IMAGE_2D_WEIGHTS_WINOGRAD_6x3_S1_XFBYB
const UNIT_TYPE_8 f02 = as_half8(_sub_group_block_read_us8(U, (int2)(coordU0.x + 32 * sizeof(UNIT_TYPE), coordU0.y)));
const UNIT_TYPE_8 f02 = as_half8(intel_sub_group_block_read_us8(U, (int2)(coordU0.x + 32 * sizeof(UNIT_TYPE), coordU0.y)));
#else
const UNIT_TYPE_8 f02 = (UNIT_TYPE_8)(
as_half(_sub_group_block_read_us((__global unsigned short *)&U[flatA + 32 + 0 * WEIGHTWIDTH])),

View File

@ -180,9 +180,9 @@ const float sum_scale = 1;
#if USE_IMAGE == 1
float8 blockB00 = as_float8(
_sub_group_block_read8(wei, coordB0));
intel_sub_group_block_read8(wei, coordB0));
float8 blockB01 = as_float8(
_sub_group_block_read8(wei, coordB1));
intel_sub_group_block_read8(wei, coordB1));
#else
float8 blockB00 = as_float8(
_sub_group_block_read8((const __global uint *)wei1));

View File

@ -70,6 +70,9 @@ bool ConvolutionKernel_bfyx_1x1_gemm_buf::Validate(const Params& p, const option
return false;
}
if (!params.engineInfo.supports_image)
return false;
return true;
}