|
| 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.