[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