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