xref: /aosp_15_r20/external/armnn/tests/MemoryStrategyBenchmark/TestStrategy.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #include "TestStrategy.hpp"
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker namespace armnn
9*89c4ff92SAndroid Build Coastguard Worker {
10*89c4ff92SAndroid Build Coastguard Worker 
GetName() const11*89c4ff92SAndroid Build Coastguard Worker     std::string TestStrategy::GetName() const
12*89c4ff92SAndroid Build Coastguard Worker     {
13*89c4ff92SAndroid Build Coastguard Worker         return m_Name;
14*89c4ff92SAndroid Build Coastguard Worker     }
15*89c4ff92SAndroid Build Coastguard Worker 
GetMemBlockStrategyType() const16*89c4ff92SAndroid Build Coastguard Worker     MemBlockStrategyType TestStrategy::GetMemBlockStrategyType() const
17*89c4ff92SAndroid Build Coastguard Worker     {
18*89c4ff92SAndroid Build Coastguard Worker         return m_MemBlockStrategyType;
19*89c4ff92SAndroid Build Coastguard Worker     }
20*89c4ff92SAndroid Build Coastguard Worker 
21*89c4ff92SAndroid Build Coastguard Worker     // A IMemoryOptimizerStrategy must ensure that
22*89c4ff92SAndroid Build Coastguard Worker     // 1: All MemBlocks have been assigned to a MemBin
23*89c4ff92SAndroid Build Coastguard Worker     // 2: No MemBlock is assigned to multiple MemBins
24*89c4ff92SAndroid Build Coastguard Worker     // 3: No two Memblocks in a MemBin overlap in both the X and Y axis
Optimize(std::vector<MemBlock> & memBlocks)25*89c4ff92SAndroid Build Coastguard Worker     std::vector<MemBin> TestStrategy::Optimize(std::vector<MemBlock>& memBlocks)
26*89c4ff92SAndroid Build Coastguard Worker     {
27*89c4ff92SAndroid Build Coastguard Worker         std::vector<MemBin> memBins;
28*89c4ff92SAndroid Build Coastguard Worker         memBins.reserve(memBlocks.size());
29*89c4ff92SAndroid Build Coastguard Worker 
30*89c4ff92SAndroid Build Coastguard Worker         for (auto& memBlock : memBlocks)
31*89c4ff92SAndroid Build Coastguard Worker         {
32*89c4ff92SAndroid Build Coastguard Worker             MemBin memBin;
33*89c4ff92SAndroid Build Coastguard Worker             memBin.m_MemSize = memBlock.m_MemSize;
34*89c4ff92SAndroid Build Coastguard Worker             memBin.m_MemBlocks.reserve(1);
35*89c4ff92SAndroid Build Coastguard Worker             memBlock.m_Offset = 0;
36*89c4ff92SAndroid Build Coastguard Worker             memBin.m_MemBlocks.push_back(memBlock);
37*89c4ff92SAndroid Build Coastguard Worker             memBins.push_back(memBin);
38*89c4ff92SAndroid Build Coastguard Worker         }
39*89c4ff92SAndroid Build Coastguard Worker 
40*89c4ff92SAndroid Build Coastguard Worker         return memBins;
41*89c4ff92SAndroid Build Coastguard Worker     }
42*89c4ff92SAndroid Build Coastguard Worker 
43*89c4ff92SAndroid Build Coastguard Worker } // namespace armnn