opal/ddt: add copy functions for complex types
long double internal representation is arch specific, and no conversion is done (yet), so MPI_LONG_DOUBLE should not be used (yet) in heterogeneous mode
Этот коммит содержится в:
родитель
899fb89392
Коммит
bc105afb10
@ -4,6 +4,8 @@
|
||||
* of Tennessee Research Foundation. All rights
|
||||
* reserved.
|
||||
* Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
||||
* Copyright (c) 2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -201,6 +203,27 @@ COPY_TYPE( float_16, long double, 1 )
|
||||
#define copy_float_16 NULL
|
||||
#endif
|
||||
|
||||
#if HAVE_FLOAT__COMPLEX
|
||||
COPY_TYPE ( float_complex, float _Complex, 1)
|
||||
#else
|
||||
/* #error No basic type for copy function for opal_datatype_float_complex found */
|
||||
#define copy_float_complex NULL
|
||||
#endif
|
||||
|
||||
#if HAVE_DOUBLE__COMPLEX
|
||||
COPY_TYPE ( double_complex, double _Complex, 1)
|
||||
#else
|
||||
/* #error No basic type for copy function for opal_datatype_double_complex found */
|
||||
#define copy_double_complex NULL
|
||||
#endif
|
||||
|
||||
#if HAVE_LONG_DOUBLE__COMPLEX
|
||||
COPY_TYPE ( long_double_complex, long double _Complex, 1)
|
||||
#else
|
||||
/* #error No basic type for copy function for opal_datatype_long_double_complex found */
|
||||
#define copy_long_double_complex NULL
|
||||
#endif
|
||||
|
||||
#if SIZEOF_BOOL == SIZEOF_CHAR
|
||||
COPY_TYPE (bool, char, 1)
|
||||
#elif SIZEOF_BOOL == SIZEOF_SHORT
|
||||
@ -238,6 +261,9 @@ conversion_fct_t opal_datatype_copy_functions[OPAL_DATATYPE_MAX_PREDEFINED] = {
|
||||
(conversion_fct_t)copy_float_8, /* OPAL_DATATYPE_FLOAT8 */
|
||||
(conversion_fct_t)copy_float_12, /* OPAL_DATATYPE_FLOAT12 */
|
||||
(conversion_fct_t)copy_float_16, /* OPAL_DATATYPE_FLOAT16 */
|
||||
(conversion_fct_t)copy_float_complex, /* OPAL_DATATYPE_FLOAT_COMPLEX */
|
||||
(conversion_fct_t)copy_double_complex, /* OPAL_DATATYPE_DOUBLE_COMPLEX */
|
||||
(conversion_fct_t)copy_long_double_complex, /* OPAL_DATATYPE_LONG_DOUBLE_COMPLEX */
|
||||
(conversion_fct_t)copy_bool, /* OPAL_DATATYPE_BOOL */
|
||||
(conversion_fct_t)copy_wchar, /* OPAL_DATATYPE_WCHAR */
|
||||
(conversion_fct_t)NULL /* OPAL_DATATYPE_UNAVAILABLE */
|
||||
|
@ -4,6 +4,8 @@
|
||||
* of Tennessee Research Foundation. All rights
|
||||
* reserved.
|
||||
* Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
||||
* Copyright (c) 2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -281,6 +283,30 @@ COPY_TYPE_HETEROGENEOUS( float16, long double )
|
||||
#define copy_float16_heterogeneous NULL
|
||||
#endif
|
||||
|
||||
#if HAVE_FLOAT__COMPLEX
|
||||
// COPY_TYPE_HETEROGENEOUS ( float_complex, float _Complex)
|
||||
COPY_2TYPE_HETEROGENEOUS( float_complex, float, float )
|
||||
#else
|
||||
/* #error No basic type for copy function for opal_datatype_float_complex found */
|
||||
#define copy_float_complex_heterogeneous NULL
|
||||
#endif
|
||||
|
||||
#if HAVE_DOUBLE__COMPLEX
|
||||
// COPY_TYPE_HETEROGENEOUS ( double_complex, double _Complex)
|
||||
COPY_2TYPE_HETEROGENEOUS( double_complex, double, double )
|
||||
#else
|
||||
/* #error No basic type for copy function for opal_datatype_double_complex found */
|
||||
#define copy_double_complex_heterogeneous NULL
|
||||
#endif
|
||||
|
||||
#if HAVE_LONG_DOUBLE__COMPLEX
|
||||
// COPY_TYPE_HETEROGENEOUS ( long_double_complex, long double _Complex)
|
||||
COPY_2TYPE_HETEROGENEOUS( long_double_complex, long double, long double )
|
||||
#else
|
||||
/* #error No basic type for copy function for opal_datatype_long_double_complex found */
|
||||
#define copy_long_double_complex_heterogeneous NULL
|
||||
#endif
|
||||
|
||||
COPY_TYPE_HETEROGENEOUS (wchar, wchar_t)
|
||||
|
||||
/* table of predefined copy functions - one for each MPI type */
|
||||
@ -304,6 +330,9 @@ conversion_fct_t opal_datatype_heterogeneous_copy_functions[OPAL_DATATYPE_MAX_PR
|
||||
(conversion_fct_t) copy_float8_heterogeneous, /* OPAL_DATATYPE_FLOAT8 */
|
||||
(conversion_fct_t) copy_float12_heterogeneous, /* OPAL_DATATYPE_FLOAT12 */
|
||||
(conversion_fct_t) copy_float16_heterogeneous, /* OPAL_DATATYPE_FLOAT16 */
|
||||
(conversion_fct_t) copy_float_complex_heterogeneous, /* OPAL_DATATYPE_FLOAT_COMPLEX */
|
||||
(conversion_fct_t) copy_double_complex_heterogeneous, /* OPAL_DATATYPE_DOUBLE_COMPLEX */
|
||||
(conversion_fct_t) copy_long_double_complex_heterogeneous,/* OPAL_DATATYPE_LONG_DOUBLE_COMPLEX */
|
||||
(conversion_fct_t) copy_cxx_bool_heterogeneous, /* OPAL_DATATYPE_BOOL */
|
||||
(conversion_fct_t) copy_wchar_heterogeneous, /* OPAL_DATATYPE_WCHAR */
|
||||
NULL, /* OPAL_DATATYPE_UNAVAILABLE */
|
||||
|
@ -351,7 +351,7 @@ struct opal_datatype_t;
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT2(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( float, OPAL_ALIGNMENT_FLOAT, FLOAT2, FLAGS )
|
||||
#elif SIZEOF_DOUBLE == 2
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT2(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( double, OPAL_ALIGNMENT_DOUBLE, FLOAT2, FLAGS )
|
||||
#elif SIZEOF_LONG_DOUBLE == 2
|
||||
#elif HAVE_LONG_DOUBLE && SIZEOF_LONG_DOUBLE == 2
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT2(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( long double, OPAL_ALIGNMENT_LONG_DOUBLE, FLOAT2, FLAGS )
|
||||
#else
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT2(FLAGS) OPAL_DATATYPE_INITIALIZER_UNAVAILABLE_NAMED( FLOAT2, FLAGS )
|
||||
@ -361,7 +361,7 @@ struct opal_datatype_t;
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT4(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( float, OPAL_ALIGNMENT_FLOAT, FLOAT4, FLAGS )
|
||||
#elif SIZEOF_DOUBLE == 4
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT4(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( double, OPAL_ALIGNMENT_DOUBLE, FLOAT4, FLAGS )
|
||||
#elif SIZEOF_LONG_DOUBLE == 4
|
||||
#elif HAVE_LONG_DOUBLE && SIZEOF_LONG_DOUBLE == 4
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT4(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( long double, OPAL_ALIGNMENT_LONG_DOUBLE, FLOAT4, FLAGS )
|
||||
#else
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT4(FLAGS) OPAL_DATATYPE_INITIALIZER_UNAVAILABLE_NAMED( FLOAT4, FLAGS )
|
||||
@ -371,7 +371,7 @@ struct opal_datatype_t;
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT8(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( float, OPAL_ALIGNMENT_FLOAT, FLOAT8, FLAGS )
|
||||
#elif SIZEOF_DOUBLE == 8
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT8(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( double, OPAL_ALIGNMENT_DOUBLE, FLOAT8, FLAGS )
|
||||
#elif SIZEOF_LONG_DOUBLE == 8
|
||||
#elif HAVE_LONG_DOUBLE && SIZEOF_LONG_DOUBLE == 8
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT8(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( long double, OPAL_ALIGNMENT_LONG_DOUBLE, FLOAT8, FLAGS )
|
||||
#else
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT8(FLAGS) OPAL_DATATYPE_INITIALIZER_UNAVAILABLE_NAMED( FLOAT8, FLAGS )
|
||||
@ -381,7 +381,7 @@ struct opal_datatype_t;
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT12(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( float, OPAL_ALIGNMENT_FLOAT, FLOAT12, FLAGS )
|
||||
#elif SIZEOF_DOUBLE == 12
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT12(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( double, OPAL_ALIGNMENT_DOUBLE, FLOAT12, FLAGS )
|
||||
#elif SIZEOF_LONG_DOUBLE == 12
|
||||
#elif HAVE_LONG_DOUBLE && SIZEOF_LONG_DOUBLE == 12
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT12(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( long double, OPAL_ALIGNMENT_LONG_DOUBLE, FLOAT12, FLAGS )
|
||||
#else
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT12(FLAGS) OPAL_DATATYPE_INITIALIZER_UNAVAILABLE_NAMED( FLOAT12, FLAGS )
|
||||
@ -391,7 +391,7 @@ struct opal_datatype_t;
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT16(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( float, OPAL_ALIGNMENT_FLOAT, FLOAT16, FLAGS )
|
||||
#elif SIZEOF_DOUBLE == 16
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT16(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( double, OPAL_ALIGNMENT_DOUBLE, FLOAT16, FLAGS )
|
||||
#elif SIZEOF_LONG_DOUBLE == 16
|
||||
#elif HAVE_LONG_DOUBLE && SIZEOF_LONG_DOUBLE == 16
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT16(FLAGS) OPAL_DATATYPE_INIT_BASIC_DATATYPE( long double, OPAL_ALIGNMENT_LONG_DOUBLE, FLOAT16, FLAGS )
|
||||
#else
|
||||
#define OPAL_DATATYPE_INITIALIZER_FLOAT16(FLAGS) OPAL_DATATYPE_INITIALIZER_UNAVAILABLE_NAMED( FLOAT16, FLAGS )
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user