1
1

- Support for opt. MPI_REAL2 (who has that?)

to make checks for MPI-implementations fail in the right way ,-]
 - check in configure.ac
 - BINARY INCOMPATIBLE change to mpif-common.h
   (if implemented the *right* way)
   Actually OMPI_F90_CHECK takes two arguments, not three.
 - Only have corresponding C-Type, if the opt. Fortran
   type is really supported,
   Otherwise pass ompi_mpi_unavailable to DECLARE_MPI_SYNONYM_DDT;
 - Reviewed by George and Jeff

This commit was SVN r15133.
Этот коммит содержится в:
Rainer Keller 2007-06-19 05:03:11 +00:00
родитель 7fd1805e97
Коммит d3372729bb
7 изменённых файлов: 48 добавлений и 10 удалений

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

@ -6,7 +6,7 @@
# Copyright (c) 2004-2005 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2004-2006 High Performance Computing Center Stuttgart,
# Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
@ -431,6 +431,8 @@ OMPI_F77_CHECK([INTEGER*16], [no],
OMPI_F77_CHECK([REAL], [yes],
[float, double, long double], [-1])
OMPI_F77_CHECK([REAL*2], [no],
[float, double, long double], [2])
OMPI_F77_CHECK([REAL*4], [no],
[float, double, long double], [4])
OMPI_F77_CHECK([REAL*8], [no],
@ -522,9 +524,10 @@ OMPI_F90_CHECK([INTEGER*16], [16])
# REAL, DOUBLE PRECISION, REAL*4, *8, *16
OMPI_F90_CHECK([REAL])
OMPI_F90_CHECK([REAL*4], [4], [1])
OMPI_F90_CHECK([REAL*8], [8], [1])
OMPI_F90_CHECK([REAL*16], [16], [1])
OMPI_F90_CHECK([REAL*2], [2])
OMPI_F90_CHECK([REAL*4], [4])
OMPI_F90_CHECK([REAL*8], [8])
OMPI_F90_CHECK([REAL*16], [16])
OMPI_F90_CHECK([DOUBLE PRECISION])
# COMPLEX, DOUBLE COMPLEX, COMPLEX*8, *16, *32

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

@ -5,7 +5,7 @@
* Copyright (c) 2004-2006 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
@ -51,6 +51,9 @@
/* Whether we have FORTRAN REAL*16 or not */
#undef OMPI_HAVE_FORTRAN_REAL16
/* Whether we have FORTRAN REAL*2 or not */
#undef OMPI_HAVE_FORTRAN_REAL2
/* Whether we have FORTRAN REAL*4 or not */
#undef OMPI_HAVE_FORTRAN_REAL4
@ -608,6 +611,9 @@ OMPI_DECLSPEC extern struct ompi_datatype_t ompi_mpi_integer8;
#if OMPI_HAVE_FORTRAN_INTEGER16
OMPI_DECLSPEC extern struct ompi_datatype_t ompi_mpi_integer16;
#endif
#if OMPI_HAVE_FORTRAN_REAL2
OMPI_DECLSPEC extern struct ompi_datatype_t ompi_mpi_real2;
#endif
#if OMPI_HAVE_FORTRAN_REAL4
OMPI_DECLSPEC extern struct ompi_datatype_t ompi_mpi_real4;
#endif

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

@ -5,7 +5,7 @@
! Copyright (c) 2004-2005 The University of Tennessee and The University
! of Tennessee Research Foundation. All rights
! reserved.
! Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
! Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
! University of Stuttgart. All rights reserved.
! Copyright (c) 2004-2005 The Regents of the University of California.
! All rights reserved.
@ -27,6 +27,7 @@ integer :: OMPI_SIZEOF_F90_INT4
integer :: OMPI_SIZEOF_F90_INT8
integer :: OMPI_SIZEOF_F90_INT16
integer :: OMPI_SIZEOF_F90_REAL2
integer :: OMPI_SIZEOF_F90_REAL4
integer :: OMPI_SIZEOF_F90_REAL8
integer :: OMPI_SIZEOF_F90_REAL16
@ -43,6 +44,7 @@ parameter(OMPI_SIZEOF_F90_INT4 = @OMPI_SIZEOF_F90_INTEGER4@)
parameter(OMPI_SIZEOF_F90_INT8 = @OMPI_SIZEOF_F90_INTEGER8@)
parameter(OMPI_SIZEOF_F90_INT16 = @OMPI_SIZEOF_F90_INTEGER16@)
parameter(OMPI_SIZEOF_F90_REAL2 = @OMPI_SIZEOF_F90_REAL2@)
parameter(OMPI_SIZEOF_F90_REAL4 = @OMPI_SIZEOF_F90_REAL4@)
parameter(OMPI_SIZEOF_F90_REAL8 = @OMPI_SIZEOF_F90_REAL8@)
parameter(OMPI_SIZEOF_F90_REAL16 = @OMPI_SIZEOF_F90_REAL16@)

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

@ -5,7 +5,7 @@
* Copyright (c) 2004-2005 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
@ -152,6 +152,11 @@ OBJ_CLASS_INSTANCE(ompi_op_t, opal_object_t,
#else
#define FLOATING_POINT_FORTRAN_REAL_PLAIN(name) { NULL }
#endif
#if OMPI_HAVE_FORTRAN_REAL2
#define FLOATING_POINT_FORTRAN_REAL2(name) { ompi_mpi_op_##name##_fortran_real2 }
#else
#define FLOATING_POINT_FORTRAN_REAL2(name) { NULL }
#endif
#if OMPI_HAVE_FORTRAN_REAL4
#define FLOATING_POINT_FORTRAN_REAL4(name) { ompi_mpi_op_##name##_fortran_real4 }
#else
@ -170,6 +175,7 @@ OBJ_CLASS_INSTANCE(ompi_op_t, opal_object_t,
#define FLOATING_POINT_FORTRAN_REAL(name) \
FLOATING_POINT_FORTRAN_REAL_PLAIN(name), /* OMPI_OP_TYPE_REAL */ \
FLOATING_POINT_FORTRAN_REAL2(name), /* OMPI_OP_TYPE_REAL2 */ \
FLOATING_POINT_FORTRAN_REAL4(name), /* OMPI_OP_TYPE_REAL4 */ \
FLOATING_POINT_FORTRAN_REAL8(name), /* OMPI_OP_TYPE_REAL8 */ \
FLOATING_POINT_FORTRAN_REAL16(name) /* OMPI_OP_TYPE_REAL16 */
@ -195,6 +201,7 @@ OBJ_CLASS_INSTANCE(ompi_op_t, opal_object_t,
{ NULL }, /* OMPI_OP_TYPE_FLOAT */ \
{ NULL }, /* OMPI_OP_TYPE_DOUBLE */ \
{ NULL }, /* OMPI_OP_TYPE_REAL */ \
{ NULL }, /* OMPI_OP_TYPE_REAL2 */ \
{ NULL }, /* OMPI_OP_TYPE_REAL4 */ \
{ NULL }, /* OMPI_OP_TYPE_REAL8 */ \
{ NULL }, /* OMPI_OP_TYPE_REAL16 */ \

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

@ -5,7 +5,7 @@
* Copyright (c) 2004-2005 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
@ -120,6 +120,8 @@ enum {
/**< Floating point: double */
OMPI_OP_TYPE_REAL,
/**< Floating point: real */
OMPI_OP_TYPE_REAL2,
/**< Floating point: real*2 */
OMPI_OP_TYPE_REAL4,
/**< Floating point: real*4 */
OMPI_OP_TYPE_REAL8,

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

@ -5,7 +5,7 @@
* Copyright (c) 2004-2006 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
@ -176,6 +176,9 @@ FUNC_FUNC(max, fortran_real, ompi_fortran_real_t)
#if OMPI_HAVE_FORTRAN_DOUBLE_PRECISION
FUNC_FUNC(max, fortran_double_precision, ompi_fortran_double_precision_t)
#endif
#if OMPI_HAVE_FORTRAN_REAL2
FUNC_FUNC(max, fortran_real2, ompi_fortran_real2_t)
#endif
#if OMPI_HAVE_FORTRAN_REAL4
FUNC_FUNC(max, fortran_real4, ompi_fortran_real4_t)
#endif
@ -237,6 +240,9 @@ FUNC_FUNC(min, fortran_real, ompi_fortran_real_t)
#if OMPI_HAVE_FORTRAN_DOUBLE_PRECISION
FUNC_FUNC(min, fortran_double_precision, ompi_fortran_double_precision_t)
#endif
#if OMPI_HAVE_FORTRAN_REAL2
FUNC_FUNC(min, fortran_real2, ompi_fortran_real2_t)
#endif
#if OMPI_HAVE_FORTRAN_REAL4
FUNC_FUNC(min, fortran_real4, ompi_fortran_real4_t)
#endif
@ -295,6 +301,9 @@ OP_FUNC(sum, fortran_real, ompi_fortran_real_t, +=)
#if OMPI_HAVE_FORTRAN_DOUBLE_PRECISION
OP_FUNC(sum, fortran_double_precision, ompi_fortran_double_precision_t, +=)
#endif
#if OMPI_HAVE_FORTRAN_REAL2
OP_FUNC(sum, fortran_real2, ompi_fortran_real2_t, +=)
#endif
#if OMPI_HAVE_FORTRAN_REAL4
OP_FUNC(sum, fortran_real4, ompi_fortran_real4_t, +=)
#endif
@ -369,6 +378,9 @@ OP_FUNC(prod, fortran_real, ompi_fortran_real_t, *=)
#if OMPI_HAVE_FORTRAN_DOUBLE_PRECISION
OP_FUNC(prod, fortran_double_precision, ompi_fortran_double_precision_t, *=)
#endif
#if OMPI_HAVE_FORTRAN_REAL2
OP_FUNC(prod, fortran_real2, ompi_fortran_real2_t, *=)
#endif
#if OMPI_HAVE_FORTRAN_REAL4
OP_FUNC(prod, fortran_real4, ompi_fortran_real4_t, *=)
#endif

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

@ -5,7 +5,7 @@
* Copyright (c) 2004-2005 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
@ -100,6 +100,12 @@
void ompi_mpi_op_##name##_fortran_real OMPI_OP_PROTO; \
void ompi_mpi_op_##name##_fortran_double_precision OMPI_OP_PROTO; \
void ompi_mpi_op_##name##_long_double OMPI_OP_PROTO;
#if OMPI_HAVE_FORTRAN_REAL2
#define OMPI_OP_HANDLER_FLOATING_POINT_REAL2(name) \
void ompi_mpi_op_##name##_fortran_real2 OMPI_OP_PROTO;
#else
#define OMPI_OP_HANDLER_FLOATING_POINT_REAL2(name)
#endif
#if OMPI_HAVE_FORTRAN_REAL4
#define OMPI_OP_HANDLER_FLOATING_POINT_REAL4(name) \
void ompi_mpi_op_##name##_fortran_real4 OMPI_OP_PROTO;