diff options
Diffstat (limited to 'src/backends/aclCommon')
-rw-r--r-- | src/backends/aclCommon/ArmComputeTensorUtils.hpp | 10 | ||||
-rw-r--r-- | src/backends/aclCommon/BaseMemoryManager.cpp | 14 | ||||
-rw-r--r-- | src/backends/aclCommon/BaseMemoryManager.hpp | 32 | ||||
-rw-r--r-- | src/backends/aclCommon/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/backends/aclCommon/common.cmake | 4 |
5 files changed, 48 insertions, 14 deletions
diff --git a/src/backends/aclCommon/ArmComputeTensorUtils.hpp b/src/backends/aclCommon/ArmComputeTensorUtils.hpp index f5ae770d6b..d8a41fe41f 100644 --- a/src/backends/aclCommon/ArmComputeTensorUtils.hpp +++ b/src/backends/aclCommon/ArmComputeTensorUtils.hpp @@ -121,6 +121,16 @@ arm_compute::PadStrideInfo BuildArmComputePadStrideInfo(const Descriptor& descri arm_compute::DimensionRoundingType::FLOOR); } +/// Utility function used to setup an arm_compute::Padding2D object from an armnn layer descriptor. +template <typename Descriptor> +arm_compute::Padding2D BuildArmComputePaddingInfo(const Descriptor &descriptor) +{ + return arm_compute::Padding2D(descriptor.m_PadLeft, + descriptor.m_PadRight, + descriptor.m_PadTop, + descriptor.m_PadBottom); +} + /// Utility function used to setup an arm_compute::CropInfo object from an ArmNN layer descriptor. template <typename Descriptor> arm_compute::CropInfo BuildArmComputeCropInfo(const Descriptor& descriptor, const unsigned int rank = 4) diff --git a/src/backends/aclCommon/BaseMemoryManager.cpp b/src/backends/aclCommon/BaseMemoryManager.cpp index c60a4a04ae..206cf9b230 100644 --- a/src/backends/aclCommon/BaseMemoryManager.cpp +++ b/src/backends/aclCommon/BaseMemoryManager.cpp @@ -1,10 +1,10 @@ // -// Copyright © 2017 Arm Ltd. All rights reserved. +// Copyright © 2017-2023 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include "BaseMemoryManager.hpp" -#if defined(ARMCOMPUTENEON_ENABLED) || defined(ARMCOMPUTECL_ENABLED) +#if defined(ARMCOMPUTENEON_ENABLED) || defined(ARMCOMPUTECL_ENABLED) || defined(ARMCOMPUTEGPUFSA_ENABLED) #include "arm_compute/runtime/BlobLifetimeManager.h" #include "arm_compute/runtime/PoolManager.h" #include "arm_compute/runtime/OffsetLifetimeManager.h" @@ -14,7 +14,7 @@ namespace armnn { -#if defined(ARMCOMPUTENEON_ENABLED) || defined(ARMCOMPUTECL_ENABLED) +#if defined(ARMCOMPUTENEON_ENABLED) || defined(ARMCOMPUTECL_ENABLED) || defined(ARMCOMPUTEGPUFSA_ENABLED) BaseMemoryManager::BaseMemoryManager(std::shared_ptr<arm_compute::IAllocator> alloc, MemoryAffinity memoryAffinity) { @@ -104,4 +104,12 @@ ClMemoryManager::CreateMemoryGroup(const std::shared_ptr<arm_compute::MemoryMana } #endif +#if defined(ARMCOMPUTEGPUFSA_ENABLED) +std::shared_ptr<arm_compute::IMemoryGroup> +GpuFsaMemoryManager::CreateMemoryGroup(const std::shared_ptr<arm_compute::MemoryManagerOnDemand>& memoryManager) +{ + return std::make_shared<arm_compute::MemoryGroup>(memoryManager); +} +#endif + } diff --git a/src/backends/aclCommon/BaseMemoryManager.hpp b/src/backends/aclCommon/BaseMemoryManager.hpp index af099f900a..04e0d640ab 100644 --- a/src/backends/aclCommon/BaseMemoryManager.hpp +++ b/src/backends/aclCommon/BaseMemoryManager.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd. All rights reserved. +// Copyright © 2017-2023 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once @@ -7,17 +7,13 @@ #include <armnn/backends/IMemoryManager.hpp> #include <armnn/backends/WorkloadFactory.hpp> -#if defined(ARMCOMPUTENEON_ENABLED) || defined(ARMCOMPUTECL_ENABLED) -#include <arm_compute/runtime/MemoryGroup.h> -#endif - -#if defined(ARMCOMPUTENEON_ENABLED) || defined(ARMCOMPUTECL_ENABLED) +#if defined(ARMCOMPUTENEON_ENABLED) || defined(ARMCOMPUTECL_ENABLED) || defined(ARMCOMPUTEGPUFSA_ENABLED) #include <arm_compute/runtime/IAllocator.h> #include <arm_compute/runtime/IMemoryGroup.h> #include <arm_compute/runtime/MemoryManagerOnDemand.h> #endif -#if defined(ARMCOMPUTECL_ENABLED) +#if defined(ARMCOMPUTECL_ENABLED) || defined(ARMCOMPUTEGPUFSA_ENABLED) #include <arm_compute/runtime/CL/CLTensorAllocator.h> #endif @@ -39,7 +35,7 @@ public: void Acquire() override; void Release() override; -#if defined(ARMCOMPUTENEON_ENABLED) || defined(ARMCOMPUTECL_ENABLED) +#if defined(ARMCOMPUTENEON_ENABLED) || defined(ARMCOMPUTECL_ENABLED) || defined(ARMCOMPUTEGPUFSA_ENABLED) BaseMemoryManager(std::shared_ptr<arm_compute::IAllocator> alloc, MemoryAffinity memoryAffinity); std::shared_ptr<arm_compute::MemoryManagerOnDemand>& GetIntraLayerManager() { return m_IntraLayerMemoryMgr; } @@ -98,4 +94,24 @@ protected: }; #endif +#if defined(ARMCOMPUTEGPUFSA_ENABLED) +class GpuFsaMemoryManager : public BaseMemoryManager +{ +public: + GpuFsaMemoryManager() {} + virtual ~GpuFsaMemoryManager() {} + + GpuFsaMemoryManager(std::shared_ptr<arm_compute::IAllocator> alloc) + : BaseMemoryManager(std::move(alloc), MemoryAffinity::Buffer) + { + arm_compute::CLTensorAllocator::set_global_allocator(alloc.get()); + m_InterLayerMemoryGroup = CreateMemoryGroup(m_InterLayerMemoryMgr); + } + +protected: + std::shared_ptr<arm_compute::IMemoryGroup> + CreateMemoryGroup(const std::shared_ptr<arm_compute::MemoryManagerOnDemand>& memoryManager) override; +}; +#endif + } //namespace armnn diff --git a/src/backends/aclCommon/CMakeLists.txt b/src/backends/aclCommon/CMakeLists.txt index eaaed65c17..0e17982946 100644 --- a/src/backends/aclCommon/CMakeLists.txt +++ b/src/backends/aclCommon/CMakeLists.txt @@ -14,7 +14,7 @@ list(APPEND armnnAclCommon_sources IClTensorHandle.hpp ) -if(ARMCOMPUTECL) +if(ARMCOMPUTECL OR ARMCOMPUTEGPUFSA) list(APPEND armnnAclCommon_sources ArmComputeTuningUtils.hpp ArmComputeTuningUtils.cpp diff --git a/src/backends/aclCommon/common.cmake b/src/backends/aclCommon/common.cmake index 89be236a7f..0acbb201b5 100644 --- a/src/backends/aclCommon/common.cmake +++ b/src/backends/aclCommon/common.cmake @@ -1,9 +1,9 @@ # -# Copyright © 2017 Arm Ltd. All rights reserved. +# Copyright © 2017-2023 Arm Ltd. All rights reserved. # SPDX-License-Identifier: MIT # -if(ARMCOMPUTENEON OR ARMCOMPUTECL) +if(ARMCOMPUTENEON OR ARMCOMPUTECL OR ARMCOMPUTEGPUFSA) add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/aclCommon) list(APPEND armnnLibraries armnnAclCommon) list(APPEND armnnUnitTestLibraries armnnAclCommonUnitTests) |