diff options
author | Francis Murtagh <francis.murtagh@arm.com> | 2021-09-28 15:30:31 +0100 |
---|---|---|
committer | Francis Murtagh <francis.murtagh@arm.com> | 2021-10-06 15:37:37 +0000 |
commit | ca49a24a2b19e4d8e45efc53e336223c5895f25a (patch) | |
tree | 37e14b5bec459e8a9ceb96557959176ba26fd56e /include | |
parent | eb5f810ad985a8cca831b46d94ee73db5a305c9f (diff) | |
download | armnn-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.hpp | 4 | ||||
-rw-r--r-- | include/armnn/backends/IMemoryOptimizerStrategy.hpp | 6 |
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 { |