aboutsummaryrefslogtreecommitdiff
path: root/src/backends
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends')
-rw-r--r--src/backends/BackendRegistry.cpp6
-rw-r--r--src/backends/CMakeLists.txt2
-rw-r--r--src/backends/ILayerSupport.cpp1
-rw-r--r--src/backends/README.md4
-rw-r--r--src/backends/aclCommon/CMakeLists.txt2
-rw-r--r--src/backends/backends.cmake10
-rw-r--r--src/backends/cl/CMakeLists.txt2
-rw-r--r--src/backends/cl/ClBackend.cpp6
-rw-r--r--src/backends/cl/ClBackend.hpp3
-rw-r--r--src/backends/cl/ClLayerSupport.cpp6
-rw-r--r--src/backends/cl/ClLayerSupport.hpp2
-rw-r--r--src/backends/cl/test/CMakeLists.txt2
-rw-r--r--src/backends/cl/workloads/CMakeLists.txt2
-rw-r--r--src/backends/neon/CMakeLists.txt2
-rw-r--r--src/backends/neon/NeonBackend.cpp7
-rw-r--r--src/backends/neon/NeonBackend.hpp3
-rw-r--r--src/backends/neon/NeonLayerSupport.hpp5
-rw-r--r--src/backends/neon/test/CMakeLists.txt2
-rw-r--r--src/backends/neon/workloads/CMakeLists.txt2
-rw-r--r--src/backends/reference/CMakeLists.txt2
-rw-r--r--src/backends/reference/RefBackend.cpp6
-rw-r--r--src/backends/reference/RefBackend.hpp3
-rw-r--r--src/backends/reference/RefLayerSupport.cpp4
-rw-r--r--src/backends/reference/RefLayerSupport.hpp5
-rw-r--r--src/backends/reference/test/CMakeLists.txt2
-rw-r--r--src/backends/reference/workloads/CMakeLists.txt2
26 files changed, 51 insertions, 42 deletions
diff --git a/src/backends/BackendRegistry.cpp b/src/backends/BackendRegistry.cpp
index a5e9f0e1d9..1360168b9f 100644
--- a/src/backends/BackendRegistry.cpp
+++ b/src/backends/BackendRegistry.cpp
@@ -19,7 +19,8 @@ void BackendRegistry::Register(const BackendId& id, FactoryFunction factory)
{
if (m_BackendFactories.count(id) > 0)
{
- throw InvalidArgumentException(std::string(id) + " already registered as backend");
+ throw InvalidArgumentException(std::string(id) + " already registered as backend",
+ CHECK_LOCATION());
}
m_BackendFactories[id] = factory;
@@ -30,7 +31,8 @@ BackendRegistry::FactoryFunction BackendRegistry::GetFactory(const BackendId& id
auto it = m_BackendFactories.find(id);
if (it == m_BackendFactories.end())
{
- throw InvalidArgumentException(std::string(id) + " has no backend factory registered");
+ throw InvalidArgumentException(std::string(id) + " has no backend factory registered",
+ CHECK_LOCATION());
}
return it->second;
diff --git a/src/backends/CMakeLists.txt b/src/backends/CMakeLists.txt
index 0bc6888899..3079447bb2 100644
--- a/src/backends/CMakeLists.txt
+++ b/src/backends/CMakeLists.txt
@@ -30,7 +30,7 @@ list(APPEND armnnBackendsCommon_sources
WorkloadUtils.hpp
)
-add_library(armnnBackendsCommon STATIC ${armnnBackendsCommon_sources})
+add_library(armnnBackendsCommon OBJECT ${armnnBackendsCommon_sources})
target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/ILayerSupport.cpp b/src/backends/ILayerSupport.cpp
index beefa8788d..34168c55b8 100644
--- a/src/backends/ILayerSupport.cpp
+++ b/src/backends/ILayerSupport.cpp
@@ -4,6 +4,7 @@
//
#include <armnn/ILayerSupport.hpp>
+#include <armnn/Exceptions.hpp>
namespace armnn
{
diff --git a/src/backends/README.md b/src/backends/README.md
index 09b9e81539..670d6cfd98 100644
--- a/src/backends/README.md
+++ b/src/backends/README.md
@@ -13,7 +13,7 @@ ArmNN source tree.
The ```backend.cmake``` has two main purposes:
-1. It makes sure the artifact (typically a static library) is linked into the ArmNN shared library.
+1. It makes sure the artifact (a cmake OBJECT library) is linked into the ArmNN shared library.
2. It makes sure that the subdirectory where backend sources reside gets included in the build.
To achieve this there are two requirements for the ```backend.cmake``` file
@@ -28,7 +28,7 @@ To achieve this there are two requirements for the ```backend.cmake``` file
add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/reference)
#
-# Add the static libraries built by the reference backend to the
+# Add the cmake OBJECT libraries built by the reference backend to the
# list of libraries linked against the ArmNN shared library.
#
list(APPEND armnnLibraries armnnRefBackend armnnRefBackendWorkloads)
diff --git a/src/backends/aclCommon/CMakeLists.txt b/src/backends/aclCommon/CMakeLists.txt
index d99b90b897..2bfd024e10 100644
--- a/src/backends/aclCommon/CMakeLists.txt
+++ b/src/backends/aclCommon/CMakeLists.txt
@@ -25,7 +25,7 @@ list(APPEND armnnAclCommon_sources
add_subdirectory(test)
-add_library(armnnAclCommon STATIC ${armnnAclCommon_sources})
+add_library(armnnAclCommon OBJECT ${armnnAclCommon_sources})
target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/backends.cmake b/src/backends/backends.cmake
index f6f69bd11e..57f5a00015 100644
--- a/src/backends/backends.cmake
+++ b/src/backends/backends.cmake
@@ -11,8 +11,14 @@ list(APPEND armnnLibraries armnnBackendsCommon)
FILE(GLOB commonIncludes ${PROJECT_SOURCE_DIR}/src/backends/*/common.cmake)
FILE(GLOB backendIncludes ${PROJECT_SOURCE_DIR}/src/backends/*/backend.cmake)
-# prefer to include common code first so backends can depend on them
-foreach(includeFile ${commonIncludes} ${backendIncludes})
+# prefer to include common code first
+foreach(includeFile ${commonIncludes})
+ message("Including backend common library into the build: ${includeFile}")
+ include(${includeFile})
+endforeach()
+
+# now backends can depend on common code included first
+foreach(includeFile ${backendIncludes})
message("Including backend into the build: ${includeFile}")
include(${includeFile})
endforeach()
diff --git a/src/backends/cl/CMakeLists.txt b/src/backends/cl/CMakeLists.txt
index 2f32081dfe..5704e0e8ab 100644
--- a/src/backends/cl/CMakeLists.txt
+++ b/src/backends/cl/CMakeLists.txt
@@ -24,7 +24,7 @@ if(ARMCOMPUTECL)
add_subdirectory(test)
endif()
-add_library(armnnClBackend STATIC ${armnnClBackend_sources})
+add_library(armnnClBackend OBJECT ${armnnClBackend_sources})
target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/cl/ClBackend.cpp b/src/backends/cl/ClBackend.cpp
index 95acf009de..29d1b3a402 100644
--- a/src/backends/cl/ClBackend.cpp
+++ b/src/backends/cl/ClBackend.cpp
@@ -15,10 +15,9 @@ namespace armnn
namespace
{
-static const BackendId s_Id{"GpuAcc"};
static BackendRegistry::Helper g_RegisterHelper{
- s_Id,
+ ClBackend::GetIdStatic(),
[]()
{
return IBackendUniquePtr(new ClBackend, &ClBackend::Destroy);
@@ -27,8 +26,9 @@ static BackendRegistry::Helper g_RegisterHelper{
}
-const BackendId& ClBackend::GetId() const
+const BackendId& ClBackend::GetIdStatic()
{
+ static const BackendId s_Id{"GpuAcc"};
return s_Id;
}
diff --git a/src/backends/cl/ClBackend.hpp b/src/backends/cl/ClBackend.hpp
index b927db4b25..1a99b7652b 100644
--- a/src/backends/cl/ClBackend.hpp
+++ b/src/backends/cl/ClBackend.hpp
@@ -16,7 +16,8 @@ public:
ClBackend() = default;
~ClBackend() = default;
- const BackendId& GetId() const override;
+ static const BackendId& GetIdStatic();
+ const BackendId& GetId() const override { return GetIdStatic(); }
const ILayerSupport& GetLayerSupport() const override;
diff --git a/src/backends/cl/ClLayerSupport.cpp b/src/backends/cl/ClLayerSupport.cpp
index 9088da8645..7c66348b98 100644
--- a/src/backends/cl/ClLayerSupport.cpp
+++ b/src/backends/cl/ClLayerSupport.cpp
@@ -5,8 +5,10 @@
#include "ClLayerSupport.hpp"
-#include "InternalTypes.hpp"
-#include "LayerSupportCommon.hpp"
+#include <InternalTypes.hpp>
+#include <LayerSupportCommon.hpp>
+
+#include <armnn/Descriptors.hpp>
#include <boost/core/ignore_unused.hpp>
diff --git a/src/backends/cl/ClLayerSupport.hpp b/src/backends/cl/ClLayerSupport.hpp
index 75e90e000d..2d57d10040 100644
--- a/src/backends/cl/ClLayerSupport.hpp
+++ b/src/backends/cl/ClLayerSupport.hpp
@@ -4,7 +4,7 @@
//
#pragma once
-#include <armnn/ArmNN.hpp>
+#include <armnn/ILayerSupport.hpp>
namespace armnn
{
diff --git a/src/backends/cl/test/CMakeLists.txt b/src/backends/cl/test/CMakeLists.txt
index 4936a78645..262e23a7c1 100644
--- a/src/backends/cl/test/CMakeLists.txt
+++ b/src/backends/cl/test/CMakeLists.txt
@@ -15,4 +15,4 @@ list(APPEND armnnClBackendUnitTests_sources
add_library(armnnClBackendUnitTests OBJECT ${armnnClBackendUnitTests_sources})
target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils) \ No newline at end of file
+target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/cl/workloads/CMakeLists.txt b/src/backends/cl/workloads/CMakeLists.txt
index 5bd217295e..59a45facea 100644
--- a/src/backends/cl/workloads/CMakeLists.txt
+++ b/src/backends/cl/workloads/CMakeLists.txt
@@ -58,7 +58,7 @@ list(APPEND armnnClBackendWorkloads_sources
ClWorkloadUtils.hpp
)
-add_library(armnnClBackendWorkloads STATIC ${armnnClBackendWorkloads_sources})
+add_library(armnnClBackendWorkloads OBJECT ${armnnClBackendWorkloads_sources})
target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt
index 152955aa06..c44dcc1075 100644
--- a/src/backends/neon/CMakeLists.txt
+++ b/src/backends/neon/CMakeLists.txt
@@ -29,7 +29,7 @@ else()
)
endif()
-add_library(armnnNeonBackend STATIC ${armnnNeonBackend_sources})
+add_library(armnnNeonBackend OBJECT ${armnnNeonBackend_sources})
target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp
index 2e235b6c2a..3c12f7766d 100644
--- a/src/backends/neon/NeonBackend.cpp
+++ b/src/backends/neon/NeonBackend.cpp
@@ -16,10 +16,8 @@ namespace armnn
namespace
{
-static const BackendId s_Id{"CpuAcc"};
-
static BackendRegistry::Helper g_RegisterHelper{
- s_Id,
+ NeonBackend::GetIdStatic(),
[]()
{
return IBackendUniquePtr(new NeonBackend, &NeonBackend::Destroy);
@@ -28,8 +26,9 @@ static BackendRegistry::Helper g_RegisterHelper{
}
-const BackendId& NeonBackend::GetId() const
+const BackendId& NeonBackend::GetIdStatic()
{
+ static const BackendId s_Id{"CpuAcc"};
return s_Id;
}
diff --git a/src/backends/neon/NeonBackend.hpp b/src/backends/neon/NeonBackend.hpp
index fa2cad13ee..c7f7f6e380 100644
--- a/src/backends/neon/NeonBackend.hpp
+++ b/src/backends/neon/NeonBackend.hpp
@@ -16,7 +16,8 @@ public:
NeonBackend() = default;
~NeonBackend() = default;
- const BackendId& GetId() const override;
+ static const BackendId& GetIdStatic();
+ const BackendId& GetId() const override { return GetIdStatic(); }
const ILayerSupport& GetLayerSupport() const override;
diff --git a/src/backends/neon/NeonLayerSupport.hpp b/src/backends/neon/NeonLayerSupport.hpp
index 91be98182a..1223ba893a 100644
--- a/src/backends/neon/NeonLayerSupport.hpp
+++ b/src/backends/neon/NeonLayerSupport.hpp
@@ -4,10 +4,7 @@
//
#pragma once
-#include <armnn/DescriptorsFwd.hpp>
-#include <armnn/Optional.hpp>
-#include <armnn/Types.hpp>
-#include <armnn/Tensor.hpp>
+#include <armnn/ILayerSupport.hpp>
namespace armnn
{
diff --git a/src/backends/neon/test/CMakeLists.txt b/src/backends/neon/test/CMakeLists.txt
index 4a3380c3f9..384a5e1749 100644
--- a/src/backends/neon/test/CMakeLists.txt
+++ b/src/backends/neon/test/CMakeLists.txt
@@ -14,4 +14,4 @@ list(APPEND armnnNeonBackendUnitTests_sources
add_library(armnnNeonBackendUnitTests OBJECT ${armnnNeonBackendUnitTests_sources})
target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils) \ No newline at end of file
+target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/neon/workloads/CMakeLists.txt b/src/backends/neon/workloads/CMakeLists.txt
index 0b0b9ed5a0..fddbcb5d97 100644
--- a/src/backends/neon/workloads/CMakeLists.txt
+++ b/src/backends/neon/workloads/CMakeLists.txt
@@ -61,7 +61,7 @@ list(APPEND armnnNeonBackendWorkloads_sources
NeonWorkloadUtils.hpp
)
-add_library(armnnNeonBackendWorkloads STATIC ${armnnNeonBackendWorkloads_sources})
+add_library(armnnNeonBackendWorkloads OBJECT ${armnnNeonBackendWorkloads_sources})
target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/reference/CMakeLists.txt b/src/backends/reference/CMakeLists.txt
index 5aa3fc27f5..05ef7d5a8f 100644
--- a/src/backends/reference/CMakeLists.txt
+++ b/src/backends/reference/CMakeLists.txt
@@ -12,7 +12,7 @@ list(APPEND armnnRefBackend_sources
RefWorkloadFactory.hpp
)
-add_library(armnnRefBackend STATIC ${armnnRefBackend_sources})
+add_library(armnnRefBackend OBJECT ${armnnRefBackend_sources})
target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp
index ef52a5edeb..1f08d82b98 100644
--- a/src/backends/reference/RefBackend.cpp
+++ b/src/backends/reference/RefBackend.cpp
@@ -15,10 +15,9 @@ namespace armnn
namespace
{
-const BackendId s_Id{"CpuRef"};
static BackendRegistry::Helper s_RegisterHelper{
- s_Id,
+ RefBackend::GetIdStatic(),
[]()
{
return IBackendUniquePtr(new RefBackend, &RefBackend::Destroy);
@@ -27,8 +26,9 @@ static BackendRegistry::Helper s_RegisterHelper{
}
-const BackendId& RefBackend::GetId() const
+const BackendId& RefBackend::GetIdStatic()
{
+ static const BackendId s_Id{"CpuRef"};
return s_Id;
}
diff --git a/src/backends/reference/RefBackend.hpp b/src/backends/reference/RefBackend.hpp
index dcc974167d..c206dbdaf3 100644
--- a/src/backends/reference/RefBackend.hpp
+++ b/src/backends/reference/RefBackend.hpp
@@ -16,7 +16,8 @@ public:
RefBackend() = default;
~RefBackend() = default;
- const BackendId& GetId() const override;
+ static const BackendId& GetIdStatic();
+ const BackendId& GetId() const override { return GetIdStatic(); }
const ILayerSupport& GetLayerSupport() const override;
diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp
index 2ee942cc2e..3a250a6981 100644
--- a/src/backends/reference/RefLayerSupport.cpp
+++ b/src/backends/reference/RefLayerSupport.cpp
@@ -3,8 +3,10 @@
// SPDX-License-Identifier: MIT
//
-#include "LayerSupportCommon.hpp"
#include "RefLayerSupport.hpp"
+
+#include <LayerSupportCommon.hpp>
+
#include <armnn/Descriptors.hpp>
#include <armnn/Types.hpp>
#include <armnn/Tensor.hpp>
diff --git a/src/backends/reference/RefLayerSupport.hpp b/src/backends/reference/RefLayerSupport.hpp
index 1d0edf6cb3..40bca7f179 100644
--- a/src/backends/reference/RefLayerSupport.hpp
+++ b/src/backends/reference/RefLayerSupport.hpp
@@ -4,10 +4,7 @@
//
#pragma once
-#include <armnn/DescriptorsFwd.hpp>
-#include <armnn/Types.hpp>
-#include <armnn/Tensor.hpp>
-#include <layers/LstmLayer.hpp>
+#include <armnn/ILayerSupport.hpp>
namespace armnn
{
diff --git a/src/backends/reference/test/CMakeLists.txt b/src/backends/reference/test/CMakeLists.txt
index 511d747202..deee364a9a 100644
--- a/src/backends/reference/test/CMakeLists.txt
+++ b/src/backends/reference/test/CMakeLists.txt
@@ -12,4 +12,4 @@ list(APPEND armnnRefBackendUnitTests_sources
add_library(armnnRefBackendUnitTests OBJECT ${armnnRefBackendUnitTests_sources})
target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils) \ No newline at end of file
+target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/reference/workloads/CMakeLists.txt b/src/backends/reference/workloads/CMakeLists.txt
index 5a756e4596..be71a85047 100644
--- a/src/backends/reference/workloads/CMakeLists.txt
+++ b/src/backends/reference/workloads/CMakeLists.txt
@@ -102,7 +102,7 @@ list(APPEND armnnRefBackendWorkloads_sources
RefMeanUint8Workload.hpp
)
-add_library(armnnRefBackendWorkloads STATIC ${armnnRefBackendWorkloads_sources})
+add_library(armnnRefBackendWorkloads OBJECT ${armnnRefBackendWorkloads_sources})
target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src)
target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)