[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.1.3-28-ge37e0ee
Service Account
noreply at mpich.org
Mon Oct 20 11:22:38 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 e37e0ee93ee2398b22a6465c79c924cc7d0b814b (commit)
via c1e81b78f8dec1f8e24bf938c84873d1e809276e (commit)
via 3611b89ff76b4fd6e7ee5d68910e929741684d82 (commit)
via f86004a5318c83c8bd1e23c4f304ea69bec08b48 (commit)
via c668ce8c4ea3ac096c3185922b60821e551585d3 (commit)
from b065ce2e89e03683c89e57a0d06f8106c805b7bf (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/e37e0ee93ee2398b22a6465c79c924cc7d0b814b
commit e37e0ee93ee2398b22a6465c79c924cc7d0b814b
Author: Wesley Bland <wbland at anl.gov>
Date: Wed Oct 15 16:32:04 2014 -0500
Add a test for combining agree and shrink
Signed-off-by: Huiwei Lu <huiweilu at mcs.anl.gov>
diff --git a/test/mpi/ft/Makefile.am b/test/mpi/ft/Makefile.am
index 11d9136..080e7dc 100644
--- a/test/mpi/ft/Makefile.am
+++ b/test/mpi/ft/Makefile.am
@@ -10,4 +10,7 @@ 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 multi_isendalive
+noinst_PROGRAMS = die abort sendalive isendalive senddead recvdead isenddead \
+ irecvdead barrier gather reduce bcast scatter failure_ack \
+ anysource revoke_nofail shrink agree multi_isendalive \
+ agree_shrink
diff --git a/test/mpi/ft/agree_shrink.c b/test/mpi/ft/agree_shrink.c
new file mode 100644
index 0000000..0420b66
--- /dev/null
+++ b/test/mpi/ft/agree_shrink.c
@@ -0,0 +1,64 @@
+/* -*- 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>
+#include "mpitest.h"
+
+int main(int argc, char **argv)
+{
+ int rank, size, rc, ec, errs = 0;
+ int flag = 1;
+ MPI_Comm dup, shrunk;
+
+ MPI_Init(&argc, &argv);
+ MPI_Comm_dup(MPI_COMM_WORLD, &dup);
+ MPI_Comm_rank(dup, &rank);
+ MPI_Comm_size(dup, &size);
+ MPI_Comm_set_errhandler(dup, MPI_ERRORS_RETURN);
+
+ if (size < 4) {
+ fprintf(stderr, "Must run with at least 4 processes\n");
+ MPI_Abort(dup, 1);
+ }
+
+ if (2 == rank) exit(EXIT_FAILURE);
+
+ if (MPI_SUCCESS == (rc = MPIX_Comm_agree(dup, &flag))) {
+ MPI_Error_class(rc, &ec);
+ fprintf(stderr, "[%d] Expected MPIX_ERR_PROC_FAILED after agree. Received: %d\n", rank, ec);
+ errs++;
+ MPI_Abort(dup, 1);
+ }
+
+ if (MPI_SUCCESS != (rc = MPIX_Comm_shrink(dup, &shrunk))) {
+ MPI_Error_class(rc, &ec);
+ fprintf(stderr, "[%d] Expected MPI_SUCCESS after shrink. Received: %d\n", rank, ec);
+ errs++;
+ MPI_Abort(dup, 1);
+ }
+
+ if (MPI_SUCCESS != (rc = MPIX_Comm_agree(shrunk, &flag))) {
+ MPI_Error_class(rc, &ec);
+ fprintf(stderr, "[%d] Expected MPI_SUCCESS after agree. Received: %d\n", rank, ec);
+ errs++;
+ MPI_Abort(dup, 1);
+ }
+
+ MPI_Comm_free(&shrunk);
+ MPI_Comm_free(&dup);
+
+ if (0 == rank) {
+ if (errs)
+ fprintf(stdout, " Found %d errors\n", errs);
+ else
+ fprintf(stdout, " No errors\n");
+ }
+
+ MPI_Finalize();
+}
http://git.mpich.org/mpich.git/commitdiff/c1e81b78f8dec1f8e24bf938c84873d1e809276e
commit c1e81b78f8dec1f8e24bf938c84873d1e809276e
Author: Wesley Bland <wbland at anl.gov>
Date: Wed Oct 15 16:06:26 2014 -0500
Don't test tags when unnecessary
Tags were sometimes being tested when the communication call had already
failed, leading to bad asserts later due to uninitialized values. Sometimes,
these results would have ended up with an error anyway, but sometimes not.
Signed-off-by: Huiwei Lu <huiweilu at mcs.anl.gov>
diff --git a/src/mpi/coll/helper_fns.c b/src/mpi/coll/helper_fns.c
index c98690c..869d193 100644
--- a/src/mpi/coll/helper_fns.c
+++ b/src/mpi/coll/helper_fns.c
@@ -328,7 +328,6 @@ int MPIC_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag,
mpi_errno = MPIC_Wait(request_ptr);
if (mpi_errno == MPI_SUCCESS) {
*status = request_ptr->status;
- mpi_errno = request_ptr->status.MPI_ERROR;
} else {
MPIU_ERR_POP(mpi_errno);
}
@@ -336,10 +335,14 @@ int MPIC_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag,
}
if (source != MPI_PROC_NULL) {
- if (MPIR_TAG_CHECK_ERROR_BIT(status->MPI_TAG)) {
+ int ec;
+ MPI_Error_class(status->MPI_ERROR, &ec);
+ if (MPIX_ERR_REVOKED != MPIR_ERR_GET_CLASS(status->MPI_ERROR) &&
+ MPIX_ERR_PROC_FAILED != MPIR_ERR_GET_CLASS(status->MPI_ERROR) &&
+ MPIR_TAG_CHECK_ERROR_BIT(status->MPI_TAG)) {
*errflag = TRUE;
MPIR_TAG_CLEAR_ERROR_BIT(status->MPI_TAG);
- } else if (MPIX_ERR_REVOKED != MPIR_ERR_GET_CLASS(status->MPI_ERROR)) {
+ } else if (MPI_SUCCESS == MPIR_ERR_GET_CLASS(status->MPI_ERROR)) {
MPIU_Assert(status->MPI_TAG == tag);
}
}
http://git.mpich.org/mpich.git/commitdiff/3611b89ff76b4fd6e7ee5d68910e929741684d82
commit 3611b89ff76b4fd6e7ee5d68910e929741684d82
Author: Wesley Bland <wbland at anl.gov>
Date: Thu Aug 21 10:21:10 2014 -0500
Fix FUNC_ENTER macros for some ft functions
The calls in MPID_Comm_get_all_failed_procs and MPID_Comm_agree were the
wrong macros for entering and exiting an MPID function. This corrects it.
Signed-off-by: Huiwei Lu <huiweilu at mcs.anl.gov>
diff --git a/src/mpid/ch3/src/mpid_comm_agree.c b/src/mpid/ch3/src/mpid_comm_agree.c
index 12ae988..3bd5849 100644
--- a/src/mpid/ch3/src/mpid_comm_agree.c
+++ b/src/mpid/ch3/src/mpid_comm_agree.c
@@ -64,8 +64,8 @@ int MPID_Comm_agree(MPID_Comm *comm_ptr, uint32_t *bitarray, int *flag, int new_
int errflag = new_fail;
int tmp_flag;
- MPID_MPI_STATE_DECL(MPID_STATE_MPID_COMM_AGREE);
- MPID_MPI_FUNC_ENTER(MPID_STATE_MPID_COMM_AGREE);
+ 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));
@@ -113,7 +113,7 @@ int MPID_Comm_agree(MPID_Comm *comm_ptr, uint32_t *bitarray, int *flag, int new_
MPIU_Free(children);
fn_exit:
- MPID_MPI_FUNC_EXIT(MPID_STATE_MPID_COMM_AGREE);
+ MPIDI_FUNC_EXIT(MPID_STATE_MPID_COMM_AGREE);
return mpi_errno;
fn_fail:
goto fn_exit;
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 9d29cf6..98e8230 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
@@ -90,7 +90,7 @@ int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_grou
MPID_Group *local_fail;
MPIDI_STATE_DECL(MPID_STATE_MPID_COMM_GET_ALL_FAILED_PROCS);
- MPID_MPI_FUNC_ENTER(MPID_STATE_MPID_COMM_GET_ALL_FAILED_PROCS);
+ MPIDI_FUNC_ENTER(MPID_STATE_MPID_COMM_GET_ALL_FAILED_PROCS);
/* Kick the progress engine in case it's been a while so we get all the
* latest updates about failures */
@@ -152,7 +152,7 @@ int MPID_Comm_get_all_failed_procs(MPID_Comm *comm_ptr, MPID_Group **failed_grou
MPIU_Free(remote_bitarray);
fn_exit:
- MPID_MPI_FUNC_EXIT(MPID_STATE_MPID_COMM_GET_ALL_FAILED_PROCS);
+ MPIDI_FUNC_EXIT(MPID_STATE_MPID_COMM_GET_ALL_FAILED_PROCS);
return mpi_errno;
fn_fail:
goto fn_exit;
http://git.mpich.org/mpich.git/commitdiff/f86004a5318c83c8bd1e23c4f304ea69bec08b48
commit f86004a5318c83c8bd1e23c4f304ea69bec08b48
Author: Huiwei Lu <huiweilu at mcs.anl.gov>
Date: Fri Aug 8 15:53:24 2014 -0500
Fixes one missing case in MPIDI_CH3U_Clean_recvq
Revoke will call MPIDI_CH3U_Clean_recvq to dequeue all requests with
revoked communicators. There is one missing case: when there's hierarchy
communicators that use a different context id. This patch adds a case to
check the hierarchy communicators.
Signed-off-by: Wesley Bland <wbland at anl.gov>
diff --git a/src/mpid/ch3/src/ch3u_recvq.c b/src/mpid/ch3/src/ch3u_recvq.c
index c37e4b3..e4b7a38 100644
--- a/src/mpid/ch3/src/ch3u_recvq.c
+++ b/src/mpid/ch3/src/ch3u_recvq.c
@@ -958,7 +958,8 @@ int MPIDI_CH3U_Clean_recvq(MPID_Comm *comm_ptr)
match.parts.context_id = comm_ptr->recvcontext_id + MPID_CONTEXT_INTRA_COLL;
if (MATCH_WITH_LEFT_RIGHT_MASK(rreq->dev.match, match, mask)) {
- if (rreq->dev.match.parts.tag != MPIR_AGREE_TAG && rreq->dev.match.parts.tag != MPIR_SHRINK_TAG) {
+ if (MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_AGREE_TAG &&
+ MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_SHRINK_TAG) {
MPIU_DBG_MSG_FMT(CH3_OTHER,VERBOSE,(MPIU_DBG_FDEST,
"cleaning up unexpected collective pkt rank=%d tag=%d contextid=%d",
rreq->dev.match.parts.rank, rreq->dev.match.parts.tag, rreq->dev.match.parts.context_id));
@@ -967,12 +968,56 @@ int MPIDI_CH3U_Clean_recvq(MPID_Comm *comm_ptr)
}
}
- if (MPIR_CVAR_ENABLE_SMP_COLLECTIVES && MPIR_Comm_is_node_aware(comm_ptr)) {
- int offset = (comm_ptr->comm_kind == MPID_INTRACOMM) ? MPID_CONTEXT_INTRA_COLL : MPID_CONTEXT_INTER_COLL;
+ if (MPIR_Comm_is_node_aware(comm_ptr)) {
+ int offset;
+ offset = (comm_ptr->comm_kind == MPID_INTRACOMM) ? MPID_CONTEXT_INTRA_PT2PT : MPID_CONTEXT_INTER_PT2PT;
match.parts.context_id = comm_ptr->recvcontext_id + MPID_CONTEXT_INTRANODE_OFFSET + offset;
if (MATCH_WITH_LEFT_RIGHT_MASK(rreq->dev.match, match, mask)) {
- if (rreq->dev.match.parts.tag != MPIR_AGREE_TAG && rreq->dev.match.parts.tag != MPIR_SHRINK_TAG) {
+ if (MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_AGREE_TAG &&
+ MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_SHRINK_TAG) {
+ MPIU_DBG_MSG_FMT(CH3_OTHER,VERBOSE,(MPIU_DBG_FDEST,
+ "cleaning up unexpected pt2pt pkt rank=%d tag=%d contextid=%d",
+ rreq->dev.match.parts.rank, rreq->dev.match.parts.tag, rreq->dev.match.parts.context_id));
+ dequeue_and_set_error(&rreq, prev_rreq, &recvq_unexpected_head, &recvq_unexpected_tail, &error, MPI_PROC_NULL);
+ continue;
+ }
+ }
+
+ offset = (comm_ptr->comm_kind == MPID_INTRACOMM) ? MPID_CONTEXT_INTRA_COLL : MPID_CONTEXT_INTER_COLL;
+ match.parts.context_id = comm_ptr->recvcontext_id + MPID_CONTEXT_INTRANODE_OFFSET + offset;
+
+ if (MATCH_WITH_LEFT_RIGHT_MASK(rreq->dev.match, match, mask)) {
+ if (MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_AGREE_TAG &&
+ MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_SHRINK_TAG) {
+ MPIU_DBG_MSG_FMT(CH3_OTHER,VERBOSE,(MPIU_DBG_FDEST,
+ "cleaning up unexpected collective pkt rank=%d tag=%d contextid=%d",
+ rreq->dev.match.parts.rank, rreq->dev.match.parts.tag, rreq->dev.match.parts.context_id));
+ dequeue_and_set_error(&rreq, prev_rreq, &recvq_unexpected_head, &recvq_unexpected_tail, &error, MPI_PROC_NULL);
+ continue;
+ }
+ }
+
+ offset = (comm_ptr->comm_kind == MPID_INTRACOMM) ? MPID_CONTEXT_INTRA_PT2PT : MPID_CONTEXT_INTER_PT2PT;
+ match.parts.context_id = comm_ptr->recvcontext_id + MPID_CONTEXT_INTERNODE_OFFSET + offset;
+
+ if (MATCH_WITH_LEFT_RIGHT_MASK(rreq->dev.match, match, mask)) {
+ if (MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_AGREE_TAG &&
+ MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_SHRINK_TAG) {
+ MPIU_DBG_MSG_FMT(CH3_OTHER,VERBOSE,(MPIU_DBG_FDEST,
+ "cleaning up unexpected pt2pt pkt rank=%d tag=%d contextid=%d",
+ rreq->dev.match.parts.rank, rreq->dev.match.parts.tag, rreq->dev.match.parts.context_id));
+ dequeue_and_set_error(&rreq, prev_rreq, &recvq_unexpected_head, &recvq_unexpected_tail, &error, MPI_PROC_NULL);
+ continue;
+ }
+ }
+
+ offset = (comm_ptr->comm_kind == MPID_INTRACOMM) ? MPID_CONTEXT_INTRA_COLL : MPID_CONTEXT_INTER_COLL;
+ match.parts.context_id = comm_ptr->recvcontext_id + MPID_CONTEXT_INTERNODE_OFFSET + offset;
+
+ if (MATCH_WITH_LEFT_RIGHT_MASK(rreq->dev.match, match, mask)) {
+ if (MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_AGREE_TAG &&
+ MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_SHRINK_TAG) {
MPIU_DBG_MSG_FMT(CH3_OTHER,VERBOSE,(MPIU_DBG_FDEST,
"cleaning up unexpected collective pkt rank=%d tag=%d contextid=%d",
rreq->dev.match.parts.rank, rreq->dev.match.parts.tag, rreq->dev.match.parts.context_id));
@@ -1005,7 +1050,8 @@ int MPIDI_CH3U_Clean_recvq(MPID_Comm *comm_ptr)
match.parts.context_id = comm_ptr->recvcontext_id + MPID_CONTEXT_INTRA_COLL;
if (MATCH_WITH_LEFT_RIGHT_MASK(rreq->dev.match, match, mask)) {
- if (rreq->dev.match.parts.tag != MPIR_AGREE_TAG && rreq->dev.match.parts.tag != MPIR_SHRINK_TAG) {
+ if (MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_AGREE_TAG &&
+ MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_SHRINK_TAG) {
MPIU_DBG_MSG_FMT(CH3_OTHER,VERBOSE,(MPIU_DBG_FDEST,
"cleaning up posted collective pkt rank=%d tag=%d contextid=%d",
rreq->dev.match.parts.rank, rreq->dev.match.parts.tag, rreq->dev.match.parts.context_id));
@@ -1014,12 +1060,54 @@ int MPIDI_CH3U_Clean_recvq(MPID_Comm *comm_ptr)
}
}
- if (MPIR_CVAR_ENABLE_SMP_COLLECTIVES && MPIR_Comm_is_node_aware(comm_ptr)) {
- int offset = (comm_ptr->comm_kind == MPID_INTRACOMM) ? MPID_CONTEXT_INTRA_COLL : MPID_CONTEXT_INTER_COLL;
+ if (MPIR_Comm_is_node_aware(comm_ptr)) {
+ int offset;
+ offset = (comm_ptr->comm_kind == MPID_INTRACOMM) ? MPID_CONTEXT_INTRA_PT2PT : MPID_CONTEXT_INTER_PT2PT;
match.parts.context_id = comm_ptr->recvcontext_id + MPID_CONTEXT_INTRANODE_OFFSET + offset;
if (MATCH_WITH_LEFT_RIGHT_MASK(rreq->dev.match, match, mask)) {
- if (rreq->dev.match.parts.tag != MPIR_AGREE_TAG && rreq->dev.match.parts.tag != MPIR_SHRINK_TAG) {
+ if (MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_AGREE_TAG &&
+ MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_SHRINK_TAG) {
+ MPIU_DBG_MSG_FMT(CH3_OTHER,VERBOSE,(MPIU_DBG_FDEST,
+ "cleaning up posted pt2pt pkt rank=%d tag=%d contextid=%d",
+ rreq->dev.match.parts.rank, rreq->dev.match.parts.tag, rreq->dev.match.parts.context_id));
+ dequeue_and_set_error(&rreq, prev_rreq, &recvq_posted_head, &recvq_posted_tail, &error, MPI_PROC_NULL);
+ continue;
+ }
+ }
+
+ offset = (comm_ptr->comm_kind == MPID_INTRACOMM) ? MPID_CONTEXT_INTRA_COLL : MPID_CONTEXT_INTER_COLL;
+
+ if (MATCH_WITH_LEFT_RIGHT_MASK(rreq->dev.match, match, mask)) {
+ if (MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_AGREE_TAG &&
+ MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_SHRINK_TAG) {
+ MPIU_DBG_MSG_FMT(CH3_OTHER,VERBOSE,(MPIU_DBG_FDEST,
+ "cleaning up posted collective pkt rank=%d tag=%d contextid=%d",
+ rreq->dev.match.parts.rank, rreq->dev.match.parts.tag, rreq->dev.match.parts.context_id));
+ dequeue_and_set_error(&rreq, prev_rreq, &recvq_posted_head, &recvq_posted_tail, &error, MPI_PROC_NULL);
+ continue;
+ }
+ }
+
+ offset = (comm_ptr->comm_kind == MPID_INTRACOMM) ? MPID_CONTEXT_INTRA_PT2PT : MPID_CONTEXT_INTER_PT2PT;
+ match.parts.context_id = comm_ptr->recvcontext_id + MPID_CONTEXT_INTERNODE_OFFSET + offset;
+
+ if (MATCH_WITH_LEFT_RIGHT_MASK(rreq->dev.match, match, mask)) {
+ if (MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_AGREE_TAG &&
+ MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_SHRINK_TAG) {
+ MPIU_DBG_MSG_FMT(CH3_OTHER,VERBOSE,(MPIU_DBG_FDEST,
+ "cleaning up posted pt2pt pkt rank=%d tag=%d contextid=%d",
+ rreq->dev.match.parts.rank, rreq->dev.match.parts.tag, rreq->dev.match.parts.context_id));
+ dequeue_and_set_error(&rreq, prev_rreq, &recvq_posted_head, &recvq_posted_tail, &error, MPI_PROC_NULL);
+ continue;
+ }
+ }
+
+ offset = (comm_ptr->comm_kind == MPID_INTRACOMM) ? MPID_CONTEXT_INTRA_COLL : MPID_CONTEXT_INTER_COLL;
+
+ if (MATCH_WITH_LEFT_RIGHT_MASK(rreq->dev.match, match, mask)) {
+ if (MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_AGREE_TAG &&
+ MPIR_TAG_MASK_ERROR_BIT(rreq->dev.match.parts.tag) != MPIR_SHRINK_TAG) {
MPIU_DBG_MSG_FMT(CH3_OTHER,VERBOSE,(MPIU_DBG_FDEST,
"cleaning up posted collective pkt rank=%d tag=%d contextid=%d",
rreq->dev.match.parts.rank, rreq->dev.match.parts.tag, rreq->dev.match.parts.context_id));
http://git.mpich.org/mpich.git/commitdiff/c668ce8c4ea3ac096c3185922b60821e551585d3
commit c668ce8c4ea3ac096c3185922b60821e551585d3
Author: Huiwei Lu <huiweilu at mcs.anl.gov>
Date: Thu Aug 7 16:32:04 2014 -0500
Simplify revoke_nofail test
Simplifies the test to only use 2 processes and not make as many MPI calls.
Modifications by Wesley Bland.
Signed-off-by: Wesley Bland <wbland at anl.gov>
diff --git a/test/mpi/ft/revoke_nofail.c b/test/mpi/ft/revoke_nofail.c
index 9e48712..df7b470 100644
--- a/test/mpi/ft/revoke_nofail.c
+++ b/test/mpi/ft/revoke_nofail.c
@@ -18,23 +18,23 @@ int main(int argc, char **argv)
int rank, size;
int rc, ec;
char error[MPI_MAX_ERROR_STRING];
- MPI_Comm world_dup, world_dup2;
+ MPI_Comm world_dup;
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" );
+ if (size < 2) {
+ fprintf( stderr, "Must run with at least 2 processes\n" );
MPI_Abort(MPI_COMM_WORLD, 1);
}
MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
MPI_Comm_dup(MPI_COMM_WORLD, &world_dup);
- MPI_Comm_dup(MPI_COMM_WORLD, &world_dup2);
- if (rank == 3)
+ if (rank == 1) {
MPIX_Comm_revoke(world_dup);
+ }
rc = MPI_Barrier(world_dup);
MPI_Error_class(rc, &ec);
@@ -45,17 +45,7 @@ int main(int argc, char **argv)
MPI_Abort(MPI_COMM_WORLD, 1);
}
- rc = MPI_Barrier(world_dup2);
- MPI_Error_class(rc, &ec);
- if (ec != MPI_SUCCESS) {
- MPI_Error_string(ec, error, &size);
- fprintf(stderr, "[%d] MPI_Barrier should have returned MPI_SUCCESS, but it actually returned: %d\n%s\n",
- rank, ec, error);
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
MPI_Comm_free(&world_dup);
- MPI_Comm_free(&world_dup2);
if (rank == 0)
fprintf(stdout, " No errors\n");
diff --git a/test/mpi/ft/testlist b/test/mpi/ft/testlist
index f26bd47..2f93edd 100644
--- a/test/mpi/ft/testlist
+++ b/test/mpi/ft/testlist
@@ -13,6 +13,6 @@ reduce 4 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=f
bcast 4 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket1945
scatter 4 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket1945
anysource 3 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket1945
-revoke_nofail 4 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket1945
+revoke_nofail 2 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket1945
shrink 8 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket1945
agree 4 mpiexecarg=-disable-auto-cleanup resultTest=TestStatusNoErrors strict=false timeLimit=10 xfail=ticket1945
-----------------------------------------------------------------------
Summary of changes:
src/mpi/coll/helper_fns.c | 9 +-
src/mpid/ch3/src/ch3u_recvq.c | 104 +++++++++++++++++++--
src/mpid/ch3/src/mpid_comm_agree.c | 6 +-
src/mpid/ch3/src/mpid_comm_get_all_failed_procs.c | 4 +-
test/mpi/ft/Makefile.am | 5 +-
test/mpi/ft/agree_shrink.c | 64 +++++++++++++
test/mpi/ft/revoke_nofail.c | 20 +---
test/mpi/ft/testlist | 2 +-
8 files changed, 181 insertions(+), 33 deletions(-)
create mode 100644 test/mpi/ft/agree_shrink.c
hooks/post-receive
--
MPICH primary repository
More information about the commits
mailing list