aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test')
-rw-r--r--src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/CMakeLists.txt1
-rw-r--r--src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/SingleAxisPriorityListTests.cpp42
-rw-r--r--src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/TestMemBlocks.hpp43
3 files changed, 86 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/CMakeLists.txt b/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/CMakeLists.txt
index b96782a84d..3068b609f6 100644
--- a/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/CMakeLists.txt
+++ b/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/CMakeLists.txt
@@ -6,6 +6,7 @@
list(APPEND armnnMemoryOptimizationStrategiesUnitTests_sources
ConstMemoryStrategyTests.cpp
ValidatorStrategyTests.cpp
+ SingleAxisPriorityListTests.cpp
)
add_library(armnnMemoryOptimizationStrategiesUnitTests OBJECT ${armnnMemoryOptimizationStrategiesUnitTests_sources})
diff --git a/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/SingleAxisPriorityListTests.cpp b/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/SingleAxisPriorityListTests.cpp
new file mode 100644
index 0000000000..516f6f3771
--- /dev/null
+++ b/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/SingleAxisPriorityListTests.cpp
@@ -0,0 +1,42 @@
+//
+// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <backendsCommon/memoryOptimizerStrategyLibrary/strategies/SingleAxisPriorityList.hpp>
+#include <backendsCommon/memoryOptimizerStrategyLibrary/strategies/StrategyValidator.hpp>
+#include "TestMemBlocks.hpp"
+
+#include <doctest/doctest.h>
+#include <vector>
+
+using namespace armnn;
+
+TEST_SUITE("SingleAxisPriorityListTestSuite")
+{
+ TEST_CASE("SingleAxisPriorityListTest")
+ {
+ std::vector<MemBlock> memBlocks = fsrcnn;
+
+ auto singleAxisPriorityList = std::make_shared<SingleAxisPriorityList>();
+
+ CHECK_EQ(singleAxisPriorityList->GetName(), std::string("SingleAxisPriorityList"));
+ CHECK_EQ(singleAxisPriorityList->GetMemBlockStrategyType(), MemBlockStrategyType::SingleAxisPacking);
+
+ StrategyValidator validator;
+ validator.SetStrategy(singleAxisPriorityList);
+
+ std::vector<MemBin> memBins;
+
+ CHECK_NOTHROW(memBins = validator.Optimize(memBlocks));
+
+ size_t minMemSize = GetMinPossibleMemorySize(memBlocks);
+ size_t actualSize = 0;
+ for (auto memBin : memBins)
+ {
+ actualSize += memBin.m_MemSize;
+ }
+
+ CHECK(minMemSize == actualSize);
+ }
+}
diff --git a/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/TestMemBlocks.hpp b/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/TestMemBlocks.hpp
new file mode 100644
index 0000000000..09369d1efa
--- /dev/null
+++ b/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/TestMemBlocks.hpp
@@ -0,0 +1,43 @@
+//
+// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+size_t GetMinPossibleMemorySize(const std::vector<armnn::MemBlock>& blocks)
+{
+ unsigned int maxLifetime = 0;
+ for (auto& block: blocks)
+ {
+ maxLifetime = std::max(maxLifetime, block.m_EndOfLife);
+ }
+ maxLifetime++;
+
+ std::vector<size_t> lifetimes(maxLifetime);
+ for (const auto& block : blocks)
+ {
+ for (auto lifetime = block.m_StartOfLife; lifetime <= block.m_EndOfLife; ++lifetime)
+ {
+ lifetimes[lifetime] += block.m_MemSize;
+ }
+ }
+ return *std::max_element(lifetimes.begin(), lifetimes.end());
+}
+
+// Generated from fsrcnn_720p.tflite
+std::vector<armnn::MemBlock> fsrcnn
+{
+ { 0, 1, 691200, 0, 0 },
+ { 1, 3, 7372800, 0, 1 },
+ { 2, 5, 7372800, 0, 2 },
+ { 3, 7, 1843200, 0, 3 },
+ { 4, 9, 1843200, 0, 4 },
+ { 5, 11, 1843200, 0, 5 },
+ { 6, 13, 1843200, 0, 6 },
+ { 7, 15, 1843200, 0, 7 },
+ { 8, 17, 1843200, 0, 8 },
+ { 9, 19, 7372800, 0, 9 },
+ { 10, 21, 7372800, 0, 10 },
+ { 11, 23, 2764800, 0, 11 },
+ { 12, 25, 2764800, 0, 12 },
+ { 13, 27, 2764800, 0, 13 }
+}; \ No newline at end of file