diff options
author | Giorgio Arena <giorgio.arena@arm.com> | 2018-04-11 19:07:17 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:49:37 +0000 |
commit | 9373c8b2650f34b2804d3685588bad8e408ebe63 (patch) | |
tree | 4cc2330827578fcc87e6445071a105d48e1dd4c6 /tests/validation/reference | |
parent | fc1d1e2200f3056572b158b8208bac456f48339f (diff) | |
download | ComputeLibrary-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')
-rw-r--r-- | tests/validation/reference/Winograd.cpp | 19 |
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), |