|
void | send (channel_data buf, FMI::Utils::peer_num dest) override |
| Send data to peer with id dest, must match a recv call. More...
|
|
void | recv (channel_data buf, FMI::Utils::peer_num src) override |
| Receive data from peer with id src, must match a send call. More...
|
|
void | bcast (channel_data buf, FMI::Utils::peer_num root) override |
| Binomial tree broadcast implementation. More...
|
|
void | barrier () override |
| Calls allreduce with a (associative and commutative) NOP operation. More...
|
|
void | gather (channel_data sendbuf, channel_data recvbuf, FMI::Utils::peer_num root) override |
| Binomial tree gather. More...
|
|
void | scatter (channel_data sendbuf, channel_data recvbuf, FMI::Utils::peer_num root) override |
| Binomial tree scatter. More...
|
|
void | reduce (channel_data sendbuf, channel_data recvbuf, FMI::Utils::peer_num root, raw_function f) override |
| Calls reduce_no_order for associative and commutative functions, reduce_ltr otherwise. More...
|
|
void | allreduce (channel_data sendbuf, channel_data recvbuf, raw_function f) override |
| For associative and commutative functions, allreduce_no_order is called. Otherwise, reduce followed by bcast is used. More...
|
|
void | scan (channel_data sendbuf, channel_data recvbuf, raw_function f) override |
| For associative and commutative functions, scan_no_order is called. Otherwise, scan_ltr is called. More...
|
|
virtual void | send_object (channel_data buf, Utils::peer_num peer_id)=0 |
| Send an object to peer with ID peer_id. Needs to be implemented by the channels. More...
|
|
virtual void | recv_object (channel_data buf, Utils::peer_num peer_id)=0 |
| Receive an object from peer with ID peer_id. Needs to be implemented by the channels. More...
|
|
double | get_operation_latency (Utils::OperationInfo op_info) override |
| Performance model for collective operations, provides the latency for the given operation. More...
|
|
double | get_operation_price (Utils::OperationInfo op_info) override |
| Cost model for collective operations, provides the price for the given operation. More...
|
|
void | set_peer_id (FMI::Utils::peer_num num) |
| Helper utility to set peer id, ID needs to be set before first collective operation. More...
|
|
void | set_num_peers (FMI::Utils::peer_num num) |
| Helper utility to set number of peers, needs to be set before first collective operation. More...
|
|
void | set_comm_name (std::string communication_name) |
| Helper utility to set the communicator name, should be set before first collective operation to avoid conflicts with empty communicator name. More...
|
|
virtual void | finalize () |
| Called before communicator is destructed, can be used by channels to clean up (e.g., delete resources) More...
|
|
virtual double | get_latency (Utils::peer_num producer, Utils::peer_num consumer, std::size_t size_in_bytes)=0 |
| Performance model of an individual channel, provides latency for a simple exchange with a number of producers / consumers. More...
|
|
virtual double | get_price (Utils::peer_num producer, Utils::peer_num consumer, std::size_t size_in_bytes)=0 |
| Cost model of an individual channel, provides price for a simple exchange with a number of producers / consumers. More...
|
|
|
void | reduce_ltr (channel_data sendbuf, channel_data recvbuf, FMI::Utils::peer_num root, const raw_function &f) |
| Reduction with left-to-right evaluation, gather followed by a function evaluation on the root peer. More...
|
|
void | reduce_no_order (channel_data sendbuf, channel_data recvbuf, FMI::Utils::peer_num root, const raw_function &f) |
| Binomial tree reduction where all peers apply the function in every step. More...
|
|
void | allreduce_no_order (channel_data sendbuf, channel_data recvbuf, const raw_function &f) |
| Recursive doubling allreduce implementation. When num_peers is not a power of two, there is an additional message in the beginning and end for every peer where they send their value / receive the reduced value. More...
|
|
void | scan_ltr (channel_data sendbuf, channel_data recvbuf, const raw_function &f) |
| Linear function application / sending. More...
|
|
void | scan_no_order (channel_data sendbuf, channel_data recvbuf, const raw_function &f) |
| Binomial tree with up- and down-phase. More...
|
|
Peer-To-Peer channel type.
This class provides optimized collectives for channels where clients can address each other directly and defines the interface that these channels need to implement.