aboutsummaryrefslogtreecommitdiff
path: root/arm_compute
diff options
context:
space:
mode:
authorGian Marco Iodice <gianmarco.iodice@arm.com>2018-07-06 12:59:28 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:54:10 +0000
commitd28b751cf2ba9fcf4ccf294b31bf9d2ec5dfd8bb (patch)
tree111a96797e6b1cd20a2db7088e5fc4cd1903ff02 /arm_compute
parent98f085bf87d55bff3866963e8220cfcb4872709f (diff)
downloadComputeLibrary-d28b751cf2ba9fcf4ccf294b31bf9d2ec5dfd8bb.tar.gz
COMPMID-1340 - Implementing Winograd Convolution Layer 1x5/5x1 on OpenCL NHWC
Change-Id: Id5e0795238f77c049df9c109dafc5ef878c1897d Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/139234 Tested-by: Jenkins <bsgcomp@arm.com> Reviewed-by: Giorgio Arena <giorgio.arena@arm.com> Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Diffstat (limited to 'arm_compute')
-rw-r--r--arm_compute/core/CL/kernels/CLWinogradFilterTransformKernel.h10
-rw-r--r--arm_compute/core/CL/kernels/CLWinogradInputTransformKernel.h10
-rw-r--r--arm_compute/core/CL/kernels/CLWinogradOutputTransformKernel.h10
-rw-r--r--arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h6
-rw-r--r--arm_compute/runtime/CL/functions/CLWinogradInputTransform.h10
5 files changed, 26 insertions, 20 deletions
diff --git a/arm_compute/core/CL/kernels/CLWinogradFilterTransformKernel.h b/arm_compute/core/CL/kernels/CLWinogradFilterTransformKernel.h
index 9d0833d695..62f55fa91e 100644
--- a/arm_compute/core/CL/kernels/CLWinogradFilterTransformKernel.h
+++ b/arm_compute/core/CL/kernels/CLWinogradFilterTransformKernel.h
@@ -54,8 +54,9 @@ public:
* F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
*
* @note Winograd filter transform supports the following configurations for NHWC data layout
- * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3)
- * F(4x4, 5x5)
+ * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3),
+ * F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
+ *
* Strides: only unit strides
*
* @param[in] input Source tensor. The input is a 4D tensor with dimensions [kernel_x, kernel_y, IFM, OFM] (NCHW data layout) or [IFM, kernel_x, kernel_y, OFM] (NHWC data layout). Data types supported: F32.
@@ -71,8 +72,9 @@ public:
* F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
*
* @note Winograd filter transform supports the following configurations for NHWC data layout
- * F(output tile, kernel size):F(4x4, 3x3),
- * F(4x4, 5x5)
+ * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3),
+ * F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
+ *
* Strides: only unit strides
*
* @param[in] input Source tensor. The input is a 4D tensor with dimensions [kernel_x, kernel_y, IFM, OFM] (NCHW data layout) or [IFM, kernel_x, kernel_y, OFM] (NHWC data layout). Data types supported: F32.
diff --git a/arm_compute/core/CL/kernels/CLWinogradInputTransformKernel.h b/arm_compute/core/CL/kernels/CLWinogradInputTransformKernel.h
index 410e8ba765..517b348ffb 100644
--- a/arm_compute/core/CL/kernels/CLWinogradInputTransformKernel.h
+++ b/arm_compute/core/CL/kernels/CLWinogradInputTransformKernel.h
@@ -52,8 +52,9 @@ public:
* F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
*
* @note Winograd input transform supports the following configurations for NHWC data layout
- * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3)
- * F(4x4, 5x5)
+ * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3),
+ * F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
+ *
* Strides: only unit strides
*
* @param[in] input The input tensor to transform. Data types supported: F32
@@ -69,8 +70,9 @@ public:
* F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
*
* @note Winograd input transform supports the following configurations for NHWC data layout
- * F(output tile, kernel size):F(4x4, 3x3),
- * F(4x4, 5x5)
+ * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3),
+ * F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
+ *
* Strides: only unit strides
*
* @param[in] input The input tensor to transform. Data types supported: F32
diff --git a/arm_compute/core/CL/kernels/CLWinogradOutputTransformKernel.h b/arm_compute/core/CL/kernels/CLWinogradOutputTransformKernel.h
index 0798172ba7..bab93de4b0 100644
--- a/arm_compute/core/CL/kernels/CLWinogradOutputTransformKernel.h
+++ b/arm_compute/core/CL/kernels/CLWinogradOutputTransformKernel.h
@@ -54,8 +54,9 @@ public:
* F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
*
* @note Winograd output transform supports the following configurations for NHWC data layout
- * F(output tile, kernel size):F(4x4, 3x3),
- * F(4x4, 5x5)
+ * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3),
+ * F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
+ *
* Strides: only unit strides
*
* @param[in] input Source tensor with shape [C, N, K, batches]. Data types supported: F32.
@@ -72,8 +73,9 @@ public:
* F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
*
* @note Winograd output transform supports the following configurations for NHWC data layout
- * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3)
- * F(4x4, 5x5)
+ * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3),
+ * F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
+ *
* Strides: only unit strides
*
* @param[in] input Source tensor with shape [C, N, K, batches]. Data types supported: F32.
diff --git a/arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h b/arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h
index 683aa79788..a24ae31d41 100644
--- a/arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h
+++ b/arm_compute/runtime/CL/functions/CLWinogradConvolutionLayer.h
@@ -59,8 +59,7 @@ public:
CLWinogradConvolutionLayer &operator=(CLWinogradConvolutionLayer &&) = default;
/** Set the input and output tensors.
*
- * @note: This function only works with 3x3,3x1,1x3,5x5,5x1 and 1x5 kernels along with unit strides for NCHW data layout
- * @note: This function only works with 3x3, 3x1, 1x3 and 5x5 kernels along with unit strides for NHWC data layout
+ * @note: This function only works with 3x3,3x1,1x3,5x5,5x1 and 1x5 kernels along with unit strides for both NCHW and NHWC data layout
* @note Some Winograd configurations (i.e. F(4x4, 5x5)) are supported only with enable_fast_math = true
*
* @param[in] input Source tensor. 3 lower dimensions represent a single input [width, height, IFM],
@@ -79,8 +78,7 @@ public:
const ActivationLayerInfo &act_info = ActivationLayerInfo(), bool enable_fast_math = false);
/** Static function to check if given info will lead to a valid configuration of @ref CLWinogradConvolutionLayer
*
- * @note: This function only works with 3x3,3x1,1x3,5x5,5x1 and 1x5 kernels along with unit strides for NCHW data layout
- * @note: This function only works with 3x3 and 5x5 kernels along with unit strides for NHWC data layout
+ * @note: This function only works with 3x3,3x1,1x3,5x5,5x1 and 1x5 kernels along with unit strides for both NCHW and NHWC data layout
* @note Some Winograd configurations (i.e. F(4x4, 5x5)) are supported only with enable_fast_math = true
*
* @param[in] input Source tensor. 3 lower dimensions represent a single input [width, height, IFM],
diff --git a/arm_compute/runtime/CL/functions/CLWinogradInputTransform.h b/arm_compute/runtime/CL/functions/CLWinogradInputTransform.h
index 1f89455aee..8ea25a116a 100644
--- a/arm_compute/runtime/CL/functions/CLWinogradInputTransform.h
+++ b/arm_compute/runtime/CL/functions/CLWinogradInputTransform.h
@@ -45,8 +45,9 @@ public:
* F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
*
* @note Winograd input transform supports the following configurations for NHWC data layout
- * F(output tile, kernel size):F(4x4, 3x3),
- * F(4x4, 5x5)
+ * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3),
+ * F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
+ *
* Strides: only unit strides
*
* @param[in] input The input tensor to transform. Data types supported: F32
@@ -62,8 +63,9 @@ public:
* F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
*
* @note Winograd input transform supports the following configurations for NHWC data layout
- * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3)
- * F(4x4, 5x5)
+ * F(output tile, kernel size):F(4x4, 3x3), F(4x1, 3x1), F(1x4, 1x3),
+ * F(4x4, 5x5), F(4x1, 5x1), F(1x4, 1x5)
+ *
* Strides: only unit strides
*
* @param[in] input The input tensor to transform. Data types supported: F32