|
| | CoreGraph (Graph< GraphOutput, GraphInputs... > *graph, NodeType const type, std::string_view const &name, std::unique_ptr< AbstractScheduler > scheduler=std::make_unique< DefaultScheduler >()) |
| | CoreGraph constructor. More...
|
| |
| | CoreGraph (CoreGraph< GraphOutput, GraphInputs... > const &rhs) |
| | Core graph copy constructor. More...
|
| |
| std::shared_ptr< CoreNode > | clone () override |
| | Clone a core graph calling the graph copy constructor. More...
|
| |
|
| ~CoreGraph () override |
| | Graph's core default destructor.
|
| |
| behavior::Node * | node () override |
| | User graph accessor. More...
|
| |
| int | deviceId () override |
| | Device id accessor. More...
|
| |
| int | graphId () override |
| | Graph id accessor. More...
|
| |
| std::unique_ptr< std::set< CoreNode * > > const & | inputsCoreNodes () const |
| | Input node's cores accessor. More...
|
| |
| std::unique_ptr< std::set< CoreSender< GraphOutput > * > > const & | outputCoreNodes () const |
| | Output node's CoreSender accessor. More...
|
| |
| std::shared_ptr< CoreGraphSource< GraphInputs... > > const & | source () const |
| | Source accessor. More...
|
| |
| void | graphId (size_t graphId) |
| | Graph id setter. More...
|
| |
| void | deviceId (int deviceId) override |
| | Device id setter. More...
|
| |
| std::chrono::duration< uint64_t, std::micro > | maxExecutionTime () const override |
| | Compute the maximum execution time for the graph's inside nodes. More...
|
| |
| std::chrono::duration< uint64_t, std::micro > | minExecutionTime () const override |
| | Compute the minimum execution time for the graph's inside nodes. More...
|
| |
| std::chrono::duration< uint64_t, std::micro > | maxWaitTime () const override |
| | Compute the maximum wait time for the graph's inside nodes. More...
|
| |
| std::chrono::duration< uint64_t, std::micro > | minWaitTime () const override |
| | Compute the minimum wait time for the graph's inside nodes. More...
|
| |
| template<class UserDefinedSender , class UserDefinedMultiReceiver , class Output = typename UserDefinedSender::output_t, class Inputs = typename UserDefinedMultiReceiver::inputs_t, class IsSender = typename std::enable_if_t< std::is_base_of_v< behavior::Sender<Output>, UserDefinedSender > >, class IsMultiReceiver = typename std::enable_if_t< std::is_base_of_v< typename helper::HelperMultiReceiversType<Inputs>::type, UserDefinedMultiReceiver > >> |
| void | addEdge (std::shared_ptr< UserDefinedSender > from, std::shared_ptr< UserDefinedMultiReceiver > to) |
| | Add a directed edge from a compatible "from" node to "to" node. More...
|
| |
| template<class UserDefinedMultiReceiver , class InputsMR = typename UserDefinedMultiReceiver::inputs_t, class InputsG = typename behavior::MultiReceivers<GraphInputs...>::inputs_t, class isMultiReceiver = typename std::enable_if_t< std::is_base_of_v<typename helper::HelperMultiReceiversType<InputsMR>::type, UserDefinedMultiReceiver> >, class isInputCompatible = typename std::enable_if_t<traits::is_included_v<InputsMR, InputsG>>> |
| void | input (std::shared_ptr< UserDefinedMultiReceiver > inputNode) |
| | Set a node as input for the graph. More...
|
| |
| void | output (std::shared_ptr< behavior::Sender< GraphOutput >> outputNode) |
| | Set a node as output for the graph. More...
|
| |
| template<class Input , class = typename std::enable_if_t<traits::Contains<Input, GraphInputs...>::value>> |
| void | broadcastAndNotifyToAllInputs (std::shared_ptr< Input > &data) |
| | Broadcast data and notify all input nodes. More...
|
| |
|
void | setInside () override |
| | Set the graph as inside, in case of connection to another node.
|
| |
| std::vector< std::pair< std::string, std::string > > | ids () const final |
| | Get ids of input nodes (vector<pair<nodeId, nodeIdCluster>>) More...
|
| |
| void | executeGraph () |
| | Execute the graph. More...
|
| |
|
void | waitForTermination () |
| | Wait for all inside threads to join.
|
| |
|
void | finishPushingData () |
| | Notify the graph no more input data will be pushed.
|
| |
| std::shared_ptr< GraphOutput > | getBlockingResult () |
| | Get data out of the graph. More...
|
| |
| void | createCluster ([[maybe_unused]]std::shared_ptr< std::multimap< CoreNode *, std::shared_ptr< CoreNode >>> &insideNodesGraph) override |
| | Create all clusters for inside nodes and launch the threads, not gathered into insideNodesGraph. More...
|
| |
| void | visit (AbstractPrinter *printer) override |
| | Special visit method for a CoreGraph. More...
|
| |
| void | addReceiver (CoreReceiver< GraphOutput > *receiver) override |
| | Add a receiver to the graph, i.e, add a receiver to all output nodes. More...
|
| |
| void | removeReceiver (CoreReceiver< GraphOutput > *receiver) override |
| | Remove a receiver from the graph, i.e, remove a receiver from all output nodes. More...
|
| |
| void | sendAndNotify ([[maybe_unused]]std::shared_ptr< GraphOutput > ptr) override |
| | Send a data and notify receivers, not possible for a graph, throws an error in every case. More...
|
| |
| void | addSlot (CoreSlot *slot) override |
| | Add a slot to a graph, i.e, to all output nodes. More...
|
| |
| void | removeSlot (CoreSlot *slot) override |
| | Remove a slot from a graph, i.e, from all output nodes. More...
|
| |
| void | notifyAllTerminated () override |
| | Notify termination to all connected nodes, not possible for a graph, throw an error in every case. More...
|
| |
| void | addNotifier (CoreNotifier *notifier) override |
| | Add a notifier to the graph, ie, to all input nodes. More...
|
| |
| void | removeNotifier (CoreNotifier *notifier) override |
| | Remove a notifier from the graph, ie, from all input nodes. More...
|
| |
| bool | hasNotifierConnected () override |
| | Test notifier for the graph, should not be used, connection is made to the input nodes. More...
|
| |
| size_t | numberInputNodes () const override |
| | Return the number of input nodes connected, a graph should not have such a connection, throws in every case. More...
|
| |
|
void | wakeUp () override |
| | Wake up a graph, wake up all input nodes.
|
| |
| bool | waitForNotification () override |
| | A graph can't wait for notification, throws an error in all case. More...
|
| |
| std::set< CoreSender< GraphOutput > * > | getSenders () override |
| | Get the senders from the graphs, gather them from the output nodes. More...
|
| |
| std::set< CoreSlot * > | getSlots () override |
| | Get the slots from the graphs, gather them from the input nodes. More...
|
| |
|
void | joinThreads () override |
| | Join the threads managed by the graph.
|
| |
|
void | createInnerClustersAndLaunchThreads () |
| | Create inside nodes' cluster and launch the threads.
|
| |
|
void | launchThreads () |
| | Launch the threads using the graph's scheduler.
|
| |
| | CoreSender (std::string_view const &name, NodeType const type, size_t const numberThreads) |
| | CoreSender constructor. More...
|
| |
|
| ~CoreSender () override |
| | CoreSender destructor.
|
| |
| virtual void | sendAndNotify (std::shared_ptr< GraphOutput > data)=0 |
| | Interface to send and notify a data to all connected CoreReceiver. More...
|
| |
| 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...
|
| |
|
| 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.
|
| |
|
| 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::string | id () const |
| | Unique Id 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...
|
| |
| 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...
|
| |
|
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.
|
| |
| 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...
|
| |
| | CoreGraphMultiReceivers (std::string_view const &name, NodeType const type, size_t const numberThreads) |
| | CoreGraphMultiReceivers constructor. More...
|
| |
|
| ~CoreGraphMultiReceivers () override |
| | CoreGraphMultiReceivers destructor.
|
| |
| bool | receiversEmpty () final |
| | Test if all the CoreGraphMultiReceivers of the graphs (its input nodes CoreMultiReceivers) are empty. More...
|
| |
| behavior::Node * | node () override |
| | Get a node from the graph, that does not exist, throw an error in every case. More...
|
| |
| | CoreMultiReceivers (std::string_view const &name, NodeType const type, size_t const numberThreads) |
| | CoreMultiReceivers constructor. More...
|
| |
|
| ~CoreMultiReceivers () override |
| | CoreMultiReceivers destructor.
|
| |
| virtual size_t | totalQueueSize () |
| | Compute all receivers queue size. More...
|
| |
| void | removeForAllSenders (CoreNode *coreNode) |
| | Remove all coreNode's senders from this. More...
|
| |
| | CoreSlot (std::string_view const &name, NodeType const type, size_t const numberThreads) |
| | Core slot constructor. More...
|
| |
|
| ~CoreSlot () override |
| | Core Slot destructor.
|
| |
| | CoreReceiver (std::string_view const &name, NodeType const type, size_t const numberThreads) |
| | Constructor with node name, node type and number of threads for the node. More...
|
| |
|
| ~CoreReceiver () override |
| | Default destructor.
|
| |
| virtual void | addSender (CoreSender< Inputs > *sender)=0 |
| | Interface to add a CoreSender to the receiver. More...
|
| |
| virtual void | removeSender (CoreSender< Inputs > *sender)=0 |
| | Interface to remove a CoreSender from the receiver. More...
|
| |
| virtual void | receive (std::shared_ptr< Inputs > data)=0 |
| | Interface to receive a data. More...
|
| |
| virtual bool | receiverEmpty ()=0 |
| | Accessor to test emptiness on the receiver. More...
|
| |
| virtual size_t | queueSize () |
| | Interface to get the number of element to be treated by this node for this type, by default return 0. More...
|
| |
| virtual std::set< CoreReceiver< Inputs > *> | receivers ()=0 |
| | Accessor to all receivers connected to this receiver. More...
|
| |
| | CoreGraphReceiver (std::string_view const &name, NodeType const type, size_t const numberThreads) |
| | CoreGraphReceiver constructor. More...
|
| |
|
virtual | ~CoreGraphReceiver () |
| | CoreGraphReceiver destructor.
|
| |
| void | addSender (CoreSender< GraphInputs > *sender) final |
| | Add a CoreSender to the graph. More...
|
| |
| void | removeSender (CoreSender< GraphInputs > *sender) final |
| | Remove a CoreSender from the graph. More...
|
| |
| void | receive (std::shared_ptr< GraphInputs > ptr) final |
| | Define how the graph receives data for a specific type and sends the data to all input nodes. More...
|
| |
| void | addGraphReceiverInput (CoreReceiver< GraphInputs > *receiver) |
| | Register a CoreReceiver from an input node. More...
|
| |
| bool | receiverEmpty () final |
| | Test emptiness in all graph receivers. More...
|
| |
| std::set< CoreReceiver< GraphInputs > *> | receivers () override |
| | Get a set of CoreReceiver built from the input nodes. More...
|
| |
| behavior::Node * | node () override |
| | Get a node from the graph, that does not exist, throw an error in every case. More...
|
| |
| | CoreReceiver (std::string_view const &name, NodeType const type, size_t const numberThreads) |
| | Constructor with node name, node type and number of threads for the node. More...
|
| |
|
| ~CoreReceiver () override |
| | Default destructor.
|
| |
| virtual size_t | queueSize () |
| | Interface to get the number of element to be treated by this node for this type, by default return 0. More...
|
| |