diff options
Diffstat (limited to 'src/backends')
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) |