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 /src/backends/backendsCommon/memoryOptimizationStrategies/test/ConstLayerMemoryOptimizerStrategyTests.cpp | |
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 'src/backends/backendsCommon/memoryOptimizationStrategies/test/ConstLayerMemoryOptimizerStrategyTests.cpp')
-rw-r--r-- | src/backends/backendsCommon/memoryOptimizationStrategies/test/ConstLayerMemoryOptimizerStrategyTests.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/memoryOptimizationStrategies/test/ConstLayerMemoryOptimizerStrategyTests.cpp b/src/backends/backendsCommon/memoryOptimizationStrategies/test/ConstLayerMemoryOptimizerStrategyTests.cpp index 95569dcc0a..cfa2d40e7d 100644 --- a/src/backends/backendsCommon/memoryOptimizationStrategies/test/ConstLayerMemoryOptimizerStrategyTests.cpp +++ b/src/backends/backendsCommon/memoryOptimizationStrategies/test/ConstLayerMemoryOptimizerStrategyTests.cpp @@ -4,6 +4,7 @@ // #include <backendsCommon/memoryOptimizationStrategies/ConstLayerMemoryOptimizerStrategy.hpp> +#include <backendsCommon/memoryOptimizationStrategies/MemoryOptimizerStrategyValidator.hpp> #include <doctest/doctest.h> #include <vector> @@ -48,4 +49,29 @@ TEST_CASE("ConstLayerMemoryOptimizerStrategyTest") CHECK(memBins[4].m_MemBlocks[0].m_Index == 4); } +TEST_CASE("ConstLayerMemoryOptimizerStrategyValidatorTest") +{ + // create a few memory blocks + MemBlock memBlock0(0, 2, 20, 0, 0); + MemBlock memBlock1(2, 3, 10, 20, 1); + MemBlock memBlock2(3, 5, 15, 30, 2); + MemBlock memBlock3(5, 6, 20, 50, 3); + MemBlock memBlock4(7, 8, 5, 70, 4); + + std::vector<MemBlock> memBlocks; + memBlocks.reserve(5); + memBlocks.push_back(memBlock0); + memBlocks.push_back(memBlock1); + memBlocks.push_back(memBlock2); + memBlocks.push_back(memBlock3); + memBlocks.push_back(memBlock4); + + // Optimize the memory blocks with ConstLayerMemoryOptimizerStrategy + ConstLayerMemoryOptimizerStrategy constLayerMemoryOptimizerStrategy; + auto ptr = std::make_shared<ConstLayerMemoryOptimizerStrategy>(constLayerMemoryOptimizerStrategy); + MemoryOptimizerValidator validator(std::move(ptr)); + // Ensure ConstLayerMemoryOptimizerStrategy is valid + CHECK(validator.Validate(memBlocks)); +} + } |