Compute Library
 22.11
Stream.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018-2020 Arm Limited.
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to
8  * deal in the Software without restriction, including without limitation the
9  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10  * sell copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all
14  * copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24 #ifndef ARM_COMPUTE_GRAPH_STREAM_H
25 #define ARM_COMPUTE_GRAPH_STREAM_H
26 
30 
34 
35 namespace arm_compute
36 {
37 namespace graph
38 {
39 namespace frontend
40 {
41 // Forward Declarations
42 class ILayer;
43 
44 /** Stream frontend class to construct simple graphs in a stream fashion */
45 class Stream final : public IStream
46 {
47 public:
48  /** Constructor
49  *
50  * @param[in] id Stream id
51  * @param[in] name Stream name
52  */
53  Stream(size_t id, std::string name);
54  /** Prevent instances of this class from being copied (As this class contains pointers) */
55  Stream(const Stream &) = delete;
56  /** Prevent instances of this class from being copied (As this class contains pointers) */
57  Stream &operator=(const Stream &) = delete;
58  /** Finalizes the stream for an execution target
59  *
60  * @param[in] target Execution target
61  * @param[in] config (Optional) Graph configuration to use
62  */
63  void finalize(Target target, const GraphConfig &config);
64  /** Executes the stream **/
65  void run();
66 
67  // Inherited overridden methods
68  void add_layer(ILayer &layer) override;
69  Graph &graph() override;
70  const Graph &graph() const override;
71 
72 private:
73  //Important: GraphContext must be declared *before* the GraphManager because the GraphManager
74  //allocates resources from the context and therefore needs to be destroyed before the context during clean up.
75  GraphContext _ctx; /**< Graph context to use */
76  GraphManager _manager; /**< Graph manager */
77  Graph _g; /**< Internal graph representation of the stream */
78 };
79 } // namespace frontend
80 } // namespace graph
81 } // namespace arm_compute
82 #endif /* ARM_COMPUTE_GRAPH_STREAM_H */
Stream(size_t id, std::string name)
Constructor.
Definition: Stream.cpp:35
Graph configuration structure Device target types.
Definition: Types.h:84
void run()
Executes the stream.
Definition: Stream.cpp:47
Copyright (c) 2017-2022 Arm Limited.
Graph manager class.
Definition: GraphManager.h:45
const char * name
Graph class.
Definition: Graph.h:53
void add_layer(ILayer &layer) override
Adds a layer to the stream.
Definition: Stream.cpp:52
void finalize(Target target, const GraphConfig &config)
Finalizes the stream for an execution target.
Definition: Stream.cpp:40
Graph & graph() override
Returns the underlying graph.
Definition: Stream.cpp:63
Stream frontend class to construct simple graphs in a stream fashion.
Definition: Stream.h:45
Stream & operator=(const Stream &)=delete
Prevent instances of this class from being copied (As this class contains pointers) ...