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.
Этот коммит содержится в:
родитель
0b41524cc6
Коммит
4dd4de0c0b
@ -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);
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user