5#ifdef NF_WITH_MPI_SUPPORT
16#ifdef NF_WITH_MPI_SUPPORT
33 MPIInit(
int argc,
char** argv)
35#ifdef NF_REQUIRE_MPI_THREAD_SUPPORT
37 MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided);
39 provided == MPI_THREAD_MULTIPLE,
"The MPI library does not have full thread support"
42 MPI_Init(&argc, &argv);
49 ~MPIInit() { MPI_Finalize(); }
66 MPIEnvironment(MPI_Comm commGroup = MPI_COMM_WORLD) : communicator(commGroup)
74 ~MPIEnvironment() =
default;
81 size_t sizeRank()
const {
return static_cast<size_t>(mpi_size); }
88 size_t rank()
const {
return static_cast<size_t>(mpi_rank); }
95 MPI_Comm comm()
const {
return communicator; }
99 MPI_Comm communicator {MPI_COMM_NULL};
106 void updateRankData()
108 NF_ASSERT(communicator != MPI_COMM_NULL,
"Invalid communicator, is null.");
109 MPI_Comm_rank(communicator, &mpi_rank);
110 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.