aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon/memoryOptimizerStrategyLibrary/test/SingleAxisPriorityListTests.cpp
blob: 516f6f3771f43acbe50b316eca3f572b2a89eacf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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);
    }
}