diff options
author | Alexey Suhov <asuhov@users.noreply.github.com> | 2018-11-23 16:19:43 +0300 |
---|---|---|
committer | openvino-pushbot <44090433+openvino-pushbot@users.noreply.github.com> | 2018-11-23 16:19:43 +0300 |
commit | 55a41d7570f78aaea0d6764d157dd7434730d56f (patch) | |
tree | ba022c71609b93d51119bcb25e5ccb8c7147dbd3 /inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl | |
parent | 54eab180361ec09fbd82e2bb62adfeb521275774 (diff) | |
download | dldt-55a41d7570f78aaea0d6764d157dd7434730d56f.tar.gz dldt-55a41d7570f78aaea0d6764d157dd7434730d56f.tar.bz2 dldt-55a41d7570f78aaea0d6764d157dd7434730d56f.zip |
Publishing R4 (#41)
* Publishing R4
Diffstat (limited to 'inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl')
-rw-r--r-- | inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl index 42ff9f24a..582e9f525 100644 --- a/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl +++ b/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl @@ -79,6 +79,45 @@ inline uint FUNC(get_byxf_af32_index)(uint b, uint f, uint y, uint x, uint y_pit CAT(prefix, _FEATURE_NUM), \ CAT(prefix, _OFFSET)) +inline uint FUNC(get_fs_bs_yx_bsv4_fsv32_index)(uint b, uint f, uint y, uint x, + uint x_pad_before, uint x_size, uint x_pad_after, + uint y_pad_before, uint y_size, uint y_pad_after, + uint size_f, uint size_b) +{ + const uint f_32_aligned = ((size_f + 31)/32) * 32; + const uint b_4_aligned = ((size_b + 3)/4) * 4; + const uint fsv_idx = f % 32; + const uint bsv_idx = b % 4; + const uint fs_idx = f / 32; + const uint bs_idx = b / 4; + + const uint x_pitch = 32 * 4; + const uint y_pitch = 32 * 4 * (x_pad_before + x_size + x_pad_after); + const uint bs_pitch = y_pitch * (y_pad_before + y_size + y_pad_after); + const uint fs_pitch = bs_pitch * (b_4_aligned / 4); + uint offset = x_pitch * x_pad_before + y_pitch * y_pad_before; + + size_t idx = offset + fsv_idx + bsv_idx * 32; + idx += 32*4 * x; + idx += y * y_pitch; + idx += bs_idx * bs_pitch; + idx += fs_idx * fs_pitch; + + return idx; +} + +#define GET_DATA_FS_BS_YX_BSV4_FSV32_INDEX(prefix, b, f, y, x)\ + FUNC_CALL(get_fs_bs_yx_bsv4_fsv32_index)( \ + b, f, y, x, \ + CAT(prefix, _PAD_BEFORE_SIZE_X), \ + CAT(prefix, _SIZE_X), \ + CAT(prefix, _PAD_AFTER_SIZE_X), \ + CAT(prefix, _PAD_BEFORE_SIZE_Y), \ + CAT(prefix, _SIZE_Y), \ + CAT(prefix, _PAD_AFTER_SIZE_Y), \ + CAT(prefix, _FEATURE_NUM), \ + CAT(prefix, _BATCH_NUM)) + #define GET_FILTER_INDEX(prefix, o, i, y, x) \ CAT(prefix, _OFFSET) + \ (x)*CAT(prefix, _X_PITCH) + \ @@ -210,6 +249,23 @@ inline uint FUNC(get_os_is_yx_isa8_osv8_isv4_index)(uint o, uint i, uint y, uint CAT(prefix, _OFM_NUM), \ CAT(prefix, _OFFSET)) + +inline uint FUNC(get_is_o_yx_isv32_index)(uint o, uint i, uint y, uint x, uint i_size, uint o_size, uint x_size, uint y_size) +{ + const uint i_aligned_to_32 = ((i_size + 31) / 32) * 32; + const uint i_val = i % 32; + const uint i_slice = i / 32; + const size_t idx = i_val + 32* (x + x_size * (y + y_size * (o + o_size * i_slice) ) ); + return idx; +} + +#define GET_FILTER_IS_O_YX_ISV32(prefix, o, i, y, x)\ + FUNC_CALL(get_is_o_yx_isv32_index)(\ + o, i, y, x, CAT(prefix, _IFM_NUM),\ + CAT(prefix, _OFM_NUM),\ + CAT(prefix, _SIZE_X),\ + CAT(prefix, _SIZE_Y)) + #define DECLARE_SAMPLER const sampler_t imageSampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | CLK_FILTER_NEAREST #if FP16_UNIT_USED |