1 // 2 // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 #pragma once 6 7 #include <armnn/Types.hpp> 8 #include <armnn/Exceptions.hpp> 9 #include <armnn/backends/IMemoryOptimizerStrategy.hpp> 10 11 namespace armnn 12 { 13 14 class StrategyValidator : public IMemoryOptimizerStrategy 15 { 16 public: 17 SetStrategy(std::shared_ptr<IMemoryOptimizerStrategy> strategy)18 void SetStrategy(std::shared_ptr<IMemoryOptimizerStrategy> strategy) 19 { 20 m_Strategy = strategy; 21 m_MemBlockStrategyType = strategy->GetMemBlockStrategyType(); 22 } 23 GetName() const24 std::string GetName() const override 25 { 26 return "StrategyValidator"; 27 } 28 GetMemBlockStrategyType() const29 MemBlockStrategyType GetMemBlockStrategyType() const override 30 { 31 return m_MemBlockStrategyType; 32 } 33 34 std::vector<MemBin> Optimize(std::vector<MemBlock>& memBlocks) override; 35 36 private: 37 std::shared_ptr<IMemoryOptimizerStrategy> m_Strategy; 38 MemBlockStrategyType m_MemBlockStrategyType; 39 }; 40 41 } // namespace armnn