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