xref: /petsc/src/vec/is/sf/impls/basic/allgatherv/sfallgatherv.h (revision dd5b3ca66ca4de5e00e985c205d0f80060c552e8)
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