MPIU_Allreduce#

A replacement for MPI_Allreduce() that (1) performs single-count MPIU_INT operations in PetscInt64 to detect integer overflows and (2) tries to determine if the call from all the MPI ranks occur in the same place in the PETSc code. This helps to detect bugs where different MPI ranks follow different code paths resulting in inconsistent and incorrect calls to MPI_Allreduce().

Synopsis#

#include <petscsys.h>
PetscMPIInt MPIU_Allreduce(void *indata,void *outdata,PetscCount count,MPI_Datatype dtype, MPI_Op op, MPI_Comm comm);

Collective

Input Parameters#

  • a - pointer to the input data to be reduced

  • count - the number of MPI data items in a and b

  • dtype - the MPI datatype, for example MPI_INT

  • op - the MPI operation, for example MPI_SUM

  • comm - the MPI communicator on which the operation occurs

Output Parameter#

  • b - the reduced values

Note#

Should be wrapped with PetscCallMPI() for error checking

See Also#

PETSc and standard datatypes, MPI_Allreduce()

Level#

developer

Location#

include/petscsys.h

Examples#

src/dm/impls/plex/tutorials/ex10.c
src/snes/tutorials/ex48.c
src/ts/tutorials/ex18.c
src/ts/tutorials/ex44.c
src/ts/tutorials/ex9.c
src/tao/unconstrained/tutorials/minsurf2.c
src/ts/tutorials/ex14.c
src/tao/constrained/tutorials/ex1.c
src/tao/bound/tutorials/plate2.c
src/vec/vec/tutorials/ex9.c


Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages