xref: /petsc/src/vec/is/sf/impls/basic/allgatherv/sfallgatherv.h (revision 661006243e0904bc232e219bc5c02c8d300d1d6d)
16524c165SJacob Faibussowitsch #ifndef _SFALLGATHERV_H
2dd5b3ca6SJunchao Zhang #define _SFALLGATHERV_H
3dd5b3ca6SJunchao Zhang 
4dd5b3ca6SJunchao Zhang #include <petsc/private/sfimpl.h> /*I "petscsf.h" I*/
5dd5b3ca6SJunchao Zhang #include <../src/vec/is/sf/impls/basic/sfpack.h>
6dd5b3ca6SJunchao Zhang #include <../src/vec/is/sf/impls/basic/sfbasic.h>
7dd5b3ca6SJunchao Zhang 
8dd5b3ca6SJunchao Zhang typedef struct {
9dd5b3ca6SJunchao Zhang   SFBASICHEADER;
10dd5b3ca6SJunchao Zhang   PetscMPIInt *displs, *recvcounts;
11*66100624SStefano Zampini   /* special treatment for one-to-all patterns detected at setup time */
12*66100624SStefano Zampini   PetscBool   bcast_pattern; /* bcast here means one-to-all; we might do MPI_Reduce with this pattern */
13*66100624SStefano Zampini   PetscMPIInt bcast_root;    /* the root rank in MPI_Bcast */
14dd5b3ca6SJunchao Zhang } PetscSF_Allgatherv;
15dd5b3ca6SJunchao Zhang 
16cd620004SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFSetUp_Allgather(PetscSF);
17dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFSetUp_Allgatherv(PetscSF);
18dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFReset_Allgatherv(PetscSF);
19dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFDestroy_Allgatherv(PetscSF);
20eb02082bSJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFFetchAndOpBegin_Allgatherv(PetscSF sf, MPI_Datatype, PetscMemType, void *, PetscMemType, const void *, void *, MPI_Op);
2100816365SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFFetchAndOpEnd_Allgatherv(PetscSF, MPI_Datatype, void *, const void *, void *, MPI_Op);
22dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFGetRootRanks_Allgatherv(PetscSF, PetscInt *, const PetscMPIInt **, const PetscInt **, const PetscInt **, const PetscInt **);
23dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFGetLeafRanks_Allgatherv(PetscSF, PetscInt *, const PetscMPIInt **, const PetscInt **, const PetscInt **);
24dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFCreateLocalSF_Allgatherv(PetscSF, PetscSF *);
25dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFGetGraph_Allgatherv(PetscSF, PetscInt *, PetscInt *, const PetscInt **, const PetscSFNode **);
269319200aSJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFReduceEnd_Allgatherv(PetscSF, MPI_Datatype, const void *, void *, MPI_Op);
27dd5b3ca6SJunchao Zhang #endif
28