diff options
Diffstat (limited to 'tests/NEON')
-rw-r--r-- | tests/NEON/HOGAccessor.h | 64 | ||||
-rw-r--r-- | tests/NEON/Helper.h | 27 | ||||
-rw-r--r-- | tests/NEON/LutAccessor.h | 90 |
3 files changed, 19 insertions, 162 deletions
diff --git a/tests/NEON/HOGAccessor.h b/tests/NEON/HOGAccessor.h deleted file mode 100644 index 735abb08d3..0000000000 --- a/tests/NEON/HOGAccessor.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2018-2020 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_TEST_HOGACCESSOR_H -#define ARM_COMPUTE_TEST_HOGACCESSOR_H - -#include "arm_compute/runtime/HOG.h" -#include "tests/IHOGAccessor.h" - -namespace arm_compute -{ -namespace test -{ -/** Accessor implementation for @ref HOG objects. */ -class HOGAccessor : public IHOGAccessor -{ -public: - /** Create an accessor for the given @p HOG. - */ - HOGAccessor(HOG &hog) - : _hog{ hog } - { - } - - /** Prevent instances of this class from being copied (As this class contains references). */ - HOGAccessor(const HOGAccessor &) = delete; - /** Prevent instances of this class from being copied (As this class contains references). */ - HOGAccessor &operator=(const HOGAccessor &) = delete; - - /** Pointer to the first element of the array which stores the linear SVM coefficients of HOG descriptor - * - * @return A pointer to the first element of the array which stores the linear SVM coefficients of HOG descriptor - */ - float *descriptor() const override - { - return _hog.descriptor(); - } - -private: - HOG &_hog; -}; -} // namespace test -} // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_HOGACCESSOR_H */ diff --git a/tests/NEON/Helper.h b/tests/NEON/Helper.h index ea47a416b1..fb0231b62a 100644 --- a/tests/NEON/Helper.h +++ b/tests/NEON/Helper.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Arm Limited. + * Copyright (c) 2017-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -27,12 +27,14 @@ #include "arm_compute/runtime/Array.h" #include "arm_compute/runtime/NEON/INESimpleFunction.h" #include "arm_compute/runtime/NEON/INESimpleFunctionNoBorder.h" +#include "arm_compute/runtime/NEON/NEScheduler.h" #include "src/core/NEON/kernels/NEFillBorderKernel.h" -#include "support/MemorySupport.h" +#include "src/cpu/ICpuOperator.h" #include "tests/Globals.h" #include <algorithm> #include <array> +#include <memory> #include <vector> namespace arm_compute @@ -64,7 +66,7 @@ public: template <typename... Args> void configure(Args &&... args) { - auto k = arm_compute::support::cpp14::make_unique<K>(); + auto k = std::make_unique<K>(); k->configure(std::forward<Args>(args)...); _kernel = std::move(k); } @@ -92,11 +94,11 @@ public: template <typename T, typename... Args> void configure(T first, Args &&... args) { - auto k = arm_compute::support::cpp14::make_unique<K>(); + auto k = std::make_unique<K>(); k->configure(first, std::forward<Args>(args)...); _kernel = std::move(k); - auto b = arm_compute::support::cpp14::make_unique<NEFillBorderKernel>(); + auto b = std::make_unique<NEFillBorderKernel>(); b->configure(first, BorderSize(bordersize), BorderMode::CONSTANT, PixelValue()); _border_handler = std::move(b); } @@ -104,7 +106,7 @@ public: /** As above but this also setups a Zero border on the input tensor of the kernel's bordersize */ template <typename K> -class NESynthetizeFunctionWithZeroConstantKernelBorder : public INESimpleFunction +class NESynthetizeFunctionWithZeroConstantKernelBorder : public cpu::ICpuOperator { public: /** Configure the kernel. @@ -115,14 +117,23 @@ public: template <typename T, typename... Args> void configure(T first, Args &&... args) { - auto k = arm_compute::support::cpp14::make_unique<K>(); + auto k = std::make_unique<K>(); k->configure(first, std::forward<Args>(args)...); _kernel = std::move(k); - auto b = arm_compute::support::cpp14::make_unique<NEFillBorderKernel>(); + auto b = std::make_unique<NEFillBorderKernel>(); b->configure(first, BorderSize(_kernel->border_size()), BorderMode::CONSTANT, PixelValue()); _border_handler = std::move(b); } + + void run(ITensorPack &tensors) + { + NEScheduler::get().schedule(_border_handler.get(), Window::DimZ); + NEScheduler::get().schedule_op(_kernel.get(), Window::DimY, _kernel->window(), tensors); + } + +private: + std::unique_ptr<INEKernel> _border_handler{ nullptr }; }; } // namespace test diff --git a/tests/NEON/LutAccessor.h b/tests/NEON/LutAccessor.h deleted file mode 100644 index 5204d0640c..0000000000 --- a/tests/NEON/LutAccessor.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2017-2019 Arm Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef ARM_COMPUTE_TEST_NEON_LUTACCESSOR_H -#define ARM_COMPUTE_TEST_NEON_LUTACCESSOR_H - -#include "tests/ILutAccessor.h" - -#include "arm_compute/runtime/Lut.h" - -namespace arm_compute -{ -namespace test -{ -/** Accessor implementation for @ref Lut objects. */ -template <typename T> -class LutAccessor : public ILutAccessor<T> -{ -public: - /** Create an accessor for the given @p Lut. - */ - LutAccessor(Lut &lut) - : _lut{ lut } - { - } - - /** Prevent instances of this class from being copy constructed */ - LutAccessor(const LutAccessor &) = delete; - /** Prevent instances of this class from being copied */ - LutAccessor &operator=(const LutAccessor &) = delete; - /** Allow instances of this class to be move constructed */ - LutAccessor(LutAccessor &&) = default; - /** Allow instances of this class to be moved */ - LutAccessor &operator=(LutAccessor &&) = default; - - int num_elements() const override - { - return _lut.num_elements(); - } - - const T &operator[](T input_value) const override - { - auto lut = reinterpret_cast<T *>(_lut.buffer()); - int32_t real_index = _lut.index_offset() + static_cast<int32_t>(input_value); - - if(0 <= real_index && real_index < num_elements()) - { - return lut[real_index]; - } - ARM_COMPUTE_ERROR("Error index not in range."); - } - - T &operator[](T input_value) override - { - auto lut = reinterpret_cast<T *>(_lut.buffer()); - int32_t real_index = _lut.index_offset() + static_cast<int32_t>(input_value); - - if(0 <= real_index && real_index < num_elements()) - { - return lut[real_index]; - } - ARM_COMPUTE_ERROR("Error index not in range."); - } - -private: - ILut &_lut; -}; -} // namespace test -} // namespace arm_compute -#endif /* ARM_COMPUTE_TEST_NEON_LUTACCESSOR_H */ |