ArmNN
 25.11
Loading...
Searching...
No Matches
Optimizer.hpp
Go to the documentation of this file.
1//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#pragma once
6
7#include <vector>
8#include <memory>
10
11namespace armnn
12{
13
14class Optimizer
15{
16public:
17 using OptimizationPtr = std::unique_ptr<Optimization>;
18 using Optimizations = std::vector<OptimizationPtr>;
19
20 static void Pass(Graph& graph, const Optimizations& optimizations);
21
22private:
23 ~Optimizer() = default;
24
25 Optimizer();
26};
27
28
29template<typename T>
31{
32 optimizations.emplace_back(new T(optimization));
33};
34
35template<typename Front, typename... Others>
36void Append(Optimizer::Optimizations& optimizations, Front&& front, Others&&... others)
37{
38 Append<Front>(optimizations, std::forward<Front>(front));
39 Append<Others...>(optimizations, std::forward<Others>(others)...);
40};
41
42template<typename... Args>
44{
46
47 Append(optimizations, std::forward<Args>(args)...);
48
49 return optimizations;
50}
51
52} // namespace armnn
static void Pass(Graph &graph, const Optimizations &optimizations)
Definition Optimizer.cpp:16
std::unique_ptr< Optimization > OptimizationPtr
Definition Optimizer.hpp:17
std::vector< OptimizationPtr > Optimizations
Definition Optimizer.hpp:18
Copyright (c) 2021 ARM Limited and Contributors.
Optimizer::Optimizations MakeOptimizations(Args &&... args)
Definition Optimizer.hpp:43
void Append(Optimizer::Optimizations &optimizations, T &&optimization)
Definition Optimizer.hpp:30