diff options
Diffstat (limited to 'src/backends/neon/test')
-rw-r--r-- | src/backends/neon/test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/backends/neon/test/NeonCreateWorkloadTests.cpp | 32 | ||||
-rw-r--r-- | src/backends/neon/test/NeonLayerSupportTests.cpp | 8 | ||||
-rw-r--r-- | src/backends/neon/test/NeonLayerTests.cpp | 2 | ||||
-rw-r--r-- | src/backends/neon/test/NeonMemCopyTests.cpp | 7 | ||||
-rw-r--r-- | src/backends/neon/test/NeonOptimizedNetworkTests.cpp | 4 | ||||
-rw-r--r-- | src/backends/neon/test/NeonTimerTest.cpp | 4 | ||||
-rw-r--r-- | src/backends/neon/test/NeonWorkloadFactoryHelper.hpp | 37 |
8 files changed, 74 insertions, 21 deletions
diff --git a/src/backends/neon/test/CMakeLists.txt b/src/backends/neon/test/CMakeLists.txt index a1ac1e0049..19512f98eb 100644 --- a/src/backends/neon/test/CMakeLists.txt +++ b/src/backends/neon/test/CMakeLists.txt @@ -13,6 +13,7 @@ list(APPEND armnnNeonBackendUnitTests_sources NeonOptimizedNetworkTests.cpp NeonRuntimeTests.cpp NeonTimerTest.cpp + NeonWorkloadFactoryHelper.hpp ) add_library(armnnNeonBackendUnitTests OBJECT ${armnnNeonBackendUnitTests_sources}) diff --git a/src/backends/neon/test/NeonCreateWorkloadTests.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp index 5cd305c8ac..07953bf86f 100644 --- a/src/backends/neon/test/NeonCreateWorkloadTests.cpp +++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp @@ -3,6 +3,8 @@ // SPDX-License-Identifier: MIT // +#include "NeonWorkloadFactoryHelper.hpp" + #include <backendsCommon/MemCopyWorkload.hpp> #include <aclCommon/test/CreateWorkloadClNeon.hpp> @@ -56,7 +58,7 @@ template <typename armnn::DataType DataType> static void NeonCreateActivationWorkloadTest() { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreateActivationWorkloadTest<NeonActivationWorkload, DataType>(factory, graph); // Checks that inputs/outputs are as we expect them (see definition of CreateActivationWorkloadTest). @@ -86,7 +88,7 @@ template <typename WorkloadType, static void NeonCreateArithmethicWorkloadTest() { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreateArithmeticWorkloadTest<WorkloadType, DescriptorType, LayerType, DataType>(factory, graph); DescriptorType queueDescriptor = workload->GetData(); @@ -156,7 +158,7 @@ template <typename BatchNormalizationWorkloadType, typename armnn::DataType Data static void NeonCreateBatchNormalizationWorkloadTest(DataLayout dataLayout) { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreateBatchNormalizationWorkloadTest<BatchNormalizationWorkloadType, DataType> (factory, graph, dataLayout); @@ -198,7 +200,7 @@ template <typename armnn::DataType DataType> static void NeonCreateConvolution2dWorkloadTest(DataLayout dataLayout = DataLayout::NCHW) { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreateConvolution2dWorkloadTest<NeonConvolution2dWorkload, DataType>(factory, graph, dataLayout); @@ -239,7 +241,7 @@ template <typename armnn::DataType DataType> static void NeonCreateDepthWiseConvolutionWorkloadTest(DataLayout dataLayout) { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreateDepthwiseConvolution2dWorkloadTest<NeonDepthwiseConvolutionWorkload, DataType>(factory, graph, dataLayout); @@ -276,7 +278,7 @@ template <typename FullyConnectedWorkloadType, typename armnn::DataType DataType static void NeonCreateFullyConnectedWorkloadTest() { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreateFullyConnectedWorkloadTest<FullyConnectedWorkloadType, DataType>(factory, graph); @@ -304,7 +306,7 @@ template <typename NormalizationWorkloadType, typename armnn::DataType DataType> static void NeonCreateNormalizationWorkloadTest(DataLayout dataLayout) { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreateNormalizationWorkloadTest<NormalizationWorkloadType, DataType>(factory, graph, dataLayout); // Checks that outputs and inputs are as we expect them (see definition of CreateNormalizationWorkloadTest). @@ -346,7 +348,7 @@ template <typename armnn::DataType DataType> static void NeonCreatePooling2dWorkloadTest(DataLayout dataLayout = DataLayout::NCHW) { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreatePooling2dWorkloadTest<NeonPooling2dWorkload, DataType> (factory, graph, dataLayout); @@ -392,7 +394,7 @@ template <typename armnn::DataType DataType> static void NeonCreateReshapeWorkloadTest() { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreateReshapeWorkloadTest<NeonReshapeWorkload, DataType>(factory, graph); // Checks that outputs and inputs are as we expect them (see definition of CreateReshapeWorkloadTest). @@ -424,7 +426,7 @@ template <typename SoftmaxWorkloadType, typename armnn::DataType DataType> static void NeonCreateSoftmaxWorkloadTest() { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreateSoftmaxWorkloadTest<SoftmaxWorkloadType, DataType>(factory, graph); // Checks that outputs and inputs are as we expect them (see definition of CreateSoftmaxWorkloadTest). @@ -450,7 +452,7 @@ BOOST_AUTO_TEST_CASE(CreateSoftmaxFloatWorkload) BOOST_AUTO_TEST_CASE(CreateSplitterWorkload) { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreateSplitterWorkloadTest<NeonSplitterWorkload, DataType::Float32>(factory, graph); // Checks that outputs are as we expect them (see definition of CreateSplitterWorkloadTest). @@ -477,7 +479,7 @@ BOOST_AUTO_TEST_CASE(CreateSplitterMerger) // of the merger. Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workloads = CreateSplitterMergerWorkloadTest<NeonSplitterWorkload, NeonMergerWorkload, @@ -508,7 +510,7 @@ BOOST_AUTO_TEST_CASE(CreateSingleOutputMultipleInputs) // We created a splitter with two outputs. That each of those outputs is used by two different activation layers Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); std::unique_ptr<NeonSplitterWorkload> wlSplitter; std::unique_ptr<NeonActivationWorkload> wlActiv0_0; std::unique_ptr<NeonActivationWorkload> wlActiv0_1; @@ -542,7 +544,7 @@ BOOST_AUTO_TEST_CASE(CreateSingleOutputMultipleInputs) BOOST_AUTO_TEST_CASE(CreateMemCopyWorkloadsNeon) { - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); CreateMemCopyWorkloads<INeonTensorHandle>(factory); } @@ -550,7 +552,7 @@ template <typename L2NormalizationWorkloadType, typename armnn::DataType DataTyp static void NeonCreateL2NormalizationWorkloadTest(DataLayout dataLayout) { Graph graph; - NeonWorkloadFactory factory; + NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); auto workload = CreateL2NormalizationWorkloadTest<L2NormalizationWorkloadType, DataType>(factory, graph, dataLayout); diff --git a/src/backends/neon/test/NeonLayerSupportTests.cpp b/src/backends/neon/test/NeonLayerSupportTests.cpp index 893f11ebf3..56955432b6 100644 --- a/src/backends/neon/test/NeonLayerSupportTests.cpp +++ b/src/backends/neon/test/NeonLayerSupportTests.cpp @@ -3,6 +3,8 @@ // SPDX-License-Identifier: MIT // +#include "NeonWorkloadFactoryHelper.hpp" + #include <layers/ConvertFp16ToFp32Layer.hpp> #include <layers/ConvertFp32ToFp16Layer.hpp> #include <test/TensorHelpers.hpp> @@ -20,19 +22,19 @@ BOOST_AUTO_TEST_SUITE(NeonLayerSupport) BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat16Neon) { - armnn::NeonWorkloadFactory factory; + armnn::NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float16>(&factory); } BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat32Neon) { - armnn::NeonWorkloadFactory factory; + armnn::NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float32>(&factory); } BOOST_AUTO_TEST_CASE(IsLayerSupportedUint8Neon) { - armnn::NeonWorkloadFactory factory; + armnn::NeonWorkloadFactory factory = NeonWorkloadFactoryHelper::GetFactory(); IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory); } diff --git a/src/backends/neon/test/NeonLayerTests.cpp b/src/backends/neon/test/NeonLayerTests.cpp index 4a1c5f9836..48ef667323 100644 --- a/src/backends/neon/test/NeonLayerTests.cpp +++ b/src/backends/neon/test/NeonLayerTests.cpp @@ -3,6 +3,8 @@ // SPDX-License-Identifier: MIT // +#include "NeonWorkloadFactoryHelper.hpp" + #include <test/TensorHelpers.hpp> #include <test/UnitTests.hpp> diff --git a/src/backends/neon/test/NeonMemCopyTests.cpp b/src/backends/neon/test/NeonMemCopyTests.cpp index a37a07e869..f6699a61ba 100644 --- a/src/backends/neon/test/NeonMemCopyTests.cpp +++ b/src/backends/neon/test/NeonMemCopyTests.cpp @@ -3,9 +3,14 @@ // SPDX-License-Identifier: MIT // +#include "NeonWorkloadFactoryHelper.hpp" + +#include <aclCommon/test/MemCopyTestImpl.hpp> + #include <neon/NeonWorkloadFactory.hpp> + #include <reference/RefWorkloadFactory.hpp> -#include <aclCommon/test/MemCopyTestImpl.hpp> +#include <reference/test/RefWorkloadFactoryHelper.hpp> #include <boost/test/unit_test.hpp> diff --git a/src/backends/neon/test/NeonOptimizedNetworkTests.cpp b/src/backends/neon/test/NeonOptimizedNetworkTests.cpp index 3bf1eb8caa..b6f479804a 100644 --- a/src/backends/neon/test/NeonOptimizedNetworkTests.cpp +++ b/src/backends/neon/test/NeonOptimizedNetworkTests.cpp @@ -3,6 +3,8 @@ // SPDX-License-Identifier: MIT // +#include "NeonWorkloadFactoryHelper.hpp" + #include <armnn/ArmNN.hpp> #include <Graph.hpp> #include <Network.hpp> @@ -31,7 +33,7 @@ BOOST_AUTO_TEST_CASE(OptimizeValidateCpuAccDeviceSupportLayerNoFallback) armnn::IOptimizedNetworkPtr optNet = armnn::Optimize(*net, backends, runtime->GetDeviceSpec()); BOOST_CHECK(optNet); // validate workloads - armnn::NeonWorkloadFactory fact; + armnn::NeonWorkloadFactory fact = NeonWorkloadFactoryHelper::GetFactory(); for (auto&& layer : static_cast<armnn::OptimizedNetwork*>(optNet.get())->GetGraph()) { BOOST_CHECK(layer->GetBackendId() == armnn::Compute::CpuAcc); diff --git a/src/backends/neon/test/NeonTimerTest.cpp b/src/backends/neon/test/NeonTimerTest.cpp index 11b319a5ff..a2bf4a95e5 100644 --- a/src/backends/neon/test/NeonTimerTest.cpp +++ b/src/backends/neon/test/NeonTimerTest.cpp @@ -3,6 +3,8 @@ // SPDX-License-Identifier: MIT // +#include "NeonWorkloadFactoryHelper.hpp" + #include <armnn/ArmNN.hpp> #include <test/TensorHelpers.hpp> @@ -35,7 +37,7 @@ BOOST_AUTO_TEST_CASE(NeonTimerGetName) BOOST_AUTO_TEST_CASE(NeonTimerMeasure) { - NeonWorkloadFactory workloadFactory; + NeonWorkloadFactory workloadFactory = NeonWorkloadFactoryHelper::GetFactory(); unsigned int inputWidth = 4000u; unsigned int inputHeight = 5000u; diff --git a/src/backends/neon/test/NeonWorkloadFactoryHelper.hpp b/src/backends/neon/test/NeonWorkloadFactoryHelper.hpp new file mode 100644 index 0000000000..bcf9c57a16 --- /dev/null +++ b/src/backends/neon/test/NeonWorkloadFactoryHelper.hpp @@ -0,0 +1,37 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <backendsCommon/IBackendInternal.hpp> +#include <backendsCommon/IMemoryManager.hpp> +#include <backendsCommon/test/WorkloadFactoryHelper.hpp> + +#include <neon/NeonWorkloadFactory.hpp> + +#include <arm_compute/runtime/Allocator.h> + +#include <boost/polymorphic_pointer_cast.hpp> + +namespace +{ + +template<> +struct WorkloadFactoryHelper<armnn::NeonWorkloadFactory> +{ + static armnn::NeonWorkloadFactory GetFactory() + { + armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager = + std::make_shared<armnn::NeonMemoryManager>(std::make_unique<arm_compute::Allocator>(), + armnn::BaseMemoryManager::MemoryAffinity::Offset); + + return armnn::NeonWorkloadFactory( + boost::polymorphic_pointer_downcast<armnn::NeonMemoryManager>(memoryManager)); + } +}; + +using NeonWorkloadFactoryHelper = WorkloadFactoryHelper<armnn::NeonWorkloadFactory>; + +} // anonymous namespace |