diff options
author | David Beck <david.beck@arm.com> | 2018-10-17 14:17:50 +0100 |
---|---|---|
committer | Matthew Bentham <matthew.bentham@arm.com> | 2018-10-22 16:57:54 +0100 |
commit | 3e9e11541c177abd7101962ef1e703d70d718c56 (patch) | |
tree | f2076ddb343d51450e41465826db2a4096d1f8b3 /src/backends/reference | |
parent | 8e6f92d2d6b2bb94e6ba9b794c08e465039ea98b (diff) | |
download | armnn-3e9e11541c177abd7101962ef1e703d70d718c56.tar.gz |
IVGCVSW-2037 : separate registry for layer support intrefaces
* because their lifetime is different from backends
Change-Id: I9ba525e7e503b148cde1294933f3954b8bad3d68
Diffstat (limited to 'src/backends/reference')
-rw-r--r-- | src/backends/reference/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/backends/reference/RefBackend.cpp | 12 | ||||
-rw-r--r-- | src/backends/reference/RefBackend.hpp | 6 | ||||
-rw-r--r-- | src/backends/reference/RefBackendId.hpp | 12 | ||||
-rw-r--r-- | src/backends/reference/RefLayerSupport.cpp | 18 |
5 files changed, 36 insertions, 13 deletions
diff --git a/src/backends/reference/CMakeLists.txt b/src/backends/reference/CMakeLists.txt index a0d27cc387..5f698f4e9d 100644 --- a/src/backends/reference/CMakeLists.txt +++ b/src/backends/reference/CMakeLists.txt @@ -6,6 +6,7 @@ list(APPEND armnnRefBackend_sources RefBackend.cpp RefBackend.hpp + RefBackendId.hpp RefLayerSupport.cpp RefLayerSupport.hpp RefWorkloadFactory.cpp diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp index 1f08d82b98..9afb42d59f 100644 --- a/src/backends/reference/RefBackend.cpp +++ b/src/backends/reference/RefBackend.cpp @@ -4,6 +4,7 @@ // #include "RefBackend.hpp" +#include "RefBackendId.hpp" #include "RefWorkloadFactory.hpp" #include <backends/BackendRegistry.hpp> @@ -16,7 +17,9 @@ namespace armnn namespace { -static BackendRegistry::Helper s_RegisterHelper{ +static StaticRegistryInitializer<BackendRegistry> g_RegisterHelper +{ + BackendRegistryInstance(), RefBackend::GetIdStatic(), []() { @@ -28,15 +31,10 @@ static BackendRegistry::Helper s_RegisterHelper{ const BackendId& RefBackend::GetIdStatic() { - static const BackendId s_Id{"CpuRef"}; + static const BackendId s_Id{RefBackendId()}; return s_Id; } -const ILayerSupport& RefBackend::GetLayerSupport() const -{ - return m_LayerSupport; -} - std::unique_ptr<IWorkloadFactory> RefBackend::CreateWorkloadFactory() const { return std::make_unique<RefWorkloadFactory>(); diff --git a/src/backends/reference/RefBackend.hpp b/src/backends/reference/RefBackend.hpp index c206dbdaf3..0cd3cf4dce 100644 --- a/src/backends/reference/RefBackend.hpp +++ b/src/backends/reference/RefBackend.hpp @@ -5,7 +5,6 @@ #pragma once #include <backends/IBackendInternal.hpp> -#include "RefLayerSupport.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<IWorkloadFactory> CreateWorkloadFactory() const override; static void Destroy(IBackend* backend); - -private: - RefLayerSupport m_LayerSupport; }; } // namespace armnn
\ No newline at end of file diff --git a/src/backends/reference/RefBackendId.hpp b/src/backends/reference/RefBackendId.hpp new file mode 100644 index 0000000000..2a7f9f19d9 --- /dev/null +++ b/src/backends/reference/RefBackendId.hpp @@ -0,0 +1,12 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +namespace armnn +{ + +constexpr const char * RefBackendId() { return "CpuRef"; } + +} // namespace armnn diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp index 909df75445..253d9c2294 100644 --- a/src/backends/reference/RefLayerSupport.cpp +++ b/src/backends/reference/RefLayerSupport.cpp @@ -4,11 +4,14 @@ // #include "RefLayerSupport.hpp" +#include "RefBackendId.hpp" #include <armnn/InternalTypes.hpp> #include <armnn/LayerSupportCommon.hpp> #include <armnn/Types.hpp> +#include <backends/LayerSupportRegistry.hpp> + #include <boost/core/ignore_unused.hpp> using namespace boost; @@ -19,6 +22,21 @@ 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, |