aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorFrancis Murtagh <francis.murtagh@arm.com>2021-09-28 15:30:31 +0100
committerFrancis Murtagh <francis.murtagh@arm.com>2021-10-06 15:37:37 +0000
commitca49a24a2b19e4d8e45efc53e336223c5895f25a (patch)
tree37e14b5bec459e8a9ceb96557959176ba26fd56e /include
parenteb5f810ad985a8cca831b46d94ee73db5a305c9f (diff)
downloadarmnn-ca49a24a2b19e4d8e45efc53e336223c5895f25a.tar.gz
IVGCVSW-6338 IMemoryOptimizerStrategy Create a wrapper validator strategy
* Add validator wrapper * Add validation logic: Condition #1: All Memblocks have been assigned to a MemBin Condition #2: No Memblock is assigned to multiple MemBins Condition #3: No two Memblocks overlap in both the X and Y axis Memblocks can overlap on the X axis for SingleAxisPacking Memblocks can overlap on the Y axis or the X for MultiAxisPacking but not both * Add test strategies and tests for overlap, duplicates and unassigned blocks Signed-off-by: Francis Murtagh <francis.murtagh@arm.com> Change-Id: I7a779b35538ecf18a33b62b84512eba69eda1f86
Diffstat (limited to 'include')
-rw-r--r--include/armnn/Types.hpp4
-rw-r--r--include/armnn/backends/IMemoryOptimizerStrategy.hpp6
2 files changed, 5 insertions, 5 deletions
diff --git a/include/armnn/Types.hpp b/include/armnn/Types.hpp
index e713b8989e..02f265c6e3 100644
--- a/include/armnn/Types.hpp
+++ b/include/armnn/Types.hpp
@@ -212,12 +212,12 @@ enum class MemorySource : uint32_t
enum class MemBlockStrategyType
{
- // MemBlocks can be packed on the Y axis only.
+ // MemBlocks can be packed on the Y axis only, overlap allowed on X axis.
// In other words MemBlocks with overlapping lifetimes cannot use the same MemBin,
// equivalent to blob or pooling memory management.
SingleAxisPacking = 0,
- // MemBlocks can be packed on the Y and X axis.
+ // MemBlocks can be packed on either Y or X axis but cannot overlap on both.
// In other words MemBlocks with overlapping lifetimes can use the same MemBin,
// equivalent to offset or slab memory management.
MultiAxisPacking = 1
diff --git a/include/armnn/backends/IMemoryOptimizerStrategy.hpp b/include/armnn/backends/IMemoryOptimizerStrategy.hpp
index ec6d838aae..ad5513f8a3 100644
--- a/include/armnn/backends/IMemoryOptimizerStrategy.hpp
+++ b/include/armnn/backends/IMemoryOptimizerStrategy.hpp
@@ -22,8 +22,8 @@ struct MemBlock
const unsigned int m_StartOfLife; // Y start
const unsigned int m_EndOfLife; // Y end
- const size_t m_MemSize; // X start
- size_t m_Offset; // X end
+ const size_t m_MemSize; // Offset + Memsize = X end
+ size_t m_Offset; // X start
const unsigned int m_Index; // Index to keep order
};
@@ -40,7 +40,7 @@ struct MemBin
// A IMemoryOptimizerStrategy must ensure that
// 1: All MemBlocks have been assigned to a MemBin
// 2: No MemBlock is assigned to multiple MemBins
-// 3: No two MemBlocks in a MemBin overlap in the X dimension
+// 3: No two Memblocks in a MemBin overlap in both the X and Y axis
// (a strategy cannot change the y axis or length of a MemBlock)
class IMemoryOptimizerStrategy
{