From 82c1a1fc63d6a49c0b4be39529412c7f7bc8ea64 Mon Sep 17 00:00:00 2001 From: Michele Di Giorgio Date: Mon, 24 Aug 2020 14:35:22 +0100 Subject: COMPMID-3752: NEPermuteKernel does not support permutations2 Solves also: - COMPMID-3766: CTS Failures in Transpose Neon + FP16 Change-Id: I9d323f45f49cc0bce9e6329790bcf2f0eeec8572 Signed-off-by: Michele Di Giorgio Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3949 Tested-by: Arm Jenkins Reviewed-by: Manuel Bottini Reviewed-by: Pablo Marquez Comments-Addressed: Arm Jenkins --- src/core/NEON/kernels/NEPermuteKernel.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'src/core') diff --git a/src/core/NEON/kernels/NEPermuteKernel.cpp b/src/core/NEON/kernels/NEPermuteKernel.cpp index 737b10b03c..3f447f90b9 100644 --- a/src/core/NEON/kernels/NEPermuteKernel.cpp +++ b/src/core/NEON/kernels/NEPermuteKernel.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019 Arm Limited. + * Copyright (c) 2018-2020 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -36,15 +36,19 @@ namespace #include "arm_compute/core/NEON/kernels/convolution/common/shims.hpp" } // namespace -#include -#include - -using namespace arm_compute; - +namespace arm_compute +{ namespace { inline bool is_permutation_supported(const PermutationVector &v) { + static const std::array permutations2 = + { + { + PermutationVector(0U, 1U), + PermutationVector(1U, 0U), + } + }; static const std::array permutations3 = { { @@ -86,7 +90,8 @@ inline bool is_permutation_supported(const PermutationVector &v) } }; - return (permutations3.end() != std::find(permutations3.begin(), permutations3.end(), v)) || (permutations4.end() != std::find(permutations4.begin(), permutations4.end(), v)); + return (permutations2.end() != std::find(permutations2.begin(), permutations2.end(), v)) || (permutations3.end() != std::find(permutations3.begin(), permutations3.end(), v)) + || (permutations4.end() != std::find(permutations4.begin(), permutations4.end(), v)); } Status validate_arguments(const ITensorInfo *input, const ITensorInfo *output, const PermutationVector &perm) @@ -129,7 +134,7 @@ void NEPermuteKernel::run_permute(const Window &window) // Output window Window window_out(window); const Window::Dimension zero_window = Window::Dimension(0, 0, 0); - for(size_t d = 0; d <= _perm.num_dimensions(); ++d) + for(size_t d = 0; d <= _output->info()->num_dimensions(); ++d) { window_out.set(d, zero_window); } @@ -292,3 +297,4 @@ void NEPermuteKernel::run(const Window &window, const ThreadInfo &info) (this->*_func)(window); } } +} // namespace arm_compute -- cgit v1.2.1