8#include <compile_time_options.h>
12#include <deal.II/base/mpi.h>
13#include <deal.II/base/utilities.h>
101 DEAL_II_ALWAYS_INLINE
inline const MPI_Comm &
104 if (global_synchronization_)
105 return world_communicator_;
107 return ensemble_communicator_;
126 const MPI_Comm &world_communicator_;
128 bool global_synchronization_;
135 int n_ensemble_ranks_;
137 MPI_Group world_group_;
138 std::vector<MPI_Group> ensemble_groups_;
139 MPI_Group ensemble_leader_group_;
141 MPI_Comm ensemble_communicator_;
142 MPI_Comm ensemble_leader_communicator_;
143 MPI_Comm peer_communicator_;
const auto & n_world_ranks() const
const auto & n_ensembles() const
const auto & ensemble_communicator() const
const auto & world_rank() const
const auto & ensemble_leader_communicator() const
const auto & world_communicator() const
const auto & peer_communicator() const
MPIEnsemble(const MPI_Comm &mpi_communicator, const int n_ensembles=1, const bool global_synchronization=true)
DEAL_II_ALWAYS_INLINE const MPI_Comm & synchronization_communicator() const
const auto & ensemble_rank() const
const auto & n_ensemble_ranks() const
const auto & global_synchronization() const
const auto & ensemble() const
#define ACCESSOR_READ_ONLY(member)
#define ACCESSOR_READ_ONLY_NO_DEREFERENCE(member)