From 3e9e11541c177abd7101962ef1e703d70d718c56 Mon Sep 17 00:00:00 2001 From: David Beck Date: Wed, 17 Oct 2018 14:17:50 +0100 Subject: IVGCVSW-2037 : separate registry for layer support intrefaces * because their lifetime is different from backends Change-Id: I9ba525e7e503b148cde1294933f3954b8bad3d68 --- src/backends/neon/CMakeLists.txt | 2 ++ src/backends/neon/NeonBackend.cpp | 12 +++++------- src/backends/neon/NeonBackend.hpp | 6 ------ src/backends/neon/NeonBackendId.hpp | 12 ++++++++++++ src/backends/neon/NeonLayerSupport.cpp | 18 ++++++++++++++++++ 5 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 src/backends/neon/NeonBackendId.hpp (limited to 'src/backends/neon') diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt index e294ff7319..058553dd34 100644 --- a/src/backends/neon/CMakeLists.txt +++ b/src/backends/neon/CMakeLists.txt @@ -7,6 +7,7 @@ if(ARMCOMPUTENEON) list(APPEND armnnNeonBackend_sources NeonBackend.cpp NeonBackend.hpp + NeonBackendId.hpp NeonInterceptorScheduler.hpp NeonInterceptorScheduler.cpp NeonLayerSupport.cpp @@ -26,6 +27,7 @@ if(ARMCOMPUTENEON) else() list(APPEND armnnNeonBackend_sources + NeonBackendId.hpp NeonLayerSupport.cpp NeonLayerSupport.hpp NeonWorkloadFactory.cpp diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp index 3c12f7766d..b7102956df 100644 --- a/src/backends/neon/NeonBackend.cpp +++ b/src/backends/neon/NeonBackend.cpp @@ -4,6 +4,7 @@ // #include "NeonBackend.hpp" +#include "NeonBackendId.hpp" #include "NeonWorkloadFactory.hpp" #include @@ -16,7 +17,9 @@ namespace armnn namespace { -static BackendRegistry::Helper g_RegisterHelper{ +static StaticRegistryInitializer g_RegisterHelper +{ + BackendRegistryInstance(), NeonBackend::GetIdStatic(), []() { @@ -28,15 +31,10 @@ static BackendRegistry::Helper g_RegisterHelper{ const BackendId& NeonBackend::GetIdStatic() { - static const BackendId s_Id{"CpuAcc"}; + static const BackendId s_Id{NeonBackendId()}; return s_Id; } -const ILayerSupport& NeonBackend::GetLayerSupport() const -{ - return m_LayerSupport; -} - std::unique_ptr NeonBackend::CreateWorkloadFactory() const { return std::make_unique(); diff --git a/src/backends/neon/NeonBackend.hpp b/src/backends/neon/NeonBackend.hpp index c7f7f6e380..6280610bda 100644 --- a/src/backends/neon/NeonBackend.hpp +++ b/src/backends/neon/NeonBackend.hpp @@ -5,7 +5,6 @@ #pragma once #include -#include "NeonLayerSupport.hpp" namespace armnn { @@ -19,14 +18,9 @@ public: static const BackendId& GetIdStatic(); const BackendId& GetId() const override { return GetIdStatic(); } - const ILayerSupport& GetLayerSupport() const override; - std::unique_ptr CreateWorkloadFactory() const override; static void Destroy(IBackend* backend); - -private: - NeonLayerSupport m_LayerSupport; }; } // namespace armnn \ No newline at end of file diff --git a/src/backends/neon/NeonBackendId.hpp b/src/backends/neon/NeonBackendId.hpp new file mode 100644 index 0000000000..6e6412aa09 --- /dev/null +++ b/src/backends/neon/NeonBackendId.hpp @@ -0,0 +1,12 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +namespace armnn +{ + +constexpr const char * NeonBackendId() { return "CpuAcc"; } + +} // namespace armnn diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp index 0add6f594d..3638212c75 100644 --- a/src/backends/neon/NeonLayerSupport.cpp +++ b/src/backends/neon/NeonLayerSupport.cpp @@ -4,6 +4,7 @@ // #include "NeonLayerSupport.hpp" +#include "NeonBackendId.hpp" #include #include @@ -11,6 +12,8 @@ #include #include +#include + #include #ifdef ARMCOMPUTENEON_ENABLED @@ -37,6 +40,21 @@ namespace armnn namespace { +ILayerSupportSharedPtr GetLayerSupportPointer() +{ + static ILayerSupportSharedPtr instance{new NeonLayerSupport}; + return instance; +} + +static StaticRegistryInitializer g_RegisterHelper{ + LayerSupportRegistryInstance(), + NeonBackendId(), + []() + { + return GetLayerSupportPointer(); + } +}; + bool IsNeonBackendSupported(Optional reasonIfUnsupported) { #if ARMCOMPUTENEON_ENABLED -- cgit v1.2.1