Re: [petsc-dev] MPI_UNSIGNED_LONG_LONG in mpiuni.h
-----Original Message----- From: Jed Brown [mailto:[email protected]] 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 <[email protected]> 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-... Chetan
participants (1)
-
Chetan Jhurani