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/fadf8be59edef34dc78d90c96afabc7a8b... commit fadf8be59edef34dc78d90c96afabc7a8b428e59 Author: Wesley Bland <[email protected]> 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 <[email protected]> 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