aboutsummaryrefslogtreecommitdiff
path: root/src/backends/neon/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/neon/test')
-rw-r--r--src/backends/neon/test/CMakeLists.txt1
-rw-r--r--src/backends/neon/test/NeonCreateWorkloadTests.cpp32
-rw-r--r--src/backends/neon/test/NeonLayerSupportTests.cpp8
-rw-r--r--src/backends/neon/test/NeonLayerTests.cpp2
-rw-r--r--src/backends/neon/test/NeonMemCopyTests.cpp7
-rw-r--r--src/backends/neon/test/NeonOptimizedNetworkTests.cpp4
-rw-r--r--src/backends/neon/test/NeonTimerTest.cpp4
-rw-r--r--src/backends/neon/test/NeonWorkloadFactoryHelper.hpp37
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