// // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include #include "MemoryOptimizerStrategyFactory.hpp" #include #include "strategies/ConstantMemoryStrategy.hpp" #include "strategies/StrategyValidator.hpp" namespace { // Default Memory Optimizer Strategies static const std::vector memoryOptimizationStrategies( { "ConstantMemoryStrategy", "StrategyValidator" }); #define CREATE_MEMORY_OPTIMIZER_STRATEGY(strategyName, memoryOptimizerStrategy) \ { \ MemoryOptimizerStrategyFactory memoryOptimizerStrategyFactory; \ memoryOptimizerStrategy = memoryOptimizerStrategyFactory.CreateMemoryOptimizerStrategy(); \ } \ } // anonymous namespace namespace armnn { std::unique_ptr GetMemoryOptimizerStrategy(const std::string& strategyName) { auto doesStrategyExist = std::find(memoryOptimizationStrategies.begin(), memoryOptimizationStrategies.end(), strategyName) != memoryOptimizationStrategies.end(); if (doesStrategyExist) { std::unique_ptr memoryOptimizerStrategy = nullptr; CREATE_MEMORY_OPTIMIZER_STRATEGY(armnn::ConstantMemoryStrategy, memoryOptimizerStrategy); return memoryOptimizerStrategy; } return nullptr; } const std::vector& GetMemoryOptimizerStrategyNames() { return memoryOptimizationStrategies; } } // namespace armnn