1 // 2 // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #include <backendsCommon/memoryOptimizerStrategyLibrary/strategies/SingleAxisPriorityList.hpp> 7 #include <backendsCommon/memoryOptimizerStrategyLibrary/strategies/StrategyValidator.hpp> 8 #include "TestMemBlocks.hpp" 9 10 #include <doctest/doctest.h> 11 #include <vector> 12 13 using namespace armnn; 14 15 TEST_SUITE("SingleAxisPriorityListTestSuite") 16 { 17 TEST_CASE("SingleAxisPriorityListTest") 18 { 19 std::vector<MemBlock> memBlocks = fsrcnn; 20 21 auto singleAxisPriorityList = std::make_shared<SingleAxisPriorityList>(); 22 23 CHECK_EQ(singleAxisPriorityList->GetName(), std::string("SingleAxisPriorityList")); 24 CHECK_EQ(singleAxisPriorityList->GetMemBlockStrategyType(), MemBlockStrategyType::SingleAxisPacking); 25 26 StrategyValidator validator; 27 validator.SetStrategy(singleAxisPriorityList); 28 29 std::vector<MemBin> memBins; 30 31 CHECK_NOTHROW(memBins = validator.Optimize(memBlocks)); 32 33 size_t minMemSize = GetMinPossibleMemorySize(memBlocks); 34 size_t actualSize = 0; 35 for (auto memBin : memBins) 36 { 37 actualSize += memBin.m_MemSize; 38 } 39 40 CHECK(minMemSize == actualSize); 41 } 42 } 43