PetscSFFetchAndOpBegin#

begin operation that fetches values from rootdata and updates it atomically by applying operation using leafdata, to be completed with PetscSFFetchAndOpEnd()

Synopsis#

#include "petscsf.h" 
PetscErrorCode PetscSFFetchAndOpBegin(PetscSF sf, MPI_Datatype unit, void *rootdata, const void *leafdata, void *leafupdate, MPI_Op op)

Collective

Input Parameters#

  • sf - star forest

  • unit - data type

  • leafdata - leaf values to use in reduction

  • op - operation to use for reduction

Output Parameters#

  • rootdata - root values to be updated, input state is seen by first process to perform an update

  • leafupdate - state at each leaf’s respective root immediately prior to atomic update

Note#

The update is only atomic at the granularity provided by the hardware. Different roots referenced by the same process might be updated in a different order. Furthermore, if a composite type is used for the unit datatype, atomicity is not guaranteed across the whole vertex. Therefore, this function is mostly only used with primitive types such as integers.

See Also#

PetscSF - an alternative to low-level MPI calls for data communication, PetscSF, PetscSFComputeDegreeBegin(), PetscSFReduceBegin(), PetscSFSetGraph()

Level#

advanced

Location#

src/vec/is/sf/interface/sf.c

Examples#

src/vec/is/sf/tutorials/ex1.c

Implementations#

PetscSFFetchAndOpBegin_Allgatherv() in src/vec/is/sf/impls/basic/allgatherv/sfallgatherv.c
PetscSFFetchAndOpBegin_Gatherv() in src/vec/is/sf/impls/basic/gatherv/sfgatherv.c
PetscSFFetchAndOpBegin_Basic() in src/vec/is/sf/impls/basic/sfbasic.c
PetscSFFetchAndOpBegin_Window() in src/vec/is/sf/impls/window/sfwindow.c


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