IVGCVSW-1963: Add implementation classes for Cl, Neon and Ref backends
Change-Id: Ibb2efaf8b001a64a3f35eab2220990dc39889780
diff --git a/src/backends/cl/CMakeLists.txt b/src/backends/cl/CMakeLists.txt
index 80ca0ac..a7ce893 100644
--- a/src/backends/cl/CMakeLists.txt
+++ b/src/backends/cl/CMakeLists.txt
@@ -4,6 +4,8 @@
#
list(APPEND armnnClBackend_sources
+ ClBackend.cpp
+ ClBackend.hpp
ClContextControl.cpp
ClContextControl.hpp
ClLayerSupport.cpp
diff --git a/src/backends/cl/ClBackend.cpp b/src/backends/cl/ClBackend.cpp
new file mode 100644
index 0000000..5de9d31
--- /dev/null
+++ b/src/backends/cl/ClBackend.cpp
@@ -0,0 +1,29 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "ClBackend.hpp"
+
+namespace armnn
+{
+
+const std::string ClBackend::s_Id = "arm_compute_cl";
+
+const std::string& ClBackend::GetId() const
+{
+ return s_Id;
+}
+
+const ILayerSupport& ClBackend::GetLayerSupport() const
+{
+ return m_LayerSupport;
+}
+
+std::unique_ptr<IWorkloadFactory> ClBackend::CreateWorkloadFactory() const
+{
+ // TODO implement
+ return nullptr;
+}
+
+} // namespace armnn
\ No newline at end of file
diff --git a/src/backends/cl/ClBackend.hpp b/src/backends/cl/ClBackend.hpp
new file mode 100644
index 0000000..7e67f5e
--- /dev/null
+++ b/src/backends/cl/ClBackend.hpp
@@ -0,0 +1,33 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+#include "backends/IBackendInternal.hpp"
+
+#include "ClLayerSupport.hpp"
+
+namespace armnn
+{
+
+class ClBackend : public IBackendInternal
+{
+public:
+ ClBackend() = default;
+ ~ClBackend() = default;
+
+ const std::string& GetId() const override;
+
+ const ILayerSupport& GetLayerSupport() const override;
+
+ std::unique_ptr<IWorkloadFactory> CreateWorkloadFactory() const override;
+
+private:
+ static const std::string s_Id;
+
+ // TODO initialize
+ ClLayerSupport m_LayerSupport;
+};
+
+} // namespace armnn
\ No newline at end of file
diff --git a/src/backends/cl/ClLayerSupport.hpp b/src/backends/cl/ClLayerSupport.hpp
index 700d718..80e8488 100644
--- a/src/backends/cl/ClLayerSupport.hpp
+++ b/src/backends/cl/ClLayerSupport.hpp
@@ -13,6 +13,12 @@
namespace armnn
{
+
+class ClLayerSupport : public ILayerSupport
+{
+ // TODO implement
+};
+
bool IsClDirectConvolution2dSupported(const TensorInfo& weightInfo, const Convolution2dDescriptor& desc);
bool IsClDepthwiseConvolution2dDescParamsSupported(std::string* reasonIfUnsupported,
const DepthwiseConvolution2dDescriptor& parameters,
diff --git a/src/backends/cl/backend.mk b/src/backends/cl/backend.mk
index 057089e..81540cc 100644
--- a/src/backends/cl/backend.mk
+++ b/src/backends/cl/backend.mk
@@ -8,6 +8,7 @@
# file in the root of ArmNN
BACKEND_SOURCES := \
+ ClBackend.cpp \
ClContextControl.cpp \
ClLayerSupport.cpp \
ClWorkloadFactory.cpp \
diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt
index c748825..c6492bc 100644
--- a/src/backends/neon/CMakeLists.txt
+++ b/src/backends/neon/CMakeLists.txt
@@ -5,6 +5,8 @@
if(ARMCOMPUTENEON)
list(APPEND armnnNeonBackend_sources
+ NeonBackend.cpp
+ NeonBackend.hpp
NeonLayerSupport.cpp
NeonLayerSupport.hpp
NeonWorkloadFactory.cpp
diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp
new file mode 100644
index 0000000..1137145
--- /dev/null
+++ b/src/backends/neon/NeonBackend.cpp
@@ -0,0 +1,29 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "NeonBackend.hpp"
+
+namespace armnn
+{
+
+const std::string NeonBackend::s_Id = "arm_compute_neon";
+
+const std::string& NeonBackend::GetId() const
+{
+ return s_Id;
+}
+
+const ILayerSupport& NeonBackend::GetLayerSupport() const
+{
+ return m_LayerSupport;
+}
+
+std::unique_ptr<IWorkloadFactory> NeonBackend::CreateWorkloadFactory() const
+{
+ // TODO implement
+ return nullptr;
+}
+
+} // namespace armnn
\ No newline at end of file
diff --git a/src/backends/neon/NeonBackend.hpp b/src/backends/neon/NeonBackend.hpp
new file mode 100644
index 0000000..86fccf0
--- /dev/null
+++ b/src/backends/neon/NeonBackend.hpp
@@ -0,0 +1,33 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+#include "backends/IBackendInternal.hpp"
+
+#include "NeonLayerSupport.hpp"
+
+namespace armnn
+{
+
+class NeonBackend : public IBackendInternal
+{
+public:
+ NeonBackend() = default;
+ ~NeonBackend() = default;
+
+ const std::string& GetId() const override;
+
+ const ILayerSupport& GetLayerSupport() const override;
+
+ std::unique_ptr<IWorkloadFactory> CreateWorkloadFactory() const override;
+
+private:
+ static const std::string s_Id;
+
+ // TODO initialize
+ NeonLayerSupport m_LayerSupport;
+};
+
+} // namespace armnn
\ No newline at end of file
diff --git a/src/backends/neon/NeonLayerSupport.hpp b/src/backends/neon/NeonLayerSupport.hpp
index 419c226..590f4d6 100644
--- a/src/backends/neon/NeonLayerSupport.hpp
+++ b/src/backends/neon/NeonLayerSupport.hpp
@@ -13,6 +13,11 @@
namespace armnn
{
+class NeonLayerSupport : public ILayerSupport
+{
+ // TODO implement
+};
+
bool IsNeonDirectConvolutionPreferred(const TensorInfo& weightInfo, const Convolution2dDescriptor& desc);
bool IsNeonNormalizationDescParamsSupported(std::string* reasonIfUnsupported,
diff --git a/src/backends/neon/backend.mk b/src/backends/neon/backend.mk
index a59966f..b041bca 100644
--- a/src/backends/neon/backend.mk
+++ b/src/backends/neon/backend.mk
@@ -8,6 +8,7 @@
# file in the root of ArmNN
BACKEND_SOURCES := \
+ NeonBackend.cpp \
NeonLayerSupport.cpp \
NeonWorkloadFactory.cpp \
workloads/NeonActivationFloatWorkload.cpp \
diff --git a/src/backends/reference/CMakeLists.txt b/src/backends/reference/CMakeLists.txt
index 526baaa..9810cf8 100644
--- a/src/backends/reference/CMakeLists.txt
+++ b/src/backends/reference/CMakeLists.txt
@@ -4,6 +4,8 @@
#
list(APPEND armnnRefBackend_sources
+ RefBackend.cpp
+ RefBackend.hpp
RefLayerSupport.cpp
RefLayerSupport.hpp
RefWorkloadFactory.cpp
diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp
new file mode 100644
index 0000000..1799abf
--- /dev/null
+++ b/src/backends/reference/RefBackend.cpp
@@ -0,0 +1,29 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "RefBackend.hpp"
+
+namespace armnn
+{
+
+const std::string RefBackend::s_Id = "arm_reference";
+
+const std::string& RefBackend::GetId() const
+{
+ return s_Id;
+}
+
+const ILayerSupport& RefBackend::GetLayerSupport() const
+{
+ return m_LayerSupport;
+}
+
+std::unique_ptr<IWorkloadFactory> RefBackend::CreateWorkloadFactory() const
+{
+ // TODO implement
+ return nullptr;
+}
+
+} // namespace armnn
\ No newline at end of file
diff --git a/src/backends/reference/RefBackend.hpp b/src/backends/reference/RefBackend.hpp
new file mode 100644
index 0000000..c379715
--- /dev/null
+++ b/src/backends/reference/RefBackend.hpp
@@ -0,0 +1,33 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+#include "backends/IBackendInternal.hpp"
+
+#include "RefLayerSupport.hpp"
+
+namespace armnn
+{
+
+class RefBackend : public IBackendInternal
+{
+public:
+ RefBackend() = default;
+ ~RefBackend() = default;
+
+ const std::string& GetId() const override;
+
+ const ILayerSupport& GetLayerSupport() const override;
+
+ std::unique_ptr<IWorkloadFactory> CreateWorkloadFactory() const override;
+
+private:
+ static const std::string s_Id;
+
+ // TODO initialize
+ RefLayerSupport m_LayerSupport;
+};
+
+} // namespace armnn
\ No newline at end of file
diff --git a/src/backends/reference/RefLayerSupport.hpp b/src/backends/reference/RefLayerSupport.hpp
index d29e956..e819b66 100644
--- a/src/backends/reference/RefLayerSupport.hpp
+++ b/src/backends/reference/RefLayerSupport.hpp
@@ -15,6 +15,11 @@
namespace armnn
{
+class RefLayerSupport : public ILayerSupport
+{
+ // TODO implement
+};
+
bool IsActivationSupportedRef(const TensorInfo& input,
const TensorInfo& output,
const ActivationDescriptor& descriptor,
diff --git a/src/backends/reference/backend.mk b/src/backends/reference/backend.mk
index e5345c0..365faa6 100644
--- a/src/backends/reference/backend.mk
+++ b/src/backends/reference/backend.mk
@@ -8,6 +8,7 @@
# file in the root of ArmNN
BACKEND_SOURCES := \
+ RefBackend.cpp \
RefLayerSupport.cpp \
RefWorkloadFactory.cpp \
workloads/Activation.cpp \