Skip to content
Snippets Groups Projects
Verified Commit f633bb0a authored by raphael.bach's avatar raphael.bach
Browse files

Add `fmpi_mpi_reduce_in_place()`

parent 2acb166b
Branches
No related tags found
No related merge requests found
...@@ -223,6 +223,13 @@ int fmpi_mpi_world_gather_in_place( ...@@ -223,6 +223,13 @@ int fmpi_mpi_world_gather_in_place(
const struct fmpi_mpi_ctx * ctx, void * buf, MPI_Datatype type, const struct fmpi_mpi_ctx * ctx, void * buf, MPI_Datatype type,
size_t send_cnt, size_t recv_cnt size_t send_cnt, size_t recv_cnt
); );
/*------------------------------------------------------------------------------
fmpi_mpi_reduce_in_place()
------------------------------------------------------------------------------*/
int fmpi_mpi_reduce_in_place(
const struct fmpi_mpi_ctx * ctx, void * buf, size_t cnt, MPI_Datatype type,
MPI_Op op, int root, MPI_Comm comm
);
/*============================================================================== /*==============================================================================
GUARD GUARD
==============================================================================*/ ==============================================================================*/
......
...@@ -274,3 +274,22 @@ int fmpi_mpi_world_gather_in_place( ...@@ -274,3 +274,22 @@ int fmpi_mpi_world_gather_in_place(
} }
return err; return err;
} }
/*------------------------------------------------------------------------------
fmpi_mpi_reduce_in_place()
------------------------------------------------------------------------------*/
int fmpi_mpi_reduce_in_place(
const struct fmpi_mpi_ctx * const ctx, void * const buf, const size_t cnt,
MPI_Datatype type, MPI_Op op, const int root, MPI_Comm comm
){
assert(ctx != NULL);
assert(buf != NULL);
assert(cnt <= INT_MAX);
int err = MPI_SUCCESS;
if(ctx->rank == root) {
err = MPI_Reduce(MPI_IN_PLACE, buf, (int)cnt, type, op, root, comm);
} else {
err = MPI_Reduce(buf, buf, (int)cnt, type, op, root, comm);
}
return fmpi_mpi_check_error(ctx, err, "MPI_Reduce");
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment