petsc-3.13.6 2020-09-29
PetscSFFetchAndOpBegin
begin operation that fetches values from root and updates atomically by applying operation using my leaf value, 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 Arguments
| sf | - star forest
|
| unit | - data type
|
| leafdata | - leaf values to use in reduction
|
| op | - operation to use for reduction
|
Output Arguments
| 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 my 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
PetscSFComputeDegreeBegin(), PetscSFReduceBegin(), PetscSFSetGraph()
Level
advanced
Location
src/vec/is/sf/interface/sf.c
Examples
src/vec/is/sf/tutorials/ex1.c.html
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_Neighbor in src/vec/is/sf/impls/basic/neighbor/sfneighbor.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