[petsc-dev] MPI_UNSIGNED_LONG_LONG in mpiuni.h
Chetan Jhurani
chetan.jhurani at gmail.com
Thu Apr 25 13:17:26 CDT 2013
> -----Original Message-----
> From: Jed Brown [mailto:five9a2 at gmail.com] On Behalf Of Jed Brown
> Sent: Thursday, April 25, 2013 11:09 AM
> To: Chetan Jhurani; 'For users of the development version of PETSc'
> Subject: Re: [petsc-dev] MPI_UNSIGNED_LONG_LONG in mpiuni.h
>
> Chetan Jhurani <chetan.jhurani at gmail.com> writes:
>
> > Hi,
> >
> > mpiuni.h does not define MPI_UNSIGNED_LONG_LONG, which leads
> > to a problem in defining MPIU_SIZE_T here in petscsys.h.
> >
> > #if (PETSC_SIZEOF_SIZE_T) == (PETSC_SIZEOF_INT)
> > #define MPIU_SIZE_T MPI_UNSIGNED
> > #elif (PETSC_SIZEOF_SIZE_T) == (PETSC_SIZEOF_LONG)
> > #define MPIU_SIZE_T MPI_UNSIGNED_LONG
> > #elif (PETSC_SIZEOF_SIZE_T) == (PETSC_SIZEOF_LONG_LONG)
> > #define MPIU_SIZE_T MPI_UNSIGNED_LONG_LONG
>
> mpiuni/mpi.h also has this unguarded statement. Do all Windows
> compilers now provide 'long long'?
>
> #define MPI_LONG_LONG_INT sizeof(long long)
>
> We could make mpiuni define MPIU_SIZE_T itself instead of jumping
> through hoops to find the matching type.
>
> Chetan, what's your perspective about using stdint.h?
Info about long long:
Visual Studio 2005 supports long long (sizeof = 8)
even when compiling in 32 bit mode, so I assume all
later ones do.
Trilinos 11.0+ uses long long for 64-bit indices. I have tested
it with two compilers (2005/2012) and I'm guessing others
have used other versions.
About stdint.h:
I see that it is there with Visual Studio 2012 on
my machine, but not with 2005. Below is more info
on stdint and MS VS. I never had a need to use
it so can't say more than this.
http://stackoverflow.com/questions/126279/c99-stdint-h-header-and-ms-visual-studio
Chetan
More information about the petsc-dev
mailing list