diff options
Diffstat (limited to 'src/backends/neon')
-rw-r--r-- | src/backends/neon/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/backends/neon/NeonBackend.cpp | 15 | ||||
-rw-r--r-- | src/backends/neon/NeonRegistryInitializer.cpp | 25 | ||||
-rw-r--r-- | src/backends/neon/backend.mk | 11 | ||||
-rw-r--r-- | src/backends/neon/test/CMakeLists.txt | 7 | ||||
-rw-r--r-- | src/backends/neon/test/NeonCreateWorkloadTests.cpp | 6 | ||||
-rw-r--r-- | src/backends/neon/test/NeonEndToEndTests.cpp | 6 | ||||
-rw-r--r-- | src/backends/neon/test/NeonLayerTests.cpp | 8 |
8 files changed, 62 insertions, 21 deletions
diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt index 7464a2e623..f99f1ac3e7 100644 --- a/src/backends/neon/CMakeLists.txt +++ b/src/backends/neon/CMakeLists.txt @@ -12,13 +12,14 @@ if(ARMCOMPUTENEON) NeonInterceptorScheduler.cpp NeonLayerSupport.cpp NeonLayerSupport.hpp - NeonWorkloadFactory.cpp - NeonWorkloadFactory.hpp + NeonRegistryInitializer.cpp NeonTensorHandle.hpp NeonTensorHandleFactory.cpp NeonTensorHandleFactory.hpp NeonTimer.hpp NeonTimer.cpp + NeonWorkloadFactory.cpp + NeonWorkloadFactory.hpp ) add_subdirectory(workloads) diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp index 5df231b5e3..60f8ba6dab 100644 --- a/src/backends/neon/NeonBackend.cpp +++ b/src/backends/neon/NeonBackend.cpp @@ -25,21 +25,6 @@ namespace armnn { -namespace -{ - -static BackendRegistry::StaticRegistryInitializer g_RegisterHelper -{ - BackendRegistryInstance(), - NeonBackend::GetIdStatic(), - []() - { - return IBackendInternalUniquePtr(new NeonBackend); - } -}; - -} - const BackendId& NeonBackend::GetIdStatic() { static const BackendId s_Id{NeonBackendId()}; diff --git a/src/backends/neon/NeonRegistryInitializer.cpp b/src/backends/neon/NeonRegistryInitializer.cpp new file mode 100644 index 0000000000..c74acae96b --- /dev/null +++ b/src/backends/neon/NeonRegistryInitializer.cpp @@ -0,0 +1,25 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "NeonBackend.hpp" + +#include <backendsCommon/BackendRegistry.hpp> + +namespace +{ + +using namespace armnn; + +static BackendRegistry::StaticRegistryInitializer g_RegisterHelper +{ + BackendRegistryInstance(), + NeonBackend::GetIdStatic(), + []() + { + return IBackendInternalUniquePtr(new NeonBackend); + } +}; + +} // Anonymous namespace diff --git a/src/backends/neon/backend.mk b/src/backends/neon/backend.mk index 9ceb843868..bf7e25d5f0 100644 --- a/src/backends/neon/backend.mk +++ b/src/backends/neon/backend.mk @@ -7,7 +7,7 @@ # in the Android build and it is picked up by the Android.mk # file in the root of ArmNN -# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED) is declared in android-nn-driver/Android.mk +# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED is declared in android-nn-driver/Android.mk) ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1) # ARMNN_COMPUTE_NEON_ENABLED == 1 @@ -17,6 +17,7 @@ BACKEND_SOURCES := \ NeonBackend.cpp \ NeonInterceptorScheduler.cpp \ NeonLayerSupport.cpp \ + NeonRegistryInitializer.cpp \ NeonTensorHandleFactory.cpp \ NeonTimer.cpp \ NeonWorkloadFactory.cpp \ @@ -71,7 +72,7 @@ endif # in the Android unit test build (armnn-tests) and it is picked # up by the Android.mk file in the root of ArmNN -# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED) is declared in android-nn-driver/Android.mk +# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED is declared in android-nn-driver/Android.mk) ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1) # ARMNN_COMPUTE_NEON_ENABLED == 1 @@ -83,11 +84,15 @@ BACKEND_TEST_SOURCES := \ test/NeonJsonPrinterTests.cpp \ test/NeonLayerSupportTests.cpp \ test/NeonLayerTests.cpp \ - test/NeonMemCopyTests.cpp \ test/NeonOptimizedNetworkTests.cpp \ test/NeonRuntimeTests.cpp \ test/NeonTimerTest.cpp +ifeq ($(ARMNN_COMPUTE_REF_ENABLED),1) +BACKEND_TEST_SOURCES += \ + test/NeonMemCopyTests.cpp +endif # ARMNN_COMPUTE_REF_ENABLED == 1 + else # ARMNN_COMPUTE_NEON_ENABLED == 0 diff --git a/src/backends/neon/test/CMakeLists.txt b/src/backends/neon/test/CMakeLists.txt index 19512f98eb..87929fba43 100644 --- a/src/backends/neon/test/CMakeLists.txt +++ b/src/backends/neon/test/CMakeLists.txt @@ -9,13 +9,18 @@ list(APPEND armnnNeonBackendUnitTests_sources NeonJsonPrinterTests.cpp NeonLayerSupportTests.cpp NeonLayerTests.cpp - NeonMemCopyTests.cpp NeonOptimizedNetworkTests.cpp NeonRuntimeTests.cpp NeonTimerTest.cpp NeonWorkloadFactoryHelper.hpp ) +if (ARMCOMPUTEREF) + list(APPEND armnnNeonBackendUnitTests_sources + NeonMemCopyTests.cpp + ) +endif() + add_library(armnnNeonBackendUnitTests OBJECT ${armnnNeonBackendUnitTests_sources}) target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn) target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils) diff --git a/src/backends/neon/test/NeonCreateWorkloadTests.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp index 056bfb283f..6317ac2cc7 100644 --- a/src/backends/neon/test/NeonCreateWorkloadTests.cpp +++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp @@ -710,6 +710,10 @@ BOOST_AUTO_TEST_CASE(CreateSingleOutputMultipleInputs) BOOST_TEST(validDataPointers); } +#if defined(ARMCOMPUTEREF_ENABLED) + +// This test unit needs the reference backend, it's not available if the reference backend is not built + BOOST_AUTO_TEST_CASE(CreateMemCopyWorkloadsNeon) { NeonWorkloadFactory factory = @@ -717,6 +721,8 @@ BOOST_AUTO_TEST_CASE(CreateMemCopyWorkloadsNeon) CreateMemCopyWorkloads<IAclTensorHandle>(factory); } +#endif + template <typename L2NormalizationWorkloadType, typename armnn::DataType DataType> static void NeonCreateL2NormalizationWorkloadTest(DataLayout dataLayout) { diff --git a/src/backends/neon/test/NeonEndToEndTests.cpp b/src/backends/neon/test/NeonEndToEndTests.cpp index 9f94151c1d..bee5b7e76c 100644 --- a/src/backends/neon/test/NeonEndToEndTests.cpp +++ b/src/backends/neon/test/NeonEndToEndTests.cpp @@ -25,6 +25,10 @@ BOOST_AUTO_TEST_CASE(ConstantUsage_Neon_Float32) BOOST_TEST(ConstantUsageFloat32Test(defaultBackends)); } +#if defined(ARMCOMPUTEREF_ENABLED) + +// This test unit needs the reference backend, it's not available if the reference backend is not built + BOOST_AUTO_TEST_CASE(FallbackToCpuRef) { using namespace armnn; @@ -59,6 +63,8 @@ BOOST_AUTO_TEST_CASE(FallbackToCpuRef) BOOST_TEST(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success); } +#endif + BOOST_AUTO_TEST_CASE(NeonGreaterSimpleEndToEndTest) { const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1, diff --git a/src/backends/neon/test/NeonLayerTests.cpp b/src/backends/neon/test/NeonLayerTests.cpp index e795174144..27f1dd24da 100644 --- a/src/backends/neon/test/NeonLayerTests.cpp +++ b/src/backends/neon/test/NeonLayerTests.cpp @@ -848,6 +848,11 @@ ARMNN_AUTO_TEST_CASE(MultiChannelTransposeConvolution2dUint8Nhwc, MultiChannelTransposeConvolution2dTest<DataType::QuantisedAsymm8, DataType::Signed32>, DataLayout::NHWC) +#if defined(ARMCOMPUTEREF_ENABLED) + +// The ARMNN_COMPARE_REF_AUTO_TEST_CASE and the ARMNN_COMPARE_REF_FIXTURE_TEST_CASE test units are not available +// if the reference backend is not built + // ============================================================================ // COMPARE tests @@ -934,4 +939,7 @@ ARMNN_COMPARE_REF_FIXTURE_TEST_CASE(CompareSqrtActivationWithReference, Positive ARMNN_COMPARE_REF_FIXTURE_TEST_CASE(CompareSquareActivationWithReference, ActivationFixture, CompareActivationTest, ActivationFunction::Square, 5u) + +#endif + BOOST_AUTO_TEST_SUITE_END() |