ArmNN
 25.11
Loading...
Searching...
No Matches
SubgraphViewSelector.hpp
Go to the documentation of this file.
1//
2// Copyright © 2017, 2023 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#pragma once
6
8#include <functional>
9#include <memory>
10
11namespace armnn
12{
13
14class Layer;
15class Graph;
16
17/// Algorithm that splits a Graph into Subgraphs based on a filtering of layers (e.g. which layers are appropriate for
18/// a certain backend). The resulting subgraphs are guaranteed to be form a DAG (i.e. there are no dependency loops).
19///
20/// The algorithm aims to produce as few subgraphs as possible.
21class SubgraphViewSelector final
22{
23public:
24 using Subgraphs = std::vector<SubgraphView::SubgraphViewPtr>;
25 using LayerSelectorFunction = std::function<bool(const Layer&)>;
26
27 /// Selects subgraphs from a graph based on the selector function and the algorithm.
28 /// Since the Subgraphs object returns modifiable pointers to the input and output slots of the graph:
29 /// 1) the graph/sub-graph cannot be const
30 /// 2) the caller needs to make sure that the Subgraphs lifetime is shorter than the parent graph's
31 static Subgraphs SelectSubgraphs(Graph& graph, const LayerSelectorFunction& selector);
32 static Subgraphs SelectSubgraphs(SubgraphView& subgraph, const LayerSelectorFunction& selector);
33
34private:
35 // this is a utility class, don't construct or copy
36 SubgraphViewSelector() = delete;
37 SubgraphViewSelector(const SubgraphViewSelector&) = delete;
38 SubgraphViewSelector & operator=(const SubgraphViewSelector&) = delete;
39};
40
41} // namespace armnn
The SubgraphView class represents a subgraph of a Graph.
std::function< bool(const Layer &)> LayerSelectorFunction
static Subgraphs SelectSubgraphs(Graph &graph, const LayerSelectorFunction &selector)
Selects subgraphs from a graph based on the selector function and the algorithm.
std::vector< SubgraphView::SubgraphViewPtr > Subgraphs
Copyright (c) 2021 ARM Limited and Contributors.