Skip to content

Commit de98e82

Browse files
committed
datatype: Add preliminary support for MPI_LOGICAL16
Signed-off-by: Lisandro Dalcin <dalcinl@gmail.com>
1 parent e9a0e65 commit de98e82

File tree

6 files changed

+34
-4
lines changed

6 files changed

+34
-4
lines changed

config/ompi_setup_mpi_fortran.m4

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,14 +150,16 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
150150

151151
OMPI_FORTRAN_CHECK([LOGICAL], [yes],
152152
[char, int32_t, int, int64_t, long long, long], [-1], [yes])
153-
OMPI_FORTRAN_CHECK([LOGICAL*1], [yes],
153+
OMPI_FORTRAN_CHECK([LOGICAL*1], [no],
154154
[char, int8_t, short, int32_t, int, int64_t, long long, long], [1], [yes])
155-
OMPI_FORTRAN_CHECK([LOGICAL*2], [yes],
155+
OMPI_FORTRAN_CHECK([LOGICAL*2], [no],
156156
[short, int16_t, int32_t, int, int64_t, long long, long], [2], [yes])
157-
OMPI_FORTRAN_CHECK([LOGICAL*4], [yes],
157+
OMPI_FORTRAN_CHECK([LOGICAL*4], [no],
158158
[int32_t, int, int64_t, long long, long], [4], [yes])
159-
OMPI_FORTRAN_CHECK([LOGICAL*8], [yes],
159+
OMPI_FORTRAN_CHECK([LOGICAL*8], [no],
160160
[int, int64_t, long long, long], [8], [yes])
161+
OMPI_FORTRAN_CHECK([LOGICAL*16], [no],
162+
[int, int64_t, long long, long], [16], [yes])
161163

162164
OMPI_FORTRAN_CHECK([INTEGER], [yes],
163165
[int32_t, int, int64_t, long long, long], [-1], [yes])

ompi/datatype/ompi_datatype_internal.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,20 @@
247247
# define OMPI_DATATYPE_MPI_LOGICAL8 OMPI_DATATYPE_MPI_UNAVAILABLE
248248
#endif
249249

250+
#if OMPI_SIZEOF_FORTRAN_LOGICAL16 == OMPI_SIZEOF_FORTRAN_LOGICAL
251+
# define OMPI_DATATYPE_MPI_LOGICAL16 OMPI_DATATYPE_MPI_LOGICAL
252+
#elif OMPI_SIZEOF_FORTRAN_LOGICAL16 == 1
253+
# define OMPI_DATATYPE_MPI_LOGICAL16 OMPI_DATATYPE_MPI_INT8_T
254+
#elif OMPI_SIZEOF_FORTRAN_LOGICAL16 == 2
255+
# define OMPI_DATATYPE_MPI_LOGICAL16 OMPI_DATATYPE_MPI_INT16_T
256+
#elif OMPI_SIZEOF_FORTRAN_LOGICAL16 == 4
257+
# define OMPI_DATATYPE_MPI_LOGICAL16 OMPI_DATATYPE_MPI_INT32_T
258+
#elif OMPI_SIZEOF_FORTRAN_LOGICAL16 == 8
259+
# define OMPI_DATATYPE_MPI_LOGICAL16 OMPI_DATATYPE_MPI_INT64_T
260+
#else
261+
# define OMPI_DATATYPE_MPI_LOGICAL16 OMPI_DATATYPE_MPI_UNAVAILABLE
262+
#endif
263+
250264
/* INTEGER */
251265
#if OMPI_SIZEOF_FORTRAN_INTEGER1 == OMPI_SIZEOF_FORTRAN_INTEGER
252266
# define OMPI_DATATYPE_MPI_INTEGER1 OMPI_DATATYPE_MPI_INTEGER

ompi/datatype/ompi_datatype_module.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,11 @@ ompi_predefined_datatype_t ompi_mpi_logical8 = OMPI_DATATYPE_INIT_PREDEFIN
223223
#else
224224
ompi_predefined_datatype_t ompi_mpi_logical8 = OMPI_DATATYPE_INIT_UNAVAILABLE (LOGICAL8, OMPI_DATATYPE_FLAG_DATA_FORTRAN );
225225
#endif
226+
#if OMPI_HAVE_FORTRAN_LOGICAL16
227+
ompi_predefined_datatype_t ompi_mpi_logical16 = OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE_FORTRAN (INT, LOGICAL16, OMPI_SIZEOF_FORTRAN_LOGICAL16, OMPI_ALIGNMENT_FORTRAN_LOGICAL16, 0);
228+
#else
229+
ompi_predefined_datatype_t ompi_mpi_logical16 = OMPI_DATATYPE_INIT_UNAVAILABLE (LOGICAL16, OMPI_DATATYPE_FLAG_DATA_FORTRAN );
230+
#endif
226231
#if OMPI_HAVE_FORTRAN_REAL2
227232
ompi_predefined_datatype_t ompi_mpi_real2 = OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE_FORTRAN (FLOAT, REAL2, OMPI_SIZEOF_FORTRAN_REAL2, OMPI_ALIGNMENT_FORTRAN_REAL2, OMPI_DATATYPE_FLAG_DATA_FLOAT);
228233
#else

ompi/include/mpi.h.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@
120120
/* Whether we have FORTRAN LOGICAL*1 or not */
121121
#undef OMPI_HAVE_FORTRAN_LOGICAL1
122122

123+
/* Whether we have FORTRAN LOGICAL*16 or not */
124+
#undef OMPI_HAVE_FORTRAN_LOGICAL16
125+
123126
/* Whether we have FORTRAN LOGICAL*2 or not */
124127
#undef OMPI_HAVE_FORTRAN_LOGICAL2
125128

@@ -1140,6 +1143,7 @@ OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical1;
11401143
OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical2;
11411144
OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical4;
11421145
OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical8;
1146+
OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_logical16;
11431147
OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer1;
11441148
OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer2;
11451149
OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_integer4;
@@ -1287,6 +1291,9 @@ OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub;
12871291
#if OMPI_HAVE_FORTRAN_LOGICAL8
12881292
#define MPI_LOGICAL8 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logical8)
12891293
#endif
1294+
#if OMPI_HAVE_FORTRAN_LOGICAL16
1295+
#define MPI_LOGICAL16 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_logical16)
1296+
#endif
12901297
#define MPI_INTEGER OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer)
12911298
#if OMPI_HAVE_FORTRAN_INTEGER1
12921299
#define MPI_INTEGER1 OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_integer1)

ompi/include/mpif-values.pl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ sub read_value_from_file {
226226
$handles->{MPI_C_LONG_DOUBLE_COMPLEX} = 71;
227227
$handles->{MPI_COUNT} = 72;
228228
$handles->{MPI_COMPLEX4} = 73;
229+
$handles->{MPI_LOGICAL16} = 74;
229230

230231
$handles->{MPI_MESSAGE_NO_PROC} = 1;
231232

ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-types.F90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ module mpi_f08_types
154154
type(MPI_Datatype), parameter :: MPI_LOGICAL2 = MPI_Datatype(OMPI_MPI_LOGICAL2)
155155
type(MPI_Datatype), parameter :: MPI_LOGICAL4 = MPI_Datatype(OMPI_MPI_LOGICAL4)
156156
type(MPI_Datatype), parameter :: MPI_LOGICAL8 = MPI_Datatype(OMPI_MPI_LOGICAL8)
157+
type(MPI_Datatype), parameter :: MPI_LOGICAL16 = MPI_Datatype(OMPI_MPI_LOGICAL16)
157158
type(MPI_Datatype), parameter :: MPI_C_BOOL = MPI_Datatype(OMPI_MPI_C_BOOL)
158159
type(MPI_Datatype), parameter :: MPI_CXX_BOOL = MPI_Datatype(OMPI_MPI_CXX_BOOL)
159160
type(MPI_Datatype), parameter :: MPI_COUNT = MPI_Datatype(OMPI_MPI_COUNT)

0 commit comments

Comments
 (0)