[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