aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Beck <david.beck@arm.com>2018-10-09 17:20:21 +0100
committerMatthew Bentham <matthew.bentham@arm.com>2018-10-22 16:57:53 +0100
commit6b779f0e437127bfa71a529e9b848b5e41683ab8 (patch)
tree85be136c3e33912ab46a504a4a2a17bd81553e5d
parent32cbb0c7cd99786191c080f5a619b3dab23b4cd0 (diff)
downloadarmnn-6b779f0e437127bfa71a529e9b848b5e41683ab8.tar.gz
IVGCVSW-1989 : implement backend creation and registry for Ref,Cl and Neon
!armnn:152557 Change-Id: Ic6b99cddee1597c85de76034d9332fe1bf3aceb1
-rw-r--r--src/backends/IBackendInternal.hpp4
-rw-r--r--src/backends/cl/ClBackend.cpp22
-rw-r--r--src/backends/cl/ClBackend.hpp8
-rw-r--r--src/backends/neon/NeonBackend.cpp23
-rw-r--r--src/backends/neon/NeonBackend.hpp8
-rw-r--r--src/backends/reference/RefBackend.cpp22
-rw-r--r--src/backends/reference/RefBackend.hpp8
7 files changed, 72 insertions, 23 deletions
diff --git a/src/backends/IBackendInternal.hpp b/src/backends/IBackendInternal.hpp
index 1ccf88ece6..a441abd79f 100644
--- a/src/backends/IBackendInternal.hpp
+++ b/src/backends/IBackendInternal.hpp
@@ -13,8 +13,8 @@ namespace armnn
class IBackendInternal : public IBackend
{
protected:
- IBackendInternal() {}
- virtual ~IBackendInternal() {}
+ IBackendInternal() = default;
+ ~IBackendInternal() override = default;
public:
virtual std::unique_ptr<IWorkloadFactory> CreateWorkloadFactory() const = 0;
diff --git a/src/backends/cl/ClBackend.cpp b/src/backends/cl/ClBackend.cpp
index 5de9d31234..d185c15b72 100644
--- a/src/backends/cl/ClBackend.cpp
+++ b/src/backends/cl/ClBackend.cpp
@@ -4,11 +4,25 @@
//
#include "ClBackend.hpp"
+#include <backends/BackendRegistry.hpp>
+#include <boost/cast.hpp>
namespace armnn
{
-const std::string ClBackend::s_Id = "arm_compute_cl";
+namespace
+{
+static const std::string s_Id = "GpuAcc";
+
+static BackendRegistry::Helper g_RegisterHelper{
+ s_Id,
+ []()
+ {
+ return IBackendUniquePtr(new ClBackend, &ClBackend::Destroy);
+ }
+};
+
+}
const std::string& ClBackend::GetId() const
{
@@ -22,8 +36,12 @@ const ILayerSupport& ClBackend::GetLayerSupport() const
std::unique_ptr<IWorkloadFactory> ClBackend::CreateWorkloadFactory() const
{
- // TODO implement
return nullptr;
}
+void ClBackend::Destroy(IBackend* backend)
+{
+ delete boost::polymorphic_downcast<ClBackend*>(backend);
+}
+
} // namespace armnn \ No newline at end of file
diff --git a/src/backends/cl/ClBackend.hpp b/src/backends/cl/ClBackend.hpp
index 7e67f5e9ad..c43b6a6ce0 100644
--- a/src/backends/cl/ClBackend.hpp
+++ b/src/backends/cl/ClBackend.hpp
@@ -4,8 +4,7 @@
//
#pragma once
-#include "backends/IBackendInternal.hpp"
-
+#include <backends/IBackendInternal.hpp>
#include "ClLayerSupport.hpp"
namespace armnn
@@ -23,10 +22,9 @@ public:
std::unique_ptr<IWorkloadFactory> CreateWorkloadFactory() const override;
-private:
- static const std::string s_Id;
+ static void Destroy(IBackend* backend);
- // TODO initialize
+private:
ClLayerSupport m_LayerSupport;
};
diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp
index 1137145aa2..b4f1897704 100644
--- a/src/backends/neon/NeonBackend.cpp
+++ b/src/backends/neon/NeonBackend.cpp
@@ -4,11 +4,26 @@
//
#include "NeonBackend.hpp"
+#include <backends/BackendRegistry.hpp>
+#include <boost/cast.hpp>
namespace armnn
{
-const std::string NeonBackend::s_Id = "arm_compute_neon";
+namespace
+{
+
+static const std::string s_Id = "CpuAcc";
+
+static BackendRegistry::Helper g_RegisterHelper{
+ s_Id,
+ []()
+ {
+ return IBackendUniquePtr(new NeonBackend, &NeonBackend::Destroy);
+ }
+};
+
+}
const std::string& NeonBackend::GetId() const
{
@@ -22,8 +37,12 @@ const ILayerSupport& NeonBackend::GetLayerSupport() const
std::unique_ptr<IWorkloadFactory> NeonBackend::CreateWorkloadFactory() const
{
- // TODO implement
return nullptr;
}
+void NeonBackend::Destroy(IBackend* backend)
+{
+ delete boost::polymorphic_downcast<NeonBackend*>(backend);
+}
+
} // namespace armnn \ No newline at end of file
diff --git a/src/backends/neon/NeonBackend.hpp b/src/backends/neon/NeonBackend.hpp
index 86fccf0e51..5d4bd5dfcc 100644
--- a/src/backends/neon/NeonBackend.hpp
+++ b/src/backends/neon/NeonBackend.hpp
@@ -4,8 +4,7 @@
//
#pragma once
-#include "backends/IBackendInternal.hpp"
-
+#include <backends/IBackendInternal.hpp>
#include "NeonLayerSupport.hpp"
namespace armnn
@@ -23,10 +22,9 @@ public:
std::unique_ptr<IWorkloadFactory> CreateWorkloadFactory() const override;
-private:
- static const std::string s_Id;
+ static void Destroy(IBackend* backend);
- // TODO initialize
+private:
NeonLayerSupport m_LayerSupport;
};
diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp
index 1799abfc33..b671e8bca8 100644
--- a/src/backends/reference/RefBackend.cpp
+++ b/src/backends/reference/RefBackend.cpp
@@ -4,11 +4,25 @@
//
#include "RefBackend.hpp"
+#include <backends/BackendRegistry.hpp>
+#include <boost/cast.hpp>
namespace armnn
{
-const std::string RefBackend::s_Id = "arm_reference";
+namespace
+{
+const std::string s_Id = "CpuRef";
+
+static BackendRegistry::Helper s_RegisterHelper{
+ s_Id,
+ []()
+ {
+ return IBackendUniquePtr(new RefBackend, &RefBackend::Destroy);
+ }
+};
+
+}
const std::string& RefBackend::GetId() const
{
@@ -22,8 +36,12 @@ const ILayerSupport& RefBackend::GetLayerSupport() const
std::unique_ptr<IWorkloadFactory> RefBackend::CreateWorkloadFactory() const
{
- // TODO implement
return nullptr;
}
+void RefBackend::Destroy(IBackend* backend)
+{
+ delete boost::polymorphic_downcast<RefBackend*>(backend);
+}
+
} // namespace armnn \ No newline at end of file
diff --git a/src/backends/reference/RefBackend.hpp b/src/backends/reference/RefBackend.hpp
index c3797158a6..e4a11f10c9 100644
--- a/src/backends/reference/RefBackend.hpp
+++ b/src/backends/reference/RefBackend.hpp
@@ -4,8 +4,7 @@
//
#pragma once
-#include "backends/IBackendInternal.hpp"
-
+#include <backends/IBackendInternal.hpp>
#include "RefLayerSupport.hpp"
namespace armnn
@@ -23,10 +22,9 @@ public:
std::unique_ptr<IWorkloadFactory> CreateWorkloadFactory() const override;
-private:
- static const std::string s_Id;
+ static void Destroy(IBackend* backend);
- // TODO initialize
+private:
RefLayerSupport m_LayerSupport;
};