diff options
Diffstat (limited to 'src/armnn/SubgraphViewSelector.hpp')
-rw-r--r-- | src/armnn/SubgraphViewSelector.hpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/armnn/SubgraphViewSelector.hpp b/src/armnn/SubgraphViewSelector.hpp new file mode 100644 index 0000000000..9d881faa7c --- /dev/null +++ b/src/armnn/SubgraphViewSelector.hpp @@ -0,0 +1,38 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include "SubgraphView.hpp" +#include <functional> +#include <memory> + +namespace armnn +{ + +class Layer; +class Graph; + +class SubgraphViewSelector final +{ +public: + using SubgraphViewPtr = std::unique_ptr<SubgraphView>; + using Subgraphs = std::vector<SubgraphViewPtr>; + using LayerSelectorFunction = std::function<bool(const Layer&)>; + + /// Selects subgraphs from a graph based on the selector function and the algorithm. + /// Since the Subgraphs object returns modifiable pointers to the input and output slots of the graph: + /// 1) the graph/sub-graph cannot be const + /// 2) the caller needs to make sure that the Subgraphs lifetime is shorter than the parent graph's + static Subgraphs SelectSubgraphs(Graph& graph, const LayerSelectorFunction& selector); + static Subgraphs SelectSubgraphs(SubgraphView& subgraph, const LayerSelectorFunction& selector); + +private: + // this is a utility class, don't construct or copy + SubgraphViewSelector() = delete; + SubgraphViewSelector(const SubgraphViewSelector&) = delete; + SubgraphViewSelector & operator=(const SubgraphViewSelector&) = delete; +}; + +} // namespace armnn |