1
1

Correctly detect the predefined datatype for MPI_Type_match_size

And add the F90 INTEGER type (for MPI_TYPE_CREATE_F90_INTEGER).

This commit was SVN r4507.
Этот коммит содержится в:
George Bosilca 2005-02-23 05:48:02 +00:00
родитель 0b41524cc6
Коммит 4dd4de0c0b
2 изменённых файлов: 40 добавлений и 6 удалений

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

@ -37,7 +37,27 @@ int MPI_Type_create_f90_integer(int r, MPI_Datatype *newtype)
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
/* This function is not yet implemented */
if (r > 38) *newtype = &ompi_mpi_datatype_null;
#if OMPI_HAVE_F90_INTEGER16
else if (r > 18) *newtype = &ompi_mpi_long_long;
#else
else if (r > 18) *newtype = &ompi_mpi_datatype_null;
#endif /* OMPI_HAVE_F90_INTEGER16 */
#if SIZEOF_LONG > SIZEOF_INT
else if (r > 9) *newtype = &ompi_mpi_long;
#else
#if SIZEOF_LONG_LONG > SIZEOF_INT
else if (r > 9) *newtype = &ompi_mpi_long_long;
#else
else if (r > 9) *newtype = &ompi_mpi_datatype_null;
#endif /* SIZEOF_LONG_LONG > SIZEOF_INT */
#endif /* SIZEOF_LONG > SIZEOF_INT */
else if (r > 4) *newtype = &ompi_mpi_int;
else if (r > 2) *newtype = &ompi_mpi_short;
else *newtype = &ompi_mpi_byte;
if( *newtype == &ompi_mpi_datatype_null )
return MPI_SUCCESS;
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_OTHER, FUNC_NAME);
}

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

@ -33,11 +33,25 @@ static const char FUNC_NAME[] = "MPI_Type_match_size";
int MPI_Type_match_size(int typeclass, int size, MPI_Datatype *type)
{
if (MPI_PARAM_CHECK) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
if (MPI_PARAM_CHECK) {
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
}
/* This function is not yet implemented */
switch( typeclass ) {
case MPI_TYPECLASS_REAL:
*type = (MPI_Datatype)ompi_ddt_match_size( size, DT_FLAG_DATA_FLOAT, DT_FLAG_DATA_C );
break;
case MPI_TYPECLASS_INTEGER:
*type = (MPI_Datatype)ompi_ddt_match_size( size, DT_FLAG_DATA_INT, DT_FLAG_DATA_C );
break;
case MPI_TYPECLASS_COMPLEX:
*type = (MPI_Datatype)ompi_ddt_match_size( size, DT_FLAG_DATA_COMPLEX, DT_FLAG_DATA_C );
break;
default:
*type = &ompi_mpi_datatype_null;
}
if( *type != &ompi_mpi_datatype_null )
return MPI_SUCCESS;
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_INTERN, FUNC_NAME);
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG, FUNC_NAME);
}