diff options
author | Matteo Martincigh <matteo.martincigh@arm.com> | 2019-05-09 12:46:16 +0100 |
---|---|---|
committer | Matteo Martincigh <matteo.martincigh@arm.com> | 2019-05-10 10:51:04 +0000 |
commit | 8492433df5eac916c4b7e0695bce63e222a564d4 (patch) | |
tree | 426a56a23bc6b5b8bcfaa74c41919c7ef2e02af0 /src/backends/backendsCommon | |
parent | f3d102114a6f837f40400c4de50915abc488f3a5 (diff) | |
download | armnn-8492433df5eac916c4b7e0695bce63e222a564d4.tar.gz |
IVGCVSW-3030 Refactor code and fix OptimizeSubgraphView
* Refactored the Optimizer code for readibility, in view of
upcoming changes
* Rename one of the ISubgraphViewConverter interface methods to
give it a more meaningful name
* Improved the OptimizationViews class, added comments and
useful funtion overloads
* Fixed an error in the default implementationof the new
OptimizeSubgraphView method in IBackendInternal
Change-Id: I683a56d562aa093bac06f0e83fb13e144ed81485
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
Diffstat (limited to 'src/backends/backendsCommon')
-rw-r--r-- | src/backends/backendsCommon/IBackendInternal.hpp | 10 | ||||
-rw-r--r-- | src/backends/backendsCommon/OptimizationViews.hpp | 16 |
2 files changed, 17 insertions, 9 deletions
diff --git a/src/backends/backendsCommon/IBackendInternal.hpp b/src/backends/backendsCommon/IBackendInternal.hpp index 5316f68009..3d94d6e9d9 100644 --- a/src/backends/backendsCommon/IBackendInternal.hpp +++ b/src/backends/backendsCommon/IBackendInternal.hpp @@ -59,7 +59,7 @@ public: // @deprecated Use "OptimizationViews OptimizeSubgraphView(const SubgraphView&);" instead. virtual SubgraphViewUniquePtr OptimizeSubgraphView(const SubgraphView& subgraph, bool& optimizationAttempted) const { - optimizationAttempted=false; + optimizationAttempted = false; return nullptr; } @@ -67,11 +67,11 @@ public: // Override this method with a custom optimization implementation. virtual OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const { - bool attempted=false; - SubgraphViewUniquePtr optSubgraph = OptimizeSubgraphView(subgraph, attempted); + bool optimizationAttempted = false; + SubgraphViewUniquePtr optSubgraph = OptimizeSubgraphView(subgraph, optimizationAttempted); OptimizationViews result; - if (!attempted) + if (!optimizationAttempted) { result.AddUntouchedSubgraph(SubgraphView(subgraph)); } @@ -79,7 +79,7 @@ public: { if (optSubgraph) { - result.AddSubstituion({*optSubgraph.get(), subgraph}); + result.AddSubstituion({subgraph, SubgraphView(*optSubgraph.get())}); } else { diff --git a/src/backends/backendsCommon/OptimizationViews.hpp b/src/backends/backendsCommon/OptimizationViews.hpp index 14296f0704..e96c11aaba 100644 --- a/src/backends/backendsCommon/OptimizationViews.hpp +++ b/src/backends/backendsCommon/OptimizationViews.hpp @@ -8,6 +8,7 @@ namespace armnn { + class OptimizationViews { public: @@ -44,18 +45,25 @@ public: m_UntouchedSubgraphs.emplace_back(subgraph); } - Substitutions GetSubstitutions() const { return m_SuccesfulOptimizations; } - Subgraphs GetFailedSubgraphs() const { return m_FailedOptimizations; } - Subgraphs GetUntouchedSubgraphs() const { return m_UntouchedSubgraphs; } + const Substitutions& GetSubstitutions() const { return m_SuccesfulOptimizations; } + const Subgraphs& GetFailedSubgraphs() const { return m_FailedOptimizations; } + const Subgraphs& GetUntouchedSubgraphs() const { return m_UntouchedSubgraphs; } + + Substitutions& GetSubstitutions() { return m_SuccesfulOptimizations; } + Subgraphs& GetFailedSubgraphs() { return m_FailedOptimizations; } + Subgraphs& GetUntouchedSubgraphs() { return m_UntouchedSubgraphs; } + bool Validate(const SubgraphView& originalSubgraph) const; - Graph& GetGraph() { return m_Graph; }; + Graph& GetGraph() { return m_Graph; } private: Substitutions m_SuccesfulOptimizations; ///< Proposed substitutions from successful optimizations Subgraphs m_FailedOptimizations; ///< Subgraphs from the original subgraph which cannot be supported Subgraphs m_UntouchedSubgraphs; ///< Subgraphs from the original subgraph which remain unmodified + /// Graph object used only as a container for any layer generated by the optimization process Graph m_Graph; }; + } //namespace armnn |