[MPI] Add nonblocking communication and a uniform MPI data model
This MR adds nonblocking communication methods to CollectiveCommunication<MPI_Comm>
.
Furthermore we introduced a class MPIData
that stores an object or a reference and provides information for sending and receiving the object or reference (pointer, length, MPI_Datatype
). That works with objects that are represented consecutively in memory (e.g. std::string
, std:::vector
, Dune::DynamicVector
), but could be extended for generic datatypes e.g. used with serialization.
The MPIData
object is stored within the MPIFuture
to ensure that the object stays alive until the communication is complete (does not work with references, of course).
For examples see mpifuturetest.cc.
TODO:
-
Add fallback methods to CollectiveCommunication<void>
-
Add nonblocking MPI benchmark
Edited by Nils-Arne Dreier