Skip to content

Commit

Permalink
Simplify MPI data types to old standard
Browse files Browse the repository at this point in the history
We had a couple data types that came in after MPI 1.3.
Some were not consistently represented in all their aspects.
We removed sc_MPI_SIGNED_CHAR and sc_MPI_DOUBLE_INT.
We redefined INT8 to BYTE and UNSIGNED_LONG_LONG to LONG_LONG.
  • Loading branch information
cburstedde committed Mar 14, 2024
1 parent 2b209ea commit 257e973
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 28 deletions.
3 changes: 1 addition & 2 deletions cmake/config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -216,9 +216,8 @@ endif()
check_type_size(int SC_SIZEOF_INT BUILTIN_TYPES_ONLY)
check_type_size("unsigned int" SC_SIZEOF_UNSIGNED_INT BUILTIN_TYPES_ONLY)
check_type_size(long SC_SIZEOF_LONG BUILTIN_TYPES_ONLY)
check_type_size("long long" SC_SIZEOF_LONG_LONG BUILTIN_TYPES_ONLY)
check_type_size("unsigned long" SC_SIZEOF_UNSIGNED_LONG BUILTIN_TYPES_ONLY)
check_type_size("unsigned long long" SC_SIZEOF_UNSIGNED_LONG_LONG BUILTIN_TYPES_ONLY)
check_type_size("long long" SC_SIZEOF_LONG_LONG BUILTIN_TYPES_ONLY)
set(SC_SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P})

if(CMAKE_BUILD_TYPE MATCHES "Debug")
Expand Down
7 changes: 2 additions & 5 deletions cmake/sc_config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -213,14 +213,11 @@
#ifndef SC_SIZEOF_LONG
#define SC_SIZEOF_LONG @SC_SIZEOF_LONG@
#endif
#ifndef SC_SIZEOF_LONG_LONG
#define SC_SIZEOF_LONG_LONG @SC_SIZEOF_LONG_LONG@
#endif
#ifndef SC_SIZEOF_UNSIGNED_LONG
#define SC_SIZEOF_UNSIGNED_LONG @SC_SIZEOF_UNSIGNED_LONG@
#endif
#ifndef SC_SIZEOF_UNSIGNED_LONG_LONG
#define SC_SIZEOF_UNSIGNED_LONG_LONG @SC_SIZEOF_UNSIGNED_LONG_LONG@
#ifndef SC_SIZEOF_LONG_LONG
#define SC_SIZEOF_LONG_LONG @SC_SIZEOF_LONG_LONG@
#endif

/* The size of `void *', as computed by sizeof. */
Expand Down
3 changes: 1 addition & 2 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,8 @@ AC_C_RESTRICT
AC_CHECK_SIZEOF([int])
AC_CHECK_SIZEOF([unsigned int])
AC_CHECK_SIZEOF([long])
AC_CHECK_SIZEOF([long long])
AC_CHECK_SIZEOF([unsigned long])
AC_CHECK_SIZEOF([unsigned long long])
AC_CHECK_SIZEOF([long long])
AC_CHECK_SIZEOF([void *])
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
Expand Down
3 changes: 0 additions & 3 deletions src/sc3_mpi_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ typedef MPI_Op sc3_MPI_Op_t;
#define SC3_MPI_LONG_LONG MPI_LONG_LONG_INT
#define SC3_MPI_FLOAT MPI_FLOAT
#define SC3_MPI_DOUBLE MPI_DOUBLE
#define SC3_MPI_DOUBLE_INT MPI_DOUBLE_INT

#define SC3_MPI_OP_NULL MPI_OP_NULL
#define SC3_MPI_MIN MPI_MIN
Expand Down Expand Up @@ -166,14 +165,12 @@ typedef enum sc3_MPI_Datatype
* It is preferred over MPI_CHAR since the latter
* may amount to multiple bytes for wide chars. */
SC3_MPI_INT, /**< Same as in original MPI. System int type. */
SC3_MPI_INT8_T, /**< Same as in original MPI. System int8 type. */
SC3_MPI_2INT, /**< Same as in original MPI. Two system ints. */
SC3_MPI_UNSIGNED, /**< Same as in original MPI. System unsigned. */
SC3_MPI_LONG, /**< Same as in original MPI. System long type. */
SC3_MPI_LONG_LONG, /**< Same as in original MPI. System long long. */
SC3_MPI_FLOAT, /**< Same as in original MPI. */
SC3_MPI_DOUBLE, /**< Same as in original MPI. */
SC3_MPI_DOUBLE_INT /**< Same as in original MPI. Double and int. */
}
sc3_MPI_Datatype_t;

Expand Down
12 changes: 4 additions & 8 deletions src/sc_mpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -747,22 +747,18 @@ sc_MPI_Error_string (int errorcode, char *string, int *resultlen)
size_t
sc_mpi_sizeof (sc_MPI_Datatype t)
{
if (t == sc_MPI_CHAR)
return sizeof (char);
if (t == sc_MPI_BYTE)
if (t == sc_MPI_BYTE || t == sc_MPI_INT8_T)
return 1;
if (t == sc_MPI_CHAR || t == sc_MPI_UNSIGNED_CHAR)
return sizeof (char);
if (t == sc_MPI_SHORT || t == sc_MPI_UNSIGNED_SHORT)
return sizeof (short);
if (t == sc_MPI_INT || t == sc_MPI_UNSIGNED)
return sizeof (int);
if (t == sc_MPI_INT8_T)
return sizeof (int8_t);
if (t == sc_MPI_LONG || t == sc_MPI_UNSIGNED_LONG)
return sizeof (long);
if (t == sc_MPI_LONG_LONG_INT)
if (t == sc_MPI_LONG_LONG_INT || t == sc_MPI_UNSIGNED_LONG_LONG)
return sizeof (long long);
if (t == sc_MPI_UNSIGNED_LONG_LONG)
return sizeof (unsigned long long);
if (t == sc_MPI_FLOAT)
return sizeof (float);
if (t == sc_MPI_DOUBLE)
Expand Down
13 changes: 5 additions & 8 deletions src/sc_mpi.h
Original file line number Diff line number Diff line change
Expand Up @@ -185,23 +185,22 @@ sc_MPI_IO_Errorcode_t;
#define sc_MPI_REQUEST_NULL MPI_REQUEST_NULL

#define sc_MPI_DATATYPE_NULL MPI_DATATYPE_NULL
#define sc_MPI_BYTE MPI_BYTE
#define sc_MPI_INT8_T MPI_BYTE
#define sc_MPI_CHAR MPI_CHAR
#define sc_MPI_SIGNED_CHAR MPI_SIGNED_CHAR
#define sc_MPI_UNSIGNED_CHAR MPI_UNSIGNED_CHAR
#define sc_MPI_BYTE MPI_BYTE
#define sc_MPI_SHORT MPI_SHORT
#define sc_MPI_UNSIGNED_SHORT MPI_UNSIGNED_SHORT
#define sc_MPI_INT MPI_INT
#define sc_MPI_INT8_T MPI_INT8_T
#define sc_MPI_2INT MPI_2INT
#define sc_MPI_UNSIGNED MPI_UNSIGNED
#define sc_MPI_LONG MPI_LONG
#define sc_MPI_UNSIGNED_LONG MPI_UNSIGNED_LONG
#define sc_MPI_LONG_LONG_INT MPI_LONG_LONG_INT
#define sc_MPI_UNSIGNED_LONG_LONG MPI_UNSIGNED_LONG_LONG
#define sc_MPI_UNSIGNED_LONG_LONG MPI_LONG_LONG_INT
#define sc_MPI_FLOAT MPI_FLOAT
#define sc_MPI_DOUBLE MPI_DOUBLE
#define sc_MPI_LONG_DOUBLE MPI_LONG_DOUBLE
#define sc_MPI_2INT MPI_2INT
#define sc_MPI_PACKED MPI_PACKED

#define sc_MPI_OP_NULL MPI_OP_NULL
Expand Down Expand Up @@ -356,13 +355,12 @@ sc_MPI_IO_Errorcode_t;
#define sc_MPI_DATATYPE_NULL SC3_MPI_DATATYPE_NULL

#define sc_MPI_CHAR ((sc_MPI_Datatype) 0x4c000101)
#define sc_MPI_SIGNED_CHAR ((sc_MPI_Datatype) 0x4c000118)
#define sc_MPI_UNSIGNED_CHAR ((sc_MPI_Datatype) 0x4c000102)
#define sc_MPI_BYTE SC3_MPI_BYTE
#define sc_MPI_INT8_T ((sc_MPI_Datatype) 0x4c000202)
#define sc_MPI_SHORT ((sc_MPI_Datatype) 0x4c000203)
#define sc_MPI_UNSIGNED_SHORT ((sc_MPI_Datatype) 0x4c000204)
#define sc_MPI_INT SC3_MPI_INT
#define sc_MPI_INT8_T SC3_MPI_INT8_T
#define sc_MPI_2INT SC3_MPI_2INT
#define sc_MPI_UNSIGNED SC3_MPI_UNSIGNED
#define sc_MPI_LONG SC3_MPI_LONG
Expand All @@ -371,7 +369,6 @@ sc_MPI_IO_Errorcode_t;
#define sc_MPI_UNSIGNED_LONG_LONG ((sc_MPI_Datatype) 0x4c000409)
#define sc_MPI_FLOAT SC3_MPI_FLOAT
#define sc_MPI_DOUBLE SC3_MPI_DOUBLE
#define sc_MPI_DOUBLE_INT SC3_MPI_DOUBLE_INT
#define sc_MPI_LONG_DOUBLE ((sc_MPI_Datatype) 0x4c000c0c)
#define sc_MPI_PACKED ((sc_MPI_Datatype) 0x4c001001)

Expand Down

0 comments on commit 257e973

Please sign in to comment.