KaMPIng 0.1.1
Flexible and (near) zero-overhead C++ bindings for MPI
|
Plugin providing an alltoallv exchange method which calls one of multiple underlying alltoallv exchange algorithms depending on the communication volume. More...
#include <alltoall_dispatch.hpp>
Public Member Functions | |
template<typename... Args> | |
auto | alltoallv_dispatch (Args... args) const |
Alltoallv exchange method which uses the communication volume to either exchange the data using GridCommunicator::alltoallv() (latency in about sqrt(comm.size())) or builtin MPI_Alltoallv (potentially linear latency). | |
void | initialize () const |
Initialized the grid communicator. If not explicitly called by the user this will be done during the first call to alltoallv_dispatch which internally uses grid communication. | |
Plugin providing an alltoallv exchange method which calls one of multiple underlying alltoallv exchange algorithms depending on the communication volume.
|
inline |
Alltoallv exchange method which uses the communication volume to either exchange the data using GridCommunicator::alltoallv() (latency in about sqrt(comm.size())) or builtin MPI_Alltoallv (potentially linear latency).
If the bottleneck send communication volume on all ranks is smaller than a given threshold (in number bytes), our grid alltoall communication is used. Otherwise we use the builtin MPI alltoallv exchange.
The following parameters are required:
The following buffers are optional:
Args | Automatically deducted template parameters. |
args | All required and any number of the optional parameters described above. |
remove comm_volume_threshold and unpacked send_counts from caller provided argument list before forwarding it underlying allotall exchanges