From 734151d20bef56cbedce2ae67945f42cb4e265c8 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Mon, 21 Jan 2019 18:38:21 +0000 Subject: COMPMID-1848: Account alignment in Offset-based pool allocations Change-Id: I061d612341bf951a7d0e7ddd04a42139c8400d41 Reviewed-on: https://review.mlplatform.org/554 Tested-by: Arm Jenkins Reviewed-by: Michalis Spyrou --- arm_compute/runtime/BlobLifetimeManager.h | 7 ++++--- arm_compute/runtime/BlobMemoryPool.h | 13 +------------ arm_compute/runtime/OffsetLifetimeManager.h | 6 +++--- arm_compute/runtime/OffsetMemoryPool.h | 9 +++++---- arm_compute/runtime/Types.h | 14 +++++++++++++- 5 files changed, 26 insertions(+), 23 deletions(-) (limited to 'arm_compute') diff --git a/arm_compute/runtime/BlobLifetimeManager.h b/arm_compute/runtime/BlobLifetimeManager.h index 2dbe92d7b6..586ad10fa0 100644 --- a/arm_compute/runtime/BlobLifetimeManager.h +++ b/arm_compute/runtime/BlobLifetimeManager.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -26,15 +26,16 @@ #include "arm_compute/runtime/ISimpleLifetimeManager.h" -#include "arm_compute/runtime/BlobMemoryPool.h" #include "arm_compute/runtime/Types.h" -#include #include #include namespace arm_compute { +// Forward declarations +class IMemoryPool; + /** Concrete class that tracks the lifetime of registered tensors and * calculates the systems memory requirements in terms of blobs */ class BlobLifetimeManager : public ISimpleLifetimeManager diff --git a/arm_compute/runtime/BlobMemoryPool.h b/arm_compute/runtime/BlobMemoryPool.h index ba97dbd94e..c2e0902493 100644 --- a/arm_compute/runtime/BlobMemoryPool.h +++ b/arm_compute/runtime/BlobMemoryPool.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -38,17 +38,6 @@ namespace arm_compute // Forward declaration class IAllocator; -/** Meta-data information for each blob */ -struct BlobInfo -{ - BlobInfo(size_t size_ = 0, size_t alignment_ = 0) - : size(size_), alignment(alignment_) - { - } - size_t size; /**< Blob size */ - size_t alignment; /**< Blob alignment */ -}; - /** Blob memory pool */ class BlobMemoryPool : public IMemoryPool { diff --git a/arm_compute/runtime/OffsetLifetimeManager.h b/arm_compute/runtime/OffsetLifetimeManager.h index e39d6a0d6a..26aeb1ef6a 100644 --- a/arm_compute/runtime/OffsetLifetimeManager.h +++ b/arm_compute/runtime/OffsetLifetimeManager.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -28,12 +28,12 @@ #include "arm_compute/runtime/Types.h" -#include #include #include namespace arm_compute { +// Forward declarations class IMemoryPool; /** Concrete class that tracks the lifetime of registered tensors and @@ -61,7 +61,7 @@ private: void update_blobs_and_mappings() override; private: - size_t _blob; /**< Memory blob size */ + BlobInfo _blob; /**< Memory blob size */ }; } // namespace arm_compute #endif /* __ARM_COMPUTE_OFFSETLIFETIMEMANAGER_H__ */ diff --git a/arm_compute/runtime/OffsetMemoryPool.h b/arm_compute/runtime/OffsetMemoryPool.h index 480d424b5b..bc09de6a14 100644 --- a/arm_compute/runtime/OffsetMemoryPool.h +++ b/arm_compute/runtime/OffsetMemoryPool.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -30,6 +30,7 @@ #include "arm_compute/runtime/Types.h" #include +#include namespace arm_compute { @@ -44,9 +45,9 @@ public: * @note allocator should outlive the memory pool * * @param[in] allocator Backing memory allocator - * @param[in] blob_size Size of the memory be allocated + * @param[in] blob_info Configuration information of the blob to be allocated */ - OffsetMemoryPool(IAllocator *allocator, size_t blob_size); + OffsetMemoryPool(IAllocator *allocator, BlobInfo blob_info); /** Default Destructor */ ~OffsetMemoryPool() = default; /** Prevent instances of this class to be copy constructed */ @@ -67,7 +68,7 @@ public: private: IAllocator *_allocator; /**< Allocator to use for internal allocation */ std::unique_ptr _blob; /**< Memory blob */ - size_t _blob_size; /**< Sizes of the allocated memory blob */ + BlobInfo _blob_info; /**< Information for the blob to allocate */ }; } // namespace arm_compute #endif /* __ARM_COMPUTE_OFFSETMEMORYPOOL_H__ */ diff --git a/arm_compute/runtime/Types.h b/arm_compute/runtime/Types.h index f2607c0204..fece5137f7 100644 --- a/arm_compute/runtime/Types.h +++ b/arm_compute/runtime/Types.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -46,5 +46,17 @@ using MemoryMappings = std::map; /** A map of the groups and memory mappings */ using GroupMappings = std::map; + +/** Meta-data information for each blob */ +struct BlobInfo +{ + BlobInfo(size_t size_ = 0, size_t alignment_ = 0, size_t owners_ = 1) + : size(size_), alignment(alignment_), owners(owners_) + { + } + size_t size; /**< Blob size */ + size_t alignment; /**< Blob alignment */ + size_t owners; /**< Number of owners in parallel of the blob */ +}; } // namespace arm_compute #endif /* __ARM_COMPUTE_RUNTIME_TYPES_H__ */ -- cgit v1.2.1