:orphan: # PetscSFWindowSetFlavorType Set flavor type for `MPI_Win` creation ## Synopsis ``` #include "petscsf.h" PetscErrorCode PetscSFWindowSetFlavorType(PetscSF sf, PetscSFWindowFlavorType flavor) ``` Logically Collective ## Input Parameters - ***sf -*** star forest for communication of type `PETSCSFWINDOW` - ***flavor -*** flavor type ## Options Database Key - ***-sf_window_flavor -*** sets the flavor type CREATE, DYNAMIC, ALLOCATE or SHARED (see `PetscSFWindowFlavorType`) ## Notes ## Windows reuse follows these rules ```none PETSCSF_WINDOW_FLAVOR_CREATE: creates a new window every time, uses MPI_Win_create PETSCSF_WINDOW_FLAVOR_DYNAMIC: uses MPI_Win_create_dynamic/MPI_Win_attach and tries to reuse windows by comparing the root array. Intended to be used on repeated applications of the same SF, e.g. for i=1 to K PetscSFOperationBegin(rootdata1,leafdata_whatever); PetscSFOperationEnd(rootdata1,leafdata_whatever); ... PetscSFOperationBegin(rootdataN,leafdata_whatever); PetscSFOperationEnd(rootdataN,leafdata_whatever); endfor The following pattern will instead raise an error PetscSFOperationBegin(rootdata1,leafdata_whatever); PetscSFOperationEnd(rootdata1,leafdata_whatever); PetscSFOperationBegin(rank ? rootdata1 : rootdata2,leafdata_whatever); PetscSFOperationEnd(rank ? rootdata1 : rootdata2,leafdata_whatever); PETSCSF_WINDOW_FLAVOR_ALLOCATE: uses MPI_Win_allocate, reuses any pre-existing window which fits the data and it is not in use PETSCSF_WINDOW_FLAVOR_SHARED: uses MPI_Win_allocate_shared, reusage policy as for PETSCSF_WINDOW_FLAVOR_ALLOCATE ``` ## See Also `PetscSF`, `PETSCSFWINDOW`, `PetscSFSetFromOptions()`, `PetscSFWindowGetFlavorType()` ## Level advanced ## Location src/vec/is/sf/impls/window/sfwindow.c ## Implementations PetscSFWindowSetFlavorType_Window in src/vec/is/sf/impls/window/sfwindow.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/vec/is/sf/impls/window/sfwindow.c) [Index of all PetscSF routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)