Re: [petsc-dev] MPI_UNSIGNED_LONG_LONG in mpiuni.h
On Thu, 25 Apr 2013, Jed Brown wrote:
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)
Hm - perhaps its ok to have this unguarded and add: diff --git a/include/mpiuni/mpi.h b/include/mpiuni/mpi.h index 5adfe26..a6a4f97 100644 --- a/include/mpiuni/mpi.h +++ b/include/mpiuni/mpi.h @@ -168,6 +168,7 @@ typedef int MPI_Offset; #define MPI_UNSIGNED sizeof(unsigned) #define MPI_UNSIGNED_CHAR sizeof(unsigned char) #define MPI_UNSIGNED_LONG sizeof(unsigned long) +#define MPI_UNSIGNED_LONG_LONG sizeof(unsigned long long) #define MPI_COMPLEX 2*sizeof(float) #define MPI_C_COMPLEX 2*sizeof(float) #define MPI_C_DOUBLE_COMPLEX 2*sizeof(double) It won't get used in PETSc unless PETSC_SIZEOF_LONG_LONG is defined [which is only for 64bit compilers that support 'long long' anyway. satish
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?
participants (1)
-
Satish Balay