7#ifdef NF_WITH_MPI_SUPPORT
18#ifdef NF_WITH_MPI_SUPPORT
35 MPIInit(
int argc,
char** argv)
37#ifdef NF_REQUIRE_MPI_THREAD_SUPPORT
39 MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided);
41 provided == MPI_THREAD_MULTIPLE,
"The MPI library does not have full thread support"
44 MPI_Init(&argc, &argv);
51 ~MPIInit() { MPI_Finalize(); }
68 MPIEnvironment(MPI_Comm commGroup = MPI_COMM_WORLD) : communicator(commGroup)
76 ~MPIEnvironment() =
default;
83 size_t sizeRank()
const {
return static_cast<size_t>(mpi_size); }
90 size_t rank()
const {
return static_cast<size_t>(mpi_rank); }
97 MPI_Comm comm()
const {
return communicator; }
101 MPI_Comm communicator {MPI_COMM_NULL};
108 void updateRankData()
110 NF_ASSERT(communicator != MPI_COMM_NULL,
"Invalid communicator, is null.");
111 MPI_Comm_rank(communicator, &mpi_rank);
112 MPI_Comm_size(communicator, &mpi_size);
#define NF_ASSERT(condition, message)
Macro for asserting a condition and printing an error message if the condition is false.