[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.1.2-71-gfadf8be
Service Account
noreply at mpich.org
Wed Aug 6 14:19:01 CDT 2014
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 fadf8be59edef34dc78d90c96afabc7a8b428e59 (commit)
from c835e3f874912660f206139dc8046c4ede0501f7 (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/fadf8be59edef34dc78d90c96afabc7a8b428e59
commit fadf8be59edef34dc78d90c96afabc7a8b428e59
Author: Wesley Bland <wbland at mcs.anl.gov>
Date: Mon Mar 24 09:20:02 2014 -0500
Add test for multiple sends to alive processes
This tests to make sure that MPICH can handle multiple process failures and
still send messages correctly. It also provides a way to make sure that the
PMI failure notification is correct when looking through the logs.
Signed-off-by: Ken Raffenetti <raffenet at mcs.anl.gov>
diff --git a/test/mpi/ft/Makefile.am b/test/mpi/ft/Makefile.am
index 8981bae..11d9136 100644
--- a/test/mpi/ft/Makefile.am
+++ b/test/mpi/ft/Makefile.am
@@ -10,4 +10,4 @@ include $(top_srcdir)/Makefile.mtest
## for all programs that are just built from the single corresponding source
## file, we don't need per-target _SOURCES rules, automake will infer them
## correctly
-noinst_PROGRAMS = die abort sendalive isendalive senddead recvdead isenddead irecvdead barrier gather reduce bcast scatter failure_ack anysource revoke_nofail shrink agree
+noinst_PROGRAMS = die abort sendalive isendalive senddead recvdead isenddead irecvdead barrier gather reduce bcast scatter failure_ack anysource revoke_nofail shrink agree multi_isendalive
diff --git a/test/mpi/ft/multi_isendalive.c b/test/mpi/ft/multi_isendalive.c
new file mode 100644
index 0000000..d049a77
--- /dev/null
+++ b/test/mpi/ft/multi_isendalive.c
@@ -0,0 +1,80 @@
+/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
+/*
+ *
+ * (C) 2014 by Argonne National Laboratory.
+ * See COPYRIGHT in top-level directory.
+ */
+#include <mpi.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/*
+ * This test attempts communication between 2 running processes
+ * after another process has failed. The communication should complete
+ * successfully.
+ */
+int main(int argc, char **argv)
+{
+ int rank, size, err;
+ char buf[10];
+ MPI_Request request;
+
+ MPI_Init(&argc, &argv);
+ MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+ MPI_Comm_size(MPI_COMM_WORLD, &size);
+ if (size < 4) {
+ fprintf( stderr, "Must run with at least 4 processes\n" );
+ MPI_Abort(MPI_COMM_WORLD, 1);
+ }
+
+ if (rank == 1) {
+ exit(EXIT_FAILURE);
+ }
+
+ if (rank == 0) {
+ err = MPI_Issend("No Errors", 10, MPI_CHAR, 3, 0, MPI_COMM_WORLD, &request);
+ err += MPI_Wait(&request, MPI_STATUS_IGNORE);
+ if (err) {
+ fprintf(stderr, "An error occurred during the send operation\n");
+ }
+ }
+
+ if (rank == 3) {
+ err = MPI_Irecv(buf, 10, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &request);
+ err += MPI_Wait(&request, MPI_STATUS_IGNORE);
+ if (err) {
+ fprintf(stderr, "An error occurred during the recv operation\n");
+ }
+ }
+
+ if (rank == 3) {
+ exit(EXIT_FAILURE);
+ }
+
+ if (rank == 0) {
+ err = MPI_Issend("No Errors", 10, MPI_CHAR, 2, 0, MPI_COMM_WORLD, &request);
+ err += MPI_Wait(&request, MPI_STATUS_IGNORE);
+ if (err) {
+ fprintf(stderr, "An error occurred during the send operation\n");
+ }
+ }
+
+ if (rank == 2) {
+ err = MPI_Irecv(buf, 10, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &request);
+ err += MPI_Wait(&request, MPI_STATUS_IGNORE);
+ if (err) {
+ fprintf(stderr, "An error occurred during the recv operation\n");
+ } else {
+ printf(" %s\n", buf);
+ fflush(stdout);
+ }
+ }
+
+ if (rank == 2) {
+ exit(EXIT_FAILURE);
+ }
+
+ MPI_Finalize();
+
+ return 0;
+}
diff --git a/test/mpi/ft/testlist b/test/mpi/ft/testlist
index cdc0168..eda8f96 100644
--- a/test/mpi/ft/testlist
+++ b/test/mpi/ft/testlist
@@ -2,6 +2,7 @@ die 4 mpiexecarg=-disable-auto-cleanup timeLimit=10 strict=false resultTest=Test
abort 2 mpiexecarg=-disable-auto-cleanup timeLimit=10 strict=false xfail=ticket1537
sendalive 4 mpiexecarg=-disable-auto-cleanup timeLimit=10 strict=false resultTest=TestStatusNoErrors xfail=ticket1945
isendalive 3 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false xfail=ticket1945
+multi_isendalive 4 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false
senddead 2 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket1945
recvdead 2 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket1945
isenddead 2 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket1945
-----------------------------------------------------------------------
Summary of changes:
test/mpi/ft/Makefile.am | 2 +-
test/mpi/ft/{isendalive.c => multi_isendalive.c} | 32 +++++++++++++++++++---
test/mpi/ft/testlist | 1 +
3 files changed, 30 insertions(+), 5 deletions(-)
copy test/mpi/ft/{isendalive.c => multi_isendalive.c} (58%)
hooks/post-receive
--
MPICH primary repository
More information about the commits
mailing list