diff --git a/acinclude.m4 b/acinclude.m4 index d6648ba6cc..7bb09eaa78 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -33,6 +33,7 @@ sinclude(config/f77_get_fortran_handle_max.m4) sinclude(config/f77_get_sizeof.m4) sinclude(config/f90_check_type.m4) +sinclude(config/f90_get_alignment.m4) sinclude(config/f90_get_sizeof.m4) sinclude(config/ompi_case_sensitive_fs_setup.m4) diff --git a/configure.ac b/configure.ac index 852419c22e..1c505f6756 100644 --- a/configure.ac +++ b/configure.ac @@ -496,6 +496,7 @@ OMPI_HAVE_F90_COMPLEX8=0 OMPI_HAVE_F90_COMPLEX16=0 OMPI_HAVE_F90_COMPLEX32=0 +OMPI_SIZEOF_F90_LOGICAL=0 OMPI_SIZEOF_F90_INT=0 OMPI_SIZEOF_F90_REAL=0 OMPI_SIZEOF_F90_DBLPREC=0 @@ -516,6 +517,27 @@ OMPI_SIZEOF_F90_COMPLEX8=0 OMPI_SIZEOF_F90_COMPLEX16=0 OMPI_SIZEOF_F90_COMPLEX32=0 +OMPI_ALIGNMENT_F90_LOGICAL=0 +OMPI_ALIGNMENT_F90_INT=0 +OMPI_ALIGNMENT_F90_REAL=0 +OMPI_ALIGNMENT_F90_DBLPREC=0 +OMPI_ALIGNMENT_F90_COMPLEX=0 +OMPI_ALIGNMENT_F90_DBLCOMPLEX=0 + +OMPI_ALIGNMENT_F90_INT1=0 +OMPI_ALIGNMENT_F90_INT2=0 +OMPI_ALIGNMENT_F90_INT4=0 +OMPI_ALIGNMENT_F90_INT8=0 +OMPI_ALIGNMENT_F90_INT16=0 + +OMPI_ALIGNMENT_F90_REAL4=0 +OMPI_ALIGNMENT_F90_REAL8=0 +OMPI_ALIGNMENT_F90_REAL16=0 + +OMPI_ALIGNMENT_F90_COMPLEX8=0 +OMPI_ALIGNMENT_F90_COMPLEX16=0 +OMPI_ALIGNMENT_F90_COMPLEX32=0 + # # lists of supported Fortran types # @@ -545,6 +567,7 @@ else OMPI_F90_CHECK_TYPE(selected_real_kind(15), OMPI_HAVE_F90_REAL8) OMPI_F90_CHECK_TYPE(selected_real_kind(31), OMPI_HAVE_F90_REAL16) + OMPI_F90_GET_SIZEOF(logical, OMPI_SIZEOF_F90_LOGICAL) OMPI_F90_GET_SIZEOF(integer, OMPI_SIZEOF_F90_INT) OMPI_F90_GET_SIZEOF(real, OMPI_SIZEOF_F90_REAL) OMPI_F90_GET_SIZEOF(real(kind(1.D0)), OMPI_SIZEOF_F90_DBLPREC) @@ -567,6 +590,38 @@ else OMPI_SIZEOF_F90_COMPLEX16) OMPI_F90_GET_SIZEOF(complex(selected_real_kind(31)), OMPI_SIZEOF_F90_COMPLEX32) + + OMPI_F90_GET_ALIGNMENT(logical, OMPI_ALIGNMENT_F90_LOGICAL) + OMPI_F90_GET_ALIGNMENT(integer, OMPI_ALIGNMENT_F90_INT) + OMPI_F90_GET_ALIGNMENT(real, OMPI_ALIGNMENT_F90_REAL) + OMPI_F90_GET_ALIGNMENT(real(kind(1.D0)), OMPI_ALIGNMENT_F90_DBLPREC) + OMPI_F90_GET_ALIGNMENT(complex, OMPI_ALIGNMENT_F90_COMPLEX) + OMPI_F90_GET_ALIGNMENT(complex(kind(1.D0)), OMPI_ALIGNMENT_F90_DBLCOMPLEX) + + OMPI_F90_GET_ALIGNMENT(integer(selected_int_kind(2)), + OMPI_ALIGNMENT_F90_INT1) + OMPI_F90_GET_ALIGNMENT(integer(selected_int_kind(4)), + OMPI_ALIGNMENT_F90_INT2) + OMPI_F90_GET_ALIGNMENT(integer(selected_int_kind(9)), + OMPI_ALIGNMENT_F90_INT4) + OMPI_F90_GET_ALIGNMENT(integer(selected_int_kind(18)), + OMPI_ALIGNMENT_F90_INT8) + OMPI_F90_GET_ALIGNMENT(integer(selected_int_kind(19)), + OMPI_ALIGNMENT_F90_INT16) + + OMPI_F90_GET_ALIGNMENT(real(selected_real_kind(6)), + OMPI_ALIGNMENT_F90_REAL4) + OMPI_F90_GET_ALIGNMENT(real(selected_real_kind(15)), + OMPI_ALIGNMENT_F90_REAL8) + OMPI_F90_GET_ALIGNMENT(real(selected_real_kind(31)), + OMPI_ALIGNMENT_F90_REAL16) + + OMPI_F90_GET_ALIGNMENT(complex(selected_real_kind(6)), + OMPI_ALIGNMENT_F90_COMPLEX8) + OMPI_F90_GET_ALIGNMENT(complex(selected_real_kind(15)), + OMPI_ALIGNMENT_F90_COMPLEX16) + OMPI_F90_GET_ALIGNMENT(complex(selected_real_kind(31)), + OMPI_ALIGNMENT_F90_COMPLEX32) fi # @@ -575,48 +630,59 @@ fi if test "$OMPI_SIZEOF_F90_INT1" != "1" ; then OMPI_SIZEOF_F90_INT1=0 + OMPI_ALIGNMENT_F90_INT1=0 OMPI_HAVE_F90_INTEGER1=0 fi if test "$OMPI_SIZEOF_F90_INT2" != "2" ; then OMPI_SIZEOF_F90_INT2=0 + OMPI_ALIGNMENT_F90_INT2=0 OMPI_HAVE_F90_INTEGER2=0 fi if test "$OMPI_SIZEOF_F90_INT4" != "4" ; then OMPI_SIZEOF_F90_INT4=0 + OMPI_ALIGNMENT_F90_INT4=0 OMPI_HAVE_F90_INTEGER4=0 fi if test "$OMPI_SIZEOF_F90_INT8" != "8" ; then OMPI_SIZEOF_F90_INT8=0 + OMPI_ALIGNMENT_F90_INT8=0 OMPI_HAVE_F90_INTEGER8=0 fi if test "$OMPI_SIZEOF_F90_INT16" != "16" ; then OMPI_SIZEOF_F90_INT16=0 + OMPI_ALIGNMENT_F90_INT16=0 OMPI_HAVE_F90_INTEGER16=0 fi if test "$OMPI_SIZEOF_F90_REAL4" != "4" ; then OMPI_SIZEOF_F90_REAL4=0 + OMPI_ALIGNMENT_F90_REAL4=0 OMPI_HAVE_F90_REAL4=0 fi if test "$OMPI_SIZEOF_F90_REAL8" != "8" ; then OMPI_SIZEOF_F90_REAL8=0 + OMPI_ALIGNMENT_F90_REAL8=0 OMPI_HAVE_F90_REAL8=0 fi if test "$OMPI_SIZEOF_F90_REAL16" != "16" ; then OMPI_SIZEOF_F90_REAL16=0 + OMPI_ALIGNMENT_F90_REAL16=0 OMPI_HAVE_F90_REAL16=0 fi if test "$OMPI_SIZEOF_F90_COMPLEX8" != "8" ; then OMPI_SIZEOF_F90_COMPLEX8=0 + OMPI_ALIGNMENT_F90_COMPLEX8=0 OMPI_HAVE_F90_COMPLEX8=0 fi if test "$OMPI_SIZEOF_F90_COMPLEX16" != "16" ; then OMPI_SIZEOF_F90_COMPLEX16=0 + OMPI_ALIGNMENT_F90_COMPLEX8=0 OMPI_HAVE_F90_COMPLEX16=0 fi if test "$OMPI_SIZEOF_F90_COMPLEX32" != "32" ; then OMPI_SIZEOF_F90_COMPLEX32=0 + OMPI_ALIGNMENT_F90_COMPLEX8=0 OMPI_HAVE_F90_COMPLEX32=0 fi @@ -673,6 +739,45 @@ AC_SUBST(OMPI_SIZEOF_F90_COMPLEX8) AC_SUBST(OMPI_SIZEOF_F90_COMPLEX16) AC_SUBST(OMPI_SIZEOF_F90_COMPLEX32) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_LOGICAL, $OMPI_ALIGNMENT_F90_LOGICAL, + [Alignment of fortran logical]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_INT, $OMPI_ALIGNMENT_F90_INT, + [Alignment of fortran integer]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_REAL, $OMPI_ALIGNMENT_F90_REAL, + [alignment of fortran real]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_DBLPREC, $OMPI_ALIGNMENT_F90_DBLPREC, + [Alignment of fortran double precision]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_COMPLEX, $OMPI_ALIGNMENT_F90_COMPLEX, + [Alignment of fortran complex]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_DBLCOMPLEX, + $OMPI_ALIGNMENT_F90_DBLCOMPLEX, + [Alignment of fortran double complex]) + +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_INT1, $OMPI_ALIGNMENT_F90_INT1, + [alignment of fortran integer*1]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_INT2, $OMPI_ALIGNMENT_F90_INT2, + [alignment of fortran integer*2]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_INT4, $OMPI_ALIGNMENT_F90_INT4, + [alignment of fortran integer*4]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_INT8, $OMPI_ALIGNMENT_F90_INT8, + [alignment of fortran integer*8]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_INT16, $OMPI_ALIGNMENT_F90_INT16, + [alignment of fortran integer*16]) + +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_REAL4, $OMPI_ALIGNMENT_F90_REAL4, + [alignment of fortran real*4]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_REAL8, $OMPI_ALIGNMENT_F90_REAL8, + [alignment of fortran real*8]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_REAL16, $OMPI_ALIGNMENT_F90_REAL16, + [alignment of fortran real*16]) + +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_COMPLEX8, $OMPI_ALIGNMENT_F90_COMPLEX8, + [alignment of fortran real*8]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_COMPLEX16, $OMPI_ALIGNMENT_F90_COMPLEX16, + [alignment of fortran real*16]) +AC_DEFINE_UNQUOTED(OMPI_ALIGNMENT_F90_COMPLEX32, $OMPI_ALIGNMENT_F90_COMPLEX32, + [alignment of fortran real*32]) + ################################## # Header files