[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.1rc1-25-g676c29f
mysql vizuser
noreply at mpich.org
Fri Nov 15 12:56:32 CST 2013
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 676c29f9576f8879cc6b8a2cb4baeac3f6ed4fc2 (commit)
from 0b126663cc56320edc34d1cd9a6d50bc765a600c (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/676c29f9576f8879cc6b8a2cb4baeac3f6ed4fc2
commit 676c29f9576f8879cc6b8a2cb4baeac3f6ed4fc2
Author: Antonio J. Pena <apenya at mcs.anl.gov>
Date: Mon Nov 4 18:01:30 2013 -0600
Fixed --enabled-debuginfo segfaults tt #1932
Addresses #1932. Includes:
- MPI_Bsend/MPI_Ibsend
- Several collectives
- Some RMA operations
- MPI_Dist_graph_create
Signed-off-by: Ken Raffenetti <raffenet at mcs.anl.gov>
diff --git a/src/mpi/coll/alltoall.c b/src/mpi/coll/alltoall.c
index 96e1f9b..022c1c6 100644
--- a/src/mpi/coll/alltoall.c
+++ b/src/mpi/coll/alltoall.c
@@ -451,6 +451,8 @@ int MPIR_Alltoall_intra(
MPIU_CHKLMEM_MALLOC(starray, MPI_Status *, 2*bblock*sizeof(MPI_Status), mpi_errno, "starray");
for (ii=0; ii<comm_size; ii+=bblock) {
+ int reqidx;
+
ss = comm_size-ii < bblock ? comm_size-ii : bblock;
/* do the communication -- post ss sends and receives: */
for ( i=0; i<ss; i++ ) {
@@ -463,14 +465,23 @@ int MPIR_Alltoall_intra(
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
}
+ reqidx = ss;
for ( i=0; i<ss; i++ ) {
dst = (rank-i-ii+comm_size) % comm_size;
mpi_errno = MPIC_Isend((char *)sendbuf +
dst*sendcount*sendtype_extent,
sendcount, sendtype, dst,
MPIR_ALLTOALL_TAG, comm,
- &reqarray[i+ss], errflag);
+ &reqarray[reqidx], errflag);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
+#ifdef HAVE_DEBUGGER_SUPPORT
+ {
+ MPID_Request *request_ptr;
+ MPID_Request_get_ptr(reqarray[reqidx], request_ptr);
+ MPIR_SENDQ_REMEMBER(request_ptr, dst, MPIR_ALLTOALL_TAG, comm_ptr->context_id);
+ }
+#endif
+ ++reqidx;
}
/* ... then wait for them to finish: */
diff --git a/src/mpi/coll/alltoallv.c b/src/mpi/coll/alltoallv.c
index 359cd41..100536c 100644
--- a/src/mpi/coll/alltoallv.c
+++ b/src/mpi/coll/alltoallv.c
@@ -183,6 +183,13 @@ int MPIR_Alltoallv_intra(const void *sendbuf, const int *sendcounts, const int *
MPIU_ERR_SET(mpi_errno, MPI_ERR_OTHER, "**fail");
MPIU_ERR_ADD(mpi_errno_ret, mpi_errno);
}
+#ifdef HAVE_DEBUGGER_SUPPORT
+ {
+ MPID_Request *request_ptr;
+ MPID_Request_get_ptr(reqarray[req_cnt], request_ptr);
+ MPIR_SENDQ_REMEMBER(request_ptr, dst, MPIR_ALLTOALLV_TAG, comm_ptr->context_id);
+ }
+#endif
req_cnt++;
}
}
diff --git a/src/mpi/coll/alltoallw.c b/src/mpi/coll/alltoallw.c
index f0e4565..14dacd1 100644
--- a/src/mpi/coll/alltoallw.c
+++ b/src/mpi/coll/alltoallw.c
@@ -158,7 +158,13 @@ int MPIR_Alltoallw_intra(const void *sendbuf, const int sendcounts[], const int
MPIR_ALLTOALLW_TAG, comm,
&reqarray[outstanding_requests], errflag);
if (mpi_errno) { MPIU_ERR_POP(mpi_errno); }
-
+#ifdef HAVE_DEBUGGER_SUPPORT
+ {
+ MPID_Request *request_ptr;
+ MPID_Request_get_ptr(reqarray[outstanding_requests], request_ptr);
+ MPIR_SENDQ_REMEMBER(request_ptr, dst, MPIR_ALLTOALLW_TAG, comm_ptr->context_id);
+ }
+#endif
outstanding_requests++;
}
}
diff --git a/src/mpi/coll/scatterv.c b/src/mpi/coll/scatterv.c
index ed1006a..acb9ca7 100644
--- a/src/mpi/coll/scatterv.c
+++ b/src/mpi/coll/scatterv.c
@@ -101,8 +101,16 @@ int MPIR_Scatterv(const void *sendbuf, const int *sendcounts, const int *displs,
else {
mpi_errno = MPIC_Isend(((char *)sendbuf+displs[i]*extent),
sendcounts[i], sendtype, i,
- MPIR_SCATTERV_TAG, comm, &reqarray[reqs++], errflag);
+ MPIR_SCATTERV_TAG, comm, &reqarray[reqs], errflag);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
+#ifdef HAVE_DEBUGGER_SUPPORT
+ {
+ MPID_Request *request_ptr;
+ MPID_Request_get_ptr(reqarray[reqs], request_ptr);
+ MPIR_SENDQ_REMEMBER(request_ptr, i, MPIR_SCATTERV_TAG, comm_ptr->context_id);
+ }
+#endif
+ ++reqs;
}
}
}
diff --git a/src/mpi/pt2pt/bsend.c b/src/mpi/pt2pt/bsend.c
index f432a2e..4e83d7a 100644
--- a/src/mpi/pt2pt/bsend.c
+++ b/src/mpi/pt2pt/bsend.c
@@ -165,6 +165,7 @@ int MPI_Bsend(const void *buf, int count, MPI_Datatype datatype, int dest, int t
/* Note that we can ignore the request_ptr because it is handled internally
by the bsend util routines */
if (mpi_errno != MPI_SUCCESS) goto fn_fail;
+ MPIR_SENDQ_REMEMBER(request_ptr, dest, tag, comm_ptr->context_id);
/* ... end of body of routine ... */
diff --git a/src/mpi/pt2pt/ibsend.c b/src/mpi/pt2pt/ibsend.c
index 3c92016..9bced9a 100644
--- a/src/mpi/pt2pt/ibsend.c
+++ b/src/mpi/pt2pt/ibsend.c
@@ -105,6 +105,7 @@ int MPIR_Ibsend_impl(const void *buf, int count, MPI_Datatype datatype, int dest
mpi_errno = MPIR_Bsend_isend( buf, count, datatype, dest, tag, comm_ptr,
IBSEND, &request_ptr );
if (mpi_errno != MPI_SUCCESS) goto fn_fail;
+ MPIR_SENDQ_REMEMBER(request_ptr, dest, tag, comm_ptr->context_id);
/* FIXME: use the memory management macros */
ibinfo = (ibsend_req_info *)MPIU_Malloc( sizeof(ibsend_req_info) );
diff --git a/src/mpi/topo/dist_gr_create.c b/src/mpi/topo/dist_gr_create.c
index 76e13ba..4547fce 100644
--- a/src/mpi/topo/dist_gr_create.c
+++ b/src/mpi/topo/dist_gr_create.c
@@ -271,13 +271,29 @@ int MPI_Dist_graph_create(MPI_Comm comm_old, int n, const int sources[],
for (i = 0; i < comm_size; ++i) {
if (rin_sizes[i]) {
/* send edges where i is a destination to process i */
- mpi_errno = MPIC_Isend(&rin[i][0], rin_sizes[i], MPI_INT, i, MPIR_TOPO_A_TAG, comm_old, &reqs[idx++], &errflag);
+ mpi_errno = MPIC_Isend(&rin[i][0], rin_sizes[i], MPI_INT, i, MPIR_TOPO_A_TAG, comm_old, &reqs[idx], &errflag);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
+#ifdef HAVE_DEBUGGER_SUPPORT
+ {
+ MPID_Request *request_ptr;
+ MPID_Request_get_ptr(reqs[idx], request_ptr);
+ MPIR_SENDQ_REMEMBER(request_ptr, i, MPIR_TOPO_A_TAG, comm_ptr->context_id);
+ }
+#endif
+ ++idx;
}
if (rout_sizes[i]) {
/* send edges where i is a source to process i */
- mpi_errno = MPIC_Isend(&rout[i][0], rout_sizes[i], MPI_INT, i, MPIR_TOPO_B_TAG, comm_old, &reqs[idx++], &errflag);
+ mpi_errno = MPIC_Isend(&rout[i][0], rout_sizes[i], MPI_INT, i, MPIR_TOPO_B_TAG, comm_old, &reqs[idx], &errflag);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
+#ifdef HAVE_DEBUGGER_SUPPORT
+ {
+ MPID_Request *request_ptr;
+ MPID_Request_get_ptr(reqs[idx], request_ptr);
+ MPIR_SENDQ_REMEMBER(request_ptr, i, MPIR_TOPO_B_TAG, comm_ptr->context_id);
+ }
+#endif
+ ++idx;
}
}
MPIU_Assert(idx <= (2 * comm_size));
diff --git a/src/mpid/ch3/src/ch3u_rma_sync.c b/src/mpid/ch3/src/ch3u_rma_sync.c
index 7a2553a..89f0416 100644
--- a/src/mpid/ch3/src/ch3u_rma_sync.c
+++ b/src/mpid/ch3/src/ch3u_rma_sync.c
@@ -1388,6 +1388,7 @@ int MPIDI_Win_post(MPID_Group *post_grp_ptr, int assert, MPID_Win *win_ptr)
mpi_errno = MPID_Isend(&i, 0, MPI_INT, dst, SYNC_POST_TAG, win_comm_ptr,
MPID_CONTEXT_INTRA_PT2PT, &req_ptr);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
+ MPIR_SENDQ_REMEMBER(req_ptr, dst, SYNC_POST_TAG, win_comm_ptr->context_id);
req[i] = req_ptr->handle;
} else {
req[i] = MPI_REQUEST_NULL;
-----------------------------------------------------------------------
Summary of changes:
src/mpi/coll/alltoall.c | 13 ++++++++++++-
src/mpi/coll/alltoallv.c | 7 +++++++
src/mpi/coll/alltoallw.c | 8 +++++++-
src/mpi/coll/scatterv.c | 10 +++++++++-
src/mpi/pt2pt/bsend.c | 1 +
src/mpi/pt2pt/ibsend.c | 1 +
src/mpi/topo/dist_gr_create.c | 20 ++++++++++++++++++--
src/mpid/ch3/src/ch3u_rma_sync.c | 1 +
8 files changed, 56 insertions(+), 5 deletions(-)
hooks/post-receive
--
MPICH primary repository
More information about the commits
mailing list