diff --git a/include/internal/fmpi_mpi.h b/include/internal/fmpi_mpi.h index 5de44f6cd141b4975c17237778859e2b24e9547a..b77dbbe221f4d3cda87085f9b8f7c412f79205fc 100644 --- a/include/internal/fmpi_mpi.h +++ b/include/internal/fmpi_mpi.h @@ -243,6 +243,10 @@ int fmpi_mpi_world_reduce_in_place( int fmpi_mpi_dims_create( const struct fmpi_mpi_ctx * ctx, size_t * const dim_len, size_t dim_cnt ); +/*------------------------------------------------------------------------------ + fmpi_mpi_world_size() +------------------------------------------------------------------------------*/ +int fmpi_mpi_world_size(const struct fmpi_mpi_ctx * ctx); /*============================================================================== GUARD ==============================================================================*/ diff --git a/src/fmpi_mpi.c b/src/fmpi_mpi.c index 1af313b5c27f6d83f7cea3dcfb760b3eaa3cfbce..d0499e9e00f1d21de8e240a308cf8451abe29ec7 100644 --- a/src/fmpi_mpi.c +++ b/src/fmpi_mpi.c @@ -336,3 +336,17 @@ int fmpi_mpi_dims_create( } return fmpi_mpi_check_error(ctx, err, "MPI_Dims_create"); } +/*------------------------------------------------------------------------------ + fmpi_mpi_world_size() +------------------------------------------------------------------------------*/ +int fmpi_mpi_world_size(const struct fmpi_mpi_ctx * const ctx) +{ + assert(ctx != NULL); + int size = FMPI_ERROR; + int err = MPI_Comm_size(ctx->world, &size); + err = fmpi_mpi_check_error(ctx, err, "MPI_Comm_size"); + if(err != FMPI_SUCCESS) { + return err; + } + return size; +}