From 4424b0a12b88bbefecd6b17b5baf174e7d8e1fe5 Mon Sep 17 00:00:00 2001 From: arovir01 Date: Thu, 4 Oct 2018 10:46:04 +0100 Subject: IVGCVSW-1963: Add implementation classes for Cl, Neon and Ref backends Change-Id: Ibb2efaf8b001a64a3f35eab2220990dc39889780 --- src/backends/cl/CMakeLists.txt | 2 ++ src/backends/cl/ClBackend.cpp | 29 ++++++++++++++++++++++++++ src/backends/cl/ClBackend.hpp | 33 ++++++++++++++++++++++++++++++ src/backends/cl/ClLayerSupport.hpp | 6 ++++++ src/backends/cl/backend.mk | 1 + src/backends/neon/CMakeLists.txt | 2 ++ src/backends/neon/NeonBackend.cpp | 29 ++++++++++++++++++++++++++ src/backends/neon/NeonBackend.hpp | 33 ++++++++++++++++++++++++++++++ src/backends/neon/NeonLayerSupport.hpp | 5 +++++ src/backends/neon/backend.mk | 1 + src/backends/reference/CMakeLists.txt | 2 ++ src/backends/reference/RefBackend.cpp | 29 ++++++++++++++++++++++++++ src/backends/reference/RefBackend.hpp | 33 ++++++++++++++++++++++++++++++ src/backends/reference/RefLayerSupport.hpp | 5 +++++ src/backends/reference/backend.mk | 1 + 15 files changed, 211 insertions(+) create mode 100644 src/backends/cl/ClBackend.cpp create mode 100644 src/backends/cl/ClBackend.hpp create mode 100644 src/backends/neon/NeonBackend.cpp create mode 100644 src/backends/neon/NeonBackend.hpp create mode 100644 src/backends/reference/RefBackend.cpp create mode 100644 src/backends/reference/RefBackend.hpp diff --git a/src/backends/cl/CMakeLists.txt b/src/backends/cl/CMakeLists.txt index 80ca0acc08..a7ce893f20 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 0000000000..5de9d31234 --- /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 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 0000000000..7e67f5e9ad --- /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 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 700d71801d..80e8488b3b 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 057089ebdb..81540cc251 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 c748825464..c6492bc076 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 0000000000..1137145aa2 --- /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 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 0000000000..86fccf0e51 --- /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 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 419c226b3c..590f4d64c6 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 a59966fb39..b041bca6d7 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 526baaa1a8..9810cf86e2 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 0000000000..1799abfc33 --- /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 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 0000000000..c3797158a6 --- /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 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 d29e95645f..e819b6665a 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 e5345c07d5..365faa684c 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 \ -- cgit v1.2.1