diff options
author | David Beck <david.beck@arm.com> | 2018-11-12 14:59:37 +0000 |
---|---|---|
committer | Aron Virginas-Tar <aron.virginas-tar@arm.com> | 2018-11-12 16:02:51 +0000 |
commit | 111b5d94d7e854c21377f8d2c0b4234317a903f6 (patch) | |
tree | 68111e5d89b605c898b2327cb59b915e3ff64ce9 /src | |
parent | 4e1e136cce3fca73ba49b570cfcb620f4ec574da (diff) | |
download | armnn-111b5d94d7e854c21377f8d2c0b4234317a903f6.tar.gz |
IVGCVSW-2125 : Consolidate backend registries into one
Change-Id: I56da4780f8f5fcef7ff01d232d5d61bf299364bf
Diffstat (limited to 'src')
20 files changed, 184 insertions, 232 deletions
diff --git a/src/armnn/LayerSupport.cpp b/src/armnn/LayerSupport.cpp index 5d2d205534..78a184a7ce 100644 --- a/src/armnn/LayerSupport.cpp +++ b/src/armnn/LayerSupport.cpp @@ -4,8 +4,10 @@ // #include <armnn/LayerSupport.hpp> #include <armnn/Optional.hpp> +#include <armnn/ILayerSupport.hpp> -#include <backendsCommon/LayerSupportRegistry.hpp> +#include <backendsCommon/BackendRegistry.hpp> +#include <backendsCommon/IBackendInternal.hpp> #include <boost/assert.hpp> @@ -39,10 +41,22 @@ void CopyErrorMessage(char* truncatedString, const char* fullString, size_t maxL std::string reasonIfUnsupportedFull; \ bool isSupported; \ try { \ - auto factoryFunc = LayerSupportRegistryInstance().GetFactory(backendId); \ - auto layerSupportObject = factoryFunc(); \ - isSupported = layerSupportObject->func(__VA_ARGS__, Optional<std::string&>(reasonIfUnsupportedFull)); \ - CopyErrorMessage(reasonIfUnsupported, reasonIfUnsupportedFull.c_str(), reasonIfUnsupportedMaxLength); \ + auto const& backendRegistry = BackendRegistryInstance(); \ + if (!backendRegistry.IsBackendRegistered(backendId)) \ + { \ + std::stringstream ss; \ + ss << __func__ << " is not supported on " << backendId << " because this backend is not registered."; \ + reasonIfUnsupportedFull = ss.str(); \ + isSupported = false; \ + } \ + else \ + { \ + auto factoryFunc = backendRegistry.GetFactory(backendId); \ + auto backendObject = factoryFunc(); \ + auto layerSupportObject = backendObject->GetLayerSupport(); \ + isSupported = layerSupportObject->func(__VA_ARGS__, Optional<std::string&>(reasonIfUnsupportedFull)); \ + CopyErrorMessage(reasonIfUnsupported, reasonIfUnsupportedFull.c_str(), reasonIfUnsupportedMaxLength); \ + } \ } catch (InvalidArgumentException e) { \ /* re-throwing with more context information */ \ throw InvalidArgumentException(e, "Failed to check layer support", CHECK_LOCATION()); \ diff --git a/src/backends/backendsCommon/BackendRegistry.cpp b/src/backends/backendsCommon/BackendRegistry.cpp index e9361210f2..80ab01ce1b 100644 --- a/src/backends/backendsCommon/BackendRegistry.cpp +++ b/src/backends/backendsCommon/BackendRegistry.cpp @@ -4,6 +4,7 @@ // #include "BackendRegistry.hpp" +#include <armnn/Exceptions.hpp> namespace armnn { @@ -14,4 +15,72 @@ BackendRegistry& BackendRegistryInstance() return instance; } +void BackendRegistry::Register(const BackendId& id, BackendRegistry::FactoryFunction factory) +{ + if (m_Factories.count(id) > 0) + { + throw InvalidArgumentException( + std::string(id) + " already registered as IBackend factory", + CHECK_LOCATION()); + } + + m_Factories[id] = factory; +} + +bool BackendRegistry::IsBackendRegistered(const BackendId& id) const +{ + return (m_Factories.find(id) != m_Factories.end()); +} + +BackendRegistry::FactoryFunction BackendRegistry::GetFactory(const BackendId& id) const +{ + auto it = m_Factories.find(id); + if (it == m_Factories.end()) + { + throw InvalidArgumentException( + std::string(id) + " has no IBackend factory registered", + CHECK_LOCATION()); + } + + return it->second; +} + +size_t BackendRegistry::Size() const +{ + return m_Factories.size(); +} + +BackendIdSet BackendRegistry::GetBackendIds() const +{ + BackendIdSet result; + for (const auto& it : m_Factories) + { + result.insert(it.first); + } + return result; +} + +std::string BackendRegistry::GetBackendIdsAsString() const +{ + static const std::string delimitator = ", "; + + std::stringstream output; + for (auto& backendId : GetBackendIds()) + { + if (output.tellp() != std::streampos(0)) + { + output << delimitator; + } + output << backendId; + } + + return output.str(); +} + +void BackendRegistry::Swap(BackendRegistry& instance, BackendRegistry::FactoryStorage& other) +{ + std::swap(instance.m_Factories, other); +} + + } // namespace armnn diff --git a/src/backends/backendsCommon/BackendRegistry.hpp b/src/backends/backendsCommon/BackendRegistry.hpp index 4b20cacbe0..2a52e24238 100644 --- a/src/backends/backendsCommon/BackendRegistry.hpp +++ b/src/backends/backendsCommon/BackendRegistry.hpp @@ -4,21 +4,57 @@ // #pragma once -#include "RegistryCommon.hpp" #include <armnn/Types.hpp> +#include <armnn/BackendId.hpp> + +#include <memory> +#include <unordered_map> namespace armnn { + class IBackendInternal; using IBackendInternalUniquePtr = std::unique_ptr<IBackendInternal>; -using BackendRegistry = RegistryCommon<IBackendInternal, IBackendInternalUniquePtr>; - -BackendRegistry& BackendRegistryInstance(); -template <> -struct RegisteredTypeName<IBackend> +class BackendRegistry { - static const char * Name() { return "IBackend"; } +public: + using PointerType = IBackendInternalUniquePtr; + using FactoryFunction = std::function<PointerType()>; + + void Register(const BackendId& id, FactoryFunction factory); + bool IsBackendRegistered(const BackendId& id) const; + FactoryFunction GetFactory(const BackendId& id) const; + size_t Size() const; + BackendIdSet GetBackendIds() const; + std::string GetBackendIdsAsString() const; + + BackendRegistry() {} + virtual ~BackendRegistry() {} + + struct StaticRegistryInitializer + { + StaticRegistryInitializer(BackendRegistry& instance, + const BackendId& id, + FactoryFunction factory) + { + instance.Register(id, factory); + } + }; + +protected: + using FactoryStorage = std::unordered_map<BackendId, FactoryFunction>; + + // For testing only + static void Swap(BackendRegistry& instance, FactoryStorage& other); + +private: + BackendRegistry(const BackendRegistry&) = delete; + BackendRegistry& operator=(const BackendRegistry&) = delete; + + FactoryStorage m_Factories; }; +BackendRegistry& BackendRegistryInstance(); + } // namespace armnn
\ No newline at end of file diff --git a/src/backends/backendsCommon/CMakeLists.txt b/src/backends/backendsCommon/CMakeLists.txt index f4ab45f8b4..e6ac01c0ac 100644 --- a/src/backends/backendsCommon/CMakeLists.txt +++ b/src/backends/backendsCommon/CMakeLists.txt @@ -13,14 +13,11 @@ list(APPEND armnnBackendsCommon_sources IBackendContext.hpp ILayerSupport.cpp ITensorHandle.hpp - LayerSupportRegistry.cpp - LayerSupportRegistry.hpp MakeWorkloadHelper.hpp MemCopyWorkload.cpp MemCopyWorkload.hpp OutputHandler.cpp OutputHandler.hpp - RegistryCommon.hpp StringMapping.cpp StringMapping.hpp WorkloadDataCollector.hpp diff --git a/src/backends/backendsCommon/IBackendInternal.hpp b/src/backends/backendsCommon/IBackendInternal.hpp index 9c54b821e7..9d649fcfe2 100644 --- a/src/backends/backendsCommon/IBackendInternal.hpp +++ b/src/backends/backendsCommon/IBackendInternal.hpp @@ -13,6 +13,7 @@ namespace armnn class IWorkloadFactory; class IBackendContext; class Optimization; +class ILayerSupport; class IBackendInternal : public IBackend { @@ -30,10 +31,12 @@ public: using IBackendContextPtr = std::unique_ptr<IBackendContext>; using OptimizationPtr = std::unique_ptr<Optimization>; using Optimizations = std::vector<OptimizationPtr>; + using ILayerSupportSharedPtr = std::shared_ptr<ILayerSupport>; virtual IWorkloadFactoryPtr CreateWorkloadFactory() const = 0; virtual IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const = 0; virtual Optimizations GetOptimizations() const = 0; + virtual ILayerSupportSharedPtr GetLayerSupport() const = 0; }; using IBackendInternalUniquePtr = std::unique_ptr<IBackendInternal>; diff --git a/src/backends/backendsCommon/LayerSupportRegistry.cpp b/src/backends/backendsCommon/LayerSupportRegistry.cpp deleted file mode 100644 index 63b4da7337..0000000000 --- a/src/backends/backendsCommon/LayerSupportRegistry.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include "LayerSupportRegistry.hpp" - -namespace armnn -{ - -LayerSupportRegistry& LayerSupportRegistryInstance() -{ - static LayerSupportRegistry instance; - return instance; -} - -} // namespace armnn diff --git a/src/backends/backendsCommon/LayerSupportRegistry.hpp b/src/backends/backendsCommon/LayerSupportRegistry.hpp deleted file mode 100644 index a5efad05ef..0000000000 --- a/src/backends/backendsCommon/LayerSupportRegistry.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// -#pragma once - -#include "RegistryCommon.hpp" -#include <armnn/ILayerSupport.hpp> - -namespace armnn -{ - -using LayerSupportRegistry = RegistryCommon<ILayerSupport, ILayerSupportSharedPtr>; - -LayerSupportRegistry& LayerSupportRegistryInstance(); - -template <> -struct RegisteredTypeName<ILayerSupport> -{ - static const char * Name() { return "ILayerSupport"; } -}; - -} // namespace armnn diff --git a/src/backends/backendsCommon/RegistryCommon.hpp b/src/backends/backendsCommon/RegistryCommon.hpp deleted file mode 100644 index 03bd338090..0000000000 --- a/src/backends/backendsCommon/RegistryCommon.hpp +++ /dev/null @@ -1,120 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// -#pragma once - -#include <armnn/BackendId.hpp> -#include <armnn/Exceptions.hpp> - -#include <functional> -#include <memory> -#include <sstream> -#include <string> -#include <unordered_map> - -namespace armnn -{ - -template <typename RegisteredType> -struct RegisteredTypeName -{ - static const char * Name() { return "UNKNOWN"; } -}; - -template <typename RegisteredType, typename PointerType> -class RegistryCommon -{ -public: - using FactoryFunction = std::function<PointerType()>; - - void Register(const BackendId& id, FactoryFunction factory) - { - if (m_Factories.count(id) > 0) - { - throw InvalidArgumentException( - std::string(id) + " already registered as " + RegisteredTypeName<RegisteredType>::Name() + " factory", - CHECK_LOCATION()); - } - - m_Factories[id] = factory; - } - - FactoryFunction GetFactory(const BackendId& id) const - { - auto it = m_Factories.find(id); - if (it == m_Factories.end()) - { - throw InvalidArgumentException( - std::string(id) + " has no " + RegisteredTypeName<RegisteredType>::Name() + " factory registered", - CHECK_LOCATION()); - } - - return it->second; - } - - size_t Size() const - { - return m_Factories.size(); - } - - BackendIdSet GetBackendIds() const - { - BackendIdSet result; - for (const auto& it : m_Factories) - { - result.insert(it.first); - } - return result; - } - - std::string GetBackendIdsAsString() const - { - static const std::string delimitator = ", "; - - std::stringstream output; - for (auto& backendId : GetBackendIds()) - { - if (output.tellp() != std::streampos(0)) - { - output << delimitator; - } - output << backendId; - } - - return output.str(); - } - - RegistryCommon() {} - virtual ~RegistryCommon() {} - -protected: - using FactoryStorage = std::unordered_map<BackendId, FactoryFunction>; - - // For testing only - static void Swap(RegistryCommon& instance, FactoryStorage& other) - { - std::swap(instance.m_Factories, other); - } - -private: - RegistryCommon(const RegistryCommon&) = delete; - RegistryCommon& operator=(const RegistryCommon&) = delete; - - FactoryStorage m_Factories; -}; - -template <typename RegistryType> -struct StaticRegistryInitializer -{ - using FactoryFunction = typename RegistryType::FactoryFunction; - - StaticRegistryInitializer(RegistryType& instance, - const BackendId& id, - FactoryFunction factory) - { - instance.Register(id, factory); - } -}; - -} // namespace armnn diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp index ec30f34880..bb63b336e9 100644 --- a/src/backends/backendsCommon/WorkloadFactory.cpp +++ b/src/backends/backendsCommon/WorkloadFactory.cpp @@ -10,14 +10,17 @@ #include <armnn/Types.hpp> #include <armnn/LayerSupport.hpp> +#include <armnn/ILayerSupport.hpp> -#include <backendsCommon/LayerSupportRegistry.hpp> +#include <backendsCommon/BackendRegistry.hpp> #include <backendsCommon/WorkloadFactory.hpp> +#include <backendsCommon/IBackendInternal.hpp> #include <boost/cast.hpp> #include <boost/iterator/transform_iterator.hpp> #include <cstring> +#include <sstream> namespace armnn { @@ -66,9 +69,20 @@ bool IWorkloadFactory::IsLayerSupported(const BackendId& backendId, bool result; const Layer& layer = *(boost::polymorphic_downcast<const Layer*>(&connectableLayer)); - auto const& layerSupportRegistry = LayerSupportRegistryInstance(); - auto layerSupportFactory = layerSupportRegistry.GetFactory(backendId); - auto layerSupportObject = layerSupportFactory(); + auto const& backendRegistry = BackendRegistryInstance(); + if (!backendRegistry.IsBackendRegistered(backendId)) + { + std::stringstream ss; + ss << connectableLayer.GetName() << " is not supported on " << backendId + << " because this backend is not registered."; + + outReasonIfUnsupported = ss.str(); + return false; + } + + auto backendFactory = backendRegistry.GetFactory(backendId); + auto backendObject = backendFactory(); + auto layerSupportObject = backendObject->GetLayerSupport(); switch(layer.GetType()) { diff --git a/src/backends/backendsCommon/common.mk b/src/backends/backendsCommon/common.mk index b1583b987e..8d29316599 100644 --- a/src/backends/backendsCommon/common.mk +++ b/src/backends/backendsCommon/common.mk @@ -12,7 +12,6 @@ COMMON_SOURCES := \ CpuTensorHandle.cpp \ ILayerSupport.cpp \ MemCopyWorkload.cpp \ - LayerSupportRegistry.cpp \ OutputHandler.cpp \ StringMapping.cpp \ WorkloadData.cpp \ diff --git a/src/backends/backendsCommon/test/BackendRegistryTests.cpp b/src/backends/backendsCommon/test/BackendRegistryTests.cpp index 26175e015f..283caafaf9 100644 --- a/src/backends/backendsCommon/test/BackendRegistryTests.cpp +++ b/src/backends/backendsCommon/test/BackendRegistryTests.cpp @@ -52,7 +52,7 @@ BOOST_AUTO_TEST_CASE(TestRegistryHelper) bool called = false; - StaticRegistryInitializer<BackendRegistry> factoryHelper( + BackendRegistry::StaticRegistryInitializer factoryHelper( BackendRegistryInstance(), "HelloWorld", [&called]() diff --git a/src/backends/cl/ClBackend.cpp b/src/backends/cl/ClBackend.cpp index 8209a109a4..4ef8d90dfc 100644 --- a/src/backends/cl/ClBackend.cpp +++ b/src/backends/cl/ClBackend.cpp @@ -7,6 +7,7 @@ #include "ClBackendId.hpp" #include "ClWorkloadFactory.hpp" #include "ClBackendContext.hpp" +#include "ClLayerSupport.hpp" #include <backendsCommon/IBackendContext.hpp> #include <backendsCommon/BackendRegistry.hpp> @@ -18,7 +19,7 @@ namespace armnn namespace { -static StaticRegistryInitializer<BackendRegistry> g_RegisterHelper +static BackendRegistry::StaticRegistryInitializer g_RegisterHelper { BackendRegistryInstance(), ClBackend::GetIdStatic(), @@ -52,4 +53,10 @@ IBackendInternal::Optimizations ClBackend::GetOptimizations() const return Optimizations{}; } +IBackendInternal::ILayerSupportSharedPtr ClBackend::GetLayerSupport() const +{ + static ILayerSupportSharedPtr layerSupport{new ClLayerSupport}; + return layerSupport; +} + } // namespace armnn diff --git a/src/backends/cl/ClBackend.hpp b/src/backends/cl/ClBackend.hpp index ad84e8a159..7ee85980a3 100644 --- a/src/backends/cl/ClBackend.hpp +++ b/src/backends/cl/ClBackend.hpp @@ -21,6 +21,7 @@ public: IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory() const override; IBackendInternal::IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const override; IBackendInternal::Optimizations GetOptimizations() const override; + IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override; }; } // namespace armnn
\ No newline at end of file diff --git a/src/backends/cl/ClLayerSupport.cpp b/src/backends/cl/ClLayerSupport.cpp index f4e14c24d0..039f1c24f0 100644 --- a/src/backends/cl/ClLayerSupport.cpp +++ b/src/backends/cl/ClLayerSupport.cpp @@ -10,7 +10,7 @@ #include <InternalTypes.hpp> #include <LayerSupportCommon.hpp> -#include <backendsCommon/LayerSupportRegistry.hpp> +#include <backendsCommon/BackendRegistry.hpp> #include <boost/core/ignore_unused.hpp> @@ -44,21 +44,6 @@ namespace armnn namespace { -ILayerSupportSharedPtr GetLayerSupportPointer() -{ - static ILayerSupportSharedPtr instance{new ClLayerSupport}; - return instance; -} - -static StaticRegistryInitializer<LayerSupportRegistry> g_RegisterHelper{ - LayerSupportRegistryInstance(), - ClBackendId(), - []() - { - return GetLayerSupportPointer(); - } -}; - template<unsigned int FilterSize> bool IsMatchingSize2d(const TensorInfo& weightInfo) { diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp index 9e079f38ce..4d57eda877 100644 --- a/src/backends/neon/NeonBackend.cpp +++ b/src/backends/neon/NeonBackend.cpp @@ -6,6 +6,7 @@ #include "NeonBackend.hpp" #include "NeonBackendId.hpp" #include "NeonWorkloadFactory.hpp" +#include "NeonLayerSupport.hpp" #include <backendsCommon/IBackendContext.hpp> #include <backendsCommon/BackendRegistry.hpp> @@ -19,7 +20,7 @@ namespace armnn namespace { -static StaticRegistryInitializer<BackendRegistry> g_RegisterHelper +static BackendRegistry::StaticRegistryInitializer g_RegisterHelper { BackendRegistryInstance(), NeonBackend::GetIdStatic(), @@ -52,4 +53,10 @@ IBackendInternal::Optimizations NeonBackend::GetOptimizations() const return Optimizations{}; } +IBackendInternal::ILayerSupportSharedPtr NeonBackend::GetLayerSupport() const +{ + static ILayerSupportSharedPtr layerSupport{new NeonLayerSupport}; + return layerSupport; +} + } // namespace armnn
\ No newline at end of file diff --git a/src/backends/neon/NeonBackend.hpp b/src/backends/neon/NeonBackend.hpp index e0017d92c8..d83710d22c 100644 --- a/src/backends/neon/NeonBackend.hpp +++ b/src/backends/neon/NeonBackend.hpp @@ -21,6 +21,7 @@ public: IWorkloadFactoryPtr CreateWorkloadFactory() const override; IBackendInternal::IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const override; IBackendInternal::Optimizations GetOptimizations() const override; + IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override; }; } // namespace armnn
\ No newline at end of file diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp index a4a6b67c0b..165e0677b7 100644 --- a/src/backends/neon/NeonLayerSupport.cpp +++ b/src/backends/neon/NeonLayerSupport.cpp @@ -12,7 +12,7 @@ #include <armnn/Tensor.hpp> #include <armnn/Types.hpp> -#include <backendsCommon/LayerSupportRegistry.hpp> +#include <backendsCommon/BackendRegistry.hpp> #include <boost/core/ignore_unused.hpp> @@ -40,21 +40,6 @@ namespace armnn namespace { -ILayerSupportSharedPtr GetLayerSupportPointer() -{ - static ILayerSupportSharedPtr instance{new NeonLayerSupport}; - return instance; -} - -static StaticRegistryInitializer<LayerSupportRegistry> g_RegisterHelper{ - LayerSupportRegistryInstance(), - NeonBackendId(), - []() - { - return GetLayerSupportPointer(); - } -}; - bool IsNeonBackendSupported(Optional<std::string&> reasonIfUnsupported) { #if ARMCOMPUTENEON_ENABLED diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp index 2f5ec8032c..7c9240479b 100644 --- a/src/backends/reference/RefBackend.cpp +++ b/src/backends/reference/RefBackend.cpp @@ -6,9 +6,11 @@ #include "RefBackend.hpp" #include "RefBackendId.hpp" #include "RefWorkloadFactory.hpp" +#include "RefLayerSupport.hpp" #include <backendsCommon/IBackendContext.hpp> #include <backendsCommon/BackendRegistry.hpp> + #include <Optimizer.hpp> #include <boost/cast.hpp> @@ -19,7 +21,7 @@ namespace armnn namespace { -static StaticRegistryInitializer<BackendRegistry> g_RegisterHelper +static BackendRegistry::StaticRegistryInitializer g_RegisterHelper { BackendRegistryInstance(), RefBackend::GetIdStatic(), @@ -52,4 +54,10 @@ IBackendInternal::Optimizations RefBackend::GetOptimizations() const return Optimizations{}; } +IBackendInternal::ILayerSupportSharedPtr RefBackend::GetLayerSupport() const +{ + static ILayerSupportSharedPtr layerSupport{new RefLayerSupport}; + return layerSupport; +} + } // namespace armnn
\ No newline at end of file diff --git a/src/backends/reference/RefBackend.hpp b/src/backends/reference/RefBackend.hpp index be71f356f3..12d56ffab4 100644 --- a/src/backends/reference/RefBackend.hpp +++ b/src/backends/reference/RefBackend.hpp @@ -21,6 +21,7 @@ public: IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory() const override; IBackendInternal::IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const override; IBackendInternal::Optimizations GetOptimizations() const override; + IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override; }; } // namespace armnn
\ No newline at end of file diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp index b057370459..d6c1e66626 100644 --- a/src/backends/reference/RefLayerSupport.cpp +++ b/src/backends/reference/RefLayerSupport.cpp @@ -10,7 +10,7 @@ #include <LayerSupportCommon.hpp> #include <armnn/Types.hpp> -#include <backendsCommon/LayerSupportRegistry.hpp> +#include <backendsCommon/BackendRegistry.hpp> #include <boost/core/ignore_unused.hpp> @@ -22,21 +22,6 @@ namespace armnn namespace { -ILayerSupportSharedPtr GetLayerSupportPointer() -{ - static ILayerSupportSharedPtr instance{new RefLayerSupport}; - return instance; -} - -static StaticRegistryInitializer<LayerSupportRegistry> g_RegisterHelper{ - LayerSupportRegistryInstance(), - RefBackendId(), - []() - { - return GetLayerSupportPointer(); - } -}; - template<typename Float32Func, typename Uint8Func, typename ... Params> bool IsSupportedForDataTypeRef(Optional<std::string&> reasonIfUnsupported, DataType dataType, |