aboutsummaryrefslogtreecommitdiff
path: root/src/armnn
diff options
context:
space:
mode:
authorMatteo 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
commitc601aa626dac78e1482a258e493a6c186e6bf514 (patch)
treedac6879d548571527fdd6dee9a7400f331583fdf /src/armnn
parentd90530719f6ab16417eb95d885317f50c662725f (diff)
downloadarmnn-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.cpp5
-rw-r--r--src/armnn/BackendRegistry.cpp86
-rw-r--r--src/armnn/LayerSupport.cpp3
-rw-r--r--src/armnn/LoadedNetwork.cpp3
-rw-r--r--src/armnn/Network.cpp2
-rw-r--r--src/armnn/NetworkUtils.cpp3
-rw-r--r--src/armnn/Runtime.cpp2
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>