[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.0.2-71-g0feb67a

mysql vizuser noreply at mpich.org
Tue Mar 5 18:14:28 CST 2013


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".

The branch, master has been updated
       via  0feb67a6f283f922f008717d138162c2059dad05 (commit)
       via  909399515d55620e2469bef20d0cf06bac57ddfc (commit)
       via  71552aac5b704eea8b343dce699f8a2288d1bf3f (commit)
       via  a93056137603ec9a62b43f9c4bcc4bffb593b913 (commit)
       via  afe8c4a468b0f381a8135679afb4bad542e72d5f (commit)
       via  3f1fcead9a9f2ae4013cfa931dc31cd41663f7fd (commit)
       via  d9db47aee320b83ddf4f448f38a6278c9e3467a8 (commit)
      from  bba79775fd322347bed3a8231c626061373e271f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/0feb67a6f283f922f008717d138162c2059dad05

commit 0feb67a6f283f922f008717d138162c2059dad05
Merge: bba7977 9093995
Author: Dave Goodell <goodell at mcs.anl.gov>
Date:   Tue Mar 5 18:04:21 2013 -0600

    Merge branch 'fix-long-double'
    
    Numerous fixes related to `long double` support, including selectively
    enabling/disabling it.


http://git.mpich.org/mpich.git/commitdiff/909399515d55620e2469bef20d0cf06bac57ddfc

commit 909399515d55620e2469bef20d0cf06bac57ddfc
Author: Dave Goodell <goodell at mcs.anl.gov>
Date:   Tue Mar 5 16:54:19 2013 -0600

    mpi.h: guard `long double`-derived MPI types
    
    Probably not too harmful to omit the guards, but better not to jumble
    more constants together in the compiler's type-checking machinery.
    
    No reviewer.

diff --git a/src/include/mpi.h.in b/src/include/mpi.h.in
index 00e086b..4a848ad 100644
--- a/src/include/mpi.h.in
+++ b/src/include/mpi.h.in
@@ -126,7 +126,9 @@ static const MPI_Datatype mpich_mpi_long               MPICH_ATTR_TYPE_TAG(long)
 static const MPI_Datatype mpich_mpi_unsigned_long      MPICH_ATTR_TYPE_TAG(unsigned long)      = MPI_UNSIGNED_LONG;
 static const MPI_Datatype mpich_mpi_float              MPICH_ATTR_TYPE_TAG(float)              = MPI_FLOAT;
 static const MPI_Datatype mpich_mpi_double             MPICH_ATTR_TYPE_TAG(double)             = MPI_DOUBLE;
+#if @MPI_LONG_DOUBLE@ != 0x0c000000
 static const MPI_Datatype mpich_mpi_long_double        MPICH_ATTR_TYPE_TAG(long double)        = MPI_LONG_DOUBLE;
+#endif
 static const MPI_Datatype mpich_mpi_long_long_int      MPICH_ATTR_TYPE_TAG(long long int)      = MPI_LONG_LONG_INT;
 static const MPI_Datatype mpich_mpi_unsigned_long_long MPICH_ATTR_TYPE_TAG(unsigned long long) = MPI_UNSIGNED_LONG_LONG;
 #endif
@@ -156,15 +158,19 @@ struct mpich_struct_mpi_double_int      { double d; int i; };
 struct mpich_struct_mpi_long_int        { long l; int i; };
 struct mpich_struct_mpi_short_int       { short s; int i; };
 struct mpich_struct_mpi_2int            { int i1; int i2; };
+#if @MPI_LONG_DOUBLE_INT@ != 0x0c000000
 struct mpich_struct_mpi_long_double_int { long double ld; int i; };
+#endif
 
 static const MPI_Datatype mpich_mpi_float_int       MPICH_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct mpich_struct_mpi_float_int)       = MPI_FLOAT_INT;
 static const MPI_Datatype mpich_mpi_double_int      MPICH_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct mpich_struct_mpi_double_int)      = MPI_DOUBLE_INT;
 static const MPI_Datatype mpich_mpi_long_int        MPICH_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct mpich_struct_mpi_long_int)        = MPI_LONG_INT;
 static const MPI_Datatype mpich_mpi_short_int       MPICH_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct mpich_struct_mpi_short_int)       = MPI_SHORT_INT;
 static const MPI_Datatype mpich_mpi_2int            MPICH_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct mpich_struct_mpi_2int)            = MPI_2INT;
+#if @MPI_LONG_DOUBLE_INT@ != 0x0c000000
 static const MPI_Datatype mpich_mpi_long_double_int MPICH_ATTR_TYPE_TAG_LAYOUT_COMPATIBLE(struct mpich_struct_mpi_long_double_int) = MPI_LONG_DOUBLE_INT;
 #endif
+#endif
 
 /* Fortran types */
 #define MPI_COMPLEX           ((MPI_Datatype)@MPI_COMPLEX@)
@@ -234,8 +240,10 @@ static const MPI_Datatype mpich_mpi_uint64_t MPICH_ATTR_TYPE_TAG_STDINT(uint64_t
 static const MPI_Datatype mpich_mpi_c_bool                MPICH_ATTR_TYPE_TAG_C99(_Bool)           = MPI_C_BOOL;
 static const MPI_Datatype mpich_mpi_c_float_complex       MPICH_ATTR_TYPE_TAG_C99(float _Complex)  = MPI_C_FLOAT_COMPLEX;
 static const MPI_Datatype mpich_mpi_c_double_complex      MPICH_ATTR_TYPE_TAG_C99(double _Complex) = MPI_C_DOUBLE_COMPLEX;
+#if @MPI_C_LONG_DOUBLE_COMPLEX@ != 0x0c000000
 static const MPI_Datatype mpich_mpi_c_long_double_complex MPICH_ATTR_TYPE_TAG_C99(long double _Complex) = MPI_C_LONG_DOUBLE_COMPLEX;
 #endif
+#endif
 
 /* address/offset types */
 #define MPI_AINT          ((MPI_Datatype)@MPI_AINT_DATATYPE@)

http://git.mpich.org/mpich.git/commitdiff/71552aac5b704eea8b343dce699f8a2288d1bf3f

commit 71552aac5b704eea8b343dce699f8a2288d1bf3f
Author: Dave Goodell <goodell at mcs.anl.gov>
Date:   Tue Mar 5 16:53:34 2013 -0600

    clang annotations: fix `long double _Complex'
    
    Obvious bug.
    
    No reviewer.

diff --git a/src/include/mpi.h.in b/src/include/mpi.h.in
index 30a356f..00e086b 100644
--- a/src/include/mpi.h.in
+++ b/src/include/mpi.h.in
@@ -234,7 +234,7 @@ static const MPI_Datatype mpich_mpi_uint64_t MPICH_ATTR_TYPE_TAG_STDINT(uint64_t
 static const MPI_Datatype mpich_mpi_c_bool                MPICH_ATTR_TYPE_TAG_C99(_Bool)           = MPI_C_BOOL;
 static const MPI_Datatype mpich_mpi_c_float_complex       MPICH_ATTR_TYPE_TAG_C99(float _Complex)  = MPI_C_FLOAT_COMPLEX;
 static const MPI_Datatype mpich_mpi_c_double_complex      MPICH_ATTR_TYPE_TAG_C99(double _Complex) = MPI_C_DOUBLE_COMPLEX;
-static const MPI_Datatype mpich_mpi_c_long_double_complex MPICH_ATTR_TYPE_TAG_C99(double _Complex) = MPI_C_LONG_DOUBLE_COMPLEX;
+static const MPI_Datatype mpich_mpi_c_long_double_complex MPICH_ATTR_TYPE_TAG_C99(long double _Complex) = MPI_C_LONG_DOUBLE_COMPLEX;
 #endif
 
 /* address/offset types */

http://git.mpich.org/mpich.git/commitdiff/a93056137603ec9a62b43f9c4bcc4bffb593b913

commit a93056137603ec9a62b43f9c4bcc4bffb593b913
Author: Dave Goodell <goodell at mcs.anl.gov>
Date:   Tue Mar 5 16:17:54 2013 -0600

    `long double _Complex` depends on `long double`
    
    It was possible to have a working `long double _Complex` even if the MPI
    library was pretending that `long double` should not work.
    
    Ditto for the C++ version.
    
    No reviewer.

diff --git a/configure.ac b/configure.ac
index 8c96fe4..186246e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2949,14 +2949,21 @@ AC_CHECK_SIZEOF([double _Complex],0,[
 #include <complex.h>
 #endif
 ])
-AC_CHECK_SIZEOF([long double _Complex],0,[
+AS_IF(["X$pac_cv_have_long_double" = "Xyes"],[
+  AC_CHECK_SIZEOF([long double _Complex],0,[
 #ifdef HAVE_COMPLEX_H
 #include <complex.h>
 #endif
+  ])
 ])
+
 # we need really could just use the result of AC_CHECK_SIZEOF, but having a
 # HAVE_typename macro is useful for consistency
-AC_CHECK_TYPES([_Bool, float _Complex, double _Complex, long double _Complex])
+AC_CHECK_TYPES([_Bool, float _Complex, double _Complex])
+
+AS_IF(["X$pac_cv_have_long_double" = "Xyes"],[
+  AC_CHECK_TYPES([long double _Complex])
+])
 
 # Generate a hex version of the size of each type
 for type in short int long long_long float double long_double wchar_t \
@@ -4264,13 +4271,17 @@ using namespace std;
            32)   MPIR_CXX_DOUBLE_COMPLEX=0x4c002035 ;;
            *) ;;
         esac
-        case "$ac_cv_sizeof_LongDoubleComplex" in 
-           8)    MPIR_CXX_LONG_DOUBLE_COMPLEX=0x4c000836 ;;
-           16)   MPIR_CXX_LONG_DOUBLE_COMPLEX=0x4c001036 ;;
-           24)   MPIR_CXX_LONG_DOUBLE_COMPLEX=0x4c001836 ;;
-           32)   MPIR_CXX_LONG_DOUBLE_COMPLEX=0x4c002036 ;;
-           *) ;;
-        esac
+        # only enable CXX "long double" if we have a C "long double", since we
+        # currently perform reductions on CXX "long double" types via C.
+        if test "X$pac_cv_have_long_double" = "Xyes" ; then
+            case "$ac_cv_sizeof_LongDoubleComplex" in
+               8)    MPIR_CXX_LONG_DOUBLE_COMPLEX=0x4c000836 ;;
+               16)   MPIR_CXX_LONG_DOUBLE_COMPLEX=0x4c001036 ;;
+               24)   MPIR_CXX_LONG_DOUBLE_COMPLEX=0x4c001836 ;;
+               32)   MPIR_CXX_LONG_DOUBLE_COMPLEX=0x4c002036 ;;
+               *) ;;
+            esac
+        fi
     fi
     AC_LANG_C
 

http://git.mpich.org/mpich.git/commitdiff/afe8c4a468b0f381a8135679afb4bad542e72d5f

commit afe8c4a468b0f381a8135679afb4bad542e72d5f
Author: Dave Goodell <goodell at mcs.anl.gov>
Date:   Tue Mar 5 16:03:49 2013 -0600

    configure: add `--disable-long-double`
    
    This helps Cray out (and conceivably other vendors), since they ship
    several compilers which have different interpretations of what `long
    double` should mean (80-bit vs. 128-bit, being most common).
    
    Note that exporting `MPID_NO_LONG_DOUBLE=yes` in the environment before
    running `configure` does work, but may not work as intended in the face
    of an automake-initiated reconfigure.  Autoconf does not treat this
    variable as precious (and we don't ask it to, since it's for
    inside-configure-use only), so its value will not be preserved for the
    reconfigure.  The same holds for any `MPID_` variables mentioned at the
    top of `configure.ac`.
    
    No reviewer.

diff --git a/configure.ac b/configure.ac
index 98a918b..8c96fe4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -588,6 +588,16 @@ AC_ARG_ENABLE([wrapper-rpath],
               [],[enable_wrapper_rpath=yes])
 AC_SUBST([enable_wrapper_rpath])
 
+AC_ARG_ENABLE([long-double],
+              [AC_HELP_STRING([--disable-long-double],
+                              [Pass --disable-long-double to prevent the MPI
+                               library from supporting the C "long double" type,
+                               even if the C compiler supports it.  "long
+                               double" support is enabled by default, provided
+                               the compiler supports it.])],
+              [],
+              [enable_long_double=yes])
+
 AC_ARG_WITH(cross,
 	AC_HELP_STRING([--with-cross=file],
 		[Specify the values of variables that configure cannot
@@ -2696,7 +2706,7 @@ fi
 # types as well.  In addition, allow the device to suppress support for these
 # optional C types by setting MPID_NO_LONG_DOUBLE and/or MPID_NO_LONG_LONG
 # to yes.
-if test "$MPID_NO_LONG_DOUBLE" != "yes" ; then
+if test "$MPID_NO_LONG_DOUBLE" != "yes" && test "X$enable_long_double" != "Xno" ; then
     AC_CACHE_CHECK([whether long double is supported],
     pac_cv_have_long_double,[
     AC_TRY_COMPILE(,[long double a;],

http://git.mpich.org/mpich.git/commitdiff/3f1fcead9a9f2ae4013cfa931dc31cd41663f7fd

commit 3f1fcead9a9f2ae4013cfa931dc31cd41663f7fd
Author: Dave Goodell <goodell at mcs.anl.gov>
Date:   Tue Mar 5 15:39:29 2013 -0600

    fix compile error when `long double` is disabled
    
    Otherwise `oputil.h` barfs on a bad preprocessor comparison when
    `MPID_NO_LONG_DOUBLE` is set.
    
    Fix reported by and suggested by Steve Oyanagi from Cray.
    
    No reviewer.

diff --git a/configure.ac b/configure.ac
index e3cd063..98a918b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4161,14 +4161,17 @@ fi
 # C++ types
 
 # default to null types
-MPIR_CXX_BOOL=MPI_DATATYPE_NULL
-MPIR_CXX_COMPLEX=MPI_DATATYPE_NULL
-MPIR_CXX_DOUBLE_COMPLEX=MPI_DATATYPE_NULL
-MPIR_CXX_LONG_DOUBLE_COMPLEX=MPI_DATATYPE_NULL
-MPI_F77_CXX_BOOL=MPI_DATATYPE_NULL
-MPI_F77_CXX_FLOAT_COMPLEX=MPI_DATATYPE_NULL
-MPI_F77_CXX_DOUBLE_COMPLEX=MPI_DATATYPE_NULL
-MPI_F77_CXX_LONG_DOUBLE_COMPLEX=MPI_DATATYPE_NULL
+# Set to "0x0c000000" instead of "MPI_DATATYPE_NULL" because these values
+# sometimes are used in preprocessor tests where we cannot compare the
+# type-casted values.
+MPIR_CXX_BOOL=0x0c000000
+MPIR_CXX_COMPLEX=0x0c000000
+MPIR_CXX_DOUBLE_COMPLEX=0x0c000000
+MPIR_CXX_LONG_DOUBLE_COMPLEX=0x0c000000
+MPI_F77_CXX_BOOL=0x0c000000
+MPI_F77_CXX_FLOAT_COMPLEX=0x0c000000
+MPI_F77_CXX_DOUBLE_COMPLEX=0x0c000000
+MPI_F77_CXX_LONG_DOUBLE_COMPLEX=0x0c000000
 if test "$enable_cxx" = "yes" ; then
     AC_LANG_CPLUSPLUS
     AC_CHECK_SIZEOF(bool)

http://git.mpich.org/mpich.git/commitdiff/d9db47aee320b83ddf4f448f38a6278c9e3467a8

commit d9db47aee320b83ddf4f448f38a6278c9e3467a8
Author: Dave Goodell <goodell at mcs.anl.gov>
Date:   Tue Mar 5 16:16:25 2013 -0600

    move `_NULL` handle definitions earlier in mpi.h
    
    In particular, the clang type checking helpers can cause
    `MPI_DATATYPE_NULL` to be used before it has been `#define`d.
    
    No reviewer.

diff --git a/src/include/mpi.h.in b/src/include/mpi.h.in
index 4487bfd..30a356f 100644
--- a/src/include/mpi.h.in
+++ b/src/include/mpi.h.in
@@ -76,6 +76,17 @@ extern "C" {
 #  define MPICH_ATTR_TYPE_TAG_CXX(type)
 #endif
 
+
+/* Define some null objects */
+#define MPI_COMM_NULL      ((MPI_Comm)0x04000000)
+#define MPI_OP_NULL        ((MPI_Op)0x18000000)
+#define MPI_GROUP_NULL     ((MPI_Group)0x08000000)
+#define MPI_DATATYPE_NULL  ((MPI_Datatype)0x0c000000)
+#define MPI_REQUEST_NULL   ((MPI_Request)0x2c000000)
+#define MPI_ERRHANDLER_NULL ((MPI_Errhandler)0x14000000)
+#define MPI_MESSAGE_NULL   ((MPI_Message)MPI_REQUEST_NULL)
+#define MPI_MESSAGE_NO_PROC ((MPI_Message)0x6c000000)
+
 /* Results of the compare operations. */
 #define MPI_IDENT     0
 #define MPI_CONGRUENT 1
@@ -310,16 +321,6 @@ typedef int MPI_Op;
 #define MPI_WIN_CREATE_FLAVOR 0x66000007
 #define MPI_WIN_MODEL         0x66000009
 
-/* Define some null objects */
-#define MPI_COMM_NULL      ((MPI_Comm)0x04000000)
-#define MPI_OP_NULL        ((MPI_Op)0x18000000)
-#define MPI_GROUP_NULL     ((MPI_Group)0x08000000)
-#define MPI_DATATYPE_NULL  ((MPI_Datatype)0x0c000000)
-#define MPI_REQUEST_NULL   ((MPI_Request)0x2c000000)
-#define MPI_ERRHANDLER_NULL ((MPI_Errhandler)0x14000000)
-#define MPI_MESSAGE_NULL   ((MPI_Message)MPI_REQUEST_NULL)
-#define MPI_MESSAGE_NO_PROC ((MPI_Message)0x6c000000)
-
 #ifdef MPICH_DEFINE_ATTR_TYPE_TYPES
 static const MPI_Datatype mpich_mpi_datatype_null MPICH_ATTR_TYPE_TAG_MUST_BE_NULL() = MPI_DATATYPE_NULL;
 #endif

-----------------------------------------------------------------------

Summary of changes:
 configure.ac         |   60 +++++++++++++++++++++++++++++++++++---------------
 src/include/mpi.h.in |   31 ++++++++++++++++---------
 2 files changed, 62 insertions(+), 29 deletions(-)


hooks/post-receive
-- 
MPICH primary repository


More information about the commits mailing list