Skip to content

[MPI] Add nonblocking communication and a uniform MPI data model

Nils-Arne Dreier requested to merge feature/nonblocking_mpi into master

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

Merge request reports