1
1

Add support for complex (complex8, complex16 and complex32) in the

opal datatype engine. These types are created from two consecutive 
basic types (float, double and long double).

This commit was SVN r21763.
Этот коммит содержится в:
George Bosilca 2009-08-04 23:42:32 +00:00
родитель bed58f1d08
Коммит 668f001351
3 изменённых файлов: 42 добавлений и 5 удалений

Просмотреть файл

@ -49,7 +49,7 @@ BEGIN_C_DECLS
*
* This must match the same definition as in opal_datatype_internal.h
*/
#define OPAL_DATATYPE_MAX_PREDEFINED 22
#define OPAL_DATATYPE_MAX_PREDEFINED 25
/*
* No more than this number of _Basic_ datatypes in C/CPP or Fortran
* are supported (in order to not change setup and usage of btypes).
@ -166,6 +166,9 @@ OPAL_DECLSPEC extern const opal_datatype_t opal_datatype_float4;
OPAL_DECLSPEC extern const opal_datatype_t opal_datatype_float8;
OPAL_DECLSPEC extern const opal_datatype_t opal_datatype_float12;
OPAL_DECLSPEC extern const opal_datatype_t opal_datatype_float16;
OPAL_DECLSPEC extern const opal_datatype_t opal_datatype_complex8;
OPAL_DECLSPEC extern const opal_datatype_t opal_datatype_complex16;
OPAL_DECLSPEC extern const opal_datatype_t opal_datatype_complex32;
OPAL_DECLSPEC extern const opal_datatype_t opal_datatype_bool;
OPAL_DECLSPEC extern const opal_datatype_t opal_datatype_wchar;

Просмотреть файл

@ -114,12 +114,15 @@ static inline void DUMP( char* fmt, ... )
#define OPAL_DATATYPE_FLOAT8 16
#define OPAL_DATATYPE_FLOAT12 17
#define OPAL_DATATYPE_FLOAT16 18
#define OPAL_DATATYPE_BOOL 19
#define OPAL_DATATYPE_WCHAR 20
#define OPAL_DATATYPE_UNAVAILABLE 21
#define OPAL_DATATYPE_COMPLEX8 19
#define OPAL_DATATYPE_COMPLEX16 20
#define OPAL_DATATYPE_COMPLEX32 21
#define OPAL_DATATYPE_BOOL 22
#define OPAL_DATATYPE_WCHAR 23
#define OPAL_DATATYPE_UNAVAILABLE 24
#ifndef OPAL_DATATYPE_MAX_PREDEFINED
#define OPAL_DATATYPE_MAX_PREDEFINED 22
#define OPAL_DATATYPE_MAX_PREDEFINED 25
#endif
/*

Просмотреть файл

@ -66,6 +66,9 @@ OPAL_DECLSPEC const opal_datatype_t opal_datatype_float4 = OPAL_DATATYPE_IN
OPAL_DECLSPEC const opal_datatype_t opal_datatype_float8 = OPAL_DATATYPE_INITIALIZER_FLOAT8(0);
OPAL_DECLSPEC const opal_datatype_t opal_datatype_float12 = OPAL_DATATYPE_INITIALIZER_FLOAT12(0);
OPAL_DECLSPEC const opal_datatype_t opal_datatype_float16 = OPAL_DATATYPE_INITIALIZER_FLOAT16(0);
OPAL_DECLSPEC const opal_datatype_t opal_datatype_complex8 = OPAL_DATATYPE_INITIALIZER_UNAVAILABLE(0);
OPAL_DECLSPEC const opal_datatype_t opal_datatype_complex16 = OPAL_DATATYPE_INITIALIZER_UNAVAILABLE(0);
OPAL_DECLSPEC const opal_datatype_t opal_datatype_complex32 = OPAL_DATATYPE_INITIALIZER_UNAVAILABLE(0);
OPAL_DECLSPEC const opal_datatype_t opal_datatype_bool = OPAL_DATATYPE_INITIALIZER_BOOL(0);
OPAL_DECLSPEC const opal_datatype_t opal_datatype_wchar = OPAL_DATATYPE_INITIALIZER_WCHAR(0);
OPAL_DECLSPEC const opal_datatype_t opal_datatype_unavailable = OPAL_DATATYPE_INITIALIZER_UNAVAILABLE(0);
@ -94,6 +97,9 @@ OPAL_DECLSPEC const size_t opal_datatype_local_sizes[OPAL_DATATYPE_MAX_PREDEFINE
8, /* sizeof (float8) */
12, /* sizeof (float12) */
16, /* sizeof (float16) */
8, /* 2 * sizeof(float4) */
16, /* 2 * sizeof(float8) */
32, /* 2 * sizeof(float16) */
sizeof (_Bool),
sizeof (wchar_t),
0 /* unavailable */
@ -122,6 +128,9 @@ OPAL_DECLSPEC const opal_datatype_t* opal_datatype_basicDatatypes[OPAL_DATATYPE_
&opal_datatype_float8,
&opal_datatype_float12,
&opal_datatype_float16,
&opal_datatype_complex8,
&opal_datatype_complex16,
&opal_datatype_complex32,
&opal_datatype_bool,
&opal_datatype_wchar,
&opal_datatype_unavailable
@ -155,6 +164,28 @@ int opal_datatype_register_params(void)
int32_t opal_datatype_init( void )
{
int32_t i;
opal_datatype_t* temp;
opal_datatype_create_contiguous( 2, &opal_datatype_float4, &temp );
temp->id = OPAL_DATATYPE_COMPLEX8;
temp->flags |= OPAL_DATATYPE_FLAG_PREDEFINED;
strcpy( temp->name, "OPAL_DATATYPE_COMPLEX8" );
memcpy( (void*)&opal_datatype_complex8, temp, sizeof(opal_datatype_t) );
opal_datatype_destroy(&temp);
opal_datatype_create_contiguous( 2, &opal_datatype_float8, &temp );
temp->id = OPAL_DATATYPE_COMPLEX16;
temp->flags |= OPAL_DATATYPE_FLAG_PREDEFINED;
strcpy( temp->name, "OPAL_DATATYPE_COMPLEX16" );
memcpy( (void*)&opal_datatype_complex16, temp, sizeof(opal_datatype_t) );
opal_datatype_destroy(&temp);
opal_datatype_create_contiguous( 2, &opal_datatype_float16, &temp );
temp->id = OPAL_DATATYPE_COMPLEX32;
temp->flags |= OPAL_DATATYPE_FLAG_PREDEFINED;
strcpy( temp->name, "OPAL_DATATYPE_COMPLEX32" );
memcpy( (void*)&opal_datatype_complex32, temp, sizeof(opal_datatype_t) );
opal_datatype_destroy(&temp);
opal_arch_compute_local_id( &opal_local_arch );