17
17
* reserved.
18
18
* Copyright (c) 2015-2018 Research Organization for Information Science
19
19
* and Technology (RIST). All rights reserved.
20
- * Copyright (c) 2016 FUJITSU LIMITED. All rights reserved.
20
+ * Copyright (c) 2016-2018 FUJITSU LIMITED. All rights reserved.
21
21
* $COPYRIGHT$
22
22
*
23
23
* Additional copyrights may follow
@@ -49,9 +49,9 @@ int32_t ompi_datatype_number_of_predefined_data = 0;
49
49
* The following initialization of C, C++ and Fortran types is fairly complex,
50
50
* based on the OPAL-datatypes.
51
51
* ompi_datatypes.h
52
- * \-------> ompi_datatypes_internal.h (Macros defining type-number and initalization )
52
+ * \-------> ompi_datatypes_internal.h (Macros defining type-number and initialization )
53
53
* opal_datatypes.h
54
- * \-------> opal_datatypes_internal.h (Macros defining type-number and initalization )
54
+ * \-------> opal_datatypes_internal.h (Macros defining type-number and initialization )
55
55
*
56
56
* The Macros in the OMPI Layer differ in that:
57
57
* Additionally to OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE, we have a OMPI_DATATYPE_INIT_PREDEFINED,
@@ -82,6 +82,11 @@ ompi_predefined_datatype_t ompi_mpi_long = OMPI_DATATYPE_INIT_PREDEFIN
82
82
ompi_predefined_datatype_t ompi_mpi_unsigned_long = OMPI_DATATYPE_INIT_PREDEFINED (UNSIGNED_LONG , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_INT );
83
83
ompi_predefined_datatype_t ompi_mpi_long_long_int = OMPI_DATATYPE_INIT_PREDEFINED (LONG_LONG_INT , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_INT );
84
84
ompi_predefined_datatype_t ompi_mpi_unsigned_long_long = OMPI_DATATYPE_INIT_PREDEFINED (UNSIGNED_LONG_LONG , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_INT );
85
+ #if defined(HAVE_SHORT_FLOAT ) || defined(HAVE_OPAL_SHORT_FLOAT_T )
86
+ ompi_predefined_datatype_t ompi_mpi_short_float = OMPI_DATATYPE_INIT_PREDEFINED (SHORT_FLOAT , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_FLOAT );
87
+ #else
88
+ ompi_predefined_datatype_t ompi_mpi_short_float = OMPI_DATATYPE_INIT_UNAVAILABLE (SHORT_FLOAT , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_FLOAT );
89
+ #endif /* HAVE_SHORT_FLOAT */
85
90
ompi_predefined_datatype_t ompi_mpi_float = OMPI_DATATYPE_INIT_PREDEFINED (FLOAT , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_FLOAT );
86
91
ompi_predefined_datatype_t ompi_mpi_double = OMPI_DATATYPE_INIT_PREDEFINED (DOUBLE , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_FLOAT );
87
92
ompi_predefined_datatype_t ompi_mpi_long_double = OMPI_DATATYPE_INIT_PREDEFINED (LONG_DOUBLE , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_FLOAT );
@@ -101,12 +106,22 @@ ompi_predefined_datatype_t ompi_mpi_cxx_bool = OMPI_DATATYPE_INIT_PREDEFIN
101
106
/*
102
107
* Complex datatypes for C (base types), C++, and fortran
103
108
*/
109
+ #if defined(HAVE_SHORT_FLOAT__COMPLEX ) || defined(HAVE_OPAL_SHORT_FLOAT_COMPLEX_T )
110
+ ompi_predefined_datatype_t ompi_mpi_c_short_float_complex = OMPI_DATATYPE_INIT_PREDEFINED (C_SHORT_FLOAT_COMPLEX , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_COMPLEX );
111
+ #else
112
+ ompi_predefined_datatype_t ompi_mpi_c_short_float_complex = OMPI_DATATYPE_INIT_UNAVAILABLE (C_SHORT_FLOAT_COMPLEX , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_COMPLEX );
113
+ #endif /* HAVE_SHORT_FLOAT__COMPLEX */
104
114
ompi_predefined_datatype_t ompi_mpi_c_float_complex = OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE (C_FLOAT_COMPLEX , C_COMPLEX , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_COMPLEX );
105
115
ompi_predefined_datatype_t ompi_mpi_c_complex = OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE (C_FLOAT_COMPLEX , C_COMPLEX , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_COMPLEX );
106
116
ompi_predefined_datatype_t ompi_mpi_c_double_complex = OMPI_DATATYPE_INIT_PREDEFINED (C_DOUBLE_COMPLEX , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_COMPLEX );
107
117
ompi_predefined_datatype_t ompi_mpi_c_long_double_complex = OMPI_DATATYPE_INIT_PREDEFINED (C_LONG_DOUBLE_COMPLEX , OMPI_DATATYPE_FLAG_DATA_C | OMPI_DATATYPE_FLAG_DATA_COMPLEX );
108
118
109
119
/* The C++ complex datatypes are the same as the C datatypes */
120
+ #if defined(HAVE_SHORT_FLOAT__COMPLEX ) || defined(HAVE_OPAL_SHORT_FLOAT_COMPLEX_T )
121
+ ompi_predefined_datatype_t ompi_mpi_cxx_sfltcplex = OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE (C_SHORT_FLOAT_COMPLEX , CXX_SHORT_FLOAT_COMPLEX , OMPI_DATATYPE_FLAG_DATA_CPP | OMPI_DATATYPE_FLAG_DATA_COMPLEX );
122
+ #else
123
+ ompi_predefined_datatype_t ompi_mpi_cxx_sfltcplex = OMPI_DATATYPE_INIT_UNAVAILABLE (CXX_SHORT_FLOAT_COMPLEX , OMPI_DATATYPE_FLAG_DATA_CPP | OMPI_DATATYPE_FLAG_DATA_COMPLEX );
124
+ #endif /* HAVE_SHORT_FLOAT__COMPLEX */
110
125
ompi_predefined_datatype_t ompi_mpi_cxx_cplex = OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE (C_FLOAT_COMPLEX , CXX_FLOAT_COMPLEX , OMPI_DATATYPE_FLAG_DATA_CPP | OMPI_DATATYPE_FLAG_DATA_COMPLEX );
111
126
ompi_predefined_datatype_t ompi_mpi_cxx_dblcplex = OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE (C_DOUBLE_COMPLEX , CXX_DOUBLE_COMPLEX , OMPI_DATATYPE_FLAG_DATA_CPP | OMPI_DATATYPE_FLAG_DATA_COMPLEX );
112
127
ompi_predefined_datatype_t ompi_mpi_cxx_ldblcplex = OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE (C_LONG_DOUBLE_COMPLEX , CXX_LONG_DOUBLE_COMPLEX , OMPI_DATATYPE_FLAG_DATA_CPP | OMPI_DATATYPE_FLAG_DATA_COMPLEX );
@@ -347,6 +362,12 @@ const ompi_datatype_t* ompi_datatype_basicDatatypes[OMPI_DATATYPE_MPI_MAX_PREDEF
347
362
/* MPI 3.0 types */
348
363
[OMPI_DATATYPE_MPI_COUNT ] = & ompi_mpi_count .dt ,
349
364
365
+ /* Datatypes proposed to the MPI Forum in June 2017 for proposal in
366
+ * the MPI 4.0 standard. As of February 2019, it is not accepted yet.
367
+ * See https://github.com/mpi-forum/mpi-issues/issues/65 */
368
+ [OMPI_DATATYPE_MPI_SHORT_FLOAT ] = & ompi_mpi_short_float .dt ,
369
+ [OMPI_DATATYPE_MPI_C_SHORT_FLOAT_COMPLEX ] = & ompi_mpi_c_short_float_complex .dt ,
370
+
350
371
[OMPI_DATATYPE_MPI_UNAVAILABLE ] = & ompi_mpi_unavailable .dt ,
351
372
};
352
373
@@ -612,6 +633,13 @@ int32_t ompi_datatype_init( void )
612
633
/* MPI 3.0 types */
613
634
MOOG (count , 72 );
614
635
636
+ /* Datatypes proposed to the MPI Forum in June 2017 for proposal in
637
+ * the MPI 4.0 standard. As of February 2019, it is not accepted yet.
638
+ * See https://github.com/mpi-forum/mpi-issues/issues/65 */
639
+ MOOG (short_float , 73 );
640
+ MOOG (c_short_float_complex , 74 );
641
+ MOOG (cxx_sfltcplex , 75 );
642
+
615
643
/**
616
644
* Now make sure all non-contiguous types are marked as such.
617
645
*/
0 commit comments