summaryrefslogtreecommitdiff
path: root/inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl
diff options
context:
space:
mode:
authorAlexey Suhov <asuhov@users.noreply.github.com>2018-11-23 16:19:43 +0300
committeropenvino-pushbot <44090433+openvino-pushbot@users.noreply.github.com>2018-11-23 16:19:43 +0300
commit55a41d7570f78aaea0d6764d157dd7434730d56f (patch)
treeba022c71609b93d51119bcb25e5ccb8c7147dbd3 /inference-engine/thirdparty/clDNN/kernel_selector/core/cl_kernels/include/fetch.cl
parent54eab180361ec09fbd82e2bb62adfeb521275774 (diff)
downloaddldt-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.cl56
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