[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.1.3-194-gf7384c5
Service Account
noreply at mpich.org
Thu Nov 13 07:38:02 CST 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 f7384c546de181f59b8a57cb35f3a4b45c35db48 (commit)
from ed819382454bfd187f30d0861df35bb919cb93a8 (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/f7384c546de181f59b8a57cb35f3a4b45c35db48
commit f7384c546de181f59b8a57cb35f3a4b45c35db48
Author: Ken Raffenetti <raffenet at mcs.anl.gov>
Date: Wed Nov 12 12:26:36 2014 -0600
portals4: better dtype mismatch detection
The previous code only detected a datatype mismatch when the message
was copied out of the unexpected queue. Now it will throw an error
in both cases.
We also set the error in the status object to match the default ch3
behavior. This fixed an issue where the request would not be freed
and cause extra debugging output at MPI_Finalize.
Signed-off-by: Antonio Pena Monferrer <apenya at mcs.anl.gov>
diff --git a/src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_recv.c b/src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_recv.c
index 0440972..ec6d90a 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_recv.c
+++ b/src/mpid/ch3/channels/nemesis/netmod/portals4/ptl_recv.c
@@ -84,23 +84,24 @@ static int handler_recv_dequeue_complete(const ptl_event_t *e)
{
int mpi_errno = MPI_SUCCESS;
MPID_Request *const rreq = e->user_ptr;
+ int is_contig;
+ MPI_Aint last;
+ MPI_Aint dt_true_lb;
+ MPIDI_msg_sz_t data_sz;
+ MPID_Datatype *dt_ptr ATTRIBUTE((unused));
+
MPIDI_STATE_DECL(MPID_STATE_HANDLER_RECV_DEQUEUE_COMPLETE);
MPIDI_FUNC_ENTER(MPID_STATE_HANDLER_RECV_DEQUEUE_COMPLETE);
MPIU_Assert(e->type == PTL_EVENT_PUT || e->type == PTL_EVENT_PUT_OVERFLOW);
+
+ MPIDI_Datatype_get_info(rreq->dev.user_count, rreq->dev.datatype, is_contig, data_sz, dt_ptr, dt_true_lb);
dequeue_req(e);
if (e->type == PTL_EVENT_PUT_OVERFLOW) {
/* unpack the data from unexpected buffer */
- int is_contig;
- MPI_Aint last;
- MPI_Aint dt_true_lb;
- MPIDI_msg_sz_t data_sz ATTRIBUTE((unused));
- MPID_Datatype *dt_ptr ATTRIBUTE((unused));
-
- MPIDI_Datatype_get_info(rreq->dev.user_count, rreq->dev.datatype, is_contig, data_sz, dt_ptr, dt_true_lb);
MPIU_DBG_MSG_D(CH3_CHANNEL, VERBOSE, "is_contig = %d", is_contig);
if (is_contig) {
@@ -108,8 +109,12 @@ static int handler_recv_dequeue_complete(const ptl_event_t *e)
} else {
last = e->mlength;
MPID_Segment_unpack(rreq->dev.segment_ptr, rreq->dev.segment_first, &last, e->start);
- MPIU_ERR_CHKANDJUMP(last != e->mlength, mpi_errno, MPI_ERR_OTHER, "**dtypemismatch");
+ if (last != e->mlength)
+ MPIU_ERR_SET(rreq->status.MPI_ERROR, MPI_ERR_TYPE, "**dtypemismatch");
}
+ } else {
+ if (!is_contig && data_sz != e->mlength)
+ MPIU_ERR_SET(rreq->status.MPI_ERROR, MPI_ERR_TYPE, "**dtypemismatch");
}
mpi_errno = handler_recv_complete(e);
-----------------------------------------------------------------------
Summary of changes:
.../channels/nemesis/netmod/portals4/ptl_recv.c | 21 ++++++++++++-------
1 files changed, 13 insertions(+), 8 deletions(-)
hooks/post-receive
--
MPICH primary repository
More information about the commits
mailing list