petsc-3.7.1 2016-05-15
Report Typos and Errors

# 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 Many br

### Input Arguments

| sf | - star forest Many br
| unit | - data type Many br
| leafdata | - leaf values to use in reduction Many br
| op | - operation to use for reduction Many br

### Output Arguments

| rootdata | - root values to be updated, input state is seen by first process to perform an update Many br
| leafupdate | - state at each leaf's respective root immediately prior to my atomic update Many br

Many br

### Note

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

### See Also

PetscSFComputeDegreeBegin(), PetscSFReduceBegin(), PetscSFSetGraph()

Level:advanced
Location:src/vec/is/sf/interface/sf.c
Index of all PetscSF routines
Table of Contents for all manual pages
Index of all manual pages

### Examples

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