Skip to content
Snippets Groups Projects
  • Benjamin Cumming's avatar
    Runtime distributed context (#485) · 5fde0b00
    Benjamin Cumming authored and Sam Yates's avatar Sam Yates committed
    Move from choosing the distributed communication model from a compile time choice (the old `arb::communication::communication_policy` type) to a run time decision.
    
    * Add `arb::distributed_context` class that provides the required interface for distributed communication implementations, using type-erasure to provide value semantics.
    * Add two implementations for the distributed context: `arb::mpi_context` and `arb::local_context`.
    * Allow distribution over a user-supplied MPI communicator by providing it as an argument to `arb::mpi_context`.
    * Add `mpi_error` exception type to wrap MPI errors.
    * Move contents of the `arb::communication` namespace to the `arb` namespace.
    * Add preprocessor for-each utility `ARB_PP_FOREACH`.
    * Rewrite all examples and tests to use the new distributed context interface.
    * Add documentation for distributed context class and semantics, and update documentation for load balancer and simulation classes accordingly.
    
    Fixes #472
    5fde0b00