Aggregates requests to apply a functor (WF) on the element (Elem). More...
Public Member Functions | |
aggregator_apply_impl (Cont *pc, size_t max_msg_sz=16384) | |
void | flush (void) |
void | flush (size_t i) |
void | local_flush (void) |
size_t | target_location (Elem const &x) const |
Returns the ID of the location where the specified element is stored. More... | |
void | add (Elem const &x) |
Adds an element to the aggregator. More... | |
void | add (Elem const &x, size_t loc) |
Adds an element to the aggregator, when the target location is given. More... | |
Cont * | container (void) |
void | manual_destruct (void) |
Flush all queues that are not empty. | |
Public Types | |
typedef aggregator_base< Elem, Cont, Derived > | base_type |
Public Attributes | |
WF | m_wf |
Protected Attributes | |
std::vector< std::vector< Elem > > | m_send_queue |
Container for storing requests to each location. | |
std::vector< size_t > | m_loc_ids |
Container storing a random shuffling for all location-ids. Shuffling the location-ids provides better performance by easing network traffic. | |
Cont * | m_pc |
Pointer to the container where requests will be executed. | |
size_t | m_max_msg_aggregate_sz |
Maximum number of requests that will be aggregated. | |
size_t | m_loc_id |
The ID of this location. | |
Aggregates requests to apply a functor (WF) on the element (Elem).
WF is provided with a pointer to the graph and an element.
Elem | The type of the user-requests being aggregated. |
Cont | The type of the container (graphs). |
WF | The type of the functor to execute on (graphs). |
Derived | The most derived type for CRTP. |
|
inherited |
Returns the ID of the location where the specified element is stored.
Derived classes may chose to overwrite this method to provide a suitable method to find what the element is. By default, the element GID is provided by the .target() method.
|
inherited |
Adds an element to the aggregator.
This will trigger a flush if the queue for the target location has exceeded the maximum message size.
|
inherited |
Adds an element to the aggregator, when the target location is given.
This will trigger a flush if the queue for the target location has exceeded the maximum message size.
x | The element to send. |
loc | The location to send the element to. |