ArmNN
 23.02
OptimizationViews.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017, 2019, 2021-2022 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
9 #include <armnn/Deprecated.hpp>
10 #include <armnn/INetwork.hpp>
12 #include <vector>
13 #include "Graph.hpp"
14 
15 namespace armnn
16 {
17 
19 {
20 public:
21  OptimizationViews(const NetworkOptions& networkOptions = {}) : m_INetwork(INetwork::Create(networkOptions)) {}
22  OptimizationViews(const OptimizationViews&) = delete;
26 
28  {
29  /// Subgraph of Layers from the original graph which should be replaced
31 
32  /// A subgraph of new layers which will replace layers in m_SubstitutableSubgraph
34  };
35 
36  using Subgraphs = std::vector<SubgraphView>;
37  using Substitutions = std::vector<SubstitutionPair>;
38 
39  void AddSubstitution(SubstitutionPair&& substitution)
40  {
41  m_SuccesfulOptimizations.emplace_back(substitution);
42  }
43 
45  {
46  m_FailedOptimizations.emplace_back(subgraph);
47  }
48 
50  {
51  m_UntouchedSubgraphs.emplace_back(subgraph);
52  }
53 
54  const Substitutions& GetSubstitutions() const { return m_SuccesfulOptimizations; }
55  const Subgraphs& GetFailedSubgraphs() const { return m_FailedOptimizations; }
56  const Subgraphs& GetUntouchedSubgraphs() const { return m_UntouchedSubgraphs; }
57 
58  Substitutions& GetSubstitutions() { return m_SuccesfulOptimizations; }
59  Subgraphs& GetFailedSubgraphs() { return m_FailedOptimizations; }
60  Subgraphs& GetUntouchedSubgraphs() { return m_UntouchedSubgraphs; }
61 
62  bool Validate(const SubgraphView& originalSubgraph) const;
63 
64  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("GetGraph is deprecated. Use GetINetwork instead.", "23.08")
65  Graph& GetGraph() { return m_Graph; }
66 
67  INetwork* GetINetwork() { return m_INetwork.get(); }
68  INetwork& GetINetworkRef() { return *m_INetwork; }
69 
70 private:
71  Substitutions m_SuccesfulOptimizations; ///< Proposed substitutions from successful optimizations
72  Subgraphs m_FailedOptimizations; ///< Subgraphs from the original subgraph which cannot be supported
73  Subgraphs m_UntouchedSubgraphs; ///< Subgraphs from the original subgraph which remain unmodified
74 
75  /// Graph object used only as a container for any layer generated by the optimization process
76  Graph m_Graph;
77 
78  /// INetworkPtr object used only as a container for any layer generated by the optimization process
79  /// Also, can use to AddPrecompiledLayer to the SubstitutionPair
80  /// Use in favour of m_Graph which depreciates in 23.08
81  INetworkPtr m_INetwork = INetwork::Create();
82 };
83 
84 } //namespace armnn
armnn::OptimizationViews::GetINetwork
INetwork * GetINetwork()
Definition: OptimizationViews.hpp:67
armnn::OptimizationViews::GetFailedSubgraphs
Subgraphs & GetFailedSubgraphs()
Definition: OptimizationViews.hpp:59
SubgraphView.hpp
armnn::OptimizationViews::SubstitutionPair::m_ReplacementSubgraph
SubgraphView m_ReplacementSubgraph
A subgraph of new layers which will replace layers in m_SubstitutableSubgraph.
Definition: OptimizationViews.hpp:33
armnn::OptimizationViews::Subgraphs
std::vector< SubgraphView > Subgraphs
Definition: OptimizationViews.hpp:36
armnn::OptimizationViews::Substitutions
std::vector< SubstitutionPair > Substitutions
Definition: OptimizationViews.hpp:37
armnn::OptimizationViews::GetINetworkRef
INetwork & GetINetworkRef()
Definition: OptimizationViews.hpp:68
armnn::OptimizationViews::GetUntouchedSubgraphs
Subgraphs & GetUntouchedSubgraphs()
Definition: OptimizationViews.hpp:60
ARMNN_DEPRECATED_MSG_REMOVAL_DATE
#define ARMNN_DEPRECATED_MSG_REMOVAL_DATE(message, removed_in_release)
Definition: Deprecated.hpp:44
armnn::OptimizationViews::OptimizationViews
OptimizationViews(const NetworkOptions &networkOptions={})
Definition: OptimizationViews.hpp:21
armnn::OptimizationViews::AddSubstitution
void AddSubstitution(SubstitutionPair &&substitution)
Definition: OptimizationViews.hpp:39
INetwork.hpp
armnn
Copyright (c) 2021 ARM Limited and Contributors.
Definition: 01_00_quick_start.dox:6
armnn::OptimizationViews::AddFailedSubgraph
void AddFailedSubgraph(SubgraphView &&subgraph)
Definition: OptimizationViews.hpp:44
armnn::OptimizationViews
Definition: OptimizationViews.hpp:18
armnn::NetworkOptions
std::vector< BackendOptions > NetworkOptions
Definition: BackendOptions.hpp:16
armnn::OptimizationViews::operator=
OptimizationViews & operator=(const OptimizationViews &)=delete
armnn::OptimizationViews::Validate
bool Validate(const SubgraphView &originalSubgraph) const
Definition: OptimizationViews.cpp:11
armnn::OptimizationViews::AddUntouchedSubgraph
void AddUntouchedSubgraph(SubgraphView &&subgraph)
Definition: OptimizationViews.hpp:49
armnn::SubgraphView
The SubgraphView class represents a subgraph of a Graph.
Definition: SubgraphView.hpp:31
armnn::OptimizationViews::GetUntouchedSubgraphs
const Subgraphs & GetUntouchedSubgraphs() const
Definition: OptimizationViews.hpp:56
armnn::OptimizationViews::GetFailedSubgraphs
const Subgraphs & GetFailedSubgraphs() const
Definition: OptimizationViews.hpp:55
armnn::INetwork::Create
static INetworkPtr Create(const NetworkOptions &networkOptions={})
Definition: Network.cpp:452
armnn::Graph
Definition: Graph.hpp:30
armnn::OptimizationViews::SubstitutionPair
Definition: OptimizationViews.hpp:27
armnn::OptimizationViews::GetSubstitutions
Substitutions & GetSubstitutions()
Definition: OptimizationViews.hpp:58
armnn::INetwork
Main network class which provides the interface for building up a neural network.
Definition: INetwork.hpp:260
armnn::OptimizationViews::GetGraph
Graph & GetGraph()
Definition: OptimizationViews.hpp:65
armnn::INetworkPtr
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
Definition: INetwork.hpp:252
armnn::OptimizationViews::GetSubstitutions
const Substitutions & GetSubstitutions() const
Definition: OptimizationViews.hpp:54
armnn::OptimizationViews::SubstitutionPair::m_SubstitutableSubgraph
SubgraphView m_SubstitutableSubgraph
Subgraph of Layers from the original graph which should be replaced.
Definition: OptimizationViews.hpp:30
BackendOptions.hpp
Graph.hpp
Deprecated.hpp