commits
Threads by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
March 2015
- 1 participants
- 48 discussions
[mpich] MPICH primary repository branch, master, updated. v3.2b1-12-g5c060df
by noreply@mpich.org 20 Mar '15
by noreply@mpich.org 20 Mar '15
20 Mar '15
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 5c060dfd724cc468a2e4bf0e6e35135b355d87e7 (commit)
from 4ae462b2c6d3b76da905170e888f3956a544f88b (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/5c060dfd724cc468a2e4bf0e6e35135b3…
commit 5c060dfd724cc468a2e4bf0e6e35135b355d87e7
Author: Wesley Bland <wbland(a)anl.gov>
Date: Fri Mar 20 09:30:07 2015 -0500
Extend timeouts for putfence1/getfence1
These tests take a longer time on OSX due to the poor performance of
malloc/calloc on OSX platforms. The extended timeout gives them a chance
to complete.
This could be better fixed in the future by only allocating the memory
for the window once instead of over and over (~5000 times).
No reviewer
diff --git a/test/mpi/rma/testlist.in b/test/mpi/rma/testlist.in
index 29fb487..cf80e82 100644
--- a/test/mpi/rma/testlist.in
+++ b/test/mpi/rma/testlist.in
@@ -1,8 +1,8 @@
winname 2
allocmem 2
-putfence1 4
+putfence1 4 timeLimit=500
putfidx 4
-getfence1 4 timeLimit=400
+getfence1 4 timeLimit=500
accfence1 4
adlb_mimic1 3
accfence2 4
-----------------------------------------------------------------------
Summary of changes:
test/mpi/rma/testlist.in | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.2b1-11-g4ae462b
by noreply@mpich.org 16 Mar '15
by noreply@mpich.org 16 Mar '15
16 Mar '15
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 4ae462b2c6d3b76da905170e888f3956a544f88b (commit)
via 79c091587e11d4a4b02b3de8ac89766f19ad91f7 (commit)
via 88fbe180fefbc4c158e3745ca997c687f383508b (commit)
via b36843996735002858970c7b5f8b50bcf0b7598f (commit)
via a07ac5516b909970a8fb1a4d6436f1c8bc1e645c (commit)
from 59083f6d2fb37279339e09e8ddb1924bf5e08b27 (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/4ae462b2c6d3b76da905170e888f3956a…
commit 4ae462b2c6d3b76da905170e888f3956a544f88b
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Tue Mar 3 16:01:40 2015 -0600
fix "is present" case for MPI_Count check
back in december 2013 I apparently did not test a standalone ROMIO
against a const-ified (MPI-3.0 compliant) MPICH
Signed-off-by: Sangmin Seo <sseo(a)anl.gov>
diff --git a/src/mpi/romio/configure.ac b/src/mpi/romio/configure.ac
index d408c6a..857ddec 100644
--- a/src/mpi/romio/configure.ac
+++ b/src/mpi/romio/configure.ac
@@ -1520,7 +1520,7 @@ if test $WITHIN_KNOWN_MPI_IMPL = no ; then
PAC_TEST_MPI_GREQUEST
PAC_TEST_MPIU_FUNCS
AC_DEFINE(PRINT_ERR_MSG,1,[Define for printing error messages])
- AC_CHECK_TYPE(MPI_Count,[],[AC_DEFINE_UNQUOTED([MPI_Count],[MPI_Aint],[Define to "MPI_Aint" if MPI does not provide MPI_Count]) ])
+ AC_CHECK_TYPE([MPI_Count],[],[AC_DEFINE_UNQUOTED([MPI_Count],[MPI_Aint],[Define to "MPI_Aint" if MPI does not provide MPI_Count]) ], [[#include <mpi.h>]])
PAC_TEST_NEEDS_CONST
AC_CHECK_DECLS([MPI_COMBINER_HINDEXED_BLOCK], [], [], [[#include <mpi.h>]])
AC_CHECK_FUNCS(MPI_Type_size_x MPI_Status_set_elements_x)
http://git.mpich.org/mpich.git/commitdiff/79c091587e11d4a4b02b3de8ac89766f1…
commit 79c091587e11d4a4b02b3de8ac89766f19ad91f7
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Tue Mar 3 15:59:46 2015 -0600
romio standalone: implement missing check
The standalone case calls PAC_TEST_NEEDS_CONST, but I never implemented
it. here is that implementation.
Signed-off-by: Sangmin Seo <sseo(a)anl.gov>
diff --git a/confdb/aclocal_romio.m4 b/confdb/aclocal_romio.m4
index 39dd76d..af80d3c 100644
--- a/confdb/aclocal_romio.m4
+++ b/confdb/aclocal_romio.m4
@@ -856,3 +856,17 @@ EOF
fi
rm -f conftest$EXEEXT mpitest.c
])dnl
+
+define(PAC_TEST_NEEDS_CONST,[
+ AC_MSG_CHECKING([const declarations needed in MPI routines])
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+ [ #include <mpi.h>
+ int MPI_File_delete(char *filename, MPI_Info info) { return (0); }
+ ] )],
+ [
+ AC_MSG_RESULT(no)
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_MPIIO_CONST, const, [Define if MPI-IO routines need a const qualifier])
+ ])
+ ])
http://git.mpich.org/mpich.git/commitdiff/88fbe180fefbc4c158e3745ca997c687f…
commit 88fbe180fefbc4c158e3745ca997c687f383508b
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon Mar 2 15:00:30 2015 -0600
check for aio-lite request/presence
if we use this aio-lite implementation of aio routines, the MPICH test
suites all pass.
Signed-off-by: Sangmin Seo <sseo(a)anl.gov>
diff --git a/src/mpi/romio/adio/ad_gpfs/ad_gpfs.h b/src/mpi/romio/adio/ad_gpfs/ad_gpfs.h
index 81fb076..d64dcae 100644
--- a/src/mpi/romio/adio/ad_gpfs/ad_gpfs.h
+++ b/src/mpi/romio/adio/ad_gpfs/ad_gpfs.h
@@ -24,7 +24,9 @@
#ifdef HAVE_SIGNAL_H
#include <signal.h>
#endif
-#ifdef HAVE_AIO_H
+#ifdef HAVE_AIO_LITE_H
+#include <aio-lite.h>
+#elif defined HAVE_AIO_H
#include <aio.h>
#endif
diff --git a/src/mpi/romio/adio/ad_lustre/ad_lustre.h b/src/mpi/romio/adio/ad_lustre/ad_lustre.h
index 93034cd..edd2bd3 100644
--- a/src/mpi/romio/adio/ad_lustre/ad_lustre.h
+++ b/src/mpi/romio/adio/ad_lustre/ad_lustre.h
@@ -35,12 +35,16 @@
#include <signal.h>
#endif
-#ifdef HAVE_AIO_H
-#include <aio.h>
-#ifdef HAVE_SYS_AIO_H
-#include <sys/aio.h>
-#endif
-#endif /* End of HAVE_SYS_AIO_H */
+#ifdef HAVE_AIO_LITE_H
+#include <aio-lite.h>
+#else
+ #ifdef HAVE_AIO_H
+ #include <aio.h>
+ #endif
+ #ifdef HAVE_SYS_AIO_H
+ #include <sys/aio.h>
+ #endif
+#endif /* End of HAVE_AIO_LITE_H */
void ADIOI_LUSTRE_Open(ADIO_File fd, int *error_code);
void ADIOI_LUSTRE_Close(ADIO_File fd, int *error_code);
diff --git a/src/mpi/romio/adio/ad_nfs/ad_nfs.h b/src/mpi/romio/adio/ad_nfs/ad_nfs.h
index 83d394a..ba8ebb5 100644
--- a/src/mpi/romio/adio/ad_nfs/ad_nfs.h
+++ b/src/mpi/romio/adio/ad_nfs/ad_nfs.h
@@ -18,11 +18,15 @@
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
-#ifdef HAVE_AIO_H
-#include <aio.h>
-#endif
-#ifdef HAVE_SYS_AIO_H
-#include <sys/aio.h>
+#ifdef HAVE_AIO_LITE_H
+#include <aio-lite.h>
+#else
+ #ifdef HAVE_AIO_H
+ #include <aio.h>
+ #endif
+ #ifdef HAVE_SYS_AIO_H
+ #include <sys/aio.h>
+ #endif
#endif
/* Workaround for incomplete set of definitions if __REDIRECT is not
diff --git a/src/mpi/romio/adio/ad_panfs/ad_panfs.h b/src/mpi/romio/adio/ad_panfs/ad_panfs.h
index 5f13f64..0f2e9f5 100644
--- a/src/mpi/romio/adio/ad_panfs/ad_panfs.h
+++ b/src/mpi/romio/adio/ad_panfs/ad_panfs.h
@@ -15,14 +15,20 @@
#include "adio.h"
#ifndef NO_AIO
-#ifdef AIO_SUN
-#include <sys/asynch.h>
-#else
-#include <aio.h>
-#ifdef NEEDS_ADIOCB_T
-typedef struct adiocb adiocb_t;
-#endif
-#endif
+# ifdef AIO_SUN
+# include <sys/asynch.h>
+# else
+ #ifdef HAVE_AIO_LITE_H
+ #include <aio-lite.h>
+ #else
+ #ifdef HAVE_AIO_H
+ #include <aio.h>
+ #endif
+ #ifdef HAVE_SYS_AIO_H
+ #include <sys/aio.h>
+ #endif
+ #endif
+# endif
#endif
void ADIOI_PANFS_Open(ADIO_File fd, int *error_code);
diff --git a/src/mpi/romio/adio/ad_ufs/ad_ufs.h b/src/mpi/romio/adio/ad_ufs/ad_ufs.h
index 5ad2743..b26a2f9 100644
--- a/src/mpi/romio/adio/ad_ufs/ad_ufs.h
+++ b/src/mpi/romio/adio/ad_ufs/ad_ufs.h
@@ -18,11 +18,16 @@
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
-#ifdef HAVE_AIO_H
-#include <aio.h>
-#endif
-#ifdef HAVE_SYS_AIO_H
-#include <sys/aio.h>
+
+#ifdef HAVE_AIO_LITE_H
+#include <aio-lite.h>
+#else
+ #ifdef HAVE_AIO_H
+ #include <aio.h>
+ #endif
+ #ifdef HAVE_SYS_AIO_H
+ #include <sys/aio.h>
+ #endif
#endif
/* Workaround for incomplete set of definitions if __REDIRECT is not
diff --git a/src/mpi/romio/adio/common/ad_done.c b/src/mpi/romio/adio/common/ad_done.c
index fe48978..50764b7 100644
--- a/src/mpi/romio/adio/common/ad_done.c
+++ b/src/mpi/romio/adio/common/ad_done.c
@@ -16,11 +16,16 @@
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
-#ifdef HAVE_AIO_H
-#include <aio.h>
-#endif
-#ifdef HAVE_SYS_AIO_H
-#include <sys/aio.h>
+
+#ifdef HAVE_AIO_LITE_H
+#include <aio-lite.h>
+#else
+ #ifdef HAVE_AIO_H
+ #include <aio.h>
+ #endif
+ #ifdef HAVE_SYS_AIO_H
+ #include <sys/aio.h>
+ #endif
#endif
/* Workaround for incomplete set of definitions if __REDIRECT is not
diff --git a/src/mpi/romio/configure.ac b/src/mpi/romio/configure.ac
index e01db6f..d408c6a 100644
--- a/src/mpi/romio/configure.ac
+++ b/src/mpi/romio/configure.ac
@@ -1137,6 +1137,22 @@ if test "$ac_cv_header_aio_h" = "yes" -o "$ac_cv_header_sys_aio_h" = "yes" -o "x
#endif] ] )
fi
+# the aio-lite package provides an aio facility in case system aio library is
+# buggy or does not perform well. for example, one fortran test does not pass
+# its non-blocking collective I/O test
+# See http://trac.mpich.org/projects/mpich/ticket/2201 for one such failure.
+
+AC_ARG_WITH([aio-lite],
+ [AS_HELP_STRING([--with-aio-lite],
+ [use alternate external aio implementation])],
+ [with_aiolite=yes],
+ [])
+AS_IF([test "x$with_aiolite" == xyes],
+ AC_CHECK_LIB([aio-lite], [lio_listio],
+ [], [], [-lpthread]
+ )
+ AC_CHECK_HEADERS([aio-lite.h])
+ )
# End of aio-related tests
#
http://git.mpich.org/mpich.git/commitdiff/b36843996735002858970c7b5f8b50bcf…
commit b36843996735002858970c7b5f8b50bcf0b7598f
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon Mar 2 13:53:49 2015 -0600
use autoconf routines for AIO struct checks
Autoconf provides nice routines for "does this struct have this member",
so use that instead of our home-grown nonstandrd checks
Signed-off-by: Sangmin Seo <sseo(a)anl.gov>
diff --git a/src/mpi/romio/adio/ad_nfs/ad_nfs_iwrite.c b/src/mpi/romio/adio/ad_nfs/ad_nfs_iwrite.c
index f27b099..a5f988c 100644
--- a/src/mpi/romio/adio/ad_nfs/ad_nfs_iwrite.c
+++ b/src/mpi/romio/adio/ad_nfs/ad_nfs_iwrite.c
@@ -69,19 +69,19 @@ int ADIOI_NFS_aio(ADIO_File fd, void *buf, int len, ADIO_Offset offset,
aiocbp->aio_buf = buf;
aiocbp->aio_nbytes = len;
-#ifdef ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_WHENCE
+#ifdef HAVE_STRUCT_AIOCB_AIO_WHENCE
aiocbp->aio_whence = SEEK_SET;
#endif
-#ifdef ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_FILDES
+#ifdef HAVE_STRUCT_AIOCB_AIO_FILDES
aiocbp->aio_fildes = fd_sys;
#endif
-#ifdef ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_SIGEVENT
+#ifdef HAVE_STRUCT_AIOCB_AIO_SIGEVENT
# ifdef AIO_SIGNOTIFY_NONE
aiocbp->aio_sigevent.sigev_notify = SIGEV_NONE;
# endif
aiocbp->aio_sigevent.sigev_signo = 0;
#endif
-#ifdef ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_REQPRIO
+#ifdef HAVE_STRUCT_AIOCB_AIO_REQPRIO
# ifdef AIO_PRIO_DFL
aiocbp->aio_reqprio = AIO_PRIO_DFL; /* not needed in DEC Unix 4.0 */
# else
diff --git a/src/mpi/romio/adio/common/ad_iwrite.c b/src/mpi/romio/adio/common/ad_iwrite.c
index 8177718..0a3d97e 100644
--- a/src/mpi/romio/adio/common/ad_iwrite.c
+++ b/src/mpi/romio/adio/common/ad_iwrite.c
@@ -113,19 +113,19 @@ int ADIOI_GEN_aio(ADIO_File fd, void *buf, int len, ADIO_Offset offset,
aiocbp->aio_buf = buf;
aiocbp->aio_nbytes = len;
-#ifdef ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_WHENCE
+#ifdef HAVE_STRUCT_AIOCB_AIO_WHENCE
aiocbp->aio_whence = SEEK_SET;
#endif
-#ifdef ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_FILDES
+#ifdef HAVE_STRUCT_AIOCB_AIO_FILDES
aiocbp->aio_fildes = fd_sys;
#endif
-#ifdef ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_SIGEVENT
+#ifdef HAVE_STRUCT_AIOCB_AIO_SIGEVENT
# ifdef AIO_SIGNOTIFY_NONE
aiocbp->aio_sigevent.sigev_notify = SIGEV_NONE;
# endif
aiocbp->aio_sigevent.sigev_signo = 0;
#endif
-#ifdef ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_REQPRIO
+#ifdef HAVE_STRUCT_AIOCB_AIO_REQPRIO
# ifdef AIO_PRIO_DFL
aiocbp->aio_reqprio = AIO_PRIO_DFL; /* not needed in DEC Unix 4.0 */
# else
@@ -134,7 +134,7 @@ int ADIOI_GEN_aio(ADIO_File fd, void *buf, int len, ADIO_Offset offset,
#endif
#ifndef ROMIO_HAVE_AIO_CALLS_NEED_FILEDES
-#ifndef ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_FILDES
+#ifndef HAVE_STRUCT_AIOCB_AIO_FILDES
#error 'No fildes set for aio structure'
#endif
if (wr) err = aio_write(aiocbp);
diff --git a/src/mpi/romio/configure.ac b/src/mpi/romio/configure.ac
index 3b4374c..e01db6f 100644
--- a/src/mpi/romio/configure.ac
+++ b/src/mpi/romio/configure.ac
@@ -133,8 +133,6 @@ MPI_OFFSET_KIND2="!"
TEST_CC=""
TEST_F77=""
#
-have_aio=no
-#
known_mpi_impls="mpich_mpi mpich_mpi sgi_mpi hp_mpi cray_mpi lam_mpi open_mpi_mpi"
dnl An m4 macro for use with m4_foreach_w and friends. You should modify this
@@ -1123,123 +1121,20 @@ if test "$ac_cv_header_aio_h" = "yes" -o "$ac_cv_header_sys_aio_h" = "yes" -o "x
AC_DEFINE(ROMIO_HAVE_AIO_SUSPEND_TWO_ARGS, 1, Define if aio_suspend needs two arguments)
fi
- AC_MSG_CHECKING([for aio_fildes member of aiocb structure])
- AC_TRY_COMPILE([
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_AIO_H
-#include <aio.h>
-#endif
-#ifdef HAVE_SYS_AIO_H
-#include <sys/aio.h>
-#endif
- ],[
- struct aiocb a;
- a.aio_fildes = 0;
- ],
- AC_MSG_RESULT(yes)
- AC_DEFINE(ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_FILDES, 1, [Define if aiocb has aio_fildes member]),
- AC_MSG_RESULT(no)
- )
- AC_MSG_CHECKING(for aio_whence member of aiocb structure)
- AC_TRY_COMPILE([
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_AIO_H
-#include <aio.h>
-#endif
-#ifdef HAVE_SYS_AIO_H
-#include <sys/aio.h>
-#endif
-#include <sys/types.h>
-#include <unistd.h>
- ],[
- struct aiocb a;
- a.aio_whence = SEEK_SET;
- ],
- AC_MSG_RESULT(yes)
- AC_DEFINE(ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_WHENCE, 1, [Define if aiocb has aio_whence member]),
- AC_MSG_RESULT(no)
- )
- AC_MSG_CHECKING(for aio_handle member of aiocb structure)
- AC_TRY_COMPILE([
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_AIO_H
-#include <aio.h>
-#endif
-#ifdef HAVE_SYS_AIO_H
-#include <sys/aio.h>
-#endif
- ],[
- struct aiocb a;
- aio_handle_t h;
-
- a.aio_handle = h;
- ],
- AC_MSG_RESULT(yes)
- AC_DEFINE(ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_HANDLE, 1, [Define if aiocb has aio_handle member]),
- AC_MSG_RESULT(no)
- )
- AC_MSG_CHECKING(for aio_reqprio member of aiocb structure)
- AC_TRY_COMPILE([
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_AIO_H
-#include <aio.h>
-#endif
-#ifdef HAVE_SYS_AIO_H
-#include <sys/aio.h>
-#endif
- ],[
- struct aiocb a;
-
- a.aio_reqprio = 0;
- ],
- AC_MSG_RESULT(yes)
- AC_DEFINE(ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_REQPRIO, 1, [Define if aiocb has aio_reqprio member]),
- AC_MSG_RESULT(no)
- )
- AC_MSG_CHECKING(for aio_sigevent member of aiocb structure)
- AC_TRY_COMPILE([
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_AIO_H
-#include <aio.h>
-#endif
-#ifdef HAVE_SYS_AIO_H
-#include <sys/aio.h>
-#endif
- ],[
- struct aiocb a;
-
- a.aio_sigevent.sigev_signo = 0;
- ],
- AC_MSG_RESULT(yes)
- AC_DEFINE(ROMIO_HAVE_STRUCT_AIOCB_WITH_AIO_SIGEVENT, 1, [Define if aiocb has aio_sigevent member]),
- AC_MSG_RESULT(no)
- )
-
+ AC_CHECK_MEMBERS(
+ [struct aiocb.aio_fildes,
+ struct aiocb.aio_whence,
+ struct aiocb.aio_handle,
+ struct aiocb.aio_reqprio,
+ struct aiocb.aio_sigevent],
+ [],
+ [],
+ [[#ifdef HAVE_AIO_H
+ #include <aio.h>
+ #endif
+ #ifdef HAVE_SYS_AIO_H
+ #include <sys/aio.h>
+ #endif] ] )
fi
# End of aio-related tests
http://git.mpich.org/mpich.git/commitdiff/a07ac5516b909970a8fb1a4d6436f1c8b…
commit a07ac5516b909970a8fb1a4d6436f1c8bc1e645c
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon Mar 2 13:37:33 2015 -0600
update ROMIO header checks for modern autoconf
there is no need for ROMIO to try to compile header files. modern (and
not-so-modern: since 2.56) autoconf will do exactly this with
AC_CHECK_HEADERS
Signed-off-by: Sangmin Seo <sseo(a)anl.gov>
diff --git a/src/mpi/romio/configure.ac b/src/mpi/romio/configure.ac
index f975e1c..3b4374c 100644
--- a/src/mpi/romio/configure.ac
+++ b/src/mpi/romio/configure.ac
@@ -1001,34 +1001,13 @@ if test "x$disable_aio" = "xno" ; then
fi
if test "x$disable_aio" = "xno" -a -n "$aio_write_found" ; then
- AC_CHECK_HEADERS(signal.h)
- # Just because aio.h is found by CPP doesn't mean that we can use it
- # We try to compile it, not just read it.
- AC_MSG_CHECKING([if aio.h exists and can be compiled])
- AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <aio.h>],
-[],have_aio_h=yes,have_aio_h=no)
- AC_MSG_RESULT($have_aio_h)
- if test "$have_aio_h" = yes ; then
- AC_DEFINE(HAVE_AIO_H,1,[Define if aio.h exists and can be compiled])
- fi
-
- AC_MSG_CHECKING([if sys/aio.h exists and can be compiled])
- AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/aio.h>],
-[],have_sys_aio_h=yes,have_sys_aio_h=no)
- AC_MSG_RESULT($have_sys_aio_h)
- if test "$have_sys_aio_h" = yes ; then
- AC_DEFINE(HAVE_SYS_AIO_H,1,[Define if sys/aio.h exists and can be compiled])
- fi
- if test "$have_aio_h" = "no" -a "$have_sys_aio_h" = "no" ; then
+ AC_CHECK_HEADERS([signal.h aio.h sys/aio.h] )
+ if test "$ac_cv_header_aio_h" = "no" -a "$ac_cv_header_sys_aio_h" = "no" ; then
disable_aio=yes
fi
fi
-if test "$have_aio_h" = "yes" -o "$have_sys_aio_h" = "yes" -o "x$disable_aio" = "xno"; then
+if test "$ac_cv_header_aio_h" = "yes" -o "$ac_cv_header_sys_aio_h" = "yes" -o "x$disable_aio" = "xno"; then
# Check that aio is available (many systems appear to have aio
# either installed improperly or turned off).
-----------------------------------------------------------------------
Summary of changes:
confdb/aclocal_romio.m4 | 14 +++
src/mpi/romio/adio/ad_gpfs/ad_gpfs.h | 4 +-
src/mpi/romio/adio/ad_lustre/ad_lustre.h | 16 ++-
src/mpi/romio/adio/ad_nfs/ad_nfs.h | 14 ++-
src/mpi/romio/adio/ad_nfs/ad_nfs_iwrite.c | 8 +-
src/mpi/romio/adio/ad_panfs/ad_panfs.h | 22 +++--
src/mpi/romio/adio/ad_ufs/ad_ufs.h | 15 ++-
src/mpi/romio/adio/common/ad_done.c | 15 ++-
src/mpi/romio/adio/common/ad_iwrite.c | 10 +-
src/mpi/romio/configure.ac | 182 ++++++-----------------------
10 files changed, 115 insertions(+), 185 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.2b1-6-g59083f6
by noreply@mpich.org 16 Mar '15
by noreply@mpich.org 16 Mar '15
16 Mar '15
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 59083f6d2fb37279339e09e8ddb1924bf5e08b27 (commit)
from 48515bce989495d6952f6d318f0219f807547d9d (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/59083f6d2fb37279339e09e8ddb1924bf…
commit 59083f6d2fb37279339e09e8ddb1924bf5e08b27
Author: Sameh Sharkawi <sssharka(a)us.ibm.com>
Date: Tue Mar 10 13:07:07 2015 -0400
PAMID: CUDA AWARE support in collectives didn't handle local copy
MPICH collectives use MPIR_Localcopy to move data from src to destination
buffer for same task. MPIR_Localcopy can't handle GPU buffers. A change
in MPIR_Localcopy would affect all common code. This change is to handle
the checking of GPU buffers in the PAMID collectives layer and allocate
host buffer and copy data from GPU buffer to Host buffer and vice versa so
MPIR_Localcopy would work w/o issues.
This is not performance optimized code.
(ibm) D202834
Signed-off-by: Su Huang <suhuang(a)us.ibm.com>
diff --git a/src/mpid/pamid/include/mpidi_prototypes.h b/src/mpid/pamid/include/mpidi_prototypes.h
index 083699e..1986c30 100644
--- a/src/mpid/pamid/include/mpidi_prototypes.h
+++ b/src/mpid/pamid/include/mpidi_prototypes.h
@@ -417,6 +417,12 @@ int MPIDO_Ialltoallw(const void *sendbuf, const int *sendcounts, const int *send
const MPI_Datatype * recvtypes,
MPID_Comm *comm_ptr, MPID_Request **request);
+int MPIDO_Reduce_scatter(const void *sendbuf, void *recvbuf, int *recvcounts, MPI_Datatype datatype,
+ MPI_Op op, MPID_Comm *comm_ptr, int *mpierrno);
+
+int MPIDO_Reduce_scatter_block(const void *sendbuf, void *recvbuf, int recvcount,
+ MPI_Datatype datatype, MPI_Op op, MPID_Comm *comm_ptr, int *mpierrno);
+
int MPIDO_Ireduce_scatter_block(const void *sendbuf, void *recvbuf, int recvcount,
MPI_Datatype datatype, MPI_Op op, MPID_Comm *comm_ptr,
MPID_Request **request);
diff --git a/src/mpid/pamid/src/coll/Makefile.mk b/src/mpid/pamid/src/coll/Makefile.mk
index 33f40aa..adf7131 100644
--- a/src/mpid/pamid/src/coll/Makefile.mk
+++ b/src/mpid/pamid/src/coll/Makefile.mk
@@ -37,6 +37,7 @@ include $(top_srcdir)/src/mpid/pamid/src/coll/alltoallw/Makefile.mk
include $(top_srcdir)/src/mpid/pamid/src/coll/exscan/Makefile.mk
include $(top_srcdir)/src/mpid/pamid/src/coll/ired_scat_block/Makefile.mk
include $(top_srcdir)/src/mpid/pamid/src/coll/ired_scat/Makefile.mk
+include $(top_srcdir)/src/mpid/pamid/src/coll/red_scat/Makefile.mk
mpi_core_sources += \
src/mpid/pamid/src/coll/coll_utils.c
diff --git a/src/mpid/pamid/src/coll/allgather/mpido_allgather.c b/src/mpid/pamid/src/coll/allgather/mpido_allgather.c
index 6f5e4e6..0861fa9 100644
--- a/src/mpid/pamid/src/coll/allgather/mpido_allgather.c
+++ b/src/mpid/pamid/src/coll/allgather/mpido_allgather.c
@@ -356,6 +356,45 @@ MPIDO_Allgather(const void *sendbuf,
fprintf(stderr,"Using MPICH allgather algorithm\n");
TRACE_ERR("No options set/available; using MPICH for allgather\n");
MPIDI_Update_last_algorithm(comm_ptr, "ALLGATHER_MPICH");
+#if CUDA_AWARE_SUPPORT
+ if(MPIDI_Process.cuda_aware_support_on)
+ {
+ MPI_Aint sdt_extent,rdt_extent;
+ MPID_Datatype_get_extent_macro(sendtype, sdt_extent);
+ MPID_Datatype_get_extent_macro(recvtype, rdt_extent);
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = MPIDI_cuda_is_device_buf(sendbuf);
+ int is_recv_dev_buf = MPIDI_cuda_is_device_buf(recvbuf);
+ if(is_send_dev_buf)
+ {
+ scbuf = MPIU_Malloc(sdt_extent * sendcount);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, sdt_extent * sendcount, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+ if(is_recv_dev_buf)
+ {
+ rcbuf = MPIU_Malloc(rdt_extent * recvcount);
+ memset(rcbuf, 0, rdt_extent * recvcount);
+ }
+ else
+ rcbuf = recvbuf;
+ int cuda_res = MPIR_Allgather(scbuf, sendcount, sendtype, rcbuf, recvcount, recvtype, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, rdt_extent * recvcount, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
+ }
+ return cuda_res;
+ }
+ else
+#endif
return MPIR_Allgather(sendbuf, sendcount, sendtype,
recvbuf, recvcount, recvtype,
comm_ptr, mpierrno);
diff --git a/src/mpid/pamid/src/coll/allgatherv/mpido_allgatherv.c b/src/mpid/pamid/src/coll/allgatherv/mpido_allgatherv.c
index 0bc3d42..37a767f 100644
--- a/src/mpid/pamid/src/coll/allgatherv/mpido_allgatherv.c
+++ b/src/mpid/pamid/src/coll/allgatherv/mpido_allgatherv.c
@@ -370,6 +370,58 @@ MPIDO_Allgatherv(const void *sendbuf,
selected_type);
TRACE_ERR("Using MPICH Allgatherv\n");
MPIDI_Update_last_algorithm(comm_ptr, "ALLGATHERV_MPICH");
+#if CUDA_AWARE_SUPPORT
+ if(MPIDI_Process.cuda_aware_support_on)
+ {
+ MPI_Aint sdt_extent,rdt_extent;
+ MPID_Datatype_get_extent_macro(sendtype, sdt_extent);
+ MPID_Datatype_get_extent_macro(recvtype, rdt_extent);
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = MPIDI_cuda_is_device_buf(sendbuf);
+ int is_recv_dev_buf = MPIDI_cuda_is_device_buf(recvbuf);
+ if(is_send_dev_buf)
+ {
+ scbuf = MPIU_Malloc(sdt_extent * sendcount);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, sdt_extent * sendcount, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+ size_t rtotal_buf;
+ if(is_recv_dev_buf)
+ {
+ //Since displs can be non-continous, we need to calculate max buffer size
+ int highest_displs = displs[size - 1];
+ int highest_recvcount = recvcounts[size - 1];
+ for(i = 0; i < size; i++)
+ {
+ if(displs[i]+recvcounts[i] > highest_displs+highest_recvcount)
+ {
+ highest_displs = displs[i];
+ highest_recvcount = recvcounts[i];
+ }
+ }
+ rtotal_buf = (highest_displs+highest_recvcount)*rdt_extent;
+ rcbuf = MPIU_Malloc(rtotal_buf);
+ memset(rcbuf, 0, rtotal_buf);
+ }
+ else
+ rcbuf = recvbuf;
+ int cuda_res = MPIR_Allgatherv(scbuf, sendcount, sendtype, rcbuf, recvcounts, displs, recvtype, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, rtotal_buf, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
+ }
+ return cuda_res;
+ }
+ else
+#endif
return MPIR_Allgatherv(sendbuf, sendcount, sendtype,
recvbuf, recvcounts, displs, recvtype,
comm_ptr, mpierrno);
diff --git a/src/mpid/pamid/src/coll/allreduce/mpido_allreduce.c b/src/mpid/pamid/src/coll/allreduce/mpido_allreduce.c
index 75d2a9c..d720279 100644
--- a/src/mpid/pamid/src/coll/allreduce/mpido_allreduce.c
+++ b/src/mpid/pamid/src/coll/allreduce/mpido_allreduce.c
@@ -118,17 +118,39 @@ int MPIDO_Allreduce(const void *sendbuf,
selected_type);
MPIDI_Update_last_algorithm(comm_ptr, "ALLREDUCE_MPICH");
#if CUDA_AWARE_SUPPORT
- if(MPIDI_Process.cuda_aware_support_on && MPIDI_cuda_is_device_buf(sendbuf))
+ if(MPIDI_Process.cuda_aware_support_on)
{
MPI_Aint dt_extent;
MPID_Datatype_get_extent_macro(dt, dt_extent);
- char *buf = MPIU_Malloc(dt_extent * count);
- cudaError_t cudaerr = cudaMemcpy(buf, sendbuf, dt_extent * count, cudaMemcpyDeviceToHost);
- if (cudaSuccess != cudaerr) {
- fprintf(stderr, "cudaMalloc failed: %s\n", cudaGetErrorString(cudaerr));
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = MPIDI_cuda_is_device_buf(sendbuf);
+ int is_recv_dev_buf = MPIDI_cuda_is_device_buf(recvbuf);
+ if(is_send_dev_buf)
+ {
+ scbuf = MPIU_Malloc(dt_extent * count);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, dt_extent * count, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+ if(is_recv_dev_buf)
+ {
+ rcbuf = MPIU_Malloc(dt_extent * count);
+ memset(rcbuf, 0, dt_extent * count);
}
- int cuda_res = MPIR_Allreduce(buf, recvbuf, count, dt, op, comm_ptr, mpierrno);
- MPIU_Free(buf);
+ else
+ rcbuf = recvbuf;
+ int cuda_res = MPIR_Allreduce(scbuf, rcbuf, count, dt, op, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, dt_extent * count, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
+ }
return cuda_res;
}
else
diff --git a/src/mpid/pamid/src/coll/alltoall/mpido_alltoall.c b/src/mpid/pamid/src/coll/alltoall/mpido_alltoall.c
index 61644f5..42b34d1 100644
--- a/src/mpid/pamid/src/coll/alltoall/mpido_alltoall.c
+++ b/src/mpid/pamid/src/coll/alltoall/mpido_alltoall.c
@@ -91,6 +91,45 @@ int MPIDO_Alltoall(const void *sendbuf,
{
if(unlikely(verbose))
fprintf(stderr,"Using MPICH alltoall algorithm\n");
+#if CUDA_AWARE_SUPPORT
+ if(MPIDI_Process.cuda_aware_support_on)
+ {
+ MPI_Aint sdt_extent,rdt_extent;
+ MPID_Datatype_get_extent_macro(sendtype, sdt_extent);
+ MPID_Datatype_get_extent_macro(recvtype, rdt_extent);
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = MPIDI_cuda_is_device_buf(sendbuf);
+ int is_recv_dev_buf = MPIDI_cuda_is_device_buf(recvbuf);
+ if(is_send_dev_buf)
+ {
+ scbuf = MPIU_Malloc(sdt_extent * sendcount);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, sdt_extent * sendcount, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+ if(is_recv_dev_buf)
+ {
+ rcbuf = MPIU_Malloc(recvcount * rdt_extent);
+ memset(rcbuf, 0, recvcount * rdt_extent);
+ }
+ else
+ rcbuf = recvbuf;
+ int cuda_res = MPIR_Alltoall_intra(scbuf, sendcount, sendtype, rcbuf, recvcount, recvtype, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, recvcount * rdt_extent, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
+ }
+ return cuda_res;
+ }
+ else
+#endif
return MPIR_Alltoall_intra(sendbuf, sendcount, sendtype,
recvbuf, recvcount, recvtype,
comm_ptr, mpierrno);
diff --git a/src/mpid/pamid/src/coll/gather/mpido_gather.c b/src/mpid/pamid/src/coll/gather/mpido_gather.c
index 302cbe5..8676f02 100644
--- a/src/mpid/pamid/src/coll/gather/mpido_gather.c
+++ b/src/mpid/pamid/src/coll/gather/mpido_gather.c
@@ -191,6 +191,45 @@ int MPIDO_Gather(const void *sendbuf,
MPIDI_Update_last_algorithm(comm_ptr, "GATHER_MPICH");
if(unlikely(verbose))
fprintf(stderr,"Using MPICH gather algorithm (01) opt %x, selected type %d\n",mpid->optgather,selected_type);
+#if CUDA_AWARE_SUPPORT
+ if(MPIDI_Process.cuda_aware_support_on)
+ {
+ MPI_Aint sdt_extent,rdt_extent;
+ MPID_Datatype_get_extent_macro(sendtype, sdt_extent);
+ MPID_Datatype_get_extent_macro(recvtype, rdt_extent);
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = MPIDI_cuda_is_device_buf(sendbuf);
+ int is_recv_dev_buf = (rank == root) ? MPIDI_cuda_is_device_buf(recvbuf) : 0;
+ if(is_send_dev_buf)
+ {
+ scbuf = MPIU_Malloc(sdt_extent * sendcount);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, sdt_extent * sendcount, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+ if(is_recv_dev_buf)
+ {
+ rcbuf = MPIU_Malloc(rdt_extent * recvcount);
+ memset(rcbuf, 0, rdt_extent * recvcount);
+ }
+ else
+ rcbuf = recvbuf;
+ int cuda_res = MPIR_Gather(scbuf, sendcount, sendtype, rcbuf, recvcount, recvtype, root, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, rdt_extent * recvcount, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
+ }
+ return cuda_res;
+ }
+ else
+#endif
return MPIR_Gather(sendbuf, sendcount, sendtype,
recvbuf, recvcount, recvtype,
root, comm_ptr, mpierrno);
diff --git a/src/mpid/pamid/src/coll/gatherv/mpido_gatherv.c b/src/mpid/pamid/src/coll/gatherv/mpido_gatherv.c
index 7a07544..b906c5e 100644
--- a/src/mpid/pamid/src/coll/gatherv/mpido_gatherv.c
+++ b/src/mpid/pamid/src/coll/gatherv/mpido_gatherv.c
@@ -50,6 +50,7 @@ int MPIDO_Gatherv(const void *sendbuf,
}
#endif
TRACE_ERR("Entering MPIDO_Gatherv\n");
+ int i;
int contig ATTRIBUTE((unused)), rsize ATTRIBUTE((unused)), ssize ATTRIBUTE((unused));
int pamidt = 1;
MPID_Datatype *dt_ptr = NULL;
@@ -59,6 +60,7 @@ int MPIDO_Gatherv(const void *sendbuf,
int tmp;
volatile unsigned gatherv_active = 1;
const int rank = comm_ptr->rank;
+ const int size = comm_ptr->local_size;
#if ASSERT_LEVEL==0
/* We can't afford the tracing in ndebug/performance libraries */
const unsigned verbose = 0;
@@ -82,6 +84,58 @@ int MPIDO_Gatherv(const void *sendbuf,
fprintf(stderr,"Using MPICH gatherv algorithm\n");
TRACE_ERR("GATHERV using MPICH\n");
MPIDI_Update_last_algorithm(comm_ptr, "GATHERV_MPICH");
+#if CUDA_AWARE_SUPPORT
+ if(MPIDI_Process.cuda_aware_support_on)
+ {
+ MPI_Aint sdt_extent,rdt_extent;
+ MPID_Datatype_get_extent_macro(sendtype, sdt_extent);
+ MPID_Datatype_get_extent_macro(recvtype, rdt_extent);
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = MPIDI_cuda_is_device_buf(sendbuf);
+ int is_recv_dev_buf = (rank == root) ? MPIDI_cuda_is_device_buf(recvbuf) : 0;
+ if(is_send_dev_buf)
+ {
+ scbuf = MPIU_Malloc(sdt_extent * sendcount);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, sdt_extent * sendcount, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+ size_t rtotal_buf;
+ if(is_recv_dev_buf)
+ {
+ //Since displs can be non-continous, we need to calculate max buffer size
+ int highest_displs = displs[size - 1];
+ int highest_recvcount = recvcounts[size - 1];
+ for(i = 0; i < size; i++)
+ {
+ if(displs[i]+recvcounts[i] > highest_displs+highest_recvcount)
+ {
+ highest_displs = displs[i];
+ highest_recvcount = recvcounts[i];
+ }
+ }
+ rtotal_buf = (highest_displs+highest_recvcount)*rdt_extent;
+ rcbuf = MPIU_Malloc(rtotal_buf);
+ memset(rcbuf, 0, rtotal_buf);
+ }
+ else
+ rcbuf = recvbuf;
+ int cuda_res = MPIR_Gatherv(scbuf, sendcount, sendtype, rcbuf, recvcounts, displs, recvtype, root, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, rtotal_buf, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
+ }
+ return cuda_res;
+ }
+ else
+#endif
return MPIR_Gatherv(sendbuf, sendcount, sendtype,
recvbuf, recvcounts, displs, recvtype,
root, comm_ptr, mpierrno);
diff --git a/src/mpid/pamid/src/coll/red_scat/Makefile.mk b/src/mpid/pamid/src/coll/red_scat/Makefile.mk
new file mode 100644
index 0000000..a95beaf
--- /dev/null
+++ b/src/mpid/pamid/src/coll/red_scat/Makefile.mk
@@ -0,0 +1,29 @@
+# begin_generated_IBM_copyright_prolog
+#
+# This is an automatically generated copyright prolog.
+# After initializing, DO NOT MODIFY OR MOVE
+# ---------------------------------------------------------------
+# Licensed Materials - Property of IBM
+# Blue Gene/Q 5765-PER 5765-PRP
+#
+# (C) Copyright IBM Corp. 2011, 2012 All Rights Reserved
+# US Government Users Restricted Rights -
+# Use, duplication, or disclosure restricted
+# by GSA ADP Schedule Contract with IBM Corp.
+#
+# ---------------------------------------------------------------
+#
+# end_generated_IBM_copyright_prolog
+# -*- mode: makefile-gmake; -*-
+
+# note that the includes always happen but the effects of their contents are
+# affected by "if BUILD_PAMID"
+if BUILD_PAMID
+
+
+mpi_core_sources += \
+ src/mpid/pamid/src/coll/red_scat/mpido_red_scat.c
+
+
+endif BUILD_PAMID
+
diff --git a/src/mpid/pamid/src/coll/red_scat/mpido_red_scat.c b/src/mpid/pamid/src/coll/red_scat/mpido_red_scat.c
new file mode 100644
index 0000000..d80bbda
--- /dev/null
+++ b/src/mpid/pamid/src/coll/red_scat/mpido_red_scat.c
@@ -0,0 +1,171 @@
+/* begin_generated_IBM_copyright_prolog */
+/* */
+/* This is an automatically generated copyright prolog. */
+/* After initializing, DO NOT MODIFY OR MOVE */
+/* --------------------------------------------------------------- */
+/* Licensed Materials - Property of IBM */
+/* Blue Gene/Q 5765-PER 5765-PRP */
+/* */
+/* (C) Copyright IBM Corp. 2011, 2012 All Rights Reserved */
+/* US Government Users Restricted Rights - */
+/* Use, duplication, or disclosure restricted */
+/* by GSA ADP Schedule Contract with IBM Corp. */
+/* */
+/* --------------------------------------------------------------- */
+/* */
+/* end_generated_IBM_copyright_prolog */
+/* (C)Copyright IBM Corp. 2007, 2011 */
+/**
+ * \file src/coll/red_scat/mpido_red_scat.c
+ * \brief ???
+ */
+
+/* #define TRACE_ON */
+#include <mpidimpl.h>
+
+
+int MPIDO_Reduce_scatter(const void *sendbuf,
+ void *recvbuf,
+ int *recvcounts,
+ MPI_Datatype datatype,
+ MPI_Op op,
+ MPID_Comm *comm_ptr,
+ int *mpierrno)
+
+{
+ const int rank = comm_ptr->rank;
+ const int size = comm_ptr->local_size;
+#if ASSERT_LEVEL==0
+ /* We can't afford the tracing in ndebug/performance libraries */
+ const unsigned verbose = 0;
+#else
+ const unsigned verbose = (MPIDI_Process.verbose >= MPIDI_VERBOSE_DETAILS_ALL) && (rank == 0);
+#endif
+
+ if(unlikely(verbose))
+ fprintf(stderr,"Using MPICH reduce_scatter algorithm\n");
+#if CUDA_AWARE_SUPPORT
+ if(MPIDI_Process.cuda_aware_support_on)
+ {
+ MPI_Aint dt_extent;
+ MPID_Datatype_get_extent_macro(datatype, dt_extent);
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = MPIDI_cuda_is_device_buf(sendbuf);
+ int is_recv_dev_buf = MPIDI_cuda_is_device_buf(recvbuf);
+ int i;
+ size_t total_buf = 0;
+ for(i = 0; i < size; i++)
+ {
+ total_buf += recvcounts[i];
+ }
+
+ if(is_send_dev_buf)
+ {
+ scbuf = MPIU_Malloc(dt_extent * total_buf);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, dt_extent * total_buf, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+
+ if(is_recv_dev_buf)
+ {
+ rcbuf = MPIU_Malloc(total_buf * dt_extent);
+ memset(rcbuf, 0, total_buf * dt_extent);
+ }
+ else
+ rcbuf = recvbuf;
+
+ int cuda_res = MPIR_Reduce_scatter(scbuf, rcbuf, recvcounts, datatype, op, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, dt_extent * total_buf, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
+ }
+ return cuda_res;
+ }
+ else
+#endif
+ return MPIR_Reduce_scatter(sendbuf, recvbuf, recvcounts, datatype, op, comm_ptr, mpierrno);
+
+}
+
+
+
+int MPIDO_Reduce_scatter_block(const void *sendbuf,
+ void *recvbuf,
+ int recvcount,
+ MPI_Datatype datatype,
+ MPI_Op op,
+ MPID_Comm *comm_ptr,
+ int *mpierrno)
+
+{
+ const int rank = comm_ptr->rank;
+ const int size = comm_ptr->local_size;
+#if ASSERT_LEVEL==0
+ /* We can't afford the tracing in ndebug/performance libraries */
+ const unsigned verbose = 0;
+#else
+ const unsigned verbose = (MPIDI_Process.verbose >= MPIDI_VERBOSE_DETAILS_ALL) && (rank == 0);
+#endif
+ if(unlikely(verbose))
+ fprintf(stderr,"Using MPICH reduce_scatter algorithm\n");
+#if CUDA_AWARE_SUPPORT
+ if(MPIDI_Process.cuda_aware_support_on)
+ {
+ MPI_Aint dt_extent;
+ MPID_Datatype_get_extent_macro(datatype, dt_extent);
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = MPIDI_cuda_is_device_buf(sendbuf);
+ int is_recv_dev_buf = MPIDI_cuda_is_device_buf(recvbuf);
+ int i;
+ if(is_send_dev_buf)
+ {
+ scbuf = MPIU_Malloc(dt_extent * recvcount * size);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, dt_extent * recvcount * size, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+
+ if(is_recv_dev_buf)
+ {
+ rcbuf = MPIU_Malloc(dt_extent * recvcount * size);
+ memset(rcbuf, 0, dt_extent * recvcount * size);
+ }
+ else
+ rcbuf = recvbuf;
+
+ int cuda_res;
+ if(comm_ptr->comm_kind == MPID_INTRACOMM)
+ cuda_res = MPIR_Reduce_scatter_block_intra(scbuf, rcbuf, recvcount, datatype, op, comm_ptr, mpierrno);
+ else
+ cuda_res = MPIR_Reduce_scatter_block_inter(scbuf, rcbuf, recvcount, datatype, op, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, dt_extent * recvcount * size, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
+ }
+ return cuda_res;
+ }
+ else
+#endif
+ if(comm_ptr->comm_kind == MPID_INTRACOMM)
+ return MPIR_Reduce_scatter_block_intra(sendbuf, recvbuf, recvcount, datatype, op, comm_ptr, mpierrno);
+ else
+ return MPIR_Reduce_scatter_block_inter(sendbuf, recvbuf, recvcount, datatype, op, comm_ptr, mpierrno);
+
+}
+
+
diff --git a/src/mpid/pamid/src/coll/reduce/mpido_reduce.c b/src/mpid/pamid/src/coll/reduce/mpido_reduce.c
index 2aeab7b..8e83765 100644
--- a/src/mpid/pamid/src/coll/reduce/mpido_reduce.c
+++ b/src/mpid/pamid/src/coll/reduce/mpido_reduce.c
@@ -118,17 +118,39 @@ int MPIDO_Reduce(const void *sendbuf,
if(unlikely(verbose))
fprintf(stderr,"Using MPICH reduce algorithm\n");
#if CUDA_AWARE_SUPPORT
- if(MPIDI_Process.cuda_aware_support_on && MPIDI_cuda_is_device_buf(sendbuf))
+ if(MPIDI_Process.cuda_aware_support_on)
{
MPI_Aint dt_extent;
MPID_Datatype_get_extent_macro(datatype, dt_extent);
- char *buf = MPIU_Malloc(dt_extent * count);
- cudaError_t cudaerr = cudaMemcpy(buf, sendbuf, dt_extent * count, cudaMemcpyDeviceToHost);
- if (cudaSuccess != cudaerr) {
- fprintf(stderr, "cudaMalloc failed: %s\n", cudaGetErrorString(cudaerr));
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = MPIDI_cuda_is_device_buf(sendbuf);
+ int is_recv_dev_buf = MPIDI_cuda_is_device_buf(recvbuf);
+ if(is_send_dev_buf)
+ {
+ scbuf = MPIU_Malloc(dt_extent * count);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, dt_extent * count, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+ if(is_recv_dev_buf)
+ {
+ rcbuf = MPIU_Malloc(dt_extent * count);
+ memset(rcbuf, 0, dt_extent * count);
+ }
+ else
+ rcbuf = recvbuf;
+ int cuda_res = MPIR_Reduce(scbuf, rcbuf, count, datatype, op, root, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, dt_extent * count, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
}
- int cuda_res = MPIR_Reduce(buf, recvbuf, count, datatype, op, root, comm_ptr, mpierrno);
- MPIU_Free(buf);
return cuda_res;
}
else
diff --git a/src/mpid/pamid/src/coll/scan/mpido_scan.c b/src/mpid/pamid/src/coll/scan/mpido_scan.c
index c0100c7..8bdce61 100644
--- a/src/mpid/pamid/src/coll/scan/mpido_scan.c
+++ b/src/mpid/pamid/src/coll/scan/mpido_scan.c
@@ -136,21 +136,43 @@ int MPIDO_Doscan(const void *sendbuf, void *recvbuf,
if(unlikely(verbose))
fprintf(stderr,"Using MPICH scan algorithm (exflag %d)\n",exflag);
#if CUDA_AWARE_SUPPORT
- if(MPIDI_Process.cuda_aware_support_on && MPIDI_cuda_is_device_buf(sendbuf))
+ if(MPIDI_Process.cuda_aware_support_on)
{
MPI_Aint dt_extent;
MPID_Datatype_get_extent_macro(datatype, dt_extent);
- char *buf = MPIU_Malloc(dt_extent * count);
- cudaError_t cudaerr = cudaMemcpy(buf, sendbuf, dt_extent * count, cudaMemcpyDeviceToHost);
- if (cudaSuccess != cudaerr) {
- fprintf(stderr, "cudaMalloc failed: %s\n", cudaGetErrorString(cudaerr));
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = MPIDI_cuda_is_device_buf(sendbuf);
+ int is_recv_dev_buf = MPIDI_cuda_is_device_buf(recvbuf);
+ if(is_send_dev_buf)
+ {
+ scbuf = MPIU_Malloc(dt_extent * count);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, dt_extent * count, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+ if(is_recv_dev_buf)
+ {
+ rcbuf = MPIU_Malloc(dt_extent * count);
+ memset(rcbuf, 0, dt_extent * count);
}
+ else
+ rcbuf = recvbuf;
int cuda_res;
- if(exflag)
- cuda_res = MPIR_Exscan(buf, recvbuf, count, datatype, op, comm_ptr, mpierrno);
+ if(exflag)
+ cuda_res = MPIR_Exscan(scbuf, rcbuf, count, datatype, op, comm_ptr, mpierrno);
else
- cuda_res = MPIR_Scan(buf, recvbuf, count, datatype, op, comm_ptr, mpierrno);
- MPIU_Free(buf);
+ cuda_res = MPIR_Scan(scbuf, rcbuf, count, datatype, op, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, dt_extent * count, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
+ }
return cuda_res;
}
else
diff --git a/src/mpid/pamid/src/coll/scatter/mpido_scatter.c b/src/mpid/pamid/src/coll/scatter/mpido_scatter.c
index 4e76fad..0fcf07c 100644
--- a/src/mpid/pamid/src/coll/scatter/mpido_scatter.c
+++ b/src/mpid/pamid/src/coll/scatter/mpido_scatter.c
@@ -139,6 +139,45 @@ int MPIDO_Scatter(const void *sendbuf,
if(unlikely(verbose))
fprintf(stderr,"Using MPICH scatter algorithm\n");
MPIDI_Update_last_algorithm(comm_ptr, "SCATTER_MPICH");
+#if CUDA_AWARE_SUPPORT
+ if(MPIDI_Process.cuda_aware_support_on)
+ {
+ MPI_Aint sdt_extent,rdt_extent;
+ MPID_Datatype_get_extent_macro(sendtype, sdt_extent);
+ MPID_Datatype_get_extent_macro(recvtype, rdt_extent);
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = (rank == root) ? MPIDI_cuda_is_device_buf(sendbuf) : 0;
+ int is_recv_dev_buf = MPIDI_cuda_is_device_buf(recvbuf);
+ if(is_send_dev_buf)
+ {
+ scbuf = MPIU_Malloc(sdt_extent * sendcount);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, sdt_extent * sendcount, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+ if(is_recv_dev_buf)
+ {
+ rcbuf = MPIU_Malloc(rdt_extent * recvcount);
+ memset(rcbuf, 0, rdt_extent * recvcount);
+ }
+ else
+ rcbuf = recvbuf;
+ int cuda_res = MPIR_Scatter(scbuf, sendcount, sendtype, rcbuf, recvcount, recvtype, root, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, rdt_extent * recvcount, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
+ }
+ return cuda_res;
+ }
+ else
+#endif
return MPIR_Scatter(sendbuf, sendcount, sendtype,
recvbuf, recvcount, recvtype,
root, comm_ptr, mpierrno);
diff --git a/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c b/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c
index b3767d0..5dad933 100644
--- a/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c
+++ b/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c
@@ -222,7 +222,7 @@ int MPIDO_Scatterv(const void *sendbuf,
return -1;
}
#endif
- int tmp, pamidt = 1;
+ int tmp, i, pamidt = 1;
int contig ATTRIBUTE((unused));
int ssize ATTRIBUTE((unused));
int rsize ATTRIBUTE((unused));
@@ -231,6 +231,7 @@ int MPIDO_Scatterv(const void *sendbuf,
char *sbuf, *rbuf;
pami_type_t stype, rtype;
const int rank = comm_ptr->rank;
+ const int size = comm_ptr->local_size;
#if ASSERT_LEVEL==0
/* We can't afford the tracing in ndebug/performance libraries */
const unsigned verbose = 0;
@@ -245,6 +246,58 @@ int MPIDO_Scatterv(const void *sendbuf,
if(unlikely(verbose))
fprintf(stderr,"Using MPICH scatterv algorithm\n");
MPIDI_Update_last_algorithm(comm_ptr, "SCATTERV_MPICH");
+#if CUDA_AWARE_SUPPORT
+ if(MPIDI_Process.cuda_aware_support_on)
+ {
+ MPI_Aint sdt_extent,rdt_extent;
+ MPID_Datatype_get_extent_macro(sendtype, sdt_extent);
+ MPID_Datatype_get_extent_macro(recvtype, rdt_extent);
+ char *scbuf = NULL;
+ char *rcbuf = NULL;
+ int is_send_dev_buf = (rank == root) ? MPIDI_cuda_is_device_buf(sendbuf) : 0;
+ int is_recv_dev_buf = MPIDI_cuda_is_device_buf(recvbuf);
+ if(is_send_dev_buf)
+ {
+ //Since displs can be non-continous, we need to calculate max buffer size
+ int highest_displs = displs[size - 1];
+ int highest_sendcount = sendcounts[size - 1];
+ size_t stotal_buf;
+ for(i = 0; i < size; i++)
+ {
+ if(displs[i]+sendcounts[i] > highest_displs+highest_sendcount)
+ {
+ highest_displs = displs[i];
+ highest_sendcount = sendcounts[i];
+ }
+ }
+ stotal_buf = (highest_displs+highest_sendcount)*sdt_extent;
+ scbuf = MPIU_Malloc(stotal_buf);
+ cudaError_t cudaerr = cudaMemcpy(scbuf, sendbuf, stotal_buf, cudaMemcpyDeviceToHost);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ }
+ else
+ scbuf = sendbuf;
+ if(is_recv_dev_buf)
+ {
+ rcbuf = MPIU_Malloc(recvcount * rdt_extent);
+ memset(rcbuf, 0, recvcount * rdt_extent);
+ }
+ else
+ rcbuf = recvbuf;
+ int cuda_res = MPIR_Scatterv(scbuf, sendcounts, displs, sendtype, rcbuf, recvcount, recvtype, root, comm_ptr, mpierrno);
+ if(is_send_dev_buf)MPIU_Free(scbuf);
+ if(is_recv_dev_buf)
+ {
+ cudaError_t cudaerr = cudaMemcpy(recvbuf, rcbuf, recvcount * rdt_extent, cudaMemcpyHostToDevice);
+ if (cudaSuccess != cudaerr)
+ fprintf(stderr, "cudaMemcpy failed: %s\n", cudaGetErrorString(cudaerr));
+ MPIU_Free(rcbuf);
+ }
+ return cuda_res;
+ }
+ else
+#endif
return MPIR_Scatterv(sendbuf, sendcounts, displs, sendtype,
recvbuf, recvcount, recvtype,
root, comm_ptr, mpierrno);
diff --git a/src/mpid/pamid/src/comm/mpid_selectcolls.c b/src/mpid/pamid/src/comm/mpid_selectcolls.c
index a8c3f81..2efff76 100644
--- a/src/mpid/pamid/src/comm/mpid_selectcolls.c
+++ b/src/mpid/pamid/src/comm/mpid_selectcolls.c
@@ -690,6 +690,8 @@ void MPIDI_Comm_coll_query(MPID_Comm *comm)
comm->coll_fns->Reduce = MPIDO_Reduce;
comm->coll_fns->Scan = MPIDO_Scan;
comm->coll_fns->Exscan = MPIDO_Exscan;
+ comm->coll_fns->Reduce_scatter_block = MPIDO_Reduce_scatter_block;
+ comm->coll_fns->Reduce_scatter = MPIDO_Reduce_scatter;
/* MPI-3 Support, no optimized collectives hooked in yet */
comm->coll_fns->Ibarrier_sched = MPIR_Ibarrier_intra;
-----------------------------------------------------------------------
Summary of changes:
src/mpid/pamid/include/mpidi_prototypes.h | 6 +
src/mpid/pamid/src/coll/Makefile.mk | 1 +
.../pamid/src/coll/allgather/mpido_allgather.c | 39 +++++
.../pamid/src/coll/allgatherv/mpido_allgatherv.c | 52 ++++++
.../pamid/src/coll/allreduce/mpido_allreduce.c | 36 ++++-
src/mpid/pamid/src/coll/alltoall/mpido_alltoall.c | 39 +++++
src/mpid/pamid/src/coll/gather/mpido_gather.c | 39 +++++
src/mpid/pamid/src/coll/gatherv/mpido_gatherv.c | 54 ++++++
.../pamid/src/{mpix => coll/red_scat}/Makefile.mk | 2 +-
src/mpid/pamid/src/coll/red_scat/mpido_red_scat.c | 171 ++++++++++++++++++++
src/mpid/pamid/src/coll/reduce/mpido_reduce.c | 36 ++++-
src/mpid/pamid/src/coll/scan/mpido_scan.c | 40 ++++-
src/mpid/pamid/src/coll/scatter/mpido_scatter.c | 39 +++++
src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c | 55 ++++++-
src/mpid/pamid/src/comm/mpid_selectcolls.c | 2 +
15 files changed, 586 insertions(+), 25 deletions(-)
copy src/mpid/pamid/src/{mpix => coll/red_scat}/Makefile.mk (96%)
create mode 100644 src/mpid/pamid/src/coll/red_scat/mpido_red_scat.c
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.2b1-5-g48515bc
by noreply@mpich.org 16 Mar '15
by noreply@mpich.org 16 Mar '15
16 Mar '15
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 48515bce989495d6952f6d318f0219f807547d9d (commit)
from 2be371d5dc9b744ae623fe18946c4721bb4d5658 (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/48515bce989495d6952f6d318f0219f80…
commit 48515bce989495d6952f6d318f0219f807547d9d
Author: Ken Raffenetti <raffenet(a)mcs.anl.gov>
Date: Fri Mar 13 13:06:22 2015 -0500
track OFI library (libfabric) in EXTERNAL_LIBS
Track this library separately so as not to impose its requirements
when building other components like ROMIO or Hydra.
No reviewer.
diff --git a/src/mpid/ch3/channels/nemesis/netmod/ofi/subconfigure.m4 b/src/mpid/ch3/channels/nemesis/netmod/ofi/subconfigure.m4
index ac39fe7..5705baf 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/ofi/subconfigure.m4
+++ b/src/mpid/ch3/channels/nemesis/netmod/ofi/subconfigure.m4
@@ -15,7 +15,10 @@ AM_COND_IF([BUILD_NEMESIS_NETMOD_OFI],[
AC_MSG_NOTICE([RUNNING CONFIGURE FOR ch3:nemesis:ofi])
PAC_SET_HEADER_LIB_PATH(ofi)
+ PAC_PUSH_FLAG(LIBS)
PAC_CHECK_HEADER_LIB_FATAL(ofi, rdma/fabric.h, fabric, fi_getinfo)
+ PAC_APPEND_FLAG([-lfabric],[EXTERNAL_LIBS])
+ PAC_POP_FLAG(LIBS)
AC_DEFINE([ENABLE_COMM_OVERRIDES], 1, [define to add per-vc function pointers to override send and recv functions])
])dnl end AM_COND_IF(BUILD_NEMESIS_NETMOD_OFI,...)
-----------------------------------------------------------------------
Summary of changes:
.../channels/nemesis/netmod/ofi/subconfigure.m4 | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.2b1-4-g2be371d
by noreply@mpich.org 16 Mar '15
by noreply@mpich.org 16 Mar '15
16 Mar '15
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 2be371d5dc9b744ae623fe18946c4721bb4d5658 (commit)
from 2e4af0c162877e1d4e3e314e49efe9491b568237 (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/2be371d5dc9b744ae623fe18946c4721b…
commit 2be371d5dc9b744ae623fe18946c4721bb4d5658
Author: Ken Raffenetti <raffenet(a)mcs.anl.gov>
Date: Thu Mar 12 16:59:01 2015 -0500
move error checking inside guards in info_get.c
Commit [7dfe2840] broke builds with error checking disabled. We fix this
by moving the guards to ensure the fn_exit and fn_fail labels are always
present and only the error checking code is preprocessed out.
Fixes #2225
Signed-off-by: Rajeev Thakur <thakur(a)mcs.anl.gov>
diff --git a/src/mpi/info/info_get.c b/src/mpi/info/info_get.c
index cae3f46..b5bbef6 100644
--- a/src/mpi/info/info_get.c
+++ b/src/mpi/info/info_get.c
@@ -150,16 +150,14 @@ int MPI_Info_get(MPI_Info info, const char *key, int valuelen, char *value,
/* ... end of body of routine ... */
if (mpi_errno) goto fn_fail;
-#ifdef HAVE_ERROR_CHECKING
fn_exit:
-#endif
MPID_MPI_FUNC_EXIT(MPID_STATE_MPI_INFO_GET);
MPIU_THREAD_CS_EXIT(ALLFUNC,);
return mpi_errno;
/* --BEGIN ERROR HANDLING-- */
-# ifdef HAVE_ERROR_CHECKING
fn_fail:
+# ifdef HAVE_ERROR_CHECKING
{
mpi_errno = MPIR_Err_create_code( mpi_errno, MPIR_ERR_RECOVERABLE,
FCNAME, __LINE__, MPI_ERR_OTHER,
@@ -167,7 +165,7 @@ int MPI_Info_get(MPI_Info info, const char *key, int valuelen, char *value,
"**mpi_info_get %I %s %d %p %p", info, key, valuelen, value, flag);
}
mpi_errno = MPIR_Err_return_comm( NULL, FCNAME, mpi_errno );
- goto fn_exit;
# endif
+ goto fn_exit;
/* --END ERROR HANDLING-- */
}
-----------------------------------------------------------------------
Summary of changes:
src/mpi/info/info_get.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.2b1-3-g2e4af0c
by noreply@mpich.org 16 Mar '15
by noreply@mpich.org 16 Mar '15
16 Mar '15
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 2e4af0c162877e1d4e3e314e49efe9491b568237 (commit)
via 29d32dd778a0814e499690bc2eb4f26002b0f7fa (commit)
via 694490d89a7b09654f010e66b05eb9381b1f5937 (commit)
from 2524cea29f887df330259ad53706a16ed83ac869 (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/2e4af0c162877e1d4e3e314e49efe9491…
commit 2e4af0c162877e1d4e3e314e49efe9491b568237
Author: Wesley Bland <wbland(a)anl.gov>
Date: Wed Mar 11 11:00:46 2015 -0500
Remove fixed size variable usage
This code was using uint32_t as a fixed size variable to simplify the
code, but we don't currently require C99. The patch removes that usage
and does everything with int's and more math.
Fixes #2245
Signed-off-by: Antonio J. Pena <apenya(a)mcs.anl.gov>
diff --git a/src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c b/src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c
index 015ddd9..b2cf6bb 100644
--- a/src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c
+++ b/src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c
@@ -12,55 +12,59 @@
#endif
/* Generates a bitarray based on orig_comm where all procs in group are marked with 1 */
-static int *group_to_bitarray(MPID_Group *group, MPID_Comm *orig_comm) {
- uint32_t *bitarray, mask;
- int bitarray_size = (orig_comm->local_size / 8) + (orig_comm->local_size % 8 ? 1 : 0);
+static void group_to_bitarray(MPID_Group *group, MPID_Comm *orig_comm, int **bitarray, int *bitarray_size) {
+ int mask;
int *group_ranks, *comm_ranks, i, index;
- bitarray = (int *) MPIU_Malloc(sizeof(int) * bitarray_size);
+ /* Calculate the bitarray size in ints and allocate space */
+ *bitarray_size = (orig_comm->local_size / (8 * sizeof(int)) + (orig_comm->local_size % (8 * sizeof(int)) ? 1 : 0));
+ *bitarray = (int *) MPIU_Malloc(sizeof(int) * *bitarray_size);
+ /* If the group is empty, return an empty bitarray. */
if (group == MPID_Group_empty) {
- for (i = 0; i < bitarray_size; i++) bitarray[i] = 0;
- return bitarray;
+ for (i = 0; i < *bitarray_size; i++) *bitarray[i] = 0;
+ return;
}
+ /* Get the ranks of group in orig_comm */
group_ranks = (int *) MPIU_Malloc(sizeof(int) * group->size);
comm_ranks = (int *) MPIU_Malloc(sizeof(int) * group->size);
for (i = 0; i < group->size; i++) group_ranks[i] = i;
- for (i = 0; i < bitarray_size; i++) bitarray[i] = 0;
+ for (i = 0; i < *bitarray_size; i++) *bitarray[i] = 0;
MPIR_Group_translate_ranks_impl(group, group->size, group_ranks,
orig_comm->local_group, comm_ranks);
+ /* For each process in the group, shift a bit to the correct location and
+ * add it to the bitarray. */
for (i = 0; i < group->size ; i++) {
if (comm_ranks[i] == MPI_UNDEFINED) continue;
- index = comm_ranks[i] / 32;
- mask = 0x80000000 >> comm_ranks[i] % 32;
- bitarray[index] |= mask;
+ index = comm_ranks[i] / (sizeof(int) * 8);
+ mask = 0x1 << comm_ranks[i] % (sizeof(int) * 8);
+ *bitarray[index] |= mask;
}
MPIU_Free(group_ranks);
MPIU_Free(comm_ranks);
-
- return bitarray;
}
/* Generates an MPID_Group from a bitarray */
-static MPID_Group *bitarray_to_group(MPID_Comm *comm_ptr, uint32_t *bitarray)
+static MPID_Group *bitarray_to_group(MPID_Comm *comm_ptr, int *bitarray)
{
MPID_Group *ret_group;
MPID_Group *comm_group;
UT_array *ranks_array;
int i, found = 0;
+ /* Create a utarray to make storing the ranks easier */
utarray_new(ranks_array, &ut_int_icd);
MPIR_Comm_group_impl(comm_ptr, &comm_group);
/* Converts the bitarray into a utarray */
for (i = 0; i < comm_ptr->local_size; i++) {
- if (bitarray[i/32] & (0x80000000 >> (i % 32))) {
+ if (bitarray[i / (sizeof(int) * 8)] & (0x1 << (i % (sizeof(int) * 8)))) {
utarray_push_back(ranks_array, &i);
found++;
}
@@ -87,7 +91,7 @@ int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_grou
int mpi_errno = MPI_SUCCESS, ret_errno;
mpir_errflag_t errflag = MPIR_ERR_NONE;
int i, j, bitarray_size;
- uint32_t *bitarray, *remote_bitarray;
+ int *bitarray, *remote_bitarray;
MPID_Group *local_fail;
MPIDI_STATE_DECL(MPID_STATE_MPID_COMM_GET_ALL_FAILED_PROCS);
@@ -104,9 +108,8 @@ int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_grou
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
/* Generate a bitarray based on the list of failed procs */
- bitarray = group_to_bitarray(local_fail, comm_ptr);
- bitarray_size = (comm_ptr->local_size / 8) + (comm_ptr->local_size % 8 ? 1 : 0);
- remote_bitarray = MPIU_Malloc(sizeof(uint32_t) * bitarray_size);
+ group_to_bitarray(local_fail, comm_ptr, &bitarray, &bitarray_size);
+ remote_bitarray = MPIU_Malloc(sizeof(int) * bitarray_size);
if (local_fail != MPID_Group_empty)
MPIR_Group_release(local_fail);
@@ -115,7 +118,7 @@ int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_grou
if (comm_ptr->rank == 0) {
for (i = 1; i < comm_ptr->local_size; i++) {
/* Get everyone's list of failed processes to aggregate */
- ret_errno = MPIC_Recv(remote_bitarray, bitarray_size, MPI_UINT32_T,
+ ret_errno = MPIC_Recv(remote_bitarray, bitarray_size, MPI_INT,
i, tag, comm_ptr, MPI_STATUS_IGNORE, &errflag);
if (ret_errno) continue;
@@ -129,7 +132,7 @@ int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_grou
for (i = 1; i < comm_ptr->local_size; i++) {
/* Send the list to each rank to be processed locally */
- ret_errno = MPIC_Send(bitarray, bitarray_size, MPI_UINT32_T, i,
+ ret_errno = MPIC_Send(bitarray, bitarray_size, MPI_INT, i,
tag, comm_ptr, &errflag);
if (ret_errno) continue;
}
@@ -138,11 +141,11 @@ int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_grou
*failed_group = bitarray_to_group(comm_ptr, bitarray);
} else {
/* Send my bitarray to rank 0 */
- mpi_errno = MPIC_Send(bitarray, bitarray_size, MPI_UINT32_T, 0,
+ mpi_errno = MPIC_Send(bitarray, bitarray_size, MPI_INT, 0,
tag, comm_ptr, &errflag);
/* Get the resulting bitarray back from rank 0 */
- mpi_errno = MPIC_Recv(remote_bitarray, bitarray_size, MPI_UINT32_T, 0,
+ mpi_errno = MPIC_Recv(remote_bitarray, bitarray_size, MPI_INT, 0,
tag, comm_ptr, MPI_STATUS_IGNORE, &errflag);
/* Convert the bitarray into a group */
http://git.mpich.org/mpich.git/commitdiff/29d32dd778a0814e499690bc2eb4f2600…
commit 29d32dd778a0814e499690bc2eb4f26002b0f7fa
Author: Wesley Bland <wbland(a)anl.gov>
Date: Wed Mar 11 10:52:41 2015 -0500
Remove MPID_Comm_failed_bitarray
This is another function that is no longer used as it was replaced by a
static function instead. This also removes an internal test that is no
longer useful for this code.
Signed-off-by: Antonio J. Pena <apenya(a)mcs.anl.gov>
diff --git a/src/include/mpiimpl.h b/src/include/mpiimpl.h
index 070d19b..1e18a17 100644
--- a/src/include/mpiimpl.h
+++ b/src/include/mpiimpl.h
@@ -2803,21 +2803,6 @@ int MPID_Comm_failure_ack(MPID_Comm *comm);
int MPID_Comm_failure_get_acked(MPID_Comm *comm, MPID_Group **failed_group_ptr);
/*@
- MPID_Comm_failed_bitarray - MPID function to get the bitarray including all of the failed processes
-
- Input Parameters:
-. comm - communicator
-. acked - true if bitarray should contain only acked procs
-
- Output Parameter:
-. bitarray - Bit array containing all of the failed processes in comm
-
- Return Value:
- 'MPI_SUCCESS' or a valid MPI error code.
-@*/
-int MPID_Comm_failed_bitarray(MPID_Comm *comm, uint32_t **bitarray, int acked);
-
-/*@
MPID_Comm_get_all_failed_procs - Constructs a group of failed processes that it uniform over a communicator
Input Parameters:
diff --git a/src/mpid/ch3/src/mpid_comm_failure_ack.c b/src/mpid/ch3/src/mpid_comm_failure_ack.c
index 377a831..e1938e1 100644
--- a/src/mpid/ch3/src/mpid_comm_failure_ack.c
+++ b/src/mpid/ch3/src/mpid_comm_failure_ack.c
@@ -74,81 +74,6 @@ fn_fail:
}
#undef FUNCNAME
-#define FUNCNAME MPID_Comm_failed_bitarray
-#undef FCNAME
-#define FCNAME MPIU_QUOTE(FUNCNAME)
-int MPID_Comm_failed_bitarray(MPID_Comm *comm_ptr, uint32_t **bitarray, int acked)
-{
- int mpi_errno = MPI_SUCCESS;
- int size, i;
- uint32_t bit;
- int *failed_procs, *group_procs;
- MPID_Group *failed_group, *comm_group;
- MPIU_CHKLMEM_DECL(2);
- MPIDI_STATE_DECL(MPID_STATE_COMM_FAILED_BITARRAY);
-
- MPIDI_FUNC_ENTER(MPID_STATE_COMM_FAILED_BITARRAY);
-
- /* TODO - Fix this for intercommunicators */
- size = comm_ptr->local_size;
-
- /* We can fit sizeof(uint32_t) * 8 ranks in one uint64_t so divide the
- * size by that */
- /* This buffer will be handed back to the calling function so we use a
- * "real" malloc here and expect the caller to free the buffer later. The
- * other buffers in this function are temporary and will be automatically
- * cleaned up at the end of the function. */
- *bitarray = (uint32_t *) MPIU_Malloc(sizeof(uint32_t) * (size / (sizeof(uint32_t) * 8)+1));
- if (!(*bitarray)) {
- fprintf(stderr, "Could not allocate space for bitarray\n");
- PMPI_Abort(MPI_COMM_WORLD, 1);
- }
- for (i = 0; i <= size/(sizeof(uint32_t)*8); i++) *bitarray[i] = 0;
-
- mpi_errno = MPIDI_CH3U_Check_for_failed_procs();
- if (mpi_errno) MPIU_ERR_POP(mpi_errno);
-
- if (acked)
- MPIDI_CH3U_Get_failed_group(comm_ptr->dev.last_ack_rank, &failed_group);
- else
- MPIDI_CH3U_Get_failed_group(-2, &failed_group);
-
- if (failed_group == MPID_Group_empty) goto fn_exit;
-
-
- MPIU_CHKLMEM_MALLOC(group_procs, int *, sizeof(int)*failed_group->size, mpi_errno, "group_procs");
- for (i = 0; i < failed_group->size; i++) group_procs[i] = i;
- MPIU_CHKLMEM_MALLOC(failed_procs, int *, sizeof(int)*failed_group->size, mpi_errno, "failed_procs");
-
- MPIR_Comm_group_impl(comm_ptr, &comm_group);
-
- MPIR_Group_translate_ranks_impl(failed_group, failed_group->size, group_procs, comm_group, failed_procs);
-
- /* The bits will actually be ordered in decending order rather than
- * ascending. This is purely for readability since it makes no practical
- * difference. So if the bits look like this:
- *
- * 10001100 01001000 00000000 00000001
- *
- * Then processes 1, 5, 6, 9, 12, and 32 have failed. */
- for (i = 0; i < failed_group->size; i++) {
- bit = 0x80000000;
- bit >>= failed_procs[i] % (sizeof(uint32_t) * 8);
-
- *bitarray[failed_procs[i] / (sizeof(uint32_t) * 8)] |= bit;
- }
-
- MPIR_Group_free_impl(comm_group);
-
- fn_exit:
- MPIU_CHKLMEM_FREEALL();
- MPIDI_FUNC_EXIT(MPID_STATE_COMM_FAILED_BITARRAY);
- return mpi_errno;
- fn_fail:
- goto fn_exit;
-}
-
-#undef FUNCNAME
#define FUNCNAME MPID_Comm_AS_enabled
#undef FCNAME
#define FCNAME MPIU_QUOTE(FUNCNAME)
diff --git a/test/mpid/ch3/failed_bitmask.c b/test/mpid/ch3/failed_bitmask.c
deleted file mode 100644
index 51518f8..0000000
--- a/test/mpid/ch3/failed_bitmask.c
+++ /dev/null
@@ -1,59 +0,0 @@
-
-/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
-/*
- * (C) 2001 by Argonne National Laboratory.
- * See COPYRIGHT in top-level directory.
- */
-
-#include <stdio.h>
-
-#include "mpidimpl.h"
-
-int main(int argc, char **argv)
-{
- int rc, size, rank, ec;
- MPID_Comm *comm_ptr;
- uint32_t *mask;
-
- MPI_Init(&argc, &argv);
-
- MPI_Comm_size(MPI_COMM_WORLD, &size);
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
- MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
-
- if (size != 16) {
- fprintf(stderr, "Requires 16 ranks\n");
- exit(1);
- }
-
- if (rank == 1 ||
- rank == 5 ||
- rank == 6 ||
- rank == 9 ||
- rank == 12)
- exit(1);
-
- rc = MPI_Barrier(MPI_COMM_WORLD);
- ec = MPI_Error_class(rc, &ec);
- if (MPI_SUCCESS == rc) {
- fprintf(stderr, "[%d] ERROR CLASS: %d\n", rank, rc);
- }
-
- MPID_Comm_get_ptr(MPI_COMM_WORLD, comm_ptr);
-
- MPID_Comm_failed_bitarray(comm_ptr, &mask, 0);
-
- if (mask[0] != (uint32_t) 0x46480000) {
- fprintf(stderr, "[%d] Unexpected failure bitmask: 0x%x\n", rank, mask[0]);
- exit(1);
- } else {
- fprintf(stdout, " No errors\n");
- }
-
- MPIU_Free(mask);
-
- MPI_Finalize();
-
- return 0;
-}
http://git.mpich.org/mpich.git/commitdiff/694490d89a7b09654f010e66b05eb9381…
commit 694490d89a7b09654f010e66b05eb9381b1f5937
Author: Wesley Bland <wbland(a)anl.gov>
Date: Wed Mar 11 10:45:17 2015 -0500
Remove unused version of MPID_Comm_agree
Originally this function was implemented in the CH3 layer, but it was
moved up to the MPI layer as an MPIR function. The old MPID version
doesn't need to exist anymore.
Signed-off-by: Antonio J. Pena <apenya(a)mcs.anl.gov>
diff --git a/src/include/mpiimpl.h b/src/include/mpiimpl.h
index cc1a457..070d19b 100644
--- a/src/include/mpiimpl.h
+++ b/src/include/mpiimpl.h
@@ -2845,23 +2845,6 @@ int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_grou
int MPID_Comm_revoke(MPID_Comm *comm, int is_remote);
/*@
- MPID_Comm_agree - MPID implementation of the last phase of the agreement
-
- Input Parameters:
-. comm - communicator
-. bitarray - Bit array of all of the failures that have been discovered in comm
-. flag - flag input for agree from MPIX_Comm_agree
-. new_fail - If there is a new failure that we need to propagate, this should be true
-
- Output Parameters:
-. flag - Bitwise AND of all of the flag input values
-
- Return Value:
- 'MPI_SUCCESS' or a valid MPI error code.
-@*/
-int MPID_Comm_agree(MPID_Comm *comm, uint32_t *bitarray, int *flag, mpir_errflag_t new_fail);
-
-/*@
MPID_Send - MPID entry point for MPI_Send
Notes:
diff --git a/src/mpid/ch3/src/Makefile.mk b/src/mpid/ch3/src/Makefile.mk
index fd576c9..71e8d6d 100644
--- a/src/mpid/ch3/src/Makefile.mk
+++ b/src/mpid/ch3/src/Makefile.mk
@@ -35,7 +35,6 @@ mpi_core_sources += \
src/mpid/ch3/src/mpid_comm_failure_ack.c \
src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c \
src/mpid/ch3/src/mpid_comm_revoke.c \
- src/mpid/ch3/src/mpid_comm_agree.c \
src/mpid/ch3/src/mpid_finalize.c \
src/mpid/ch3/src/mpid_get_universe_size.c \
src/mpid/ch3/src/mpid_getpname.c \
diff --git a/src/mpid/ch3/src/mpid_comm_agree.c b/src/mpid/ch3/src/mpid_comm_agree.c
deleted file mode 100644
index ca0273e..0000000
--- a/src/mpid/ch3/src/mpid_comm_agree.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
-/*
- * (C) 2011 by Argonne National Laboratory.
- * See COPYRIGHT in top-level directory.
- */
-
-#include "mpidimpl.h"
-
-static int get_parent(int rank, uint32_t *bitarray)
-{
- int parent = -1;
- int failed = 1;
- uint32_t mask;
-
- while (failed) {
- mask = 0x80000000;
- parent = rank == 0 ? -1: (rank - 1) / 2;
-
- /* Check whether the process is in the failed group */
- if (parent != -1) {
- mask >>= parent % (sizeof(uint32_t) * 8);
- failed = bitarray[parent / (sizeof(uint32_t) * 8)] & mask;
- if (failed) {
- rank = parent;
- }
- } else failed = 0;
- }
-
- return parent;
-}
-
-static void get_children(int rank, int size, uint32_t *bitarray, int *children, int *nchildren)
-{
- int i;
- int child;
-
- for (i = 1; i <= 2; i++) {
- /* Calculate the child */
- child = 2 * rank + i;
- if (child >= size) child = -1;
-
- /* Check if the child is alive. If not, call get_children on the child
- * to inherit its children */
- if (child != -1) {
- if (bitarray[child / (sizeof(uint32_t) * 8)] & (0x80000000 >> (child % (sizeof(uint32_t) * 8)))) {
- get_children(child, size, bitarray, children, nchildren);
- } else {
- children[*nchildren] = child;
- (*nchildren)++;
- }
- }
- }
-}
-
-#undef FUNCNAME
-#define FUNCNAME MPID_Comm_agree
-#undef FCNAME
-#define FCNAME MPIU_QUOTE(FUNCNAME)
-int MPID_Comm_agree(MPID_Comm *comm_ptr, uint32_t *bitarray, int *flag, mpir_errflag_t new_fail)
-{
- int mpi_errno = MPI_SUCCESS;
- int *children, nchildren = 0, parent;
- int i;
- mpir_errflag_t errflag = new_fail;
- int tmp_flag;
-
- MPIDI_STATE_DECL(MPID_STATE_MPID_COMM_AGREE);
- MPIDI_FUNC_ENTER(MPID_STATE_MPID_COMM_AGREE);
-
- children = (int *) MPIU_Malloc(sizeof(int) * ((comm_ptr->local_size) / 2));
-
- /* Calculate my parent and children */
- parent = get_parent(comm_ptr->rank, bitarray);
- get_children(comm_ptr->rank, comm_ptr->local_size, bitarray, children, &nchildren);
-
- /* Get a flag value from each of my children */
- for (i = 0; i < nchildren; i++) {
- if (children[i] == -1) continue;
- mpi_errno = MPIC_Recv(&tmp_flag, 1, MPI_INT, children[i], MPIR_AGREE_TAG,
- comm_ptr, MPI_STATUS_IGNORE, &errflag);
- if (mpi_errno) return mpi_errno;
- if (errflag) new_fail = 1;
-
- *flag &= tmp_flag;
- }
-
- /* If I'm not the root */
- if (-1 != parent) {
- /* Send my message to my parent */
- mpi_errno = MPIC_Send(flag, 1, MPI_INT, parent, MPIR_AGREE_TAG,
- comm_ptr, &errflag);
- if (mpi_errno) return mpi_errno;
-
- /* Receive the result from my parent */
- mpi_errno = MPIC_Recv(flag, 1, MPI_INT, parent, MPIR_AGREE_TAG,
- comm_ptr, MPI_STATUS_IGNORE, &errflag);
- if (mpi_errno) return mpi_errno;
- if (errflag) new_fail = 1;
- }
-
- /* Send my flag value to my children */
- for (i = 0; i < nchildren; i++) {
- if (children[i] == -1) continue;
- mpi_errno = MPIC_Send(flag, 1, MPI_INT, children[i], MPIR_AGREE_TAG,
- comm_ptr, &errflag);
- if (mpi_errno) return mpi_errno;
- }
-
- MPIU_DBG_MSG_D(CH3_OTHER, VERBOSE, "New failure: %d", new_fail);
-
- MPIU_ERR_CHKANDJUMP1(new_fail, mpi_errno, MPIX_ERR_PROC_FAILED, "**mpix_comm_agree", "**mpix_comm_agree %C", comm_ptr);
-
- MPIU_Free(children);
-
- fn_exit:
- MPIDI_FUNC_EXIT(MPID_STATE_MPID_COMM_AGREE);
- return mpi_errno;
- fn_fail:
- goto fn_exit;
-}
diff --git a/src/mpid/pamid/src/misc/mpid_unimpl.c b/src/mpid/pamid/src/misc/mpid_unimpl.c
index 155b700..63c4c7c 100644
--- a/src/mpid/pamid/src/misc/mpid_unimpl.c
+++ b/src/mpid/pamid/src/misc/mpid_unimpl.c
@@ -84,12 +84,6 @@ int MPID_Comm_failure_get_acked(MPID_Comm *comm_ptr, MPID_Group **failed_group_p
return 0;
}
-int MPID_Comm_agree(MPID_Comm *comm_ptr, uint32_t *bitarray, int *flag, mpir_errflag_t new_fail)
-{
- MPID_abort();
- return 0;
-}
-
int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_group, int tag)
{
MPID_abort();
-----------------------------------------------------------------------
Summary of changes:
src/include/mpiimpl.h | 32 ------
src/mpid/ch3/src/Makefile.mk | 1 -
src/mpid/ch3/src/mpid_comm_agree.c | 120 ---------------------
src/mpid/ch3/src/mpid_comm_failure_ack.c | 75 -------------
src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c | 47 +++++----
src/mpid/pamid/src/misc/mpid_unimpl.c | 6 -
test/mpid/ch3/failed_bitmask.c | 59 ----------
7 files changed, 25 insertions(+), 315 deletions(-)
delete mode 100644 src/mpid/ch3/src/mpid_comm_agree.c
delete mode 100644 test/mpid/ch3/failed_bitmask.c
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository annotated tag, v3.2b1, created. v3.2b1
by noreply@mpich.org 15 Mar '15
by noreply@mpich.org 15 Mar '15
15 Mar '15
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 annotated tag, v3.2b1 has been created
at 810291da3c4e7d0f972872a9175ecfaa73f9a6ba (tag)
tagging 2524cea29f887df330259ad53706a16ed83ac869 (commit)
replaces v3.2a2
tagged by Antonio J. Pena
on Sun Mar 15 21:23:40 2015 -0500
- Log -----------------------------------------------------------------
tagging 'v3.2b1'
Antonio J. Pena (17):
Add Immediate versions of nonblocking coll. I/O
Enable MPI 3.1 MPI_Aint address arithmetic functs.
Changed MPI_SUBVERSION to 1
Mark coll/alltoallw1 as xfail (ticket 2180)
Marking threads/alltoall as xfail (ticket 2199)
Marking pingping as xfail (ticket 2239)
Increase timeLimit for pingping
Mark FT multi_isendalive test as xfail
Changed MPICH version to 3.2b1
Added ft/barrier as xfail
Mark ft/isendalive as expected to fail
Mark ft/reduce as expected to fail
Revert "Changed MPI_SUBVERSION to 1"
Revert "Enable MPI 3.1 MPI_Aint address arithmetic functs."
Revert "Add Immediate versions of nonblocking coll. I/O"
CHANGES file for 3.2b1 release
Marked ft/nvccoll test as expected to fail
Charles J Archer (7):
Open Fabrics Working Group (OFIWG) Netmod Support
Compile time fixes to latest OFI interfaces
Open Fabrics offical name is OFI rename from SFI
Include uppercase SFI to OFI in netmod rename
Updates to latest OFI pre-1.0 release
Compile time fixes to the latest rc of OpenFabrics Interfaces
Updates to latest OFI api (endpoint attribute location change)
Huiwei Lu (4):
FT: Fixes ref counts in shrink and agree
Mark comm_idup_overlap as xfail
Mark comm_idup and comm_idup_mul as xfail
Adds a note of deprecating Myrinet MX to CHANGES
Igor Ivanov (2):
mpid/sched: Fix issue with schedule entries list processing
mpi/coll: Fix a bug in MPI_Scan
James Dinan (2):
Fix error class buf in MPI_Error_add_code
Add dynamic err code, predefined err class test
Jithin Jose (1):
Updates for latest OFI-libfabric API
Junchao Zhang (14):
Fix a typo for MPI_TYPE_NULL
Fix an arg name in MPI_Comm_set_info
Fix an arg name in MPI_TYPE_NULL_DELETE_FN
Add MPI_Status_f2f08 & MPI_Status_f082f
Fix misleading text in doc for error code MPI_ERR_TYPE
Fix a typo in mpivar.c
Update libtool and automake versions in release.pl
Add new MPI_T routines and an error code in headers
Implement new MPI_T routines to get vars/categories by name
Add error names for newly added MPI_T routines
Add a test for the new MPI_T_xxx_get_index() routines
Add a generic error code MPI_T_ERR_INVALID of MPI-3.1
Fix weak attribute interface for new MPI_T routines
Change MPI-3.1 MPI_T stuff to MPIX_T
Ken Raffenetti (28):
use 0 to indicate false in while expression
portals4: handle PTL_NO_SPACE
portals4: raise list size limit
portals4: add macro for safe PtlMEAppend
ch3: cleanup abort code
implement PMI_Abort
modify fatal error handler
fixup test for abort with fault tolerance
fixups for revoke_shrink test
add generated testlist file to .gitignore
hydra: fix zero-length format string warnings
remove mpl/opa libs from external flags when embedded
disable libtool versioning for embedded libraries
Fortran profiling interface fix
patch libtool for ifort on darwin
add FCMODOUTFLAG to FC_COMPILE_MODS
rptls: do not send pause/unpause messages to self
correct tag usage in MPIC_Sendrecv
portals4: remove dead code
portals4: simplify send callback
require automake >= 1.15
require libtool >= 2.4.3
portals4: simplify operation tags in RMA code
portals4: encode rank in match bits instead of header
portals4: use portals4 hdr_data for length info
portals4: change variable name
testsuite: move coll alias checks to errors dir
testsuite: remove leading spaces in testlist files
Kuleshov Aleksey (1):
Fix bug in using wrong type for packsize.
Min Si (6):
Add info check to avoid unnecessary SHM detection.
Add tests for SHM detection in win_create.
Set default test level of mtest-datatype through env var.
Simplify test setting of min/full datatype tests.
Fix win size translation in attrlangf90 test.
Use the same basic dt in mtest derived dt tests.
Norio yamaguchi (2):
Fix implementation of RMA in netmod-IB
Bug-fix : leak mutex unlock in netmod-IB
Paul Coffman (4):
Criteria for disabling pami optimized collectives invalid on BGQ
romio gpfs: select correct read buffer
romio gpfs: select correct read buffer addendum
barrier in close whenever shared files supported
Pavan Balaji (4):
Remove old unused errnames.
No need to namespace a static function that is unused outside.
Move static function to sit inside !defined MPICH_MPI_FROM_PMPI.
Fix xfail format.
Rajeev Thakur (2):
Changes the sticky lb/ub fields in resized types to 0, since the lb/ub
Fix MPI_Info_get to pass valuelen+1 to MPIU_Strncpy and check return
Ralph Castain (1):
ROMIO: Add missing files to Makefile.mk 'noinst'
Rob Latham (7):
make ADIOI_Shfp_fname report errors
use PATH_MAX instead of magic number
Tweak MPIDU_Datatype_debug output
clean up 64-to-32 bit casts
fix issue with small i/o and big datatypes
check for avialablity of pwrite
remove _XOPEN_SOURCE in code
Sameh Sharkawi (1):
PAMID: Initial CUDA support
Sangmin Seo (3):
Fix async progress problem in NBC I/O.
Mark iwriteatallf as xfail
Do not reference a CH3 variable in ROMIO glue.
Su Huang (2):
PAMID: misc chnages in pamid to support MPICH 3.2
PAMID:MP_STATISTICS=print will cause mpi hw case coredump
Wesley Bland (38):
MPID_Request_is_pending_failure always returns 0 in pamid
Fix bug in shrink when serializing failed procs
Add agree_shrink to testlist
Fix typo in error code man page
Bring test suite version in line with MPICH
Don't free a request if it still pending
Strip out pending ANY_SOURCE request handling
Break out of progress for anysource failures
Handle anysource in the wait* functions
Allow MPIR_Request_complete to take a NULL request
Make anysource test more accurate
Handle anysource in blocking recv functions
Change MPIDI_CH3I_Comm_AS_enabled to be MPID level
Move MPID_Comm_AS_enabled to MPID layer function
Remove ADI breakage introduced earlier
Refactor MPI_Testall to have an MPIR version
Fix for MPIX_COMM_AGREE to not return incorrect errors
Refactor MPIC_Wait to return an errflag
Refactor MPIC functions to use the MPID objects
Add MPIC_Issend
Move mpir_errflag_t to mpitypedefs.h
Add mpir_errflag_t to MPIDI_Request
Convert scheduler functions to use MPIC
Add test for non-blocking collective failures
Correctly return errcode for NBC
Fix a bunch of bugs in the scheduler
Adds mpiimpl.h include to sock.c
Moves errflag in request from device to top level
Add weak symbols for MPIX functions
Don't check for anysource if not recv
Only process recv requests
Clear error bits in MPIC functions
Remove unused variable in alltoallw
Mark failing FT tests as xfail for now
Mark ft/scatter as xfail
Mark more ft tests as xfail.
Mark more ft as xfail
Mark ft/die as xfail
William Gropp (6):
Make ROMIO htmldocs update link file
Check for endif in f77tof90 to avoid false warning
Add support for procs-per-node to testsuite runs
Update test suite README
Correct testsuite dist target support
Add timelimit option
Xin Zhao (107):
Bug-fix: preventing completing the same RMA request twice.
Code-refactor: arrange RMA sync functions.
Code-refactor: arrange RMA pkt structure.
Clean up unused attributes in RMA packet structs.
Bug-fix: correctly modify win_ptr->accumulated_ops_cnt
Bug-fix: check win_ptr->active_req_cnt in RMA sync calls
Bug-fix: handle dest==MPI_PROC_NULL in Win_flush/flush_local
Bug-fix: in UNLOCK handler, send FLUSH_ACK first, then release lock.
Perf-optimize: support piggybacking LOCK on large RMA operations.
Bug-fix: add IMMED area in GET/GACC response packets
Perf-optimize: avoid FLUSH/FLUSH_ACK messages if no PUT/ACC.
Bug-fix: set put_acc_issued flag correctly
Use int instead of size_t in RMA pkt header.
Code-refactor: move piggyback work from op routines to issue rountines
Bug-fix: modify free_ops_before_completion function
Poke progress engine in RMA sync call when needed
Do memory barriers at proper places in RMA sync calls.
Check if all targets are freed at end of RMA sync calls.
Bug-fix: always allocate ranks array in Win_start.
Reset/release window attributes in RMA sync calls.
Set window epoch state at proper places in RMA calls.
Use window pool to manage lock requests
Change struct name from MPIDI_Win_lock_queue to MPIDI_RMA_Lock_entry
Modify struct name: replace "struct XXX" with "XXX_t"
Re-organize progress engine functions.
Code-refactor: Move send_flush_msg function to header file.
Bug-fix: add pkt type LOCK in GET_TARGET_WIN_HANDLE macro
Change routine/pkt name from LOCK_GRANTED to LOCK_ACK
Add new pkt flags for different LOCK ACKs.
Modify send_lock_ack_pkt function to contain flags.
Modify ACK of op with both LOCK and UNLOCK (FLUSH) flags
Delete MPIDI_CH3_PKT_FLAG_RMA_UNLOCK_ACK flag
Tracking current buffered lock data on each window
Support handling different LOCK ACKs
Avoid memcpy if we decided to drop current op data.
Setting infos in win_init function.
Add check no_locks info in set_info function.
Change function name: set_lock_sync_counter -> handle_lock_ack
Bug-fix: first dequeue lock entry from queue, then perform op in this entry
Bug-fix: store lock entry pointer in request even data is dropped
Simplify epoch checking in Win_lock
Delete unnecessary code in SHM allocate / free.
Bug-fix: making processes with SHM and without SHM win work corrrectly.
Add tests to test cases when both SHM window and non-SHM window exist.
Bug-fix: guarantee atomicity for FOP and GACC.
Add tests to test the atomicity for FOP, CAS and GACC operations.
Temporarily revert commits for src/mpid/ch3/include/mpidpkt.h
Revert "Code-refactor: arrange RMA pkt structure."
Re-apply modifications on mpidpkt.h.
Modify packet wrappers to make them complete.
Add comments about RMA packet wrappers.
Remove lock_type and origin_rank areas from RMA packet.
Code-refactoring for RMA operations routines.
Rewrite code of piggybacking IMMED data with RMA packets.
Add asserts for RMA packet types.
Change argument of function finish_op_on_target.
Use memcpy for structure assignment.
Bug-fix: use do_accumulate_op function for ACC computation.
Bug-fix: when encounter mpich failure, unlock inter-process lock.
Remove source_win_handle from GET-like RMA packets.
Simplify code of issuing RMA packets.
Delete unnecessary code.
Delete comments that no longer make sense.
Bug-fix: add barriers between init buffers and issuing RMA operations.
Clean up white-space and code format in RMA code.
Add CH3 APIs and macros to allow channel to implement Alloc_mem/Free_mem.
Change name of MPIDI_CH3U_Win_create_gather to MPIDI_CH3U_Win_gather_info.
Store window basic attributes into a struct on window.
Reduce size of shm_base_addrs[] from comm_size to node_size.
Add a function hook to initialize window attributes in channel layer.
Allow the channel layer to implement Win_gather_info function.
Use function hook instead of function pointer for win_free.
Simplify code: not using flag MPIDI_CH3_PKT_FLAG_RMA_IMMED_RESP for GACC/FOP.
Simplify code: deleting derived DT code for op piggybacked with LOCK.
Add FIXME about extending piggybacking LOCK to op with derived DT.
Code-refactoring: set iov in issue_from_origin_buffer.
Modify macro PAIRTYPE_SIZE_EXTENT to accept correct arguments.
Make 'eltype' in datatype struct store basic type.
Bug-fix: make RMA work correctly with pair basic type.
Change name from data_size to buf_size.
Code-refactoring: make perform_get_acc_in_lock_queue cleaner.
Modify location of setting next_op_to_issue and sync_flag to NONE
Code refactoring: setting ureq after issuing op in a function.
Code refactoring: set ureq to NULL when creating op.
Return request pointer from issue_from_origin_buffer function.
Increment active_req_cnt when issuing the packet.
Use a request array in RMA operation.
use MPIDI_CH3U_Request_complete to complete user request.
Make create_datatype be able to create more general new datatype.
Split issue_from_origin_buffer into normal and stream version.
Cutting ACC and GACC messages.
Make sure we only copy dataloop once for each RMA operation.
Reset flags for stream unit within one RMA operation.
Add counter in op struct to remember number of stream units issued.
Add stream_offset to ACC-related packets and request struct.
Correct the name of RMA requests types.
Bug-fix: add FOP req types.
Modify do_accumulate_op to allow for packed basic type data as input.
Modify RMA pkt handlers and req handlers to allow for stream units.
Allocate buffer with stream size for ACC/GACC data piggybacked with LOCK.
Modify SHM ACC/GACC to avoid allocate large buffer.
Correct the usage of req's segment_first and segment_size in sendNonContig
Rename eltype, n_elements and element_size to better names.
Modify comments about basic_type, n_builtin_elements and builtin_element_size.
Rename predefined_type / predef_type to basic_type.
Add a test code to test Accumulate operations working with pair type.
Change file name ch3u_rma_oplist.c to ch3u_rma_progress.c
andrey.lobanov (1):
fixed memory leaks in pmi messages handling
artem.v.yalozo (2):
Windows conformance: RMA mutexes
added missed brackets in MPL_LL_DELETE_VS2008 macro
-----------------------------------------------------------------------
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.2a2-262-g2524cea
by noreply@mpich.org 15 Mar '15
by noreply@mpich.org 15 Mar '15
15 Mar '15
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 2524cea29f887df330259ad53706a16ed83ac869 (commit)
from 342a01b2b6115c11d2e3e816354e693802d6c6cf (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/2524cea29f887df330259ad53706a16ed…
commit 2524cea29f887df330259ad53706a16ed83ac869
Author: Huiwei Lu <huiweilu(a)mcs.anl.gov>
Date: Fri Mar 13 09:46:58 2015 -0500
Adds a note of deprecating Myrinet MX to CHANGES
The Myrinet MX network module, which had a life cyle from 1.1 till
3.1.2, has now been deprecated.
Signed-off-by: Antonio J. Pena <apenya(a)mcs.anl.gov>
diff --git a/CHANGES b/CHANGES
index ab83b42..a505e0d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -26,6 +26,9 @@
# Completely revamped RMA infrastructure including several
scalability improvements, performance improvements, and bug fixes.
+ # The Myrinet MX network module, which had a life cyle from 1.1 till
+ 3.1.2, has now been deprecated.
+
# Several other minor bug fixes, memory leak fixes, and code cleanup.
A full list of changes is available at the following link:
-----------------------------------------------------------------------
Summary of changes:
CHANGES | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.2a2-261-g342a01b
by noreply@mpich.org 13 Mar '15
by noreply@mpich.org 13 Mar '15
13 Mar '15
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 342a01b2b6115c11d2e3e816354e693802d6c6cf (commit)
from 6c8acf7397a6fa05a69791eda915b057ce8b5f81 (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/342a01b2b6115c11d2e3e816354e69380…
commit 342a01b2b6115c11d2e3e816354e693802d6c6cf
Author: Pavan Balaji <balaji(a)anl.gov>
Date: Thu Mar 12 18:26:08 2015 -0500
Fix xfail format.
No reviewer.
diff --git a/test/mpi/f77/io/testlist.in b/test/mpi/f77/io/testlist.in
index d33df78..0c637ad 100644
--- a/test/mpi/f77/io/testlist.in
+++ b/test/mpi/f77/io/testlist.in
@@ -19,4 +19,4 @@ setviewcurf 4
c2f2ciof 1
c2fmultio 1
@mpix@i_setviewcurf 4
-@mpix@iwriteatallf 4 xfail=2201
+@mpix@iwriteatallf 4 xfail=ticket2201
diff --git a/test/mpi/threads/pt2pt/testlist b/test/mpi/threads/pt2pt/testlist
index a2ff874..08e25a4 100644
--- a/test/mpi/threads/pt2pt/testlist
+++ b/test/mpi/threads/pt2pt/testlist
@@ -1,6 +1,6 @@
threads 2 timeLimit=600
threaded_sr 2
-alltoall 4 xfail=2199
+alltoall 4 xfail=ticket2199
sendselfth 1
multisend 2
multisend2 5
-----------------------------------------------------------------------
Summary of changes:
test/mpi/f77/io/testlist.in | 2 +-
test/mpi/threads/pt2pt/testlist | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.2a2-260-g6c8acf7
by noreply@mpich.org 10 Mar '15
by noreply@mpich.org 10 Mar '15
10 Mar '15
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 6c8acf7397a6fa05a69791eda915b057ce8b5f81 (commit)
from 4b7a4c35a97c32ccf9bd97c6af9f129374160c34 (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/6c8acf7397a6fa05a69791eda915b057c…
commit 6c8acf7397a6fa05a69791eda915b057ce8b5f81
Author: Wesley Bland <wbland(a)anl.gov>
Date: Tue Mar 10 09:36:54 2015 -0500
Mark ft/die as xfail
diff --git a/test/mpi/ft/testlist b/test/mpi/ft/testlist
index 06c7ab1..9deb6fb 100644
--- a/test/mpi/ft/testlist
+++ b/test/mpi/ft/testlist
@@ -1,4 +1,4 @@
-die 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup timeLimit=10 strict=false resultTest=TestStatusNoErrors
+die 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup timeLimit=10 strict=false resultTest=TestStatusNoErrors xfail=2237
abort 2 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup timeLimit=10 strict=false resultTest=TestStatus
sendalive 4 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup timeLimit=10 strict=false resultTest=TestStatusNoErrors xfail=2237
isendalive 3 env=MPIR_CVAR_ENABLE_FT=1 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false xfail=2237
-----------------------------------------------------------------------
Summary of changes:
test/mpi/ft/testlist | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0