// // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include #include "MemoryOptimizerStrategyFactory.hpp" #include "strategies/ConstantMemoryStrategy.hpp" #include "strategies/StrategyValidator.hpp" #include "strategies/SingleAxisPriorityList.hpp" #include namespace armnn { namespace { static std::map>& GetStrategyFactories() { static std::map> strategies; if (strategies.size() == 0) { strategies["ConstantMemoryStrategy"] = std::make_unique>(); strategies["SingleAxisPriorityList"] = std::make_unique>(); strategies["StrategyValidator"] = std::make_unique>(); } return strategies; } } // anonymous namespace std::unique_ptr GetMemoryOptimizerStrategy(const std::string& strategyName) { const auto& strategyFactoryMap = GetStrategyFactories(); auto strategyFactory = strategyFactoryMap.find(strategyName); if (strategyFactory != GetStrategyFactories().end()) { return strategyFactory->second->CreateMemoryOptimizerStrategy(); } return nullptr; } const std::vector GetMemoryOptimizerStrategyNames() { const auto& strategyFactoryMap = GetStrategyFactories(); std::vector strategyNames; for (const auto& strategyFactory : strategyFactoryMap) { strategyNames.emplace_back(strategyFactory.first); } return strategyNames; } } // namespace armnn