1*dd5b3ca6SJunchao Zhang #if !defined(_SFALLGATHERV_H) 2*dd5b3ca6SJunchao Zhang #define _SFALLGATHERV_H 3*dd5b3ca6SJunchao Zhang 4*dd5b3ca6SJunchao Zhang #include <petsc/private/sfimpl.h> /*I "petscsf.h" I*/ 5*dd5b3ca6SJunchao Zhang #include <../src/vec/is/sf/impls/basic/sfpack.h> 6*dd5b3ca6SJunchao Zhang #include <../src/vec/is/sf/impls/basic/sfbasic.h> 7*dd5b3ca6SJunchao Zhang 8*dd5b3ca6SJunchao Zhang typedef struct _n_PetscSFPack_Allgatherv *PetscSFPack_Allgatherv; 9*dd5b3ca6SJunchao Zhang struct _n_PetscSFPack_Allgatherv { 10*dd5b3ca6SJunchao Zhang SFPACKHEADER; 11*dd5b3ca6SJunchao Zhang char *root; /* root buffer */ 12*dd5b3ca6SJunchao Zhang char *leaf; /* leaf buffer */ 13*dd5b3ca6SJunchao Zhang MPI_Request request; 14*dd5b3ca6SJunchao Zhang }; 15*dd5b3ca6SJunchao Zhang 16*dd5b3ca6SJunchao Zhang typedef struct { 17*dd5b3ca6SJunchao Zhang SFBASICHEADER; 18*dd5b3ca6SJunchao Zhang PetscMPIInt *displs,*recvcounts; 19*dd5b3ca6SJunchao Zhang } PetscSF_Allgatherv; 20*dd5b3ca6SJunchao Zhang 21*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFSetUp_Allgatherv(PetscSF); 22*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFPackGet_Allgatherv(PetscSF,MPI_Datatype,const void*,PetscSFPack_Allgatherv*); 23*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFReset_Allgatherv(PetscSF); 24*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFDestroy_Allgatherv(PetscSF); 25*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFBcastAndOpEnd_Allgatherv(PetscSF,MPI_Datatype,const void*,void*,MPI_Op); 26*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFReduceEnd_Allgatherv(PetscSF,MPI_Datatype,const void*,void*,MPI_Op); 27*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFFetchAndOpBegin_Allgatherv(PetscSF sf,MPI_Datatype unit,void *rootdata,const void *leafdata,void *leafupdate,MPI_Op op); 28*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFFetchAndOpEnd_Allgatherv(PetscSF,MPI_Datatype,void*,const void*,void*,MPI_Op); 29*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFGetRootRanks_Allgatherv(PetscSF,PetscInt*,const PetscMPIInt**,const PetscInt**,const PetscInt**,const PetscInt**); 30*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFGetLeafRanks_Allgatherv(PetscSF,PetscInt*,const PetscMPIInt**,const PetscInt**,const PetscInt**); 31*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFCreateLocalSF_Allgatherv(PetscSF,PetscSF*); 32*dd5b3ca6SJunchao Zhang PETSC_INTERN PetscErrorCode PetscSFGetGraph_Allgatherv(PetscSF,PetscInt*,PetscInt*,const PetscInt**,const PetscSFNode**); 33*dd5b3ca6SJunchao Zhang #endif 34