Skip to content

WIP: Feature/convenient mpi

Hi, we propose here a more convenient interface to MPI, which implements the following features:

  • non-blocking communications using future-concept (oriented at std::future)
  • supporting exceptions
    • MPIErrors are treat by exceptions
    • extending existing MPIGuard capabilities
    • using ULFM if available
    • fallback to blackchannel approach, which is used to propagate an error state through the communicator and prevent deadlocks.
  • resource management for MPI_Comm
  • Datatypes
    • communication of dynamic datatypes that are stored in consecutive memory (e.g. std::vector)
    • MPIPack represents MPI_Pack. It can collocate objects of different types and send it within a single statement.
  • Point to point communication (blocking and nonblocking)
  • Collective communication (blocking and non-blocking)
  • Low-level wrapper for MPI_IO (File IO)
  • Low-level wrapper for MPI_Win (Remote memory access)
  • high-level methods
    • Generic ring communication
    • NeighborIndexMapping construction

Sometimes we where a little bit rough when remove old interfaces. E.g.

  • CollectiveCommunication<MPI_Comm>
  • GuardCommunicator Whats you opinion?

I'm try to put sufficient documentation in the code, please let me know where things are not clear.

I'm looking forward to comments.

Best, Nils

Merge request reports