|
Hedgehog
0.0.0
A library to generate hybrid pipeline workflow systems
|
Sender for nodes possessing a queue of data. More...
#include "core_queue_sender.h"


Public Member Functions | |
| CoreQueueSender (std::string_view const &name, NodeType const type, size_t const numberThreads) | |
| CoreQueueSender constructor. More... | |
| ~CoreQueueSender () override | |
| CoreQueueSender destructor. | |
| virtual std::shared_ptr< std::set< CoreQueueReceiver< NodeOutput > * > > const & | destinations () const |
| Destination accessor. More... | |
| void | addReceiver (CoreReceiver< NodeOutput > *receiver) override |
| Add a receiver to the set of receivers. More... | |
| void | removeReceiver (CoreReceiver< NodeOutput > *receiver) override |
| Remove a receiver from the set of receivers. More... | |
| void | sendAndNotify (std::shared_ptr< NodeOutput > ptr) final |
| Send a data to the list of destinations, and notify them. More... | |
| void | visit (AbstractPrinter *printer) override |
| Special visit method for a CoreQueueSender, printing an edge. More... | |
| std::set< CoreSender< NodeOutput > * > | getSenders () override |
| Get inner CoreSender i.e. this. More... | |
| void | copyInnerStructure (CoreQueueSender< NodeOutput > *rhs) |
| Copy the inner structure of a CoreQueueSender (destinations, and notifier) More... | |
Public Member Functions inherited from hh::core::CoreSender< NodeOutput > | |
| CoreSender (std::string_view const &name, NodeType const type, size_t const numberThreads) | |
| CoreSender constructor. More... | |
| ~CoreSender () override | |
| CoreSender destructor. | |
| void | duplicateEdge (CoreNode *duplicateNode, std::map< CoreNode *, std::shared_ptr< CoreNode >> &correspondenceMap) override |
| Duplicate all the edges from this to it's copy duplicateNode. More... | |
Public Member Functions inherited from hh::core::CoreNotifier | |
| CoreNotifier ()=delete | |
| Deleted default constructor. | |
| CoreNotifier (std::string_view const &name, NodeType const type, size_t const numberThreads) | |
| Notifier constructor. More... | |
| ~CoreNotifier () override | |
| Notifier destructor. | |
Public Member Functions inherited from hh::core::CoreNode | |
| CoreNode ()=delete | |
| Deleted default constructor. | |
| CoreNode (std::string_view const &name, NodeType const type, size_t numberThreads) | |
| Core node only constructor. More... | |
| virtual | ~CoreNode () |
| Default virtual destructor. | |
| virtual std::shared_ptr< CoreNode > | clone ()=0 |
| Virtual constructor for copy. More... | |
| virtual std::string | id () const |
| Unique Id accessor. More... | |
| virtual std::vector< std::pair< std::string, std::string > > | ids () const |
| Input node ids [nodeId, nodeIdCluster] accessor. More... | |
| std::string_view const & | name () const |
| Node name accessor. More... | |
| NodeType | type () const |
| Node type accessor. More... | |
| bool | isInside () const |
| Node inside property accessor. More... | |
| bool | hasBeenRegistered () const |
| Node registration property accessor. More... | |
| CoreNode * | coreClusterNode () const |
| Main cluster core node link to this node accessor. More... | |
| int | threadId () const |
| Thread id accessor. More... | |
| size_t | numberThreads () const |
| Number of threads associated accessor. More... | |
| CoreNode * | belongingNode () const |
| Belonging node accessor. More... | |
| std::shared_ptr< std::multimap< CoreNode *, std::shared_ptr< CoreNode > > > const & | insideNodes () const |
| Inside node accessor. More... | |
| std::shared_ptr< std::multimap< CoreNode *, std::shared_ptr< CoreNode > > > & | insideNodes () |
| Inside nodes accessor. More... | |
| std::chrono::duration< uint64_t, std::micro > const & | executionTime () const |
| Execution time accessor. More... | |
| std::chrono::duration< uint64_t, std::micro > const & | waitTime () const |
| Wait time accessor. More... | |
| std::chrono::duration< uint64_t, std::micro > const & | memoryWaitTime () const |
| Memory wait time accessor. More... | |
| bool | isInCluster () const |
| In cluster property accessor. More... | |
| bool | isActive () const |
| Is active property accessor. More... | |
| bool | isCudaRelated () const |
| Is related to CUDA, used to have a green background on the dot file. More... | |
| virtual int | graphId () |
| Graph id accessor. More... | |
| virtual int | deviceId () |
| Device id accessor. More... | |
| virtual std::chrono::duration< uint64_t, std::micro > | maxExecutionTime () const |
| Maximum execution time accessor. More... | |
| virtual std::chrono::duration< uint64_t, std::micro > | minExecutionTime () const |
| Minimum execution time accessor. More... | |
| virtual std::chrono::duration< uint64_t, std::micro > | maxWaitTime () const |
| Maximum waiting time accessor. More... | |
| virtual std::chrono::duration< uint64_t, std::micro > | minWaitTime () const |
| Minimum waiting time accessor. More... | |
| std::chrono::time_point< std::chrono::high_resolution_clock > const & | creationTimeStamp () const |
| Creation timestamp accessor. More... | |
| std::chrono::time_point< std::chrono::high_resolution_clock > const & | startExecutionTimeStamp () const |
| Execution start timestamp accessor. More... | |
| std::chrono::duration< uint64_t, std::micro > const & | creationDuration () const |
| Creation duration accessor. More... | |
| std::chrono::duration< uint64_t, std::micro > const & | executionDuration () const |
| Execution duration accessor. More... | |
| std::chrono::duration< uint64_t, std::micro > | meanExecTimeCluster () const |
| Compute and return the mean execution time for all tasks in the node cluster. More... | |
| std::chrono::duration< uint64_t, std::micro > | meanWaitTimeCluster () const |
| Compute and return the mean wait time for all tasks in the node cluster. More... | |
| std::chrono::duration< uint64_t, std::micro > | meanMemoryWaitTimeCluster () const |
| Compute and return the mean memory wait time for all tasks in the node cluster. More... | |
| uint64_t | stdvExecTimeCluster () const |
| Compute and return the standard deviation execution time for all tasks in the node cluster. More... | |
| uint64_t | stdvWaitTimeCluster () const |
| Compute and return the standard deviation wait time for all tasks in the node cluster. More... | |
| uint64_t | stdvMemoryWaitTimeCluster () const |
| Compute and return the standard deviation memory wait time for all tasks in the node cluster. More... | |
| std::pair< uint64_t, uint64_t > | minmaxWaitTimeCluster () const |
| Compute and return the min and max wait time for all tasks in the node cluster. More... | |
| std::pair< uint64_t, uint64_t > | minmaxMemoryWaitTimeCluster () const |
| Compute and return the min and max memory wait time for all tasks in the node cluster. More... | |
| std::pair< uint64_t, uint64_t > | minmaxExecTimeCluster () const |
| Compute and return the min and max execution time for all tasks in the node cluster. More... | |
| size_t | numberActiveThreadInCluster () const |
| Compute and return the number of active nodes in a cluster. More... | |
| virtual std::string | extraPrintingInformation () |
| Extra printing information accessor. More... | |
| void | startExecutionTimeStamp (std::chrono::time_point< std::chrono::high_resolution_clock > const &startExecutionTimeStamp) |
| Execution timestamp setter. More... | |
| virtual void | deviceId (int deviceId) |
| Device id setter. More... | |
| virtual void | setInside () |
| Set the node as inside, (inside a graph) | |
| void | setInCluster () |
| Set the task as part of a cluster. | |
| void | threadId (uint8_t threadId) |
| Set the thread id. More... | |
| void | coreClusterNode (CoreNode *coreClusterNode) |
| Set the main cluster node to associate to this node. More... | |
| void | name (std::string_view const &name) |
| Name node setter. More... | |
| void | numberThreads (size_t numberThreads) |
| Number of threads setter. More... | |
| void | belongingNode (CoreNode *belongingNode) |
| Belonging node setter. More... | |
| void | hasBeenRegistered (bool hasBeenRegistered) |
| Has been registered property setter. More... | |
| void | isActive (bool isActive) |
| Is active property setter. More... | |
| void | isCudaRelated (bool isCudaRelated) |
| Is CUDA related property setter. More... | |
| void | isInside (bool isInside) |
| Set the node as being inside another one. More... | |
| void | creationDuration (std::chrono::duration< uint64_t, std::micro > const &creationDuration) |
| Creation duration setter. More... | |
| void | executionDuration (std::chrono::duration< uint64_t, std::micro > const &executionDuration) |
| Execution duration setter. More... | |
| void | incrementWaitForMemoryDuration (std::chrono::duration< uint64_t, std::micro > const &memoryWait) |
| Add wait for memory duration to total duration. More... | |
| virtual void | preRun () |
| Method defining what to do before the run. | |
| virtual void | run () |
| Run method, main execution. | |
| virtual void | postRun () |
| Method defining what to do after the run. | |
| virtual void | createCluster (std::shared_ptr< std::multimap< CoreNode *, std::shared_ptr< CoreNode >>> &) |
| Define how to create a cluster for the node, by default do nothing. | |
| virtual void | joinThreads () |
| Define what is done when the thread is joined. | |
| virtual behavior::Node * | node ()=0 |
| User's node accessor. More... | |
| virtual std::set< CoreSlot * > | getSlots ()=0 |
| Slots accessor for the node. More... | |
| void | removeInsideNode (CoreNode *coreNode) |
| Remove a node from the registered inside nodes. More... | |
| void | copyInnerStructure (CoreNode *rhs) |
| Copy inner structure from rhs nodes to this. More... | |
Public Member Functions inherited from hh::core::CoreQueueNotifier | |
| CoreQueueNotifier (std::string_view const &name, NodeType const type, size_t const numberThreads) | |
| CoreQueueNotifier constructor. More... | |
| ~CoreQueueNotifier () override | |
| CoreQueueNotifier destructor. | |
| std::shared_ptr< std::set< CoreSlot * > > const & | slots () const |
| Connected slots accessor. More... | |
| void | addSlot (CoreSlot *slot) override |
| Add a slot to the set of connected slots. More... | |
| void | removeSlot (CoreSlot *slot) override |
| Remove a slot from the set of connected slots. More... | |
| void | notifyAllTerminated () override |
| Notify all slots that the node is terminated. | |
| void | copyInnerStructure (CoreQueueNotifier *rhs) |
| Copy the inner structure of the notifier (set of slots and connections) More... | |
Protected Member Functions | |
| void | duplicateEdge (CoreNode *duplicateNode, std::map< CoreNode *, std::shared_ptr< CoreNode >> &correspondenceMap) override |
| Duplicate all the edges from this to it's copy duplicateNode. More... | |
Protected Member Functions inherited from hh::core::CoreNode | |
| void | addUniqueInsideNode (const std::shared_ptr< CoreNode > &coreNode) |
| Add a node to the inside nodes. More... | |
| void | incrementWaitDuration (std::chrono::duration< uint64_t, std::micro > const &wait) |
| Increment wait duration. More... | |
| void | incrementExecutionDuration (std::chrono::duration< uint64_t, std::micro > const &exec) |
| Increment execution duration. More... | |
Private Member Functions | |
| void | connectSenderToReceiverDuplication (CoreNode *coreNodeSender, CoreNode *coreNodeReceiver) |
| Connect coreNodeSender to a coreNodeReceiver, connect for data transfer and signal handling. More... | |
Private Attributes | |
| std::shared_ptr< std::set< CoreQueueReceiver< NodeOutput > * > > | destinations_ = nullptr |
| Set of receivers linked. | |
Sender for nodes possessing a queue of data.
| NodeOutput | Node output type |
Definition at line 34 of file core_queue_sender.h.
|
inline |
CoreQueueSender constructor.
| name | Node's name |
| type | Node's type |
| numberThreads | Node's number of thread |
Definition at line 42 of file core_queue_sender.h.
|
inlineoverridevirtual |
Add a receiver to the set of receivers.
| receiver | CoreReceiver to add |
Implements hh::core::CoreSender< NodeOutput >.
Reimplemented in hh::core::CoreExecutionPipeline< GraphOutput, GraphInputs... >.
Definition at line 60 of file core_queue_sender.h.

|
inlineprivate |
Connect coreNodeSender to a coreNodeReceiver, connect for data transfer and signal handling.
| coreNodeSender | the sender |
| coreNodeReceiver | the receiver |
Definition at line 168 of file core_queue_sender.h.

|
inline |
Copy the inner structure of a CoreQueueSender (destinations, and notifier)
| rhs | CoreQueueSender to copy to this |
Definition at line 127 of file core_queue_sender.h.

|
inlinevirtual |
Destination accessor.
Definition at line 54 of file core_queue_sender.h.

|
inlineoverrideprotectedvirtual |
Duplicate all the edges from this to it's copy duplicateNode.
| duplicateNode | Node to connect |
| correspondenceMap | Correspondence map from base node to copy |
Implements hh::core::CoreNode.
Definition at line 137 of file core_queue_sender.h.

|
inlineoverridevirtual |
Get inner CoreSender i.e. this.
Implements hh::core::CoreSender< NodeOutput >.
Reimplemented in hh::core::CoreExecutionPipeline< GraphOutput, GraphInputs... >.
Definition at line 123 of file core_queue_sender.h.

|
inlineoverridevirtual |
Remove a receiver from the set of receivers.
| receiver | CoreReceiver to remove |
Implements hh::core::CoreSender< NodeOutput >.
Definition at line 78 of file core_queue_sender.h.
|
inlinefinalvirtual |
Send a data to the list of destinations, and notify them.
| ptr | Data send to all CoreQueueReceiver |
Implements hh::core::CoreSender< NodeOutput >.
Definition at line 96 of file core_queue_sender.h.
|
inlineoverridevirtual |
Special visit method for a CoreQueueSender, printing an edge.
| printer | Printer visitor to print the CoreQueueSender |
Implements hh::core::CoreNode.
Reimplemented in hh::core::CoreExecutionPipeline< GraphOutput, GraphInputs... >, hh::core::CoreTask< GraphOutput, GraphInputs... >, and hh::core::CoreTask< TaskOutput, TaskInputs... >.
Definition at line 107 of file core_queue_sender.h.
