From c3ba50e5e6e96ae057ccdb3761bf41a5691a53f0 Mon Sep 17 00:00:00 2001 From: Matteo Martincigh Date: Wed, 22 May 2019 14:28:16 +0100 Subject: IVGCVSW-3132 Reintroduce SubGraph definition, but deprecated * Restored old SubGraph class definition as an alias of SubgraphView for backward compatibility * Restored SubGraphUniquePtr * Restored CreateSubGraphConverter method (and the corresponding ISubGraphConverterPtr type) as a deprecated method that's been removed from the backend interface * Chaged the defautl implementation of OptimizeSubgraphView to call the deprecated OptimizeSubGraph * Changed the default implementation of OptimizeSubgraphView in the backends Change-Id: If69903926bf5ff2aae52c9b64b4572b355662757 Signed-off-by: Matteo Martincigh --- src/armnn/ISubgraphViewConverter.hpp | 7 +++++ src/armnn/SubgraphView.hpp | 5 ++++ src/backends/backendsCommon/IBackendInternal.hpp | 35 ++++++++++++++++-------- src/backends/cl/ClBackend.cpp | 10 +++---- src/backends/cl/ClBackend.hpp | 3 +- src/backends/neon/NeonBackend.cpp | 10 +++---- src/backends/neon/NeonBackend.hpp | 3 +- src/backends/reference/RefBackend.cpp | 10 +++---- src/backends/reference/RefBackend.hpp | 3 +- 9 files changed, 54 insertions(+), 32 deletions(-) diff --git a/src/armnn/ISubgraphViewConverter.hpp b/src/armnn/ISubgraphViewConverter.hpp index 4b2c10298d..34789a2b28 100644 --- a/src/armnn/ISubgraphViewConverter.hpp +++ b/src/armnn/ISubgraphViewConverter.hpp @@ -5,6 +5,8 @@ #pragma once +#include + #include #include #include @@ -23,4 +25,9 @@ public: virtual std::vector CompileNetwork() = 0; }; +/// +/// Old ISubGraphConverter definition kept for backward compatibility only. +/// +using ISubGraphConverter ARMNN_DEPRECATED_MSG("This type is no longer supported") = ISubgraphViewConverter; + } // namespace armnn diff --git a/src/armnn/SubgraphView.hpp b/src/armnn/SubgraphView.hpp index f29e0a18ae..1b9c308daa 100644 --- a/src/armnn/SubgraphView.hpp +++ b/src/armnn/SubgraphView.hpp @@ -96,4 +96,9 @@ private: Layers m_Layers; }; +/// +/// Old SubGraph definition kept for backward compatibility only. +/// +using SubGraph ARMNN_DEPRECATED_MSG("SubGraph is deprecated, use SubgraphView instead") = SubgraphView; + } // namespace armnn diff --git a/src/backends/backendsCommon/IBackendInternal.hpp b/src/backends/backendsCommon/IBackendInternal.hpp index 72214b891e..fe9d620278 100644 --- a/src/backends/backendsCommon/IBackendInternal.hpp +++ b/src/backends/backendsCommon/IBackendInternal.hpp @@ -47,33 +47,46 @@ public: using GraphUniquePtr = std::unique_ptr; using SubgraphViewUniquePtr = std::unique_ptr; - virtual IMemoryManagerUniquePtr CreateMemoryManager() const = 0; - - virtual IWorkloadFactoryPtr CreateWorkloadFactory( - const IMemoryManagerSharedPtr& memoryManager = nullptr) const = 0; - - virtual IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const = 0; - - virtual ILayerSupportSharedPtr GetLayerSupport() const = 0; + ARMNN_NO_DEPRECATE_WARN_BEGIN + using ISubGraphConverterPtr ARMNN_DEPRECATED_MSG("This type is no longer supported") + = std::unique_ptr; + using SubGraphUniquePtr ARMNN_DEPRECATED_MSG("SubGraph is deprecated, use SubgraphView instead") + = std::unique_ptr; + + ARMNN_DEPRECATED_MSG("This method is no longer supported") + virtual ISubGraphConverterPtr CreateSubGraphConverter(const std::shared_ptr& subGraph) const + { + return ISubGraphConverterPtr{}; + } ARMNN_DEPRECATED_MSG("Use \"OptimizationViews OptimizeSubgraphView(const SubgraphView&)\" instead") virtual Optimizations GetOptimizations() const = 0; ARMNN_DEPRECATED_MSG("Use \"OptimizationViews OptimizeSubgraphView(const SubgraphView&)\" instead") - virtual SubgraphViewUniquePtr OptimizeSubgraphView(const SubgraphView& subgraph, bool& optimizationAttempted) const + virtual SubGraphUniquePtr OptimizeSubGraph(const SubGraph& subGraph, bool& optimizationAttempted) const { optimizationAttempted = false; return nullptr; } + ARMNN_NO_DEPRECATE_WARN_END + + virtual IMemoryManagerUniquePtr CreateMemoryManager() const = 0; + + virtual IWorkloadFactoryPtr CreateWorkloadFactory( + const IMemoryManagerSharedPtr& memoryManager = nullptr) const = 0; + + virtual IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const = 0; + + virtual ILayerSupportSharedPtr GetLayerSupport() const = 0; - // Default implementation of OptimizeSubgraphView for backward compatibility with old API. + // Default implementation of OptimizeSubgraphView for backward compatibility with the old API. // Override this method with a custom optimization implementation. virtual OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const { bool optimizationAttempted = false; ARMNN_NO_DEPRECATE_WARN_BEGIN - SubgraphViewUniquePtr optSubgraph = OptimizeSubgraphView(subgraph, optimizationAttempted); + SubGraphUniquePtr optSubgraph = OptimizeSubGraph(subgraph, optimizationAttempted); ARMNN_NO_DEPRECATE_WARN_END OptimizationViews result; diff --git a/src/backends/cl/ClBackend.cpp b/src/backends/cl/ClBackend.cpp index 5d87d27381..332ae1e679 100644 --- a/src/backends/cl/ClBackend.cpp +++ b/src/backends/cl/ClBackend.cpp @@ -74,13 +74,13 @@ IBackendInternal::ILayerSupportSharedPtr ClBackend::GetLayerSupport() const return layerSupport; } -IBackendInternal::SubgraphViewUniquePtr ClBackend::OptimizeSubgraphView(const SubgraphView& subgraph, - bool& optimizationAttempted) const +OptimizationViews ClBackend::OptimizeSubgraphView(const SubgraphView& subgraph) const { - // Not trying to optimize the given sub-graph - optimizationAttempted = false; + OptimizationViews optimizationViews; - return SubgraphViewUniquePtr{}; + optimizationViews.AddUntouchedSubgraph(SubgraphView(subgraph)); + + return optimizationViews; } } // namespace armnn diff --git a/src/backends/cl/ClBackend.hpp b/src/backends/cl/ClBackend.hpp index 171c7d5737..12e8d8ef5a 100644 --- a/src/backends/cl/ClBackend.hpp +++ b/src/backends/cl/ClBackend.hpp @@ -28,8 +28,7 @@ public: IBackendInternal::Optimizations GetOptimizations() const override; IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override; - IBackendInternal::SubgraphViewUniquePtr OptimizeSubgraphView(const SubgraphView& subgraph, - bool& optimizationAttempted) const override; + OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const override; }; } // namespace armnn diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp index 8defac1e60..d7be844c21 100644 --- a/src/backends/neon/NeonBackend.cpp +++ b/src/backends/neon/NeonBackend.cpp @@ -74,13 +74,13 @@ IBackendInternal::ILayerSupportSharedPtr NeonBackend::GetLayerSupport() const return layerSupport; } -IBackendInternal::SubgraphViewUniquePtr NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph, - bool& optimizationAttempted) const +OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph) const { - // Not trying to optimize the given sub-graph - optimizationAttempted = false; + OptimizationViews optimizationViews; - return SubgraphViewUniquePtr{}; + optimizationViews.AddUntouchedSubgraph(SubgraphView(subgraph)); + + return optimizationViews; } } // namespace armnn diff --git a/src/backends/neon/NeonBackend.hpp b/src/backends/neon/NeonBackend.hpp index 0d03c2565e..398337f775 100644 --- a/src/backends/neon/NeonBackend.hpp +++ b/src/backends/neon/NeonBackend.hpp @@ -28,8 +28,7 @@ public: IBackendInternal::Optimizations GetOptimizations() const override; IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override; - IBackendInternal::SubgraphViewUniquePtr OptimizeSubgraphView(const SubgraphView& subgraph, - bool& optimizationAttempted) const override; + OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const override; }; } // namespace armnn diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp index d7de161dec..0a296be016 100644 --- a/src/backends/reference/RefBackend.cpp +++ b/src/backends/reference/RefBackend.cpp @@ -67,13 +67,13 @@ IBackendInternal::ILayerSupportSharedPtr RefBackend::GetLayerSupport() const return layerSupport; } -IBackendInternal::SubgraphViewUniquePtr RefBackend::OptimizeSubgraphView(const SubgraphView& subgraph, - bool& optimizationAttempted) const +OptimizationViews RefBackend::OptimizeSubgraphView(const SubgraphView& subgraph) const { - // Not trying to optimize the given sub-graph - optimizationAttempted = false; + OptimizationViews optimizationViews; - return SubgraphViewUniquePtr{}; + optimizationViews.AddUntouchedSubgraph(SubgraphView(subgraph)); + + return optimizationViews; } } // namespace armnn diff --git a/src/backends/reference/RefBackend.hpp b/src/backends/reference/RefBackend.hpp index af756e8dab..06179bd939 100644 --- a/src/backends/reference/RefBackend.hpp +++ b/src/backends/reference/RefBackend.hpp @@ -28,8 +28,7 @@ public: IBackendInternal::Optimizations GetOptimizations() const override; IBackendInternal::ILayerSupportSharedPtr GetLayerSupport() const override; - IBackendInternal::SubgraphViewUniquePtr OptimizeSubgraphView(const SubgraphView& subgraph, - bool& optimizationAttempted) const override; + OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const override; }; } // namespace armnn -- cgit v1.2.1