It seems correct according to #define PETSC_SIZEOF_LONG 8
#define PETSC_SIZEOF_LONG_LONG 8 Can not convert from "non-constant" to "constant"? Fande On Tue, Mar 29, 2022 at 2:22 PM Fande Kong <fdkong...@gmail.com> wrote: > Hi All, > > When building PETSc with 64 bit indices, it seems that PetscSFCount is > 64-bit integer while MPI_Count is still 32 bit. > > typedef long MPI_Count; > > typedef PetscInt PetscSFCount; > > > I had the following errors. Do I have a bad MPI? > > Thanks, > > Fande > > > Users/kongf/projects/moose6/petsc1/src/vec/is/sf/impls/basic/neighbor/sfneighbor.c:171:18: > error: no matching function for call to 'MPI_Ineighbor_alltoallv_c' > > PetscCallMPI(MPIU_Ineighbor_alltoallv(rootbuf,dat->rootcounts,dat->rootdispls,unit,leafbuf,dat->leafcounts,dat->leafdispls,unit,distcomm,req)); > > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > /Users/kongf/projects/moose6/petsc1/include/petsc/private/mpiutils.h:97:79: > note: expanded from macro 'MPIU_Ineighbor_alltoallv' > #define MPIU_Ineighbor_alltoallv(a,b,c,d,e,f,g,h,i,j) > MPI_Ineighbor_alltoallv_c(a,b,c,d,e,f,g,h,i,j) > > ^~~~~~~~~~~~~~~~~~~~~~~~~ > /Users/kongf/projects/moose6/petsc1/include/petscerror.h:407:32: note: > expanded from macro 'PetscCallMPI' > PetscMPIInt _7_errorcode = __VA_ARGS__; > \ > ^~~~~~~~~~~ > /Users/kongf/mambaforge3/envs/moose/include/mpi_proto.h:945:5: note: > candidate function not viable: no known conversion from 'PetscSFCount *' > (aka 'long long *') to 'const MPI_Count *' (aka 'const long *') for 2nd > argument > int MPI_Ineighbor_alltoallv_c(const void *sendbuf, const MPI_Count > sendcounts[], > ^ > /Users/kongf/projects/moose6/petsc1/src/vec/is/sf/impls/basic/neighbor/sfneighbor.c:195:18: > error: no matching function for call to 'MPI_Ineighbor_alltoallv_c' > > PetscCallMPI(MPIU_Ineighbor_alltoallv(leafbuf,dat->leafcounts,dat->leafdispls,unit,rootbuf,dat->rootcounts,dat->rootdispls,unit,distcomm,req)); > > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > /Users/kongf/projects/moose6/petsc1/include/petsc/private/mpiutils.h:97:79: > note: expanded from macro 'MPIU_Ineighbor_alltoallv' > #define MPIU_Ineighbor_alltoallv(a,b,c,d,e,f,g,h,i,j) > MPI_Ineighbor_alltoallv_c(a,b,c,d,e,f,g,h,i,j) > > ^~~~~~~~~~~~~~~~~~~~~~~~~ > /Users/kongf/projects/moose6/petsc1/include/petscerror.h:407:32: note: > expanded from macro 'PetscCallMPI' > PetscMPIInt _7_errorcode = __VA_ARGS__; > \ > ^~~~~~~~~~~ > /Users/kongf/mambaforge3/envs/moose/include/mpi_proto.h:945:5: note: > candidate function not viable: no known conversion from 'PetscSFCount *' > (aka 'long long *') to 'const MPI_Count *' (aka 'const long *') for 2nd > argument > int MPI_Ineighbor_alltoallv_c(const void *sendbuf, const MPI_Count > sendcounts[], > ^ > /Users/kongf/projects/moose6/petsc1/src/vec/is/sf/impls/basic/neighbor/sfneighbor.c:240:18: > error: no matching function for call to 'MPI_Neighbor_alltoallv_c' > > PetscCallMPI(MPIU_Neighbor_alltoallv(rootbuf,dat->rootcounts,dat->rootdispls,unit,leafbuf,dat->leafcounts,dat->leafdispls,unit,comm)); > > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > /Users/kongf/projects/moose6/petsc1/include/petsc/private/mpiutils.h:96:79: > note: expanded from macro 'MPIU_Neighbor_alltoallv' > #define MPIU_Neighbor_alltoallv(a,b,c,d,e,f,g,h,i) > MPI_Neighbor_alltoallv_c(a,b,c,d,e,f,g,h,i) > > ^~~~~~~~~~~~~~~~~~~~~~~~ > /Users/kongf/projects/moose6/petsc1/include/petscerror.h:407:32: note: > expanded from macro 'PetscCallMPI' > PetscMPIInt _7_errorcode = __VA_ARGS__; > \ > ^~~~~~~~~~~ > /Users/kongf/mambaforge3/envs/moose/include/mpi_proto.h:1001:5: note: > candidate function not viable: no known conversion from 'PetscSFCount *' > (aka 'long long *') to 'const MPI_Count *' (aka 'const long *') for 2nd > argument > int MPI_Neighbor_alltoallv_c(const void *sendbuf, const MPI_Count > sendcounts[], > ^ > > >