aboutsummaryrefslogtreecommitdiff
path: root/tests/validation/reference/Winograd.cpp
diff options
context:
space:
mode:
authorGiorgio Arena <giorgio.arena@arm.com>2018-04-11 19:07:17 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:49:37 +0000
commit9373c8b2650f34b2804d3685588bad8e408ebe63 (patch)
tree4cc2330827578fcc87e6445071a105d48e1dd4c6 /tests/validation/reference/Winograd.cpp
parentfc1d1e2200f3056572b158b8208bac456f48339f (diff)
downloadComputeLibrary-9373c8b2650f34b2804d3685588bad8e408ebe63.tar.gz
COMPMID-1037 Add support for F(4x4, 5x5) in CLWinogradFilterTransformKernel
Change-Id: I6dd639bf5df9bc0c133996f75bdee767f70a6cfb Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/127469 Tested-by: Jenkins <bsgcomp@arm.com> Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Diffstat (limited to 'tests/validation/reference/Winograd.cpp')
-rw-r--r--tests/validation/reference/Winograd.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/tests/validation/reference/Winograd.cpp b/tests/validation/reference/Winograd.cpp
index 604e25214b..757a06d847 100644
--- a/tests/validation/reference/Winograd.cpp
+++ b/tests/validation/reference/Winograd.cpp
@@ -43,9 +43,6 @@ namespace
template <typename T>
void initialize_matrix_transform(SimpleTensor<T> &src, const Size2D &output_tile_size, const Size2D &kernel_size, WinogradTransformType winograd_transform_type)
{
- ARM_COMPUTE_ERROR_ON((output_tile_size != Size2D(2U, 2U)) && (output_tile_size != Size2D(4U, 4U)));
- ARM_COMPUTE_ERROR_ON(kernel_size != Size2D(3U, 3U));
-
// Winograd input transform matrices
static const float imatrix2x2_3x3[] =
{
@@ -86,6 +83,19 @@ void initialize_matrix_transform(SimpleTensor<T> &src, const Size2D &output_tile
0.0f, 0.0f, 1.0f
};
+ static const float fmatrix4x4_5x5[] =
+ {
+ 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
+ -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f,
+ -2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f,
+ 1.0f / 90.0f, 1.0f / 45.0f, 2.0f / 45.0f, 4.0f / 45.0f, 8.0f / 45.0f,
+ 1.0f / 90.0f, -1.0f / 45.0f, 2.0f / 45.0f, -4.0f / 45.0f, 8.0f / 45.0f,
+ 4.0f / 45.0f, 2.0f / 45.0f, 1.0f / 45.0f, 1.0f / 90.0f, 1.0f / 180.0f,
+ 4.0f / 45.0f, -2.0f / 45.0f, 1.0f / 45.0f, -1.0f / 90.0f, 1.0f / 180.0f,
+ 0.0f, 0.0f, 0.0f, 0.0f, 1.0f
+
+ };
+
// ------------------------------------------
// Winograd output transform matrices
@@ -114,11 +124,12 @@ void initialize_matrix_transform(SimpleTensor<T> &src, const Size2D &output_tile
{ WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(3, 3), WinogradTransformType::INPUT), imatrix4x4_3x3 },
{ WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(3, 3), WinogradTransformType::FILTER), fmatrix2x2_3x3 },
{ WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(3, 3), WinogradTransformType::FILTER), fmatrix4x4_3x3 },
+ { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(5, 5), WinogradTransformType::FILTER), fmatrix4x4_5x5 },
{ WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(3, 3), WinogradTransformType::OUTPUT), omatrix2x2_3x3 },
{ WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(3, 3), WinogradTransformType::OUTPUT), omatrix4x4_3x3 },
};
- // Find input matrix transform
+ // Find transformation matrix
std::map<WinogradKey, const float *>::iterator it;
it = matrix_map.find(WinogradKey(std::pair<int, int>(output_tile_size.width, output_tile_size.height),