diff options
author | Matteo Martincigh <matteo.martincigh@arm.com> | 2019-10-29 15:03:22 +0000 |
---|---|---|
committer | Áron Virginás-Tar <aron.virginas-tar@arm.com> | 2019-10-31 12:52:00 +0000 |
commit | c601aa626dac78e1482a258e493a6c186e6bf514 (patch) | |
tree | dac6879d548571527fdd6dee9a7400f331583fdf /src/armnn | |
parent | d90530719f6ab16417eb95d885317f50c662725f (diff) | |
download | armnn-c601aa626dac78e1482a258e493a6c186e6bf514.tar.gz |
GitHub #292 Move BackendRegistry.hpp to the public API
* Moved to BackendRegistry.hpp include/armnn
* Updated makefiles and sources accordingly
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
Change-Id: I4d83abb581d523218a880c879fcf30c9611f7fd7
Diffstat (limited to 'src/armnn')
-rw-r--r-- | src/armnn/BackendHelper.cpp | 5 | ||||
-rw-r--r-- | src/armnn/BackendRegistry.cpp | 86 | ||||
-rw-r--r-- | src/armnn/LayerSupport.cpp | 3 | ||||
-rw-r--r-- | src/armnn/LoadedNetwork.cpp | 3 | ||||
-rw-r--r-- | src/armnn/Network.cpp | 2 | ||||
-rw-r--r-- | src/armnn/NetworkUtils.cpp | 3 | ||||
-rw-r--r-- | src/armnn/Runtime.cpp | 2 |
7 files changed, 96 insertions, 8 deletions
diff --git a/src/armnn/BackendHelper.cpp b/src/armnn/BackendHelper.cpp index 2514038863..673950e4e3 100644 --- a/src/armnn/BackendHelper.cpp +++ b/src/armnn/BackendHelper.cpp @@ -4,8 +4,9 @@ // #include <armnn/BackendHelper.hpp> -#include "backendsCommon/BackendRegistry.hpp" -#include "backendsCommon/IBackendInternal.hpp" +#include <armnn/BackendRegistry.hpp> + +#include <backendsCommon/IBackendInternal.hpp> namespace armnn { diff --git a/src/armnn/BackendRegistry.cpp b/src/armnn/BackendRegistry.cpp new file mode 100644 index 0000000000..45f73b8daf --- /dev/null +++ b/src/armnn/BackendRegistry.cpp @@ -0,0 +1,86 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include <armnn/BackendRegistry.hpp> +#include <armnn/Exceptions.hpp> + +namespace armnn +{ + +BackendRegistry& BackendRegistryInstance() +{ + static BackendRegistry instance; + return instance; +} + +void BackendRegistry::Register(const BackendId& id, BackendRegistry::FactoryFunction factory) +{ + if (m_Factories.find(id) != m_Factories.end()) + { + 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/armnn/LayerSupport.cpp b/src/armnn/LayerSupport.cpp index 997b5f245a..7b9ada9150 100644 --- a/src/armnn/LayerSupport.cpp +++ b/src/armnn/LayerSupport.cpp @@ -2,11 +2,12 @@ // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // + #include <armnn/LayerSupport.hpp> #include <armnn/Optional.hpp> #include <armnn/ILayerSupport.hpp> +#include <armnn/BackendRegistry.hpp> -#include <backendsCommon/BackendRegistry.hpp> #include <backendsCommon/IBackendInternal.hpp> #include <boost/assert.hpp> diff --git a/src/armnn/LoadedNetwork.cpp b/src/armnn/LoadedNetwork.cpp index 5e3e3f24fe..e9a3545e35 100644 --- a/src/armnn/LoadedNetwork.cpp +++ b/src/armnn/LoadedNetwork.cpp @@ -11,8 +11,9 @@ #include "Profiling.hpp" #include "HeapProfiling.hpp" +#include <armnn/BackendRegistry.hpp> + #include <backendsCommon/CpuTensorHandle.hpp> -#include <backendsCommon/BackendRegistry.hpp> #include <backendsCommon/IMemoryManager.hpp> #include <backendsCommon/MemCopyWorkload.hpp> #include <backendsCommon/MemSyncWorkload.hpp> diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp index 1339a6ef6b..a708361a91 100644 --- a/src/armnn/Network.cpp +++ b/src/armnn/Network.cpp @@ -14,13 +14,13 @@ #include <backendsCommon/CpuTensorHandle.hpp> #include <backendsCommon/WorkloadFactory.hpp> -#include <backendsCommon/BackendRegistry.hpp> #include <backendsCommon/IBackendInternal.hpp> #include <backendsCommon/TensorHandleFactoryRegistry.hpp> #include <armnn/Exceptions.hpp> #include <armnn/Utils.hpp> #include <armnn/TypesUtils.hpp> +#include <armnn/BackendRegistry.hpp> #include <fcntl.h> #include <algorithm> diff --git a/src/armnn/NetworkUtils.cpp b/src/armnn/NetworkUtils.cpp index a3760a9c6b..cfed6680ca 100644 --- a/src/armnn/NetworkUtils.cpp +++ b/src/armnn/NetworkUtils.cpp @@ -8,8 +8,7 @@ #include "SubgraphViewSelector.hpp" #include <armnn/Exceptions.hpp> - -#include <backendsCommon/BackendRegistry.hpp> +#include <armnn/BackendRegistry.hpp> namespace armnn { diff --git a/src/armnn/Runtime.cpp b/src/armnn/Runtime.cpp index 68975a2191..c95b2c45e2 100644 --- a/src/armnn/Runtime.cpp +++ b/src/armnn/Runtime.cpp @@ -5,8 +5,8 @@ #include "Runtime.hpp" #include <armnn/Version.hpp> +#include <armnn/BackendRegistry.hpp> -#include <backendsCommon/BackendRegistry.hpp> #include <backendsCommon/IBackendContext.hpp> #include <backendsCommon/DynamicBackendUtils.hpp> |