![]() |
The Gaudi Framework
v28r0
|
#include <src/ExecutionFlowGraph.h>
Public Member Functions | |
AlgorithmNode (ExecutionFlowGraph &graph, unsigned int nodeIndex, const std::string &algoName, bool inverted, bool allPass, bool IOBound) | |
Constructor. More... | |
~AlgorithmNode () | |
Destructor. More... | |
void | initialize (const std::unordered_map< std::string, unsigned int > &algname_index_map) override |
Initialize. More... | |
bool | accept (IGraphVisitor &visitor) override |
void | addParentNode (DecisionNode *node) |
XXX: CF tests. Method to add a parent node. More... | |
void | addSupplierNode (AlgorithmNode *node) |
Associate an AlgorithmNode, which is a data supplier for this one. More... | |
void | addConsumerNode (AlgorithmNode *node) |
Associate an AlgorithmNode, which is a data consumer of this one. More... | |
void | attachAlgorithm (IAlgorithm *ialgo) |
Attach Algorithm representative. More... | |
const std::vector< IAlgorithm * > & | getAlgorithmRepresentatives () const |
get Algorithm representatives More... | |
const std::vector< AlgorithmNode * > & | getSupplierNodes () const |
Get all supplier nodes. More... | |
const std::vector< AlgorithmNode * > & | getConsumerNodes () const |
Get all consumer nodes. More... | |
void | addOutputDataNode (DataNode *node) |
Associate an AlgorithmNode, which is a data supplier for this one. More... | |
void | addInputDataNode (DataNode *node) |
Associate an AlgorithmNode, which is a data consumer of this one. More... | |
const std::vector< DataNode * > & | getOutputDataNodes () const |
Get all supplier nodes. More... | |
const std::vector< DataNode * > & | getInputDataNodes () const |
Get all consumer nodes. More... | |
void | setRank (float &rank) |
Set Algorithm rank. More... | |
const float & | getRank () const |
Get Algorithm rank. More... | |
const unsigned int & | getAlgoIndex () const |
XXX: CF tests. More... | |
void | setIOBound (bool value) |
Set the I/O-boundness flag. More... | |
bool | isIOBound () const |
Check if algorithm is I/O-bound. More... | |
bool | dataDependenciesSatisfied (const int &slotNum) const |
Method to check whether the Algorithm has its all data dependency satisfied. More... | |
bool | dataDependenciesSatisfied (AlgsExecutionStates &states) const |
int | updateState (AlgsExecutionStates &states, std::vector< int > &node_decisions) const override |
Method to set algos to CONTROLREADY, if possible. More... | |
bool | promoteToControlReadyState (const int &slotNum, AlgsExecutionStates &states, std::vector< int > &node_decisions) const override |
XXX: CF tests. More... | |
bool | promoteToDataReadyState (const int &slotNum, const AlgorithmNode *requestor=nullptr) const |
void | updateDecision (const int &slotNum, AlgsExecutionStates &states, std::vector< int > &node_decisions, const AlgorithmNode *requestor=nullptr) const override |
XXX: CF tests. More... | |
void | printState (std::stringstream &output, AlgsExecutionStates &states, const std::vector< int > &node_decisions, const unsigned int &recursionLevel) const override |
Print a string representing the control flow state. More... | |
![]() | |
ControlFlowNode (ExecutionFlowGraph &graph, unsigned int nodeIndex, const std::string &name) | |
Constructor. More... | |
virtual | ~ControlFlowNode () |
Destructor. More... | |
const unsigned int & | getNodeIndex () const |
XXX: CF tests. More... | |
const std::string & | getNodeName () const |
Private Attributes | |
unsigned int | m_algoIndex |
The index of the algorithm. More... | |
std::string | m_algoName |
The name of the algorithm. More... | |
bool | m_inverted |
Whether the selection result is negated or not. More... | |
bool | m_allPass |
Whether the selection result is relevant or always "pass". More... | |
std::vector< DecisionNode * > | m_parents |
XXX: CF tests. More... | |
std::vector< AlgorithmNode * > | m_suppliers |
Vectors, used in data dependencies realm AlgorithmNodes that represent algorithms producing an input needed for the algorithm. More... | |
std::vector< AlgorithmNode * > | m_consumers |
AlgorithmNodes that represent algorithms which need the output of the algorithm. More... | |
std::vector< DataNode * > | m_outputs |
Vectors, used in augmented data dependencies realm Outputs of the algorithm, represented as DataNode's. More... | |
std::vector< DataNode * > | m_inputs |
Inputs of the algorithm, represented as DataNode's. More... | |
float | m_rank |
Algorithm rank of any kind. More... | |
std::vector< IAlgorithm * > | m_representatives |
Representatives (including clones) of the node. More... | |
bool | m_isIOBound |
If an algorithm is I/O-bound (in the broad sense of Von Neumann bottleneck) More... | |
Additional Inherited Members | |
![]() | |
ExecutionFlowGraph * | m_graph |
![]() | |
std::string | stateToString (const int &stateId) const |
Translation between state id and name. More... | |
![]() | |
unsigned int | m_nodeIndex |
std::string | m_nodeName |
Definition at line 137 of file ExecutionFlowGraph.h.
|
inline |
Constructor.
Definition at line 140 of file ExecutionFlowGraph.h.
concurrency::AlgorithmNode::~AlgorithmNode | ( | ) |
Destructor.
Definition at line 207 of file ExecutionFlowGraph.cpp.
|
overridevirtual |
Implements concurrency::ControlFlowNode.
Definition at line 387 of file ExecutionFlowGraph.cpp.
|
inline |
Associate an AlgorithmNode, which is a data consumer of this one.
Definition at line 156 of file ExecutionFlowGraph.h.
void concurrency::AlgorithmNode::addInputDataNode | ( | DataNode * | node | ) |
Associate an AlgorithmNode, which is a data consumer of this one.
Definition at line 413 of file ExecutionFlowGraph.cpp.
void concurrency::AlgorithmNode::addOutputDataNode | ( | DataNode * | node | ) |
Associate an AlgorithmNode, which is a data supplier for this one.
Definition at line 406 of file ExecutionFlowGraph.cpp.
void concurrency::AlgorithmNode::addParentNode | ( | DecisionNode * | node | ) |
XXX: CF tests. Method to add a parent node.
Definition at line 399 of file ExecutionFlowGraph.cpp.
|
inline |
Associate an AlgorithmNode, which is a data supplier for this one.
Definition at line 154 of file ExecutionFlowGraph.h.
|
inline |
Attach Algorithm representative.
Definition at line 158 of file ExecutionFlowGraph.h.
bool concurrency::AlgorithmNode::dataDependenciesSatisfied | ( | const int & | slotNum | ) | const |
Method to check whether the Algorithm has its all data dependency satisfied.
Definition at line 278 of file ExecutionFlowGraph.cpp.
bool concurrency::AlgorithmNode::dataDependenciesSatisfied | ( | AlgsExecutionStates & | states | ) | const |
Definition at line 301 of file ExecutionFlowGraph.cpp.
|
inline |
XXX: CF tests.
Definition at line 180 of file ExecutionFlowGraph.h.
|
inline |
get Algorithm representatives
Definition at line 160 of file ExecutionFlowGraph.h.
|
inline |
Get all consumer nodes.
Definition at line 164 of file ExecutionFlowGraph.h.
|
inline |
Get all consumer nodes.
Definition at line 173 of file ExecutionFlowGraph.h.
|
inline |
Get all supplier nodes.
Definition at line 171 of file ExecutionFlowGraph.h.
|
inline |
Get Algorithm rank.
Definition at line 177 of file ExecutionFlowGraph.h.
|
inline |
Get all supplier nodes.
Definition at line 162 of file ExecutionFlowGraph.h.
|
overridevirtual |
Initialize.
Implements concurrency::ControlFlowNode.
Definition at line 216 of file ExecutionFlowGraph.cpp.
|
inline |
Check if algorithm is I/O-bound.
Definition at line 184 of file ExecutionFlowGraph.h.
|
overridevirtual |
Print a string representing the control flow state.
Implements concurrency::ControlFlowNode.
Definition at line 321 of file ExecutionFlowGraph.cpp.
|
overridevirtual |
XXX: CF tests.
Implements concurrency::ControlFlowNode.
Definition at line 223 of file ExecutionFlowGraph.cpp.
bool concurrency::AlgorithmNode::promoteToDataReadyState | ( | const int & | slotNum, |
const AlgorithmNode * | requestor = nullptr |
||
) | const |
Definition at line 242 of file ExecutionFlowGraph.cpp.
|
inline |
Set the I/O-boundness flag.
Definition at line 182 of file ExecutionFlowGraph.h.
|
inline |
Set Algorithm rank.
Definition at line 175 of file ExecutionFlowGraph.h.
|
overridevirtual |
XXX: CF tests.
Implements concurrency::ControlFlowNode.
Definition at line 357 of file ExecutionFlowGraph.cpp.
|
overridevirtual |
Method to set algos to CONTROLREADY, if possible.
Implements concurrency::ControlFlowNode.
Definition at line 331 of file ExecutionFlowGraph.cpp.
|
private |
The index of the algorithm.
Definition at line 209 of file ExecutionFlowGraph.h.
|
private |
The name of the algorithm.
Definition at line 211 of file ExecutionFlowGraph.h.
|
private |
Whether the selection result is relevant or always "pass".
Definition at line 215 of file ExecutionFlowGraph.h.
|
private |
AlgorithmNodes that represent algorithms which need the output of the algorithm.
Definition at line 223 of file ExecutionFlowGraph.h.
|
private |
Inputs of the algorithm, represented as DataNode's.
Definition at line 229 of file ExecutionFlowGraph.h.
|
private |
Whether the selection result is negated or not.
Definition at line 213 of file ExecutionFlowGraph.h.
|
private |
If an algorithm is I/O-bound (in the broad sense of Von Neumann bottleneck)
Definition at line 235 of file ExecutionFlowGraph.h.
|
private |
Vectors, used in augmented data dependencies realm Outputs of the algorithm, represented as DataNode's.
Definition at line 227 of file ExecutionFlowGraph.h.
|
private |
XXX: CF tests.
Definition at line 217 of file ExecutionFlowGraph.h.
|
private |
Algorithm rank of any kind.
Definition at line 231 of file ExecutionFlowGraph.h.
|
private |
Representatives (including clones) of the node.
Definition at line 233 of file ExecutionFlowGraph.h.
|
private |
Vectors, used in data dependencies realm AlgorithmNodes that represent algorithms producing an input needed for the algorithm.
Definition at line 221 of file ExecutionFlowGraph.h.