19#ifndef HEDGEHOG_ABSTRACT_EXECUTION_PIPELINE_H_
20#define HEDGEHOG_ABSTRACT_EXECUTION_PIPELINE_H_
22#include "../graph/graph.h"
23#include "../../behavior/copyable.h"
24#include "../../core/nodes/core_execution_pipeline.h"
25#include "../../behavior/switch/multi_switch_rules.h"
88template<
size_t Separator,
class ...AllTypes>
92 public tool::BehaviorMultiReceiversTypeDeducer_t<tool::Inputs<Separator, AllTypes...>>,
93 public tool::BehaviorMultiSwitchRulesTypeDeducer_t<tool::Inputs<Separator, AllTypes...>>,
94 public tool::BehaviorMultiSendersTypeDeducer_t<tool::Outputs<Separator, AllTypes...>> {
95#ifndef DOXYGEN_SHOULD_SKIP_THIS
100 std::shared_ptr<
Graph<Separator, AllTypes...>>
113 size_t const &numberGraphs,
114 std::string
const name =
"Execution pipeline")
116 static_cast<std::shared_ptr<
core::abstraction::NodeAbstraction>>(
117 static_cast<std::shared_ptr<
core::abstraction::NodeAbstraction> const>(
118 std::make_shared<
core::CoreExecutionPipeline<Separator, AllTypes...>>(
119 this,
graph->coreGraph_, numberGraphs,
name)))
124 AllTypes...>>(this->
core())) {}
134 std::vector<int>
const &deviceIds,
135 std::string
const name =
"Execution pipeline")
137 std::make_shared<
core::CoreExecutionPipeline<Separator, AllTypes...>>(this,
graph->coreGraph_, deviceIds,
name)
142 AllTypes...>>(this->
core())) {}
150 std::shared_ptr<
Graph<Separator, AllTypes...>>
const &
graph()
const {
Execution pipeline abstraction.
std::shared_ptr< core::CoreExecutionPipeline< Separator, AllTypes... > > const coreExecutionPipeline_
Execution Pipeline core.
void graph(std::shared_ptr< Graph< Separator, AllTypes... > > graph)
Base graph setter.
~AbstractExecutionPipeline() override=default
Default destructor.
AbstractExecutionPipeline(std::shared_ptr< Graph< Separator, AllTypes... > > const graph, size_t const &numberGraphs, std::string const name="Execution pipeline")
Create an execution pipeline that duplicates a graph, numberGraphs - 1 times. The graph id and the de...
std::shared_ptr< Graph< Separator, AllTypes... > > graph_
Original Graph that will be duplicated.
std::shared_ptr< Graph< Separator, AllTypes... > > const & graph() const
Accessor top the base graph.
AbstractExecutionPipeline(std::shared_ptr< Graph< Separator, AllTypes... > > const graph, std::vector< int > const &deviceIds, std::string const name="Execution pipeline")
Create an execution pipeline from a graph and the given device ids. If there are n device ids given,...
Hedgehog graph abstraction.
Copy interface used to copy a node when either a group of nodes is created or a node is duplicated wh...
Copyable(size_t const numberThreads)
Copyable constructor, set the number of threads for a node.
Behavior abstraction for the base node.
std::string name() const
Node's name accessor.
Node(std::shared_ptr< hh::core::abstraction::NodeAbstraction > core)
Constructor's node.
std::shared_ptr< hh::core::abstraction::NodeAbstraction > const & core() const
Core accessor.