commits
Threads by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- 2054 discussions
[mpich] MPICH primary repository branch, master, updated. v3.0.4-188-g74639d5
by noreply@mpich.org 14 May '13
by noreply@mpich.org 14 May '13
14 May '13
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 74639d55be135e34a787f3627e9a084909dfd081 (commit)
from 470667cbd81fea954ebcad19f1a820acea61789b (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/74639d55be135e34a787f3627e9a08490…
commit 74639d55be135e34a787f3627e9a084909dfd081
Author: Haizhu Liu <haizhu(a)us.ibm.com>
Date: Wed May 1 13:39:25 2013 -0400
adio/common wrong checking of lseek return
(ibm) D190161
(ibm) 55566af07e7d69df17005e50c783ff3ae26cc325
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpi/romio/adio/common/ad_read.c b/src/mpi/romio/adio/common/ad_read.c
index 0c706f8..3cea7ed 100644
--- a/src/mpi/romio/adio/common/ad_read.c
+++ b/src/mpi/romio/adio/common/ad_read.c
@@ -19,7 +19,9 @@ void ADIOI_GEN_ReadContig(ADIO_File fd, void *buf, int count,
ADIO_Offset offset, ADIO_Status *status,
int *error_code)
{
- int err = -1, datatype_size;
+ off_t err_lseek = -1;
+ ssize_t err = -1;
+ int datatype_size;
ADIO_Offset len;
static char myname[] = "ADIOI_GEN_READCONTIG";
@@ -38,12 +40,12 @@ void ADIOI_GEN_ReadContig(ADIO_File fd, void *buf, int count,
#ifdef ADIOI_MPE_LOGGING
MPE_Log_event( ADIOI_MPE_lseek_a, 0, NULL );
#endif
- err = lseek(fd->fd_sys, offset, SEEK_SET);
+ err_lseek = lseek(fd->fd_sys, offset, SEEK_SET);
#ifdef ADIOI_MPE_LOGGING
MPE_Log_event( ADIOI_MPE_lseek_b, 0, NULL );
#endif
/* --BEGIN ERROR HANDLING-- */
- if (err == -1) {
+ if (err_lseek == -1) {
*error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE,
myname, __LINE__,
diff --git a/src/mpi/romio/adio/common/ad_write.c b/src/mpi/romio/adio/common/ad_write.c
index d9ccabf..eeba5da 100644
--- a/src/mpi/romio/adio/common/ad_write.c
+++ b/src/mpi/romio/adio/common/ad_write.c
@@ -19,7 +19,9 @@ void ADIOI_GEN_WriteContig(ADIO_File fd, const void *buf, int count,
ADIO_Offset offset, ADIO_Status *status,
int *error_code)
{
- int err = -1, datatype_size;
+ off_t err_lseek = -1;
+ ssize_t err = -1;
+ int datatype_size;
ADIO_Offset len;
static char myname[] = "ADIOI_GEN_WRITECONTIG";
@@ -39,12 +41,12 @@ void ADIOI_GEN_WriteContig(ADIO_File fd, const void *buf, int count,
#ifdef ADIOI_MPE_LOGGING
MPE_Log_event( ADIOI_MPE_lseek_a, 0, NULL );
#endif
- err = lseek(fd->fd_sys, offset, SEEK_SET);
+ err_lseek = lseek(fd->fd_sys, offset, SEEK_SET);
#ifdef ADIOI_MPE_LOGGING
MPE_Log_event( ADIOI_MPE_lseek_b, 0, NULL );
#endif
/* --BEGIN ERROR HANDLING-- */
- if (err == -1) {
+ if (err_lseek == -1) {
*error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE,
myname, __LINE__,
diff --git a/src/mpi/romio/adio/common/ad_write_nolock.c b/src/mpi/romio/adio/common/ad_write_nolock.c
index 56a84d4..c84be8e 100644
--- a/src/mpi/romio/adio/common/ad_write_nolock.c
+++ b/src/mpi/romio/adio/common/ad_write_nolock.c
@@ -27,7 +27,9 @@ void ADIOI_NOLOCK_WriteStrided(ADIO_File fd, const void *buf, int count,
/* offset is in units of etype relative to the filetype. */
ADIOI_Flatlist_node *flat_buf, *flat_file;
- int j, k, err=-1, st_index=0;
+ int j, k, st_index=0;
+ off_t err_lseek=-1;
+ ssize_t err=-1;
ADIO_Offset fwr_size=0, bwr_size, new_bwr_size, new_fwr_size, i_offset, num;
unsigned bufsize;
int n_etypes_in_filetype;
@@ -274,11 +276,11 @@ void ADIOI_NOLOCK_WriteStrided(ADIO_File fd, const void *buf, int count,
printf("[%d/%d] c mem nc file writing loc = %Ld sz = %d\n",
rank, nprocs, off, fwr_size);
#endif
- err = lseek(fd->fd_sys, off, SEEK_SET);
+ err_lseek = lseek(fd->fd_sys, off, SEEK_SET);
#ifdef ADIOI_MPE_LOGGING
MPE_Log_event(ADIOI_MPE_lseek_b, 0, NULL);
#endif
- if (err == -1) err_flag = 1;
+ if (err_lseek == -1) err_flag = 1;
#ifdef ADIOI_MPE_LOGGING
MPE_Log_event(ADIOI_MPE_write_a, 0, NULL);
#endif
-----------------------------------------------------------------------
Summary of changes:
src/mpi/romio/adio/common/ad_read.c | 8 +++++---
src/mpi/romio/adio/common/ad_write.c | 8 +++++---
src/mpi/romio/adio/common/ad_write_nolock.c | 8 +++++---
3 files changed, 15 insertions(+), 9 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-187-g470667c
by noreply@mpich.org 14 May '13
by noreply@mpich.org 14 May '13
14 May '13
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 470667cbd81fea954ebcad19f1a820acea61789b (commit)
from 491957795644bf6d8edc76f8ee4cd75bf02b7d5c (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/470667cbd81fea954ebcad19f1a820ace…
commit 470667cbd81fea954ebcad19f1a820acea61789b
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Tue May 14 09:50:48 2013 -0500
avoid hang if subset of procs have invalid INFO
In response to IBM's integration ticket 1822 (but reworked), turn
MPIO_CHECK_INFO into a collective macro; exchange result of info
inspection with all procs. Now a bogus info on one proc won't cause a
process hang.
diff --git a/src/mpi/romio/adio/include/adioi_error.h b/src/mpi/romio/adio/include/adioi_error.h
index e087055..1dd00ee 100644
--- a/src/mpi/romio/adio/include/adioi_error.h
+++ b/src/mpi/romio/adio/include/adioi_error.h
@@ -163,10 +163,17 @@ if ((fh->file_system == ADIO_PIOFS) || \
/* Check MPI_Info object by calling MPI_Info_dup, if the info object is valid
then the dup operation will succeed */
-#define MPIO_CHECK_INFO(info, error_code) { \
+/* a collective check for error makes this macro collective */
+#define MPIO_CHECK_INFO_ALL(info, error_code, comm) { \
MPI_Info dupinfo; \
+ int tmp_err = MPI_SUCCESS; \
error_code = MPI_Info_dup(info, &dupinfo); \
- if(error_code != MPI_SUCCESS) goto fn_fail; \
+ MPI_Allreduce(&error_code, &tmp_err, 1, MPI_INT, MPI_MAX, comm); \
+ if(tmp_err != MPI_SUCCESS) { \
+ error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE, \
+ myname, __LINE__, MPI_ERR_OTHER, "**info", 0); \
+ goto fn_fail; \
+ } \
if (dupinfo != MPI_INFO_NULL) { \
MPI_Info_free(&dupinfo); \
} \
diff --git a/src/mpi/romio/mpi-io/open.c b/src/mpi/romio/mpi-io/open.c
index 14c025c..80ea26e 100644
--- a/src/mpi/romio/mpi-io/open.c
+++ b/src/mpi/romio/mpi-io/open.c
@@ -61,8 +61,7 @@ int MPI_File_open(MPI_Comm comm, const char *filename, int amode,
/* --BEGIN ERROR HANDLING-- */
MPIO_CHECK_COMM(comm, myname, error_code);
- if(info != MPI_INFO_NULL)
- MPIO_CHECK_INFO(info, error_code);
+ MPIO_CHECK_INFO_ALL(info, error_code, comm);
/* --END ERROR HANDLING-- */
error_code = MPI_Comm_test_inter(comm, &flag);
diff --git a/src/mpi/romio/mpi-io/set_info.c b/src/mpi/romio/mpi-io/set_info.c
index 9fe8ab6..13437cc 100644
--- a/src/mpi/romio/mpi-io/set_info.c
+++ b/src/mpi/romio/mpi-io/set_info.c
@@ -44,7 +44,7 @@ int MPI_File_set_info(MPI_File fh, MPI_Info info)
/* --BEGIN ERROR HANDLING-- */
MPIO_CHECK_FILE_HANDLE(adio_fh, myname, error_code);
- MPIO_CHECK_INFO(info, error_code);
+ MPIO_CHECK_INFO_ALL(info, error_code, fh->comm);
/* --END ERROR HANDLING-- */
/* set new info */
diff --git a/src/mpi/romio/mpi-io/set_view.c b/src/mpi/romio/mpi-io/set_view.c
index ed5a493..77a7756 100644
--- a/src/mpi/romio/mpi-io/set_view.c
+++ b/src/mpi/romio/mpi-io/set_view.c
@@ -106,9 +106,7 @@ int MPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype,
error_code = MPIO_Err_return_file(adio_fh, error_code);
goto fn_exit;
}
- if(info != MPI_INFO_NULL){
- MPIO_CHECK_INFO(info, error_code);
- }
+ MPIO_CHECK_INFO_ALL(info, error_code, adio_fh->comm);
/* --END ERROR HANDLING-- */
MPI_Type_size(filetype, &filetype_size);
-----------------------------------------------------------------------
Summary of changes:
src/mpi/romio/adio/include/adioi_error.h | 11 +++++++++--
src/mpi/romio/mpi-io/open.c | 3 +--
src/mpi/romio/mpi-io/set_info.c | 2 +-
src/mpi/romio/mpi-io/set_view.c | 4 +---
4 files changed, 12 insertions(+), 8 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-186-g4919577
by noreply@mpich.org 13 May '13
by noreply@mpich.org 13 May '13
13 May '13
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 491957795644bf6d8edc76f8ee4cd75bf02b7d5c (commit)
via b9232780088eadae2d7f00737371e0e43828bfff (commit)
via fbcf94a1da1b7e27626d8eb3cba85be8ac1eeb12 (commit)
via ae6451d561584d559a0418a455bb690c1c5f237d (commit)
from 4325f45932a64cf6b170192f7d4b3ca35924537c (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/491957795644bf6d8edc76f8ee4cd75bf…
commit 491957795644bf6d8edc76f8ee4cd75bf02b7d5c
Author: Su Huang <suhuang(a)us.ibm.com>
Date: Fri Sep 21 16:56:03 2012 -0400
multi_mpi coredump with RDMA on mpich
(ibm) D186334
(ibm) 7Z6
(ibm) 63716b02ccab7cd99116e927a210eca43b03d52e
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/onesided/mpid_win_put.c b/src/mpid/pamid/src/onesided/mpid_win_put.c
index 8864721..92fb477 100644
--- a/src/mpid/pamid/src/onesided/mpid_win_put.c
+++ b/src/mpid/pamid/src/onesided/mpid_win_put.c
@@ -65,31 +65,20 @@ MPIDI_Put_use_pami_rput(pami_context_t context, MPIDI_Win_request * req,int *fre
{
pami_result_t rc;
void *map;
-
- pami_rput_simple_t params = {
- .rma = {
- .dest = req->dest,
- .hints = {
- .buffer_registered = PAMI_HINT_ENABLE,
- .use_rdma = PAMI_HINT_ENABLE,
- },
- .bytes = 0,
- .cookie = req,
- .done_fn = NULL,
- },
- .rdma = {
- .local = {
- .mr = &req->origin.memregion,
- },
- .remote = {
- .mr = &req->win->mpid.info[req->target.rank].memregion,
- .offset = req->offset,
- },
- },
- .put = {
- .rdone_fn = MPIDI_Win_DoneCB,
- },
- };
+ pami_rput_simple_t params;
+ /* params need to zero out to avoid passing garbage to PAMI */
+ memset((void *) ¶ms,0,sizeof(pami_rput_simple_t));
+
+ params.rma.dest=req->dest;
+ params.rma.hints.buffer_registered = PAMI_HINT_ENABLE;
+ params.rma.hints.use_rdma = PAMI_HINT_ENABLE;
+ params.rma.bytes = 0;
+ params.rma.cookie = req;
+ params.rma.done_fn = NULL;
+ params.rdma.local.mr=&req->origin.memregion;
+ params.rdma.remote.mr=&req->win->mpid.info[req->target.rank].memregion;
+ params.rdma.remote.offset= req->offset;
+ params.put.rdone_fn= MPIDI_Win_DoneCB;
struct MPIDI_Win_sync* sync = &req->win->mpid.sync;
TRACE_ERR("Start index=%u/%d l-addr=%p r-base=%p r-offset=%zu (sync->started=%u sync->complete=%u)\n",
http://git.mpich.org/mpich.git/commitdiff/b9232780088eadae2d7f00737371e0e43…
commit b9232780088eadae2d7f00737371e0e43828bfff
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Mon May 13 13:02:10 2013 -0500
Add dropped change from 'code review fixes'.
(ibm) D185675
(ibm) 7693f538360130f4cca71f0975c0bb345d2f6239
diff --git a/src/mpid/pamid/include/mpidi_util.h b/src/mpid/pamid/include/mpidi_util.h
index 5bec9c6..5428c10 100644
--- a/src/mpid/pamid/include/mpidi_util.h
+++ b/src/mpid/pamid/include/mpidi_util.h
@@ -42,6 +42,7 @@
#endif
#endif
+extern int MPIDI_atoi(char* , unsigned int* );
extern int MPIDI_Banner(char *);
typedef enum {IS_IP, IS_US} MPIDI_TransportType;
typedef enum {NO_STRIPING=0, IS_PACKET_STRIPING} MPIDI_StripingType;
http://git.mpich.org/mpich.git/commitdiff/fbcf94a1da1b7e27626d8eb3cba85be8a…
commit fbcf94a1da1b7e27626d8eb3cba85be8ac1eeb12
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Mon May 13 12:30:13 2013 -0500
MPIDI_TRACE tool enhancement - remaining updates
For some reason these changes from the original commit did not migrate
into the 'mpich/master' branch.
(ibm) D185675
(ibm) 3728f432f99fc499955a2c9d830a5026e5f87948
diff --git a/src/mpid/pamid/include/mpidi_datatypes.h b/src/mpid/pamid/include/mpidi_datatypes.h
index 7e33c76..2ec80d4 100644
--- a/src/mpid/pamid/include/mpidi_datatypes.h
+++ b/src/mpid/pamid/include/mpidi_datatypes.h
@@ -285,7 +285,6 @@ struct MPIDI_Request
uint32_t shm:16;
#endif
#ifdef MPIDI_TRACE
- int cur_nMsgs;
int partner_id;
int idx;
int PR_idx;
diff --git a/src/mpid/pamid/src/mpid_recvq.c b/src/mpid/pamid/src/mpid_recvq.c
index 8897296..8a7f43b 100644
--- a/src/mpid/pamid/src/mpid_recvq.c
+++ b/src/mpid/pamid/src/mpid_recvq.c
@@ -317,7 +317,7 @@ MPIDI_Recvq_FDU(int source, pami_task_t pami_source, int tag, int context_id, in
MPIDI_Recvq_remove(MPIDI_Recvq.unexpected, rreq, prev_rreq);
found = TRUE;
#ifdef MPIDI_TRACE
- MPIDI_In_cntr[(rreq->mpid.partner_id)].R[(rreq->mpid.idx)].matchedInUQ2=1;
+ MPIDI_Trace_buf[(rreq->mpid.partner_id)].R[(rreq->mpid.idx)].matchedInUQ2=1;
#endif
goto fn_exit;
}
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_callback_eager.c b/src/mpid/pamid/src/pt2pt/mpidi_callback_eager.c
index 5136715..c063bbc 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_callback_eager.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_callback_eager.c
@@ -304,8 +304,8 @@ MPIDI_RecvCB(pami_context_t context,
recv->addr = rreq->mpid.uebuf;
}
#ifdef MPIDI_TRACE
- MPIDI_In_cntr[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].comp_in_HH=2;
- MPIDI_In_cntr[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].bufadd=rreq->mpid.userbuf;
+ MPIDI_Trace_buf[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].comp_in_HH=2;
+ MPIDI_Trace_buf[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].bufadd=rreq->mpid.userbuf;
#endif
#ifdef OUT_OF_ORDER_HANDLING
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_callback_rzv.c b/src/mpid/pamid/src/pt2pt/mpidi_callback_rzv.c
index 296890e..3ec4228 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_callback_rzv.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_callback_rzv.c
@@ -112,10 +112,10 @@ MPIDI_RecvRzvCB_impl(pami_context_t context,
#endif
rreq->mpid.envelope.length = envelope->length;
#ifdef MPIDI_TRACE
- MPIDI_In_cntr[source].R[(rreq->mpid.idx)].req=rreq;
- MPIDI_In_cntr[source].R[(rreq->mpid.idx)].rzv=1;
- MPIDI_In_cntr[source].R[(rreq->mpid.idx)].rlen=envelope->length;
- MPIDI_In_cntr[source].R[(rreq->mpid.idx)].sync=msginfo->isSync;
+ MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].req=rreq;
+ MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].rzv=1;
+ MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].rlen=envelope->length;
+ MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].sync=msginfo->isSync;
#endif
if ((TOKEN_FLOW_CONTROL_ON) && (MPIDI_MUST_RETURN_TOKENS(sender)))
{
@@ -149,9 +149,9 @@ MPIDI_RecvRzvCB_impl(pami_context_t context,
{
MPIDI_RendezvousTransfer(context, rreq);
#ifdef MPIDI_TRACE
- MPIDI_In_cntr[source].R[(rreq->mpid.idx)].sync_com_in_HH=1;
- MPIDI_In_cntr[source].R[(rreq->mpid.idx)].matchedInHH=1;
- MPIDI_In_cntr[source].R[(rreq->mpid.idx)].bufadd=rreq->mpid.userbuf;
+ MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].sync_com_in_HH=1;
+ MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].matchedInHH=1;
+ MPIDI_Trace_buf[source].R[(rreq->mpid.idx)].bufadd=rreq->mpid.userbuf;
#endif
}
MPID_Request_discard(newreq);
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_callback_short.c b/src/mpid/pamid/src/pt2pt/mpidi_callback_short.c
index 2b2aed6..73fd42d 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_callback_short.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_callback_short.c
@@ -208,9 +208,9 @@ MPIDI_RecvShortCB(pami_context_t context,
if (sndlen > 0)
memcpy(rcvbuf, sndbuf, sndlen);
#ifdef MPIDI_TRACE
- MPIDI_In_cntr[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].rlen=sndlen;
- MPIDI_In_cntr[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].comp_in_HH=1;
- MPIDI_In_cntr[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].bufadd=rreq->mpid.userbuf;
+ MPIDI_Trace_buf[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].rlen=sndlen;
+ MPIDI_Trace_buf[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].comp_in_HH=1;
+ MPIDI_Trace_buf[(PAMIX_Endpoint_query(sender))].R[(rreq->mpid.idx)].bufadd=rreq->mpid.userbuf;
#endif
MPIDI_Request_complete(rreq);
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_control.c b/src/mpid/pamid/src/pt2pt/mpidi_control.c
index 9cc8a2b..b39fa51 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_control.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_control.c
@@ -229,7 +229,7 @@ MPIDI_RzvAck_proc_req(pami_context_t context,
}
#endif
#ifdef MPIDI_TRACE
- MPIDI_Out_cntr[(req->mpid.partner_id)].S[(req->mpid.idx)].recvAck=1;
+ MPIDI_Trace_buf[(req->mpid.partner_id)].S[(req->mpid.idx)].recvAck=1;
#endif
MPIDI_SendDoneCB(context, req, PAMI_SUCCESS);
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_recv.h b/src/mpid/pamid/src/pt2pt/mpidi_recv.h
index 7042594..2ca6879 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_recv.h
+++ b/src/mpid/pamid/src/pt2pt/mpidi_recv.h
@@ -160,13 +160,6 @@ MPIDI_Recv(void * buf,
tag,
comm->recvcontext_id + context_offset,
&found);
-#ifdef MPIDI_TRACE
-{
- size_t ll;
- ll = count * MPID_Datatype_get_basic_size(datatype);
- SET_REC_PR(rreq,buf,count,ll,datatype,pami_source,rank,tag,comm,is_blocking);
-}
-#endif
#else
int pami_source;
if(rank != MPI_ANY_SOURCE) {
@@ -184,6 +177,13 @@ MPIDI_Recv(void * buf,
comm->recvcontext_id + context_offset,
&found);
#endif
+#ifdef MPIDI_TRACE
+{
+ size_t ll;
+ ll = count * MPID_Datatype_get_basic_size(datatype);
+ MPIDI_SET_PR_REC(rreq,buf,count,ll,datatype,pami_source,rank,tag,comm,is_blocking);
+}
+#endif
/* ----------------------------------------------------------------- */
/* populate request with our data */
diff --git a/src/mpid/pamid/src/pt2pt/mpidi_recvmsg.c b/src/mpid/pamid/src/pt2pt/mpidi_recvmsg.c
index 0a9eb9d..e070efd 100644
--- a/src/mpid/pamid/src/pt2pt/mpidi_recvmsg.c
+++ b/src/mpid/pamid/src/pt2pt/mpidi_recvmsg.c
@@ -37,7 +37,7 @@ MPIDI_RecvMsg_Unexp(MPID_Request * rreq,
/* Recv functions will ack the messages that are unexpected */
/* ------------------------------------------------------------ */
#ifdef MPIDI_TRACE
- MPIDI_In_cntr[(rreq->mpid.partner_id)].R[(rreq->mpid.idx)].matchedInUQ=1;
+ MPIDI_Trace_buf[(rreq->mpid.partner_id)].R[(rreq->mpid.idx)].matchedInUQ=1;
#endif
if (MPIDI_Request_isRzv(rreq))
http://git.mpich.org/mpich.git/commitdiff/ae6451d561584d559a0418a455bb690c1…
commit ae6451d561584d559a0418a455bb690c1c5f237d
Author: Charles Archer <archerc(a)us.ibm.com>
Date: Thu Oct 4 12:01:00 2012 -0400
Fixed assert on int env vars passed in a string
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/mpidi_env.c b/src/mpid/pamid/src/mpidi_env.c
index f32fccd..65dc493 100644
--- a/src/mpid/pamid/src/mpidi_env.c
+++ b/src/mpid/pamid/src/mpidi_env.c
@@ -427,6 +427,7 @@ ENV_Unsigned__(char* name[], unsigned* val, char* string, unsigned num_supported
ENV_Deprecated(name, num_supported, deprecated, rank, NA);
char * env;
+ int rc;
unsigned i=0;
for (;; ++i) {
@@ -437,7 +438,17 @@ ENV_Unsigned__(char* name[], unsigned* val, char* string, unsigned num_supported
break;
}
- *val = atoi(env);
+ unsigned oldval = *val;
+ rc=MPIDI_atoi(env,val);
+ if(rc != 0)
+ {
+ /* Something went wrong with the processing this integer
+ * Print a warning, and restore the original value */
+ *val = oldval;
+ fprintf(stderr, "Warning: Environment variable: %s should be an integer value: defaulting to %d", string, *val);
+ return;
+ }
+
if (MPIDI_Process.verbose >= MPIDI_VERBOSE_DETAILS_ALL && rank == 0)
fprintf(stderr, "%s = %u\n", string, *val);
}
@@ -932,83 +943,83 @@ MPIDI_Env_setup(int rank, int requested)
unsigned tmp;
{
char* names[] = {"PAMID_COLLECTIVE_ALLGATHER", "PAMI_ALLGATHER", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_ALLGATHER_PREALLREDUCE", "PAMI_ALLGATHER_PREALLREDUCE", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_ALLGATHERV", "PAMI_ALLGATHERV", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_ALLGATHERV_PREALLREDUCE", "PAMI_ALLGATHERV_PREALLREDUCE", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_ALLREDUCE", "PAMI_ALLREDUCE", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_ALLREDUCE_PREALLREDUCE", "PAMI_ALLREDUCE_PREALLREDUCE", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_ALLTOALL", "PAMI_ALLTOALL", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_ALLTOALLV", "PAMI_ALLTOALLV", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_ALLTOALLV_INT", "PAMI_ALLTOALLV_INT", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_BARRIER", "PAMI_BARRIER", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_BCAST", "PAMI_BCAST", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_BCAST_PREALLREDUCE", "PAMI_BCAST_PREALLREDUCE", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_GATHER", "PAMI_GATHER", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_GATHERV", "PAMI_GATHERV", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_REDUCE", "PAMI_REDUCE", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_SCAN", "PAMI_SCAN", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_SCATTER", "PAMI_SCATTER", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_SCATTERV", "PAMI_SCATTERV", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_COLLECTIVE_SCATTERV_PREALLREDUCE", "PAMI_SCATTERV_PREALLREDUCE", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
{
char* names[] = {"PAMID_CORE_ON_ABORT", "PAMI_COREONABORT", "PAMI_COREONMPIABORT", "PAMI_COREONMPIDABORT", NULL};
- ENV_Unsigned(names, &tmp, 1, &found_deprecated_env_var, rank);
+ ENV_Deprecated(names, 1, &found_deprecated_env_var, rank, 0);
}
#if (MPIDI_STATISTICS || MPIDI_PRINTENV)
mpich_env=(MPIDI_printenv_t *) MPIU_Malloc(sizeof(MPIDI_printenv_t)+1);
-----------------------------------------------------------------------
Summary of changes:
src/mpid/pamid/include/mpidi_datatypes.h | 1 -
src/mpid/pamid/include/mpidi_util.h | 1 +
src/mpid/pamid/src/mpid_recvq.c | 2 +-
src/mpid/pamid/src/mpidi_env.c | 53 ++++++++++++++---------
src/mpid/pamid/src/onesided/mpid_win_put.c | 37 ++++++----------
src/mpid/pamid/src/pt2pt/mpidi_callback_eager.c | 4 +-
src/mpid/pamid/src/pt2pt/mpidi_callback_rzv.c | 14 +++---
src/mpid/pamid/src/pt2pt/mpidi_callback_short.c | 6 +-
src/mpid/pamid/src/pt2pt/mpidi_control.c | 2 +-
src/mpid/pamid/src/pt2pt/mpidi_recv.h | 14 +++---
src/mpid/pamid/src/pt2pt/mpidi_recvmsg.c | 2 +-
11 files changed, 68 insertions(+), 68 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-182-g4325f45
by noreply@mpich.org 10 May '13
by noreply@mpich.org 10 May '13
10 May '13
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 4325f45932a64cf6b170192f7d4b3ca35924537c (commit)
via 788dca4a79230a822af8610fe055ea9cc2511b47 (commit)
from a811897209cc3087b4a4379438be31884a637b21 (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/4325f45932a64cf6b170192f7d4b3ca35…
commit 4325f45932a64cf6b170192f7d4b3ca35924537c
Author: Haizhu Liu <haizhu(a)us.ibm.com>
Date: Thu Apr 25 11:11:05 2013 -0400
Dynamic tasking MPI_Comm_disconnect HANG
(ibm) D190081
(ibm) 25939d9ffd5267261f70e714aaec434d84e07093
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/dyntask/mpidi_port.c b/src/mpid/pamid/src/dyntask/mpidi_port.c
index dffc327..7bd2806 100644
--- a/src/mpid/pamid/src/dyntask/mpidi_port.c
+++ b/src/mpid/pamid/src/dyntask/mpidi_port.c
@@ -35,7 +35,7 @@ typedef struct {
conn_info *_conn_info_list = NULL;
extern int mpidi_dynamic_tasking;
-long long _global_world_intercomm_cntr;
+long long _global_world_intercomm_cntr = 0;
typedef struct MPIDI_Acceptq
{
@@ -571,7 +571,7 @@ int MPIDI_Comm_connect(const char *port_name, MPID_Info *info, int root,
TRACE_ERR("MPIC_Sendrecv returned with mpi_errno=%d\n", mpi_errno);
}
- mpi_errno = MPIC_Sendrecv_replace(&comm_cntr, 1, MPI_INT, 0,
+ mpi_errno = MPIC_Sendrecv_replace(&comm_cntr, 1, MPI_LONG_LONG_INT, 0,
sendtag++, 0, recvtag++, tmp_comm->handle,
MPI_STATUS_IGNORE);
if (mpi_errno != MPI_SUCCESS) {
@@ -1226,7 +1226,7 @@ int MPIDI_Comm_accept(const char *port_name, MPID_Info *info, int root,
TRACE_ERR("MPIC_Sendrecv returned with mpi_errno=%d\n", mpi_errno);
}
#endif
- mpi_errno = MPIC_Sendrecv_replace(&comm_cntr, 1, MPI_INT, 0,
+ mpi_errno = MPIC_Sendrecv_replace(&comm_cntr, 1, MPI_LONG_LONG_INT, 0,
sendtag++, 0, recvtag++, tmp_comm->handle,
MPI_STATUS_IGNORE);
if (mpi_errno != MPI_SUCCESS) {
http://git.mpich.org/mpich.git/commitdiff/788dca4a79230a822af8610fe055ea9cc…
commit 788dca4a79230a822af8610fe055ea9cc2511b47
Author: Haizhu Liu <haizhu(a)us.ibm.com>
Date: Mon Apr 22 23:31:55 2013 -0400
MPI_Comm_disconnect hang
Also remove MPIR_Comm_group_ext() function declaration and reference.
(ibm) D189966
(ibm) 5681895bcb45798680b249dbf993b9a634954b80
Signed-off-by: Michael Blocksome <blocksom(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/dyntask/mpid_comm_disconnect.c b/src/mpid/pamid/src/dyntask/mpid_comm_disconnect.c
index 3e5378e..1b84f53 100644
--- a/src/mpid/pamid/src/dyntask/mpid_comm_disconnect.c
+++ b/src/mpid/pamid/src/dyntask/mpid_comm_disconnect.c
@@ -207,13 +207,16 @@ int MPID_Comm_disconnect(MPID_Comm *comm_ptr)
pami_task_t *leader_tids;
int expected_firstAM=0, expected_secondAM=0, expected_lastAM=0;
MPID_Comm *commworld_ptr;
+ MPID_Group *group_ptr = NULL, *new_group_ptr = NULL;
MPID_VCR *glist;
MPID_Comm *lcomm;
+ int *ranks;
int local_tasks=0, localtasks_in_remglist=0;
int jobIdSize=64;
char jobId[jobIdSize];
int MY_TASKID = PAMIX_Client_query(MPIDI_Client, PAMI_CLIENT_TASK_ID ).value.intval;
+ /*if( (comm_ptr->comm_kind == MPID_INTERCOMM) && (comm_ptr->mpid.world_ids != NULL)) { */
if(comm_ptr->mpid.world_ids != NULL) {
rc = MPID_Iprobe(comm_ptr->rank, MPI_ANY_TAG, comm_ptr, MPID_CONTEXT_INTER_PT2PT, &probe_flag, &status);
if(rc || probe_flag) {
@@ -223,7 +226,15 @@ int MPID_Comm_disconnect(MPID_Comm *comm_ptr)
/* make commSubWorld */
{
+ /* MPID_Comm_get_ptr( MPI_COMM_WORLD, commworld_ptr ); */
commworld_ptr = MPIR_Process.comm_world;
+ mpi_errno = MPIR_Comm_group_impl(commworld_ptr, &group_ptr);
+ if (mpi_errno)
+ {
+ TRACE_ERR("Error while creating group_ptr from MPI_COMM_WORLD in MPIDI_Comm_create_from_pami_geom\n");
+ return PAMI_ERROR;
+ }
+
glist = commworld_ptr->vcr;
gsize = commworld_ptr->local_size;
@@ -250,25 +261,48 @@ int MPID_Comm_disconnect(MPID_Comm *comm_ptr)
}
}
k=0;
- local_list = MPIU_Malloc(local_tasks*sizeof(pami_task_t));
+ /* local_list = MPIU_Malloc(local_tasks*sizeof(pami_task_t)); */
+ ranks = MPIU_Malloc(local_tasks*sizeof(int));
for(i=0;i<comm_ptr->local_size;i++) {
for(j=0;j<gsize;j++) {
if(comm_ptr->local_vcr[i]->taskid == glist[j]->taskid)
- local_list[k++] = glist[j]->taskid;
+ /* local_list[k] = glist[j]->taskid; */
+ ranks[k++] = j;
}
}
if((comm_ptr->comm_kind == MPID_INTERCOMM) && localtasks_in_remglist) {
for(i=0;i<comm_ptr->remote_size;i++) {
for(j=0;j<gsize;j++) {
if(comm_ptr->vcr[i]->taskid == glist[j]->taskid)
- local_list[k++] = glist[j]->taskid;
+ /* local_list[k] = glist[j]->taskid; */
+ ranks[k++] = j;
}
}
/* Sort the local_list when there are localtasks_in_remglist */
- _qsort_dyntask(local_list, 0, local_tasks-1);
+/* _qsort_dyntask(local_list, 0, local_tasks-1); */
+ _qsort_dyntask(ranks, 0, local_tasks-1);
}
+
+ /* Now we have all we need to create the new group. Create it */
+ /* mpi_errno = MPIR_Group_incl_impl(group_ptr, local_tasks, ranks, &new_group_ptr); */
+ mpi_errno = MPIR_Group_incl_impl(group_ptr, local_tasks, ranks, &new_group_ptr);
+ if (mpi_errno)
+ {
+ TRACE_ERR("Error while creating new_group_ptr from group_ptr in MPIDI_Comm_create_from_pami_geom\n");
+ return PAMI_ERROR;
+ }
+ /* Now create the communicator using the new_group_ptr */
+ mpi_errno = MPIR_Comm_create_group(commworld_ptr, new_group_ptr, 0, &lcomm);
+ /* mpi_errno = MPIR_Comm_create_intra(commworld_ptr, new_group_ptr, &lcomm); */
+ if (mpi_errno)
+ {
+ TRACE_ERR("Error while creating new_comm_ptr from group_ptr in MPIDI_Comm_create_from_pami_geom\n");
+ return PAMI_ERROR;
+ }
+
+#if 0
mpi_errno = MPIR_Comm_create(&lcomm);
if (mpi_errno != MPI_SUCCESS) {
TRACE_ERR("MPIR_Comm_create returned with mpi_errno=%d\n", mpi_errno);
@@ -310,6 +344,8 @@ int MPID_Comm_disconnect(MPID_Comm *comm_ptr)
if(MY_TASKID == local_list[i]) lcomm->rank = i;
lcomm->vcr[i]->taskid = local_list[i];
}
+#endif
+
}
TRACE_ERR("subcomm for disconnect is established local_tasks=%d calling MPIR_Barrier_intra\n", local_tasks);
@@ -403,7 +439,8 @@ int MPID_Comm_disconnect(MPID_Comm *comm_ptr)
MPIDI_free_tranid_node(comm_ptr->mpid.world_intercomm_cntr);
mpi_errno = MPIR_Comm_release(comm_ptr,1);
if (mpi_errno) TRACE_ERR("MPIR_Comm_release returned with mpi_errno=%d\n", mpi_errno);
- MPIU_Free(local_list);
+ /* MPIU_Free(local_list); */
+ MPIU_Free(ranks);
}
return mpi_errno;
}
diff --git a/src/mpid/pamid/src/mpid_init.c b/src/mpid/pamid/src/mpid_init.c
index 44e0137..8925c48 100644
--- a/src/mpid/pamid/src/mpid_init.c
+++ b/src/mpid/pamid/src/mpid_init.c
@@ -1003,7 +1003,9 @@ MPIDI_VCRT_init(int rank, int size, char *world_tasks, MPIDI_PG_t *pg)
TRACE_ERR("Adding ref for comm=%x vcr=%x pg=%x\n", comm, comm->vcr[0], comm->vcr[0]->pg);
MPIDI_PG_add_ref(comm->vcr[0]->pg);
}
+ comm->local_vcr = comm->vcr;
}
+
#endif
/* -------------------------------- */
@@ -1051,8 +1053,7 @@ MPIDI_VCRT_init(int rank, int size, char *world_tasks, MPIDI_PG_t *pg)
TRACE_ERR("TASKID -- comm->vcr[%d]=%d\n", p, comm->vcr[p]->taskid);
}
- i = 0;
-
+ comm->local_vcr = comm->vcr;
}else {
for (i=0; i<size; i++) {
comm->vcr[i]->taskid = i;
-----------------------------------------------------------------------
Summary of changes:
src/mpid/pamid/src/dyntask/mpid_comm_disconnect.c | 47 ++++++++++++++++++--
src/mpid/pamid/src/dyntask/mpidi_port.c | 6 +-
src/mpid/pamid/src/mpid_init.c | 5 +-
3 files changed, 48 insertions(+), 10 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-180-ga811897
by noreply@mpich.org 09 May '13
by noreply@mpich.org 09 May '13
09 May '13
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 a811897209cc3087b4a4379438be31884a637b21 (commit)
from faff4d1d5c504ca29b4fafe18978ad3c05e0c6df (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/a811897209cc3087b4a4379438be31884…
commit a811897209cc3087b4a4379438be31884a637b21
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Thu May 9 16:21:17 2013 -0500
Make MPIR_Comm_create_group visible to other MPICH utilities.
No reviewer.
diff --git a/src/include/mpiimpl.h b/src/include/mpiimpl.h
index deedd53..bd0db7c 100644
--- a/src/include/mpiimpl.h
+++ b/src/include/mpiimpl.h
@@ -4073,6 +4073,8 @@ int MPIR_Reduce_local_impl(const void *inbuf, void *inoutbuf, int count, MPI_Dat
int MPIR_Setup_intercomm_localcomm( MPID_Comm * );
int MPIR_Comm_create( MPID_Comm ** );
+int MPIR_Comm_create_group(MPID_Comm * comm_ptr, MPID_Group * group_ptr, int tag,
+ MPID_Comm ** newcomm);
/* comm_create helper functions, used by both comm_create and comm_create_group */
int MPIR_Comm_create_calculate_mapping(MPID_Group *group_ptr,
diff --git a/src/mpi/comm/comm_create_group.c b/src/mpi/comm/comm_create_group.c
index 9478361..ab946c9 100644
--- a/src/mpi/comm/comm_create_group.c
+++ b/src/mpi/comm/comm_create_group.c
@@ -18,11 +18,6 @@
#endif
/* -- End Profiling Symbol Block */
-/* PMPI_LOCAL should be dropped and this prototype moved to mpiimpl.h if we ever
- * need to use this routine outside of this translation unit */
-PMPI_LOCAL int MPIR_Comm_create_group(MPID_Comm * comm_ptr, MPID_Group * group_ptr, int tag,
- MPID_Comm ** newcomm);
-
/* Define MPICH_MPI_FROM_PMPI if weak symbols are not supported to build
the MPI routines */
@@ -36,8 +31,8 @@ PMPI_LOCAL int MPIR_Comm_create_group(MPID_Comm * comm_ptr, MPID_Group * group_p
#define FCNAME MPIU_QUOTE(FUNCNAME)
/* comm create group impl; assumes that the standard error checking
* has already taken place in the calling function */
-PMPI_LOCAL int MPIR_Comm_create_group(MPID_Comm * comm_ptr, MPID_Group * group_ptr, int tag,
- MPID_Comm ** newcomm_ptr)
+int MPIR_Comm_create_group(MPID_Comm * comm_ptr, MPID_Group * group_ptr, int tag,
+ MPID_Comm ** newcomm_ptr)
{
int mpi_errno = MPI_SUCCESS;
MPIR_Context_id_t new_context_id = 0;
-----------------------------------------------------------------------
Summary of changes:
src/include/mpiimpl.h | 2 ++
src/mpi/comm/comm_create_group.c | 9 ++-------
2 files changed, 4 insertions(+), 7 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-179-gfaff4d1
by noreply@mpich.org 09 May '13
by noreply@mpich.org 09 May '13
09 May '13
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 faff4d1d5c504ca29b4fafe18978ad3c05e0c6df (commit)
from e9579e1c6f2ed201225b51901129870e90be734e (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/faff4d1d5c504ca29b4fafe18978ad3c0…
commit faff4d1d5c504ca29b4fafe18978ad3c05e0c6df
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Thu May 9 14:15:40 2013 -0500
Fix for tt#1832.
Typo in mpl's configure which was causing MPL headers to be installed,
which should not be needed.
No reviewer.
diff --git a/src/mpl/configure.ac b/src/mpl/configure.ac
index 451ffb4..bc0322c 100644
--- a/src/mpl/configure.ac
+++ b/src/mpl/configure.ac
@@ -52,7 +52,7 @@ PAC_C_MACRO_VA_ARGS
# TODO: could add a --enable-embedded or similar to also control this
AC_ARG_VAR([FROM_MPICH],[set to "yes" if building MPL inside of MPICH])
-AM_CONDITIONAL([MPL_EMBEDDED_MODE],[test "x$FROM_MPICH" = "xyes"])
+AM_CONDITIONAL([MPL_EMBEDDED_MODE],[test "x${FROM_MPICH}" = "xyes"])
# support gcov test coverage information
PAC_ENABLE_COVERAGE
-----------------------------------------------------------------------
Summary of changes:
src/mpl/configure.ac | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-178-ge9579e1
by noreply@mpich.org 09 May '13
by noreply@mpich.org 09 May '13
09 May '13
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 e9579e1c6f2ed201225b51901129870e90be734e (commit)
via 87e84a5e3892a68c503c2059918b31506d9ddc73 (commit)
via 5ef1a628b2feb1ce786d95691213171493fecaf9 (commit)
via c60642ccede4a913d2b025fd6f65c340fe5a8f5f (commit)
via f29783c21fd7c5ea74be0ca3b0a920f48b92c730 (commit)
via ef90f1b9309ab8ffc67658b5a4cbf81f3e2a9468 (commit)
via 1daeae3155739627d291277c89669f0c633c1e5a (commit)
via a45954b594b5a5ba4a54acdcb8fda7c2e819a40f (commit)
via dcf62e917496501a74fe6cac918c8967316056dc (commit)
via 77999d6f565e65e7f1c5ee9f00dda99b28186f0d (commit)
from c478a4fe8d4cad97a2412c13b02d445181f78a56 (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/e9579e1c6f2ed201225b51901129870e9…
commit e9579e1c6f2ed201225b51901129870e90be734e
Author: Charles Archer <archerc(a)us.ibm.com>
Date: Fri Apr 5 07:24:24 2013 -0400
use void* for sizeof detection instead of int
(ibm) D189618
(ibm) f30c0544fcc37fc18cb0f9b27f414373d5d5308b
Signed-off-by: Bob Cernohous <bobc(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/mpid_init.c b/src/mpid/pamid/src/mpid_init.c
index 9a4dfc4..44e0137 100644
--- a/src/mpid/pamid/src/mpid_init.c
+++ b/src/mpid/pamid/src/mpid_init.c
@@ -1344,7 +1344,7 @@ int MPIDI_Banner(char * bufPtr) {
}
}
- if(sizeof(int) == 8)
+ if(sizeof(void*) == 8)
strcpy(type, "64bit (MPI over PAMI)");
else if(sizeof(int) == 4)
strcpy(type, "32bit (MPI over PAMI)");
diff --git a/src/mpid/pamid/src/mpidi_util.c b/src/mpid/pamid/src/mpidi_util.c
index bf9c423..a41ad77 100644
--- a/src/mpid/pamid/src/mpidi_util.c
+++ b/src/mpid/pamid/src/mpidi_util.c
@@ -562,7 +562,7 @@ int MPIDI_Print_mpenv(int rank,int size)
else strcpy(sender.libpath, "NOT SET");
getcwd(sender.directory, FILENAME_MAX+1);
- if(sizeof(int) == 4)
+ if(sizeof(void*) == 4)
sender.mode_64 = 0;
else
sender.mode_64 = 1;
http://git.mpich.org/mpich.git/commitdiff/87e84a5e3892a68c503c2059918b31506…
commit 87e84a5e3892a68c503c2059918b31506d9ddc73
Author: Charles Archer <archerc(a)us.ibm.com>
Date: Thu Apr 4 11:58:52 2013 -0400
detect 32 bit vs 64 bit via sizeof
(ibm) D189618
(ibm) 73870926a4a9598deacbc5c0b91fa6150ef8f7ed
Signed-off-by: Bob Cernohous <bobc(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/mpid_init.c b/src/mpid/pamid/src/mpid_init.c
index 7e7d00c..9a4dfc4 100644
--- a/src/mpid/pamid/src/mpid_init.c
+++ b/src/mpid/pamid/src/mpid_init.c
@@ -1344,11 +1344,12 @@ int MPIDI_Banner(char * bufPtr) {
}
}
-#ifndef __32BIT__
- strcpy(type, "64bit (MPI over PAMI)");
-#else
- strcpy(type, "32bit (MPI over PAMI)");
-#endif
+ if(sizeof(int) == 8)
+ strcpy(type, "64bit (MPI over PAMI)");
+ else if(sizeof(int) == 4)
+ strcpy(type, "32bit (MPI over PAMI)");
+ else
+ strcpy(type, "UNKNOWN-bit (MPI over PAMI)");
sprintf(msgBuf,"MPICH library was compiled on");
diff --git a/src/mpid/pamid/src/mpidi_util.c b/src/mpid/pamid/src/mpidi_util.c
index 5f9f2cf..bf9c423 100644
--- a/src/mpid/pamid/src/mpidi_util.c
+++ b/src/mpid/pamid/src/mpidi_util.c
@@ -561,11 +561,12 @@ int MPIDI_Print_mpenv(int rank,int size)
if (cp) strncpy(sender.libpath, cp, MAXPATHLEN-1);
else strcpy(sender.libpath, "NOT SET");
getcwd(sender.directory, FILENAME_MAX+1);
-#ifdef __32BIT__
- sender.mode_64 = 0;
-#else
- sender.mode_64 = 1;
-#endif
+
+ if(sizeof(int) == 4)
+ sender.mode_64 = 0;
+ else
+ sender.mode_64 = 1;
+
sender.threaded = 1; /* Always 1 */
cp = getenv("AIXTHREAD_SCOPE");
if (cp) strncpy(sender.thread_scope, cp, 8);
http://git.mpich.org/mpich.git/commitdiff/5ef1a628b2feb1ce786d9569121317149…
commit 5ef1a628b2feb1ce786d95691213171493fecaf9
Author: Bob Cernohous <bobc(a)us.ibm.com>
Date: Tue Mar 26 09:15:47 2013 -0500
Fix alltoall handling of non-PAMI datatypes and non-continuous datatypes.
(ibm) 36f5ac777f738068690184193b557fab53b3472f
Signed-off-by: sssharka <sssharka(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/coll/alltoallv/mpido_alltoallv.c b/src/mpid/pamid/src/coll/alltoallv/mpido_alltoallv.c
index 646b89f..d970069 100644
--- a/src/mpid/pamid/src/coll/alltoallv/mpido_alltoallv.c
+++ b/src/mpid/pamid/src/coll/alltoallv/mpido_alltoallv.c
@@ -45,7 +45,10 @@ int MPIDO_Alltoallv(const void *sendbuf,
{
TRACE_ERR("Entering MPIDO_Alltoallv\n");
volatile unsigned active = 1;
- int sndtypelen, rcvtypelen, snd_contig, rcv_contig;
+ void *snd_noncontig_buff = NULL, *rcv_noncontig_buff = NULL;
+ void *sbuf = NULL, *rbuf = NULL;
+ int recvok=PAMI_SUCCESS, sendok=PAMI_SUCCESS;
+ int sndtypelen, rcvtypelen, snd_contig=0, rcv_contig=0;
MPID_Datatype *sdt, *rdt;
pami_type_t stype, rtype;
MPI_Aint sdt_true_lb, rdt_true_lb;
@@ -61,17 +64,20 @@ int MPIDO_Alltoallv(const void *sendbuf,
#endif
const struct MPIDI_Comm* const mpid = &(comm_ptr->mpid);
const int selected_type = mpid->user_selected_type[PAMI_XFER_ALLTOALLV_INT];
-
- if((sendbuf != MPI_IN_PLACE) && (MPIDI_Datatype_to_pami(sendtype, &stype, -1, NULL, &tmp) != MPI_SUCCESS))
- pamidt = 0;
- if(MPIDI_Datatype_to_pami(recvtype, &rtype, -1, NULL, &tmp) != MPI_SUCCESS)
- pamidt = 0;
-
- MPIDI_Datatype_get_info(1, recvtype, rcv_contig, rcvtypelen, rdt, rdt_true_lb);
- if(!rcv_contig) pamidt = 0;
-
- if((selected_type == MPID_COLL_USE_MPICH) ||
- pamidt == 0)
+ const int size = comm_ptr->local_size;
+ int sendcontinuous , recvcontinuous=0;
+ size_t recv_size=0, send_size=0;
+ size_t totalrecvcount=0;
+ int *lrecvdispls = NULL; /* possible local displs calculated for noncontinous */
+ int *lsenddispls = NULL;/* possible local displs calculated for noncontinous */
+ int *lrecvcounts = NULL;/* possible local counts calculated for noncontinous */
+ int *lsendcounts = NULL;/* possible local counts calculated for noncontinous */
+ const int *precvdispls = recvdispls; /* pointer to displs to use as pami parmi */
+ const int *psenddispls = senddispls; /* pointer to displs to use as pami parmi */
+ const int *precvcounts = recvcounts; /* pointer to counts to use as pami parmi */
+ const int *psendcounts = sendcounts; /* pointer to counts to use as pami parmi */
+ int inplace = sendbuf == MPI_IN_PLACE? 1 : 0;
+ if(selected_type == MPID_COLL_USE_MPICH)
{
if(unlikely(verbose))
fprintf(stderr,"Using MPICH alltoallv algorithm\n");
@@ -80,6 +86,148 @@ int MPIDO_Alltoallv(const void *sendbuf,
comm_ptr, mpierrno);
}
+ if(!inplace)
+ {
+ sendok = MPIDI_Datatype_to_pami(sendtype, &stype, -1, NULL, &tmp);
+ MPIDI_Datatype_get_info(1, sendtype, snd_contig, sndtypelen, sdt, sdt_true_lb);
+ sbuf = (char *)sendbuf + sdt_true_lb;
+ if(!snd_contig || (sendok != PAMI_SUCCESS))
+ {
+ stype = PAMI_TYPE_UNSIGNED_CHAR;
+ size_t totalsendcount = sendcounts[0];
+ sendcontinuous = senddispls[0] == 0? 1 : 0 ;
+ int i;
+ psenddispls = lsenddispls = MPIU_Malloc(size*sizeof(int));
+ psendcounts = lsendcounts = MPIU_Malloc(size*sizeof(int));
+ lsenddispls[0]= 0;
+ lsendcounts[0]= sndtypelen * sendcounts[0];
+ for(i=1; i<size; ++i)
+ {
+ lsenddispls[i]= sndtypelen * totalsendcount;
+ totalsendcount += sendcounts[i];
+ if(senddispls[i] != (senddispls[i-1] + (sendcounts[i-1]*sndtypelen)))
+ sendcontinuous = 0;
+ lsendcounts[i]= sndtypelen * sendcounts[i];
+ }
+ send_size = sndtypelen * totalsendcount;
+ TRACE_ERR("Pack receive sndv_contig %zu, sendok %zd, totalsendcount %zu, sendcontinuous %zu, sndtypelen %zu, send_size %zu\n",
+ (size_t)snd_contig, (size_t)sendok, (size_t)totalsendcount, (size_t)sendcontinuous, (size_t) sndtypelen, (size_t)send_size);
+ snd_noncontig_buff = MPIU_Malloc(send_size);
+ sbuf = snd_noncontig_buff;
+ if(snd_noncontig_buff == NULL)
+ {
+ MPID_Abort(NULL, MPI_ERR_NO_SPACE, 1,
+ "Fatal: Cannot allocate pack buffer");
+ }
+ if(sendcontinuous)
+ {
+ MPIR_Localcopy(sendbuf, totalsendcount, sendtype,
+ snd_noncontig_buff, send_size,MPI_CHAR);
+ }
+ else
+ {
+ size_t extent;
+ MPID_Datatype_get_extent_macro(sendtype,extent);
+ for(i=0; i<size; ++i)
+ {
+ char* scbuf = (char*)sendbuf + senddispls[i]*extent;
+ char* rcbuf = (char*)snd_noncontig_buff + psenddispls[i];
+ MPIR_Localcopy(scbuf, sendcounts[i], sendtype,
+ rcbuf, psendcounts[i], MPI_CHAR);
+ TRACE_ERR("Pack send src extent %zu, displ[%zu]=%zu, count[%zu]=%zu buf[%zu]=%u\n",
+ (size_t)extent, (size_t)i,(size_t)senddispls[i],(size_t)i,(size_t)sendcounts[i],(size_t)senddispls[i], *(int*)scbuf);
+ TRACE_ERR("Pack send dest displ[%zu]=%zu, count[%zu]=%zu buf[%zu]=%u\n",
+ (size_t)i,(size_t)psenddispls[i],(size_t)i,(size_t)psendcounts[i],(size_t)psenddispls[i], *(int*)rcbuf);
+ }
+ }
+ }
+ }
+ MPIDI_Datatype_get_info(1, recvtype, rcv_contig, rcvtypelen, rdt, rdt_true_lb);
+ recvok = MPIDI_Datatype_to_pami(recvtype, &rtype, -1, NULL, &tmp);
+ rbuf = (char *)recvbuf + rdt_true_lb;
+ if(!rcv_contig || (recvok != PAMI_SUCCESS))
+ {
+ rtype = PAMI_TYPE_UNSIGNED_CHAR;
+ totalrecvcount = recvcounts[0];
+ recvcontinuous = recvdispls[0] == 0? 1 : 0 ;
+ int i;
+ precvdispls = lrecvdispls = MPIU_Malloc(size*sizeof(int));
+ precvcounts = lrecvcounts = MPIU_Malloc(size*sizeof(int));
+ lrecvdispls[0]= 0;
+ lrecvcounts[0]= rcvtypelen * recvcounts[0];
+ for(i=1; i<size; ++i)
+ {
+ lrecvdispls[i]= rcvtypelen * totalrecvcount;
+ totalrecvcount += recvcounts[i];
+ if(recvdispls[i] != (recvdispls[i-1] + (recvcounts[i-1]*rcvtypelen)))
+ recvcontinuous = 0;
+ lrecvcounts[i]= rcvtypelen * recvcounts[i];
+ }
+ recv_size = rcvtypelen * totalrecvcount;
+ TRACE_ERR("Pack receive rcv_contig %zu, recvok %zd, totalrecvcount %zu, recvcontinuous %zu, rcvtypelen %zu, recv_size %zu\n",
+ (size_t)rcv_contig, (size_t)recvok, (size_t)totalrecvcount, (size_t)recvcontinuous,(size_t)rcvtypelen, (size_t)recv_size);
+ rcv_noncontig_buff = MPIU_Malloc(recv_size);
+ rbuf = rcv_noncontig_buff;
+ if(rcv_noncontig_buff == NULL)
+ {
+ MPID_Abort(NULL, MPI_ERR_NO_SPACE, 1,
+ "Fatal: Cannot allocate pack buffer");
+ }
+ /* need to copy it now if it's used for the send buffer and then do not do in place */
+ if(inplace)
+ {
+ inplace = 0;
+ stype = PAMI_TYPE_UNSIGNED_CHAR;
+ size_t totalsendcount = recvcounts[0];
+ sendcontinuous = recvdispls[0] == 0? 1 : 0 ;
+ int i;
+ psenddispls = lsenddispls = MPIU_Malloc(size*sizeof(int));
+ psendcounts = lsendcounts = MPIU_Malloc(size*sizeof(int));
+ lsenddispls[0]= 0;
+ lsendcounts[0]= rcvtypelen * recvcounts[0];
+ for(i=1; i<size; ++i)
+ {
+ lsenddispls[i]= rcvtypelen * totalsendcount;
+ totalsendcount += recvcounts[i];
+ if(recvdispls[i] != (recvdispls[i-1] + (recvcounts[i-1]*rcvtypelen)))
+ sendcontinuous = 0;
+ lsendcounts[i]= rcvtypelen * recvcounts[i];
+ }
+ send_size = rcvtypelen * totalsendcount;
+ TRACE_ERR("Pack MPI_IN_PLACE receive sndv_contig %zu, sendok %zd, totalsendcount %zu, sendcontinuous %zu, rcvtypelen %zu, send_size %zu\n",
+ (size_t)snd_contig, (size_t)sendok, (size_t)totalsendcount, (size_t)sendcontinuous, (size_t) rcvtypelen, (size_t)send_size);
+ snd_noncontig_buff = MPIU_Malloc(send_size);
+ sbuf = snd_noncontig_buff;
+ if(snd_noncontig_buff == NULL)
+ {
+ MPID_Abort(NULL, MPI_ERR_NO_SPACE, 1,
+ "Fatal: Cannot allocate pack buffer");
+ }
+ if(sendcontinuous)
+ {
+ MPIR_Localcopy(recvbuf, totalsendcount, recvtype,
+ snd_noncontig_buff, send_size,MPI_CHAR);
+ }
+ else
+ {
+ size_t extent;
+ MPID_Datatype_get_extent_macro(recvtype,extent);
+ for(i=0; i<size; ++i)
+ {
+ char* scbuf = (char*)recvbuf + recvdispls[i]*extent;
+ char* rcbuf = (char*)snd_noncontig_buff + psenddispls[i];
+ MPIR_Localcopy(scbuf, recvcounts[i], recvtype,
+ rcbuf, psendcounts[i], MPI_CHAR);
+ TRACE_ERR("Pack send src extent %zu, displ[%zu]=%zu, count[%zu]=%zu buf[%zu]=%u\n",
+ (size_t)extent, (size_t)i,(size_t)recvdispls[i],(size_t)i,(size_t)recvcounts[i],(size_t)recvdispls[i], *(int*)scbuf);
+ TRACE_ERR("Pack send dest extent %zu, displ[%zu]=%zu, count[%zu]=%zu buf[%zu]=%u\n",
+ (size_t)extent, (size_t)i,(size_t)psenddispls[i],(size_t)i,(size_t)psendcounts[i],(size_t)psenddispls[i], *(int*)rcbuf);
+ }
+ }
+ }
+ }
+
+
pami_xfer_t alltoallv;
pami_algorithm_t my_alltoallv;
const pami_metadata_t *my_md = (pami_metadata_t *)NULL;
@@ -106,27 +254,26 @@ int MPIDO_Alltoallv(const void *sendbuf,
alltoallv.cb_done = cb_alltoallv;
alltoallv.cookie = (void *)&active;
/* We won't bother with alltoallv since MPI is always going to be ints. */
- if(sendbuf == MPI_IN_PLACE)
+ if(inplace)
{
if(unlikely(verbose))
fprintf(stderr,"alltoallv MPI_IN_PLACE buffering\n");
alltoallv.cmd.xfer_alltoallv_int.stype = rtype;
- alltoallv.cmd.xfer_alltoallv_int.sdispls = (int *) recvdispls;
- alltoallv.cmd.xfer_alltoallv_int.stypecounts = (int *) recvcounts;
+ alltoallv.cmd.xfer_alltoallv_int.sdispls = (int *) precvdispls;
+ alltoallv.cmd.xfer_alltoallv_int.stypecounts = (int *) precvcounts;
alltoallv.cmd.xfer_alltoallv_int.sndbuf = PAMI_IN_PLACE;
}
else
{
- MPIDI_Datatype_get_info(1, sendtype, snd_contig, sndtypelen, sdt, sdt_true_lb);
alltoallv.cmd.xfer_alltoallv_int.stype = stype;
- alltoallv.cmd.xfer_alltoallv_int.sdispls = (int *) senddispls;
- alltoallv.cmd.xfer_alltoallv_int.stypecounts = (int *) sendcounts;
- alltoallv.cmd.xfer_alltoallv_int.sndbuf = (char *)sendbuf+sdt_true_lb;
+ alltoallv.cmd.xfer_alltoallv_int.sdispls = (int *) psenddispls;
+ alltoallv.cmd.xfer_alltoallv_int.stypecounts = (int *) psendcounts;
+ alltoallv.cmd.xfer_alltoallv_int.sndbuf = sbuf;
}
- alltoallv.cmd.xfer_alltoallv_int.rcvbuf = (char *)recvbuf+rdt_true_lb;
+ alltoallv.cmd.xfer_alltoallv_int.rcvbuf = rbuf;
- alltoallv.cmd.xfer_alltoallv_int.rdispls = (int *) recvdispls;
- alltoallv.cmd.xfer_alltoallv_int.rtypecounts = (int *) recvcounts;
+ alltoallv.cmd.xfer_alltoallv_int.rdispls = (int *) precvdispls;
+ alltoallv.cmd.xfer_alltoallv_int.rtypecounts = (int *) precvcounts;
alltoallv.cmd.xfer_alltoallv_int.rtype = rtype;
if(unlikely(queryreq == MPID_COLL_ALWAYS_QUERY ||
@@ -205,6 +352,37 @@ int MPIDO_Alltoallv(const void *sendbuf,
TRACE_ERR("%d waiting on active %d\n", rank, active);
MPID_PROGRESS_WAIT_WHILE(active);
+ if(!rcv_contig || (recvok != PAMI_SUCCESS))
+ {
+ if(recvcontinuous)
+ {
+ MPIR_Localcopy(rcv_noncontig_buff, recv_size,MPI_CHAR,
+ recvbuf, totalrecvcount, recvtype);
+ }
+ else
+ {
+ size_t extent;
+ int i;
+ MPID_Datatype_get_extent_macro(recvtype,extent);
+ for(i=0; i<size; ++i)
+ {
+ char* scbuf = (char*)rcv_noncontig_buff+ precvdispls[i];
+ char* rcbuf = (char*)recvbuf + recvdispls[i]*extent;
+ MPIR_Localcopy(scbuf, precvcounts[i], MPI_CHAR,
+ rcbuf, recvcounts[i], recvtype);
+ TRACE_ERR("Pack recv src extent %zu, displ[%zu]=%zu, count[%zu]=%zu buf[%zu]=%u\n",
+ (size_t)extent, (size_t)i,(size_t)precvdispls[i],(size_t)i,(size_t)precvcounts[i],(size_t)precvdispls[i], *(int*)scbuf);
+ TRACE_ERR("Pack recv dest extent %zu, displ[%zu]=%zu, count[%zu]=%zu buf[%zu]=%u\n",
+ (size_t)extent, (size_t)i,(size_t)recvdispls[i],(size_t)i,(size_t)recvcounts[i],(size_t)recvdispls[i], *(int*)rcbuf);
+ }
+ }
+ MPIU_Free(rcv_noncontig_buff);
+ }
+ if(!snd_contig || (sendok != PAMI_SUCCESS)) MPIU_Free(snd_noncontig_buff);
+ if(lrecvdispls) MPIU_Free(lrecvdispls);
+ if(lsenddispls) MPIU_Free(lsenddispls);
+ if(lrecvcounts) MPIU_Free(lrecvcounts);
+ if(lsendcounts) MPIU_Free(lsendcounts);
TRACE_ERR("Leaving alltoallv\n");
http://git.mpich.org/mpich.git/commitdiff/c60642ccede4a913d2b025fd6f65c340f…
commit c60642ccede4a913d2b025fd6f65c340fe5a8f5f
Author: Bob Cernohous <bobc(a)us.ibm.com>
Date: Wed Mar 6 15:41:26 2013 -0600
BGQ must create geometries with (existing) tasklists
(ibm) Issue 7967
(ibm) 6b7ba8eb718d8323c8dd638c27cca6a05baa202b
Signed-off-by: sssharka <sssharka(a)us.ibm.com>
diff --git a/src/mpid/pamid/include/mpidi_macros.h b/src/mpid/pamid/include/mpidi_macros.h
index 14d0195..144b0b6 100644
--- a/src/mpid/pamid/include/mpidi_macros.h
+++ b/src/mpid/pamid/include/mpidi_macros.h
@@ -114,7 +114,14 @@ _dt_contig_out, _data_sz_out, _dt_ptr, _dt_true_lb) \
vcr[index]->taskid; \
})
-
+#ifdef __BGQ__
+/* BGQ just shares the MPICH vcr/tasklist.
+ This relies on the VCR being a simple task list which is asserted
+ in static_assertions() in mpid_init.c */
+#define MPID_VCR_GET_LPIDS(comm, taskids) taskids = &((*comm->vcr)->taskid);
+#define MPID_VCR_FREE_LPIDS(taskids)
+#else
+/* non-BGQ mallocs and copies the MPICH vcr/tasklist */
#define MPID_VCR_GET_LPIDS(comm, taskids) \
({ \
int i; \
@@ -123,7 +130,9 @@ _dt_contig_out, _data_sz_out, _dt_ptr, _dt_true_lb) \
for(i=0; i<comm->local_size; i++) \
taskids[i] = comm->vcr[i]->taskid; \
})
+#define MPID_VCR_FREE_LPIDS(taskids) MPIU_Free(taskids)
+#endif
#define MPID_GPID_Get(comm_ptr, rank, gpid) \
({ \
diff --git a/src/mpid/pamid/src/comm/mpid_comm.c b/src/mpid/pamid/src/comm/mpid_comm.c
index 8ee9532..a8be80c 100644
--- a/src/mpid/pamid/src/comm/mpid_comm.c
+++ b/src/mpid/pamid/src/comm/mpid_comm.c
@@ -245,13 +245,13 @@ void MPIDI_Coll_comm_create(MPID_Comm *comm)
comm->mpid.tasks = NULL;
for(i=1;i<comm->local_size;i++)
{
- /* only if sequential tasks should we use a (single) range.
- Multi or reordered ranges are inefficient */
- if(MPID_VCR_GET_LPID(comm->vcr, i) != (MPID_VCR_GET_LPID(comm->vcr, i-1) + 1)) {
- /* not sequential, use tasklist */
- MPID_VCR_GET_LPIDS(comm, comm->mpid.tasks);
- break;
- }
+ /* only if sequential tasks should we use a (single) range.
+ Multi or reordered ranges are inefficient */
+ if(MPID_VCR_GET_LPID(comm->vcr, i) != (MPID_VCR_GET_LPID(comm->vcr, i-1) + 1)) {
+ /* not sequential, use tasklist */
+ MPID_VCR_GET_LPIDS(comm, comm->mpid.tasks);
+ break;
+ }
}
/* Should we use a range? (no task list set) */
if(comm->mpid.tasks == NULL)
@@ -421,7 +421,7 @@ void MPIDI_Coll_comm_destroy(MPID_Comm *comm)
TRACE_ERR("Waiting for geom destroy to finish\n");
MPID_PROGRESS_WAIT_WHILE(geom_destroy);
- MPIU_Free(comm->mpid.tasks);
+ MPID_VCR_FREE_LPIDS(comm->mpid.tasks);
/* TRACE_ERR("Freeing geometry ranges\n");
MPIU_TestFree(&comm->mpid.tasks_descriptor.ranges);
*/
diff --git a/src/mpid/pamid/src/mpid_init.c b/src/mpid/pamid/src/mpid_init.c
index 12983fc..7e7d00c 100644
--- a/src/mpid/pamid/src/mpid_init.c
+++ b/src/mpid/pamid/src/mpid_init.c
@@ -1374,6 +1374,7 @@ int MPIDI_Banner(char * bufPtr) {
sprintf(bufPtr, "%s %s %s %s ", type, ver_buf, msgBuf, ASC_time);
} else {
sprintf(bufPtr, "%s %s %s ", type, msgBuf, ASC_time);
+
}
MPIU_Free(tmx);
@@ -1388,6 +1389,11 @@ static_assertions()
MPID_assert_static(sizeof(void*) == sizeof(size_t));
MPID_assert_static(sizeof(uintptr_t) == sizeof(size_t));
#ifdef __BGQ__
+ /* MPID_VCR_GET_LPIDS relies on the VCR being a simple task list */
+ MPID_VCR vcr=NULL;
+ MPID_assert_static(sizeof(*vcr) == sizeof(pami_task_t));/* VCR is a simple task list */
+ MPID_assert_static(sizeof(vcr->taskid) == sizeof(*vcr));/* VCR is a simple task list */
+
MPID_assert_static(sizeof(MPIDI_MsgInfo) == 16);
MPID_assert_static(sizeof(uint64_t) == sizeof(size_t));
#endif
http://git.mpich.org/mpich.git/commitdiff/f29783c21fd7c5ea74be0ca3b0a920f48…
commit f29783c21fd7c5ea74be0ca3b0a920f48b92c730
Author: Bob Cernohous <bobc(a)us.ibm.com>
Date: Thu Mar 21 11:58:55 2013 -0500
Remove ticket #595 circumvention
(ibm) Trac #659
(ibm) 9d36aed8f988859eba1a284292f0a1a6fc75d01d
Signed-off-by: sssharka <sssharka(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/comm/mpid_selectcolls.c b/src/mpid/pamid/src/comm/mpid_selectcolls.c
index cd30053..571eb68 100644
--- a/src/mpid/pamid/src/comm/mpid_selectcolls.c
+++ b/src/mpid/pamid/src/comm/mpid_selectcolls.c
@@ -370,15 +370,6 @@ void MPIDI_Comm_coll_envvars(MPID_Comm *comm)
{ /* In addition to glue protocols, check for other PAMI protocols and check for PE now */
char* names[] = {"PAMID_COLLECTIVE_SCATTERV", NULL};
MPIDI_Check_protocols(names, comm, "scatterv", PAMI_XFER_SCATTERV_INT);
-
- /* Use MPICH on large communicators (Issue 7516 and ticket 595)*/
- if((comm->mpid.user_selected_type[PAMI_XFER_SCATTERV_INT] ==
- MPID_COLL_NOSELECTION) /* no env var selected */
- && (comm->local_size > (16*1024))) /* and > 16k ranks */
- {
- comm->mpid.user_selected_type[PAMI_XFER_SCATTERV_INT] = MPID_COLL_USE_MPICH;
- comm->mpid.user_selected[PAMI_XFER_SCATTERV_INT] = 0;
- }
}
TRACE_ERR("Checking scatter\n");
http://git.mpich.org/mpich.git/commitdiff/ef90f1b9309ab8ffc67658b5a4cbf81f3…
commit ef90f1b9309ab8ffc67658b5a4cbf81f3e2a9468
Author: Bob Cernohous <bobc(a)us.ibm.com>
Date: Mon Mar 11 18:17:03 2013 -0500
Update scatter[v] protocol selection
Do not tie scatterv to scatter selection.
(ibm) Issue 9416
(ibm) 4901e679071e489e38ee1a6925da36eab9c3ffac
Signed-off-by: sssharka <sssharka(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/comm/mpid_comm.c b/src/mpid/pamid/src/comm/mpid_comm.c
index 70a25ee..8ee9532 100644
--- a/src/mpid/pamid/src/comm/mpid_comm.c
+++ b/src/mpid/pamid/src/comm/mpid_comm.c
@@ -237,7 +237,7 @@ void MPIDI_Coll_comm_create(MPID_Comm *comm)
if(comm->mpid.geometry != MPIDI_Process.world_geometry)
{
- if(MPIDI_Process.verbose >= MPIDI_VERBOSE_DETAILS_ALL)
+ if(unlikely(MPIDI_Process.verbose >= MPIDI_VERBOSE_DETAILS_0 && comm->rank == 0))
fprintf(stderr,"world geom: %p parent geom: %p\n", MPIDI_Process.world_geometry, comm->mpid.parent);
TRACE_ERR("Creating subgeom\n");
/* Change to this at some point */
diff --git a/src/mpid/pamid/src/comm/mpid_optcolls.c b/src/mpid/pamid/src/comm/mpid_optcolls.c
index 23f63d7..03192f3 100644
--- a/src/mpid/pamid/src/comm/mpid_optcolls.c
+++ b/src/mpid/pamid/src/comm/mpid_optcolls.c
@@ -273,6 +273,128 @@ void MPIDI_Comm_coll_select(MPID_Comm *comm_ptr)
opt_proto = -1;
mustquery = 0;
+ /* Scatter */
+ /* If the user has forced a selection, don't bother setting it here */
+ if(comm_ptr->mpid.user_selected_type[PAMI_XFER_SCATTER] == MPID_COLL_NOSELECTION)
+ {
+ TRACE_ERR("No scatter env var, so setting optimized scatter\n");
+ /* The best scatter seems to be I0:Binomial (at least better than I0:Flat) */
+ /* Loop over the protocols until we find the one we want */
+ for(i = 0; i < comm_ptr->mpid.coll_count[PAMI_XFER_SCATTER][0]; i++)
+ {
+ if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTER][0][i].name, "I0:Binomial:-:MU") == 0)
+ {
+ opt_proto = i;
+ break;
+ }
+ if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTER][0][i].name, "I0:Binomial:SHMEM:MU") == 0)
+ {
+ opt_proto = i;
+ break;
+ }
+ }
+ if(opt_proto == -1) /* check other list */
+ for(i = 0; i < comm_ptr->mpid.coll_count[PAMI_XFER_SCATTER][1]; i++)
+ {
+ if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTER][1][i].name, "I0:Binomial:-:MU") == 0)
+ {
+ opt_proto = i;
+ mustquery = 1;
+ break;
+ }
+ if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTER][1][i].name, "I0:Binomial:SHMEM:MU") == 0)
+ {
+ opt_proto = i;
+ mustquery = 1;
+ break;
+ }
+ }
+ /* Actually, MPICH looks better right now, so use MPICH
+ if(opt_proto != -1)
+ {
+ TRACE_ERR("Memcpy protocol type %d, number %d (%s) to optimized protocol\n",
+ PAMI_XFER_SCATTER, opt_proto,
+ comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTER][mustquery][opt_proto].name);
+ comm_ptr->mpid.opt_protocol[PAMI_XFER_SCATTER][0] =
+ comm_ptr->mpid.coll_algorithm[PAMI_XFER_SCATTER][mustquery][opt_proto];
+ memcpy(&comm_ptr->mpid.opt_protocol_md[PAMI_XFER_SCATTER][0],
+ &comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTER][mustquery][opt_proto],
+ sizeof(pami_metadata_t));
+ comm_ptr->mpid.must_query[PAMI_XFER_SCATTER][0] = mustquery?MPID_COLL_ALWAYS_QUERY:MPID_COLL_NOQUERY;
+ comm_ptr->mpid.user_selected_type[PAMI_XFER_SCATTER] = MPID_COLL_OPTIMIZED;
+ }
+ else
+ */
+ {
+ TRACE_ERR("Scatter reverting to MPICH\n");
+ comm_ptr->mpid.user_selected_type[PAMI_XFER_SCATTER] = MPID_COLL_USE_MPICH;
+ comm_ptr->mpid.opt_protocol[PAMI_XFER_SCATTER][0] = 0;
+ }
+ TRACE_ERR("Done setting optimized scatter\n");
+ }
+ opt_proto = -1;
+ mustquery = 0;
+ /* Scatterv */
+ /* If the user has forced a selection, don't bother setting it here */
+ if(comm_ptr->mpid.user_selected_type[PAMI_XFER_SCATTERV_INT] == MPID_COLL_NOSELECTION)
+ {
+ TRACE_ERR("No scatterv env var, so setting optimized scatterv\n");
+ /* The best scatterv seems to be I0:SoftwareTree: */
+ /* Loop over the protocols until we find the one we want */
+ for(i = 0; i < comm_ptr->mpid.coll_count[PAMI_XFER_SCATTERV_INT][0]; i++)
+ {
+ if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTERV_INT][0][i].name, "I0:SoftwareTree:-:MU") == 0)
+ {
+ opt_proto = i;
+ break;
+ }
+ if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTERV_INT][0][i].name, "I0:SoftwareTree:SHMEM:MU") == 0)
+ {
+ opt_proto = i;
+ break;
+ }
+ }
+ if(opt_proto == -1) /* check other list */
+ for(i = 0; i < comm_ptr->mpid.coll_count[PAMI_XFER_SCATTERV_INT][1]; i++)
+ {
+ if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTERV_INT][1][i].name, "I0:SoftwareTree:-:MU") == 0)
+ {
+ opt_proto = i;
+ mustquery = 1;
+ break;
+ }
+ if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTERV_INT][1][i].name, "I0:SoftwareTree:SHMEM:MU") == 0)
+ {
+ opt_proto = i;
+ mustquery = 1;
+ break;
+ }
+ }
+ if(opt_proto != -1)
+ {
+ TRACE_ERR("Memcpy protocol type %d, number %d (%s) to optimized protocol\n",
+ PAMI_XFER_SCATTERV_INT, opt_proto,
+ comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTERV_INT][mustquery][opt_proto].name);
+ comm_ptr->mpid.opt_protocol[PAMI_XFER_SCATTERV_INT][0] =
+ comm_ptr->mpid.coll_algorithm[PAMI_XFER_SCATTERV_INT][mustquery][opt_proto];
+ memcpy(&comm_ptr->mpid.opt_protocol_md[PAMI_XFER_SCATTERV_INT][0],
+ &comm_ptr->mpid.coll_metadata[PAMI_XFER_SCATTERV_INT][mustquery][opt_proto],
+ sizeof(pami_metadata_t));
+ comm_ptr->mpid.must_query[PAMI_XFER_SCATTERV_INT][0] = mustquery?MPID_COLL_ALWAYS_QUERY:MPID_COLL_NOQUERY;
+ comm_ptr->mpid.user_selected_type[PAMI_XFER_SCATTERV_INT] = MPID_COLL_OPTIMIZED;
+ }
+ else
+ {
+ TRACE_ERR("Scatterv reverting to MPICH\n");
+ comm_ptr->mpid.user_selected_type[PAMI_XFER_SCATTERV_INT] = MPID_COLL_USE_MPICH;
+ comm_ptr->mpid.opt_protocol[PAMI_XFER_SCATTERV_INT][0] = 0;
+ }
+ TRACE_ERR("Done setting optimized scatterv\n");
+ }
+
+
+ opt_proto = -1;
+ mustquery = 0;
/* Alltoall */
/* If the user has forced a selection, don't bother setting it here */
if(comm_ptr->mpid.user_selected_type[PAMI_XFER_ALLTOALL] == MPID_COLL_NOSELECTION)
@@ -859,6 +981,18 @@ void MPIDI_Comm_coll_select(MPID_Comm *comm_ptr)
fprintf(stderr,"Selecting MPICH for allgatherv below %d size comm %p\n", comm_ptr->mpid.cutoff_size[PAMI_XFER_ALLGATHERV_INT][0], comm_ptr);
if(comm_ptr->mpid.user_selected_type[PAMI_XFER_GATHER] == MPID_COLL_USE_MPICH)
fprintf(stderr,"Selecting MPICH for gather comm %p\n", comm_ptr);
+ if(comm_ptr->mpid.user_selected_type[PAMI_XFER_SCATTER] == MPID_COLL_USE_MPICH)
+ fprintf(stderr,"Selecting MPICH for scatter comm %p\n", comm_ptr);
+ else if(comm_ptr->mpid.user_selected_type[PAMI_XFER_SCATTER] == MPID_COLL_OPTIMIZED)
+ fprintf(stderr,"Selecting %s for scatter comm %p\n",
+ comm_ptr->mpid.opt_protocol_md[PAMI_XFER_SCATTER][0].name,
+ comm_ptr);
+ if(comm_ptr->mpid.user_selected_type[PAMI_XFER_SCATTERV_INT] == MPID_COLL_USE_MPICH)
+ fprintf(stderr,"Selecting MPICH for scatterv comm %p\n", comm_ptr);
+ else if(comm_ptr->mpid.user_selected_type[PAMI_XFER_SCATTERV_INT] == MPID_COLL_OPTIMIZED)
+ fprintf(stderr,"Selecting %s for scatterv comm %p\n",
+ comm_ptr->mpid.opt_protocol_md[PAMI_XFER_SCATTERV_INT][0].name,
+ comm_ptr);
if(comm_ptr->mpid.user_selected_type[PAMI_XFER_BROADCAST] == MPID_COLL_OPTIMIZED)
fprintf(stderr,"Selecting %s for opt bcast up to size %d comm %p\n", comm_ptr->mpid.opt_protocol_md[PAMI_XFER_BROADCAST][0].name,
comm_ptr->mpid.cutoff_size[PAMI_XFER_BROADCAST][0], comm_ptr);
http://git.mpich.org/mpich.git/commitdiff/1daeae3155739627d291277c89669f0c6…
commit 1daeae3155739627d291277c89669f0c633c1e5a
Author: Bob Cernohous <bobc(a)us.ibm.com>
Date: Mon Mar 11 17:24:14 2013 -0500
Fix M2M protocol selection
(ibm) Issue 9416
(ibm) 723fb4ce39b5e06ef63cc37231acdaeb6d1c08cf
Signed-off-by: sssharka <sssharka(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/comm/mpid_optcolls.c b/src/mpid/pamid/src/comm/mpid_optcolls.c
index 85bfd45..23f63d7 100644
--- a/src/mpid/pamid/src/comm/mpid_optcolls.c
+++ b/src/mpid/pamid/src/comm/mpid_optcolls.c
@@ -278,10 +278,18 @@ void MPIDI_Comm_coll_select(MPID_Comm *comm_ptr)
if(comm_ptr->mpid.user_selected_type[PAMI_XFER_ALLTOALL] == MPID_COLL_NOSELECTION)
{
TRACE_ERR("No alltoall env var, so setting optimized alltoall\n");
- /* the best alltoall is always I0:M2MComposite:MU:MU, though there are
- * displacement array memory issues today.... */
+ /* The best alltoall is always I0:M2MComposite:MU:MU */
/* Loop over the protocols until we find the one we want */
if(use_threaded_collectives)
+ for(i = 0; i < comm_ptr->mpid.coll_count[PAMI_XFER_ALLTOALL][0]; i++)
+ {
+ if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_ALLTOALL][0][i].name, "I0:M2MComposite:MU:MU") == 0)
+ {
+ opt_proto = i;
+ break;
+ }
+ }
+ if(use_threaded_collectives && (opt_proto == -1)) /* check other list */
for(i = 0; i < comm_ptr->mpid.coll_count[PAMI_XFER_ALLTOALL][1]; i++)
{
if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_ALLTOALL][1][i].name, "I0:M2MComposite:MU:MU") == 0)
@@ -290,7 +298,7 @@ void MPIDI_Comm_coll_select(MPID_Comm *comm_ptr)
mustquery = 1;
break;
}
- }
+ }
if(opt_proto != -1)
{
TRACE_ERR("Memcpy protocol type %d, number %d (%s) to optimized protocol\n",
@@ -320,10 +328,18 @@ void MPIDI_Comm_coll_select(MPID_Comm *comm_ptr)
if(comm_ptr->mpid.user_selected_type[PAMI_XFER_ALLTOALLV_INT] == MPID_COLL_NOSELECTION)
{
TRACE_ERR("No alltoallv env var, so setting optimized alltoallv\n");
- /* the best alltoallv is always I0:M2MComposite:MU:MU, though there are
- * displacement array memory issues today.... */
+ /* The best alltoall is always I0:M2MComposite:MU:MU */
/* Loop over the protocols until we find the one we want */
if(use_threaded_collectives)
+ for(i = 0; i < comm_ptr->mpid.coll_count[PAMI_XFER_ALLTOALLV_INT][0]; i++)
+ {
+ if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_ALLTOALLV_INT][0][i].name, "I0:M2MComposite:MU:MU") == 0)
+ {
+ opt_proto = i;
+ break;
+ }
+ }
+ if(use_threaded_collectives && (opt_proto == -1)) /* check other list */
for(i = 0; i <comm_ptr->mpid.coll_count[PAMI_XFER_ALLTOALLV_INT][1]; i++)
{
if(strcasecmp(comm_ptr->mpid.coll_metadata[PAMI_XFER_ALLTOALLV_INT][1][i].name, "I0:M2MComposite:MU:MU") == 0)
http://git.mpich.org/mpich.git/commitdiff/a45954b594b5a5ba4a54acdcb8fda7c2e…
commit a45954b594b5a5ba4a54acdcb8fda7c2e819a40f
Author: Bob Cernohous <bobc(a)us.ibm.com>
Date: Mon Mar 11 12:16:38 2013 -0500
Need to read some environment variables before creating the client
(ibm) 26edfa903df4881e1ab0190bc1859f5dc30e868e
Signed-off-by: sssharka <sssharka(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/mpid_init.c b/src/mpid/pamid/src/mpid_init.c
index 2f5394f..12983fc 100644
--- a/src/mpid/pamid/src/mpid_init.c
+++ b/src/mpid/pamid/src/mpid_init.c
@@ -294,6 +294,14 @@ MPIDI_PAMI_client_init(int* rank, int* size, int* mpidi_dynamic_tasking, char **
pami_result_t rc = PAMI_ERROR;
pami_configuration_t config[2];
+
+ /* Set the status for memory optimized collectives */
+ {
+ char* env = getenv("PAMID_COLLECTIVES_MEMORY_OPTIMIZED");
+ if (env != NULL)
+ MPIDI_atoi(env,&MPIDI_Process.optimized.memory);
+ }
+
config[0].name = PAMI_CLIENT_NONCONTIG;
if(MPIDI_Process.optimized.memory & MPID_OPT_LVL_NONCONTIG)
config[0].value.intval = 0; // Disable non-contig, pamid doesn't use pami for non-contig data collectives so save memory
http://git.mpich.org/mpich.git/commitdiff/dcf62e917496501a74fe6cac918c89673…
commit dcf62e917496501a74fe6cac918c8967316056dc
Author: Bob Cernohous <bobc(a)us.ibm.com>
Date: Thu Mar 7 14:21:02 2013 -0600
Use MPIDO and not MPIR internally in PAMID
(ibm) 88338876fc003a9fe936298097b42df1e54ead32
Signed-off-by: sssharka <sssharka(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/coll/gather/mpido_gather.c b/src/mpid/pamid/src/coll/gather/mpido_gather.c
index 1047a44..8829c2b 100644
--- a/src/mpid/pamid/src/coll/gather/mpido_gather.c
+++ b/src/mpid/pamid/src/coll/gather/mpido_gather.c
@@ -102,8 +102,8 @@ int MPIDO_Gather_reduce(void * sendbuf,
memset(tempbuf, 0, sbytes * size * sizeof(char));
memcpy(tempbuf+(rank*sbytes), sendbuf, sbytes);
}
- /* #warning TODO need an optimal reduce */
- rc = MPIR_Reduce(MPI_IN_PLACE,
+ /* Switch to comm->coll_fns->fn() */
+ rc = MPIDO_Reduce(MPI_IN_PLACE,
tempbuf,
(sbytes * size)/4,
MPI_INT,
diff --git a/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c b/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c
index 00946a3..bc47e41 100644
--- a/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c
+++ b/src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c
@@ -175,7 +175,8 @@ int MPIDO_Scatterv_alltoallv(void * sendbuf,
rcounts[root] = rbytes;
- rc = MPIR_Alltoallv(sbuf,
+ /* Switch to comm->coll_fns->fn() */
+ rc = MPIDO_Alltoallv(sbuf,
scounts,
sdispls,
sendtype,
diff --git a/src/mpid/pamid/src/comm/mpid_comm.c b/src/mpid/pamid/src/comm/mpid_comm.c
index d3b03c9..70a25ee 100644
--- a/src/mpid/pamid/src/comm/mpid_comm.c
+++ b/src/mpid/pamid/src/comm/mpid_comm.c
@@ -353,7 +353,8 @@ void MPIDI_Coll_comm_create(MPID_Comm *comm)
MPIDI_Comm_coll_select(comm);
TRACE_ERR("mpir barrier\n");
int mpierrno;
- MPIR_Barrier(comm, &mpierrno);
+ /* Switch to comm->coll_fns->fn() */
+ MPIDO_Barrier(comm, &mpierrno);
TRACE_ERR("MPIDI_Coll_comm_create exit\n");
http://git.mpich.org/mpich.git/commitdiff/77999d6f565e65e7f1c5ee9f00dda99b2…
commit 77999d6f565e65e7f1c5ee9f00dda99b28186f0d
Author: Bob Cernohous <bobc(a)us.ibm.com>
Date: Mon Mar 18 14:51:05 2013 -0500
Specify PAMID_COLLECTIVES_MEMORY_OPTIMIZED levels
(ibm) CPS 95PHUZ
(ibm) 1b4e2da6d5fb0990d530be6f896f539dc7571620
Signed-off-by: sssharka <sssharka(a)us.ibm.com>
diff --git a/src/mpid/pamid/include/mpidi_constants.h b/src/mpid/pamid/include/mpidi_constants.h
index a16292e..42d4bd8 100644
--- a/src/mpid/pamid/include/mpidi_constants.h
+++ b/src/mpid/pamid/include/mpidi_constants.h
@@ -117,4 +117,10 @@ enum
MPID_AUTO_SELECT_COLLS_ALL = 0xFFFFFFFF,
};
+enum /* PAMID_COLLECTIVES_MEMORY_OPTIMIZED levels */
+
+{
+ MPID_OPT_LVL_IRREG = 1, /**< Do not optimize irregular communicators */
+ MPID_OPT_LVL_NONCONTIG = 2, /**< Disable some non-contig collectives */
+};
#endif
diff --git a/src/mpid/pamid/include/mpidi_datatypes.h b/src/mpid/pamid/include/mpidi_datatypes.h
index 42f0da0..7e33c76 100644
--- a/src/mpid/pamid/include/mpidi_datatypes.h
+++ b/src/mpid/pamid/include/mpidi_datatypes.h
@@ -113,7 +113,7 @@ typedef struct
unsigned subcomms; /**< Enable hardware optimized subcomm's */
unsigned select_colls; /**< Enable collective selection */
unsigned auto_select_colls; /**< Enable automatic collective selection */
- unsigned memory; /**< Enable memory optimized subcomm's */
+ unsigned memory; /**< Enable memory optimized subcomm's - See MPID_OPT_LVL_xxxx */
unsigned num_requests; /**< Number of requests between flow control barriers */
}
optimized;
diff --git a/src/mpid/pamid/src/comm/mpid_comm.c b/src/mpid/pamid/src/comm/mpid_comm.c
index 3201595..d3b03c9 100644
--- a/src/mpid/pamid/src/comm/mpid_comm.c
+++ b/src/mpid/pamid/src/comm/mpid_comm.c
@@ -266,7 +266,11 @@ void MPIDI_Coll_comm_create(MPID_Comm *comm)
pami_configuration_t config[3];
config[0].name = PAMI_GEOMETRY_NONCONTIG;
- config[0].value.intval = 0; // Disable non-contig, pamid doesn't use pami for non-contig data collectives
+ if(MPIDI_Process.optimized.memory & MPID_OPT_LVL_NONCONTIG)
+ config[0].value.intval = 0; // Disable non-contig, pamid doesn't use pami for non-contig data collectives
+ else
+ config[0].value.intval = 1; // Enable non-contig even though pamid doesn't use pami for non-contig data collectives,
+ // we still possibly want those collectives for other reasons.
size_t numconfigs = 1;
if(MPIDI_Process.optimized.subcomms)
{
@@ -281,7 +285,7 @@ void MPIDI_Coll_comm_create(MPID_Comm *comm)
++numconfigs;
}
- if(MPIDI_Process.optimized.memory && (comm->local_size & (comm->local_size-1)))
+ if((MPIDI_Process.optimized.memory & MPID_OPT_LVL_IRREG) && (comm->local_size & (comm->local_size-1)))
{
/* Don't create irregular geometries. Fallback to MPICH only collectives */
geom_init = 0;
diff --git a/src/mpid/pamid/src/mpid_init.c b/src/mpid/pamid/src/mpid_init.c
index 4f85bd6..2f5394f 100644
--- a/src/mpid/pamid/src/mpid_init.c
+++ b/src/mpid/pamid/src/mpid_init.c
@@ -295,7 +295,11 @@ MPIDI_PAMI_client_init(int* rank, int* size, int* mpidi_dynamic_tasking, char **
pami_configuration_t config[2];
config[0].name = PAMI_CLIENT_NONCONTIG;
- config[0].value.intval = 0; // Disable non-contig, pamid doesn't use pami for non-contig data
+ if(MPIDI_Process.optimized.memory & MPID_OPT_LVL_NONCONTIG)
+ config[0].value.intval = 0; // Disable non-contig, pamid doesn't use pami for non-contig data collectives so save memory
+ else
+ config[0].value.intval = 1; // Enable non-contig even though pamid doesn't use pami for non-contig data collectives,
+ // we still possibly want those collectives for other reasons.
size_t numconfigs = 1;
if(MPIDI_Process.optimized.memory)
{
diff --git a/src/mpid/pamid/src/mpidi_env.c b/src/mpid/pamid/src/mpidi_env.c
index f08acb7..f32fccd 100644
--- a/src/mpid/pamid/src/mpidi_env.c
+++ b/src/mpid/pamid/src/mpidi_env.c
@@ -110,8 +110,9 @@
* optimized to reduce memory usage. This may disable some PAMI collectives.
* Possible values:
* - 0 - Collectives are not memory optimized.
- * - n - Collectives are memory optimized. 'n' may represent different
- * levels of optimization.
+ * - n - Collectives are memory optimized. Levels are bitwise values :
+ * MPID_OPT_LVL_IRREG = 1, Do not optimize irregular communicators
+ * MPID_OPT_LVL_NONCONTIG = 2, Disable some non-contig collectives
*
* PAMID_OPTIMIZED_SUBCOMMS - Use PAMI 'optimized' collectives. Defaullt is 1.
* - 0 - Some optimized protocols may be disabled.
-----------------------------------------------------------------------
Summary of changes:
src/mpid/pamid/include/mpidi_constants.h | 6 +
src/mpid/pamid/include/mpidi_datatypes.h | 2 +-
src/mpid/pamid/include/mpidi_macros.h | 11 +-
.../pamid/src/coll/alltoallv/mpido_alltoallv.c | 222 ++++++++++++++++++--
src/mpid/pamid/src/coll/gather/mpido_gather.c | 4 +-
src/mpid/pamid/src/coll/scatterv/mpido_scatterv.c | 3 +-
src/mpid/pamid/src/comm/mpid_comm.c | 29 ++-
src/mpid/pamid/src/comm/mpid_optcolls.c | 160 ++++++++++++++-
src/mpid/pamid/src/comm/mpid_selectcolls.c | 9 -
src/mpid/pamid/src/mpid_init.c | 31 +++-
src/mpid/pamid/src/mpidi_env.c | 5 +-
src/mpid/pamid/src/mpidi_util.c | 11 +-
12 files changed, 427 insertions(+), 66 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-168-gc478a4f
by noreply@mpich.org 08 May '13
by noreply@mpich.org 08 May '13
08 May '13
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 c478a4fe8d4cad97a2412c13b02d445181f78a56 (commit)
via 50887ce11493c5aa872e3257b2e406174b59a12b (commit)
via 5d6aefa53ac174f8e1c4e3fbbd5fdf0225f48108 (commit)
from 5c4f5de7563db2bee452a102614c53b8ed9583ed (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/c478a4fe8d4cad97a2412c13b02d44518…
commit c478a4fe8d4cad97a2412c13b02d445181f78a56
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Thu May 2 22:46:41 2013 -0500
Flag push/pop cleanup.
PAC_VAR_PUSHFLAG and PAC_VAR_POPFLAG are duplicates of PAC_PUSH_FLAG
and PAC_POP_FLAG. Also, unlike the PAC_VAR_ macro variants, the flag
is not updated by the PAC_PUSH/PAC_POP macros, so the older value is
retained.
Also cleaned up macros that do additional logic to replace empty
action-if-true/action-if-false statements with ":". This is not
required. The macros work fine without this replacement.
Reviewed by gropp.
diff --git a/confdb/aclocal_runlog.m4 b/confdb/aclocal_runlog.m4
index 2fdbfa5..e7b5b32 100644
--- a/confdb/aclocal_runlog.m4
+++ b/confdb/aclocal_runlog.m4
@@ -44,82 +44,6 @@ PAC_COMMAND_IFELSE([$1 > $pac_TESTLOG],[
rm -f $pac_TESTLOG
])
-
-dnl PAC_VAR_PUSHVAL(VARNAME, [LastSavedValue]))
-dnl
-dnl Save the content of the shell variable, VARNAME, onto a stack.
-dnl The saved value of VARNAME is restorable with respect to the nesting
-dnl of the macro.
-dnl
-dnl The Last saved value of VARNAME on the stack is stored in shell variable
-dnl pac_LastSavedValueOf_$VARNAME if the 2nd argument is NOT supplied.
-dnl If the 2nd argument is present, the last saved value will be stored
-dnl in the 2nd argument instead.
-dnl
-dnl The First saved value of VARNAME on the stack is stored in shell variable
-dnl dnl pac_FirstSavedValueOf_$VARNAME.
-dnl
-AC_DEFUN([PAC_VAR_PUSHVAL],[
-# START of PUSHVAL
-dnl define local m4-name pac_stk_level.
-AS_VAR_PUSHDEF([pac_stk_level], [pac_stk_$1_level])
-AS_VAR_SET_IF([pac_stk_level],[
- dnl autoconf < 2.64 does not have AS_VAR_ARITH, so use expr instead.
- AS_VAR_SET([pac_stk_level], [`expr $pac_stk_level + 1`])
-],[
- AS_VAR_SET([pac_stk_level], [0])
-])
-dnl AS_ECHO_N(["PUSHVAL: pac_stk_level = $pac_stk_level, "])
-dnl Save the content of VARNAME, i.e. $VARNAME, onto the stack.
-AS_VAR_SET([pac_stk_$1_$pac_stk_level],[$$1])
-AS_VAR_IF([pac_stk_level], [0], [
- dnl Save the 1st pushed value of VARNAME as pac_FirstSavedValueOf_$VARNAME
- AS_VAR_COPY([pac_FirstSavedValueOf_$1],[pac_stk_$1_$pac_stk_level])
-])
-ifelse([$2],[],[
- dnl Save the last pushed value of VARNAME as pac_LastSavedValueOf_$VARNAME
- AS_VAR_COPY([pac_LastSavedValueOf_$1],[pac_stk_$1_$pac_stk_level])
- dnl AS_ECHO(["pac_LastSavedValueOf_$1 = $pac_LastSavedValueOf_$1"])
-],[
- dnl Save the last pushed value of VARNAME as $2
- AS_VAR_COPY([$2],[pac_stk_$1_$pac_stk_level])
- dnl AS_ECHO(["$2 = $$2"])
-])
-AS_VAR_POPDEF([pac_stk_level])
-# END of PUSHVAL
-])
-dnl
-dnl
-dnl
-dnl PAC_VAR_POPVAL(VARNAME)
-dnl
-dnl Restore variable, VARNAME, from the stack.
-dnl This macro is safe with respect to the nesting.
-dnl Some minimal checking of nesting balance of PAC_VAR_PUSH[POP]VAL()
-dnl is done here.
-dnl
-AC_DEFUN([PAC_VAR_POPVAL],[
-# START of POPVAL
-dnl define local m4-name pac_stk_level.
-AS_VAR_PUSHDEF([pac_stk_level], [pac_stk_$1_level])
-AS_VAR_SET_IF([pac_stk_level],[
- AS_VAR_IF([pac_stk_level],[-1],[
- AC_MSG_WARN(["Imbalance of PUSHVAL/POPVAL of $1"])
- ],[
- dnl AS_ECHO_N(["POPVAL: pac_stk_level = $pac_stk_level, "])
- AS_VAR_COPY([$1],[pac_stk_$1_$pac_stk_level])
- dnl AS_ECHO(["popped_val = $$1"])
- dnl autoconf < 2.64 does not have AS_VAR_ARITH, so use expr instead.
- AS_VAR_SET([pac_stk_level], [`expr $pac_stk_level - 1`])
- ])
-],[
- AC_MSG_WARN(["Uninitialized PUSHVAL/POPVAL of $1"])
-])
-AS_VAR_POPDEF([pac_stk_level])
-# END of POPVAL
-])
-dnl
-dnl
dnl
dnl PAC_COMPILE_IFELSE_LOG is a wrapper around AC_COMPILE_IFELSE with the
dnl output of ac_compile to a specified logfile instead of AS_MESSAGE_LOG_FD
@@ -143,20 +67,12 @@ dnl
dnl Replace ">&AS_MESSAGE_LOG_FD" by "> FILE 2>&1" in ac_compile.
dnl Save a copy of ac_compile on a stack
dnl which is safe through nested invocations of this macro.
-PAC_VAR_PUSHVAL([ac_compile])
-dnl Modify ac_compile based on the unmodified ac_compile.
-ac_compile="`echo $pac_FirstSavedValueOf_ac_compile | sed -e 's|>.*$|> $1 2>\&1|g'`"
-AC_COMPILE_IFELSE([$2],[
- ifelse([$3],[],[:],[$3])
-],[
- ifelse([$4],[],[:],[$4])
+PAC_PUSH_FLAG([ac_compile])
+ac_compile="`echo $ac_compile | sed -e 's|>.*$|> $1 2>\&1|g'`"
+AC_COMPILE_IFELSE([$2],[$3],[$4])
+PAC_POP_FLAG([ac_compile])
])
-dnl Restore the original ac_compile from the stack.
-PAC_VAR_POPVAL([ac_compile])
-])
-dnl
-dnl
-dnl
+
dnl PAC_LINK_IFELSE_LOG is a wrapper around AC_LINK_IFELSE with the
dnl output of ac_link to a specified logfile instead of AS_MESSAGE_LOG_FD
dnl
@@ -179,20 +95,12 @@ dnl
dnl Replace ">&AS_MESSAGE_LOG_FD" by "> FILE 2>&1" in ac_link.
dnl Save a copy of ac_link on a stack
dnl which is safe through nested invocations of this macro.
-PAC_VAR_PUSHVAL([ac_link])
-dnl Modify ac_link based on the unmodified ac_link.
-ac_link="`echo $pac_FirstSavedValueOf_ac_link | sed -e 's|>.*$|> $1 2>\&1|g'`"
-dnl
-AC_LINK_IFELSE([$2],[
- ifelse([$3],[],[:],[$3])
-],[
- ifelse([$4],[],[:],[$4])
-])
-dnl Restore the original ac_link from the stack.
-PAC_VAR_POPVAL([ac_link])
+PAC_PUSH_FLAG([ac_link])
+ac_link="`echo $ac_link | sed -e 's|>.*$|> $1 2>\&1|g'`"
+AC_LINK_IFELSE([$2],[$3],[$4])
+PAC_POP_FLAG([ac_link])
])
-dnl
-dnl
+
dnl
dnl PAC_COMPLINK_IFELSE (input1, input2, [action-if-true], [action-if-false])
dnl
@@ -205,16 +113,10 @@ dnl
AC_DEFUN([PAC_COMPLINK_IFELSE],[
AC_COMPILE_IFELSE([$1],[
PAC_RUNLOG([mv conftest.$OBJEXT pac_conftest.$OBJEXT])
- PAC_VAR_PUSHVAL([LIBS])
- LIBS="pac_conftest.$OBJEXT $pac_FirstSavedValueOf_LIBS"
- AC_LINK_IFELSE([$2],[
- ifelse([$3],[],[:],[$3])
- ],[
- ifelse([$4],[],[:],[$4])
- ])
- PAC_VAR_POPVAL([LIBS])
+ PAC_PUSH_FLAG([LIBS])
+ LIBS="pac_conftest.$OBJEXT $LIBS"
+ AC_LINK_IFELSE([$2],[$3],[$4])
+ PAC_POP_FLAG([LIBS])
rm -f pac_conftest.$OBJEXT
-],[
- ifelse([$4],[],[:],[$4])
-])
+],[$4])
])
http://git.mpich.org/mpich.git/commitdiff/50887ce11493c5aa872e3257b2e406174…
commit 50887ce11493c5aa872e3257b2e406174b59a12b
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Thu May 2 22:39:50 2013 -0500
Get rid of PAC_EVAL_IFELSE which is a duplicate of PAC_COMMAND_IFELSE.
Reviewed by gropp.
diff --git a/confdb/aclocal_runlog.m4 b/confdb/aclocal_runlog.m4
index d78c3e6..2fdbfa5 100644
--- a/confdb/aclocal_runlog.m4
+++ b/confdb/aclocal_runlog.m4
@@ -9,6 +9,7 @@ AC_DEFUN([PAC_RUNLOG],[
ac_status=$?
AS_ECHO(["$as_me:$LINENO: \$? = $ac_status"]) >&AS_MESSAGE_LOG_FD
test $ac_status = 0; }])
+
dnl
dnl PAC_COMMAND_IFELSE is written to replace AC_TRY_EVAL with added logging
dnl to config.log, i.e. AC_TRY_EVAL does not log anything to config.log.
@@ -18,8 +19,6 @@ dnl
dnl PAC_COMMAND_IFELSE(COMMMAND,[ACTION-IF-RUN-OK],[ACTION-IF-RUN-FAIL])
dnl
AC_DEFUN([PAC_COMMAND_IFELSE],[
-dnl Should use _AC_DO_TOKENS but use AC_RUN_LOG instead
-dnl because _AC_XX is autoconf's undocumented macro.
AS_IF([PAC_RUNLOG([$1])],[
$2
],[
@@ -30,25 +29,7 @@ AS_IF([PAC_RUNLOG([$1])],[
])
])
])
-dnl
-dnl
-dnl
-AC_DEFUN([PAC_EVAL_IFELSE],[
-dnl Should use _AC_DO_TOKENS but use AC_RUN_LOG instead
-dnl because _AC_XX is autoconf's undocumented macro.
-AS_IF([PAC_RUNLOG([$$1])],[
- $2
-],[
- AS_ECHO(["$as_me: program exited with status $ac_status"]) >&AS_MESSAGE_LOG_FD
- m4_ifvaln([$3],[
- (exit $ac_status)
- $3
- ])
-])
-])
-dnl
-dnl
-dnl
+
AC_DEFUN([PAC_RUNLOG_IFELSE],[
dnl pac_TESTLOG is the internal temporary logfile for this macro.
pac_TESTLOG="pac_test.log"
http://git.mpich.org/mpich.git/commitdiff/5d6aefa53ac174f8e1c4e3fbbd5fdf022…
commit 5d6aefa53ac174f8e1c4e3fbbd5fdf0225f48108
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Thu May 2 22:34:58 2013 -0500
PAS_VAR_COPY cleanup.
We no longer need PAS_VAR_COPY since AS_VAR_COPY is present in newer
autoconf versions.
Reviewed by gropp.
diff --git a/confdb/aclocal_runlog.m4 b/confdb/aclocal_runlog.m4
index 9b85db5..d78c3e6 100644
--- a/confdb/aclocal_runlog.m4
+++ b/confdb/aclocal_runlog.m4
@@ -62,21 +62,8 @@ PAC_COMMAND_IFELSE([$1 > $pac_TESTLOG],[
])
rm -f $pac_TESTLOG
])
-dnl
-dnl
-dnl
-dnl PAS_VAR_COPY - A portable layer that mimics AS_VAR_COPY when it is not
-dnl defined as in older autoconf, e.g. 2.63 and older.
-dnl This macro is absolutely necessary, because AS_VAR_GET in
-dnl some newer autoconf, e.g. 2.64, seems to be totally broken,
-dnl or behave very different from older autoconf, i.e. 2.63.
-dnl
-AC_DEFUN([PAS_VAR_COPY],[
-m4_ifdef([AS_VAR_COPY], [AS_VAR_COPY([$1],[$2])], [$1=AS_VAR_GET([$2])])
-])
-dnl
-dnl
-dnl
+
+
dnl PAC_VAR_PUSHVAL(VARNAME, [LastSavedValue]))
dnl
dnl Save the content of the shell variable, VARNAME, onto a stack.
@@ -106,15 +93,15 @@ dnl Save the content of VARNAME, i.e. $VARNAME, onto the stack.
AS_VAR_SET([pac_stk_$1_$pac_stk_level],[$$1])
AS_VAR_IF([pac_stk_level], [0], [
dnl Save the 1st pushed value of VARNAME as pac_FirstSavedValueOf_$VARNAME
- PAS_VAR_COPY([pac_FirstSavedValueOf_$1],[pac_stk_$1_$pac_stk_level])
+ AS_VAR_COPY([pac_FirstSavedValueOf_$1],[pac_stk_$1_$pac_stk_level])
])
ifelse([$2],[],[
dnl Save the last pushed value of VARNAME as pac_LastSavedValueOf_$VARNAME
- PAS_VAR_COPY([pac_LastSavedValueOf_$1],[pac_stk_$1_$pac_stk_level])
+ AS_VAR_COPY([pac_LastSavedValueOf_$1],[pac_stk_$1_$pac_stk_level])
dnl AS_ECHO(["pac_LastSavedValueOf_$1 = $pac_LastSavedValueOf_$1"])
],[
dnl Save the last pushed value of VARNAME as $2
- PAS_VAR_COPY([$2],[pac_stk_$1_$pac_stk_level])
+ AS_VAR_COPY([$2],[pac_stk_$1_$pac_stk_level])
dnl AS_ECHO(["$2 = $$2"])
])
AS_VAR_POPDEF([pac_stk_level])
@@ -139,7 +126,7 @@ AS_VAR_SET_IF([pac_stk_level],[
AC_MSG_WARN(["Imbalance of PUSHVAL/POPVAL of $1"])
],[
dnl AS_ECHO_N(["POPVAL: pac_stk_level = $pac_stk_level, "])
- PAS_VAR_COPY([$1],[pac_stk_$1_$pac_stk_level])
+ AS_VAR_COPY([$1],[pac_stk_$1_$pac_stk_level])
dnl AS_ECHO(["popped_val = $$1"])
dnl autoconf < 2.64 does not have AS_VAR_ARITH, so use expr instead.
AS_VAR_SET([pac_stk_level], [`expr $pac_stk_level - 1`])
-----------------------------------------------------------------------
Summary of changes:
confdb/aclocal_runlog.m4 | 166 +++++-----------------------------------------
1 files changed, 18 insertions(+), 148 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-165-g5c4f5de
by noreply@mpich.org 08 May '13
by noreply@mpich.org 08 May '13
08 May '13
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 5c4f5de7563db2bee452a102614c53b8ed9583ed (commit)
from 07de139fa7b3cba2894ddf61cc73854384f3e50f (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/5c4f5de7563db2bee452a102614c53b8e…
commit 5c4f5de7563db2bee452a102614c53b8ed9583ed
Author: Haizhu Liu <haizhu(a)us.ibm.com>
Date: Fri Mar 22 21:09:05 2013 -0400
Fix seg fault in _mpi_world_exiting_handler, fix hang at MPI_Finalize, removing calling PAMI_Context_advance in dispatch.
(ibm) D189340
(ibm) 7c57f7ed7a8aa1f0156ba5112664a7c2cd35f227
Signed-off-by: Bob Cernohous <bobc(a)us.ibm.com>
diff --git a/src/mpid/pamid/src/dyntask/mpid_comm_disconnect.c b/src/mpid/pamid/src/dyntask/mpid_comm_disconnect.c
index 094ca0f..3e5378e 100644
--- a/src/mpid/pamid/src/dyntask/mpid_comm_disconnect.c
+++ b/src/mpid/pamid/src/dyntask/mpid_comm_disconnect.c
@@ -137,29 +137,23 @@ void MPIDI_wait_for_AM(long long tranid, int expected_AM, int whichAM)
double starttime, currtime, elapsetime;
int rc, curr_AMcntr;
- MPIU_THREAD_CS_EXIT(ALLFUNC,);
rc = PAMI_Context_advance(MPIDI_Context[0], (size_t)100);
- MPIU_THREAD_CS_ENTER(ALLFUNC,);
if(whichAM == LAST_AM) {
CURTIME(starttime)
do {
CURTIME(currtime)
elapsetime = currtime - starttime;
- MPIU_THREAD_CS_EXIT(ALLFUNC,);
rc = PAMI_Context_advance(MPIDI_Context[0], (size_t)100);
- MPIU_THREAD_CS_ENTER(ALLFUNC,);
curr_AMcntr = MPIDI_get_AM_cntr_for_tranid(tranid, whichAM);
- TRACE_ERR("_try_to_disconnect: Looping in timer for TranID %lld, whichAM %d expected_AM = %d, Current AM = %d\n",tranid,whichAM,expected_AM,curr_AMcntr);
+ /*TRACE_ERR("_try_to_disconnect: Looping in timer for TranID %lld, whichAM %d expected_AM = %d, Current AM = %d\n",tranid,whichAM,expected_AM,curr_AMcntr); */
}while(curr_AMcntr != expected_AM && elapsetime < DISCONNECT_LAPI_XFER_TIMEOUT);
}
else {
do {
- MPIU_THREAD_CS_EXIT(ALLFUNC,);
rc = PAMI_Context_advance(MPIDI_Context[0], (size_t)100);
- MPIU_THREAD_CS_ENTER(ALLFUNC,);
curr_AMcntr = MPIDI_get_AM_cntr_for_tranid(tranid, whichAM);
- TRACE_ERR("_try_to_disconnect: Looping in timer for TranID %lld, whichAM %d expected_AM = %d, Current AM = %d\n",tranid,whichAM,expected_AM,curr_AMcntr);
+ /*TRACE_ERR("_try_to_disconnect: Looping in timer for TranID %lld, whichAM %d expected_AM = %d, Current AM = %d\n",tranid,whichAM,expected_AM,curr_AMcntr);*/
}while(curr_AMcntr != expected_AM);
}
}
diff --git a/src/mpid/pamid/src/dyntask/mpidi_pg.c b/src/mpid/pamid/src/dyntask/mpidi_pg.c
index d588882..f59890d 100644
--- a/src/mpid/pamid/src/dyntask/mpidi_pg.c
+++ b/src/mpid/pamid/src/dyntask/mpidi_pg.c
@@ -170,9 +170,9 @@ int MPIDI_PG_Finalize(void)
MPIU_Free(root_wid_barray); /* root_wid_barray is now NULL for non-root */
-
+#if 0
pthread_create(&finalize_req_thread, NULL, mpidi_finalize_req, NULL);
- MPIU_THREAD_CS_EXIT(ALLFUNC,);
+ /*MPIU_THREAD_CS_EXIT(ALLFUNC,); */
while (mpidi_sync_done !=1) {
mpi_errno=PAMI_Context_advance(MPIDI_Context[0], 1000);
if (mpi_errno == PAMI_EAGAIN) {
@@ -183,6 +183,9 @@ int MPIDI_PG_Finalize(void)
if (mpi_errno = pthread_join(finalize_req_thread, NULL) ) {
TRACE_ERR("error returned from pthread_join() mpi_errno=%d\n",mpi_errno);
}
+#endif
+ MPIU_THREAD_CS_EXIT(ALLFUNC,);
+ PMI2_Finalize();
MPIU_THREAD_CS_ENTER(ALLFUNC,);
if(_conn_info_list) {
diff --git a/src/mpid/pamid/src/mpid_init.c b/src/mpid/pamid/src/mpid_init.c
index 022a2fd..4f85bd6 100644
--- a/src/mpid/pamid/src/mpid_init.c
+++ b/src/mpid/pamid/src/mpid_init.c
@@ -33,6 +33,8 @@
#define MAX_JOBID_LEN 1024
int world_rank;
int world_size;
+extern int (*mp_world_exiting_handler)(int);
+extern int _mpi_world_exiting_handler(int);
#endif
int mpidi_dynamic_tasking = 0;
@@ -1009,10 +1011,8 @@ MPIDI_VCRT_init(int rank, int size, char *world_tasks, MPIDI_PG_t *pg)
world_tasks_save = MPIU_Strdup(world_tasks);
if(world_tasks != NULL) {
comm->vcr[0]->taskid = atoi(strtok(world_tasks, ":"));
- TRACE_ERR("comm->vcr[0]->taskid =%d\n", comm->vcr[0]->taskid);
while( (cp=strtok(NULL, ":")) != NULL) {
comm->vcr[++i]->taskid= atoi(cp);
- TRACE_ERR("comm->vcr[i]->taskid =%d\n", comm->vcr[i]->taskid);
}
}
MPIU_Free(world_tasks_save);
@@ -1228,6 +1228,7 @@ int MPID_Init(int * argc,
/* FIXME: Check that this intercommunicator gets freed in MPI_Finalize
if not already freed. */
}
+ mp_world_exiting_handler = &(_mpi_world_exiting_handler);
#endif
/* ------------------------------- */
/* Initialize timer data */
diff --git a/src/pmi/pmi2/poe/poe2pmi.c b/src/pmi/pmi2/poe/poe2pmi.c
index e37563e..4fa1fa0 100644
--- a/src/pmi/pmi2/poe/poe2pmi.c
+++ b/src/pmi/pmi2/poe/poe2pmi.c
@@ -69,8 +69,7 @@ static MPID_Thread_cond_t cond;
#endif
extern int mpidi_finalized;
-extern int (*mp_world_exiting_handler)(int);
-extern int _mpi_world_exiting_handler(int);
+int _mpi_world_exiting_handler(int);
void *poeptr = NULL;
@@ -98,7 +97,7 @@ int PMI2_Init(int *spawned, int *size, int *rank, int *appnum)
}
ret = (*pmi2_init)(spawned, size, rank, appnum);
- mp_world_exiting_handler = &(_mpi_world_exiting_handler);
+ /*mp_world_exiting_handler = &(_mpi_world_exiting_handler); */
return ret;
}
@@ -271,7 +270,7 @@ int PMI2_Info_GetJobAttr(const char name[], char value[], int valuelen, int *fla
* This is the mpi level of callback that get invoked when a task get notified
* of a world's exiting
*/
-int _mpi_world_exiting_handler_wrapper(pami_context_t context, void *cookie)
+int _mpi_world_exiting_handler(int world_id)
{
/* check the reference count associated with that remote world
if the reference count is zero, the task will call LAPI_Purge_totask on
@@ -286,10 +285,10 @@ int _mpi_world_exiting_handler_wrapper(pami_context_t context, void *cookie)
char world_id_str[32];
int mpi_errno = MPI_SUCCESS;
pami_endpoint_t dest;
- struct worldExitReq *req = (struct worldExitReq *)cookie;
- int world_id = req->world_id;
+/* struct worldExitReq *req = (struct worldExitReq *)cookie; */
MPID_Comm *comm = MPIR_Process.comm_world;
+ MPIU_THREAD_CS_ENTER(ALLFUNC,);
ref_count = MPIDI_get_refcnt_of_world(world_id);
TRACE_ERR("_mpi_world_exiting_handler: invoked for world %d exiting ref_count=%d my comm_word_size=%d\n", world_id, ref_count, world_size);
if(ref_count == 0) {
@@ -300,7 +299,7 @@ int _mpi_world_exiting_handler_wrapper(pami_context_t context, void *cookie)
MPIDI_OpState_reset(taskid_list[i]);
MPIDI_IpState_reset(taskid_list[i]);
TRACE_ERR("PAMI_Purge on taskid_list[%d]=%d\n", i,taskid_list[i]);
- PAMI_Purge(context, &dest, 1);
+ PAMI_Purge(MPIDI_Context[0], &dest, 1);
}
MPIDI_delete_conn_record(world_id);
}
@@ -313,6 +312,7 @@ int _mpi_world_exiting_handler_wrapper(pami_context_t context, void *cookie)
TRACE_ERR("_mpi_world_exiting_handler: Out of _mpi_reduce_for_dyntask for exiting world %d reduce_state=%d\n",world_id, reduce_state);
+ MPIU_THREAD_CS_EXIT(ALLFUNC,);
if(comm->rank == 0) {
MPIU_Snprintf(world_id_str, sizeof(world_id_str), "%d", world_id);
PMI2_Abort(0, world_id_str);
@@ -329,28 +329,11 @@ int _mpi_world_exiting_handler_wrapper(pami_context_t context, void *cookie)
rc = -2;
}
- if(cookie) MPIU_Free(cookie);
+/* if(cookie) MPIU_Free(cookie);*/
return PAMI_SUCCESS;
}
-int _mpi_world_exiting_handler(int world_id)
-{
- struct worldExitReq *req;
- req = MPIU_Malloc(sizeof(struct worldExitReq));
- req->world_id = world_id;
-
- if(MPIDI_Context[0]) {
- if(!mpidi_finalized)
- PAMI_Context_post(MPIDI_Context[0], &(req->work), _mpi_world_exiting_handler_wrapper, req);
- else
- _mpi_world_exiting_handler_wrapper(MPIDI_Context[0], req);
- }
-
- return MPI_SUCCESS;
-}
-
-
int getchildren(int iam, double alpha,int gsize, int *children,
int *blocks, int *numchildren, int *parent)
{
@@ -418,14 +401,17 @@ int _mpi_reduce_for_dyntask(int *sendbuf, int *recvbuf)
{
remaining_child_count = i;
child_rank = (children[i])% TASKS;
- mpi_errno = MPIC_Recv(recvbuf, sizeof(int),MPI_BYTE, pg_world->vct[child_rank].taskid, tag, comm_ptr->handle, MPI_STATUS_IGNORE);
+ TRACE_ERR("_mpi_reduce_for_dyntask - recv from child_rank%d child_taskid=%d\n", child_rank, pg_world->vct[child_rank].taskid);
+ mpi_errno = MPIC_Recv(recvbuf, sizeof(int),MPI_BYTE, child_rank, tag, comm_ptr->handle, MPI_STATUS_IGNORE);
+ TRACE_ERR("_mpi_reduce_for_dyntask - recv DONE from child_rank%d child_taskid=%d\n", child_rank, pg_world->vct[child_rank].taskid);
if(world_rank != parent)
{
if(remaining_child_count == 0) {
parent_rank = (parent) % TASKS;
result += *recvbuf;
- MPIC_Send(&result, sizeof(int), MPI_BYTE, pg_world->vct[parent_rank].taskid, tag, comm_ptr->handle);
+ TRACE_ERR("_mpi_reduce_for_dyntask - send to parent_rank=%d parent taskid=%d \n", parent_rank, pg_world->vct[parent_rank].taskid);
+ MPIC_Send(&result, sizeof(int), MPI_BYTE, parent_rank, tag, comm_ptr->handle);
}
else
{
@@ -440,7 +426,8 @@ int _mpi_reduce_for_dyntask(int *sendbuf, int *recvbuf)
if(world_rank != parent && numchildren == 0) {
parent_rank = (parent) % TASKS;
- MPIC_Send(sendbuf, sizeof(int), MPI_BYTE, pg_world->vct[parent_rank].taskid, tag, comm_ptr->handle);
+ TRACE_ERR("_mpi_reduce_for_dyntask - send to parent_rank=%d parent_task_id=%d\n", parent_rank, pg_world->vct[parent_rank].taskid);
+ MPIC_Send(sendbuf, sizeof(int), MPI_BYTE, parent_rank, tag, comm_ptr->handle);
}
if(world_rank == 0) {
-----------------------------------------------------------------------
Summary of changes:
src/mpid/pamid/src/dyntask/mpid_comm_disconnect.c | 10 +----
src/mpid/pamid/src/dyntask/mpidi_pg.c | 7 ++-
src/mpid/pamid/src/mpid_init.c | 5 +-
src/pmi/pmi2/poe/poe2pmi.c | 43 +++++++-------------
4 files changed, 25 insertions(+), 40 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.4-164-g07de139
by noreply@mpich.org 07 May '13
by noreply@mpich.org 07 May '13
07 May '13
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 07de139fa7b3cba2894ddf61cc73854384f3e50f (commit)
via bd899327f783a3a085f64e5830d8435dca22714d (commit)
via 4450a0a2f0519d4f384da21b110ab7135d31791f (commit)
from 058286b1b5308c965c4790878a49dbb3ffa1fcdf (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/07de139fa7b3cba2894ddf61cc7385438…
commit 07de139fa7b3cba2894ddf61cc73854384f3e50f
Author: James Dinan <dinan(a)mcs.anl.gov>
Date: Tue May 7 14:22:48 2013 -0500
Remove unnecessary myrank field in MPID_Win
Myrank was caching win_ptr->comm_ptr->rank, so we now use that directly
rather than caching it in the MPID_Win object.
Reviewer: balaji
diff --git a/src/mpid/ch3/channels/nemesis/src/ch3_rma_shm.c b/src/mpid/ch3/channels/nemesis/src/ch3_rma_shm.c
index 6aa1729..09b101b 100644
--- a/src/mpid/ch3/channels/nemesis/src/ch3_rma_shm.c
+++ b/src/mpid/ch3/channels/nemesis/src/ch3_rma_shm.c
@@ -79,7 +79,7 @@ int MPIDI_CH3_SHM_Win_free(MPID_Win **win_ptr)
/* Free shared process mutex memory region */
if ((*win_ptr)->shm_mutex) {
- if ((*win_ptr)->myrank == 0) {
+ if ((*win_ptr)->comm_ptr->rank == 0) {
MPIDI_CH3I_SHM_MUTEX_DESTROY(*win_ptr);
}
diff --git a/src/mpid/ch3/include/mpidpre.h b/src/mpid/ch3/include/mpidpre.h
index 3a23e5b..62c78a9 100644
--- a/src/mpid/ch3/include/mpidpre.h
+++ b/src/mpid/ch3/include/mpidpre.h
@@ -257,8 +257,6 @@ struct MPIDI_Win_target_state {
};
#define MPIDI_DEV_WIN_DECL \
- int myrank; /* Rank of this process in comm (used to \
- detect operations on self) */ \
volatile int my_counter; /* completion counter for operations \
targeting this window */ \
void **base_addrs; /* array of base addresses of the windows of \
diff --git a/src/mpid/ch3/src/ch3u_rma_acc_ops.c b/src/mpid/ch3/src/ch3u_rma_acc_ops.c
index 29a46b1..f50e6b1 100644
--- a/src/mpid/ch3/src/ch3u_rma_acc_ops.c
+++ b/src/mpid/ch3/src/ch3u_rma_acc_ops.c
@@ -52,7 +52,7 @@ int MPIDI_Get_accumulate(const void *origin_addr, int origin_count,
goto fn_exit;
}
- rank = win_ptr->myrank;
+ rank = win_ptr->comm_ptr->rank;
origin_predefined = TRUE; /* quiet uninitialized warnings (b/c goto) */
if (op != MPI_NO_OP) {
@@ -286,7 +286,7 @@ int MPIDI_Compare_and_swap(const void *origin_addr, const void *compare_addr,
MPIU_ERR_CHKANDJUMP(win_ptr->epoch_state == MPIDI_EPOCH_NONE,
mpi_errno, MPI_ERR_RMA_SYNC, "**rmasync");
- rank = win_ptr->myrank;
+ rank = win_ptr->comm_ptr->rank;
/* The datatype must be predefined, and one of: C integer, Fortran integer,
* Logical, Multi-language types, or Byte. This is checked above the ADI,
@@ -393,7 +393,7 @@ int MPIDI_Fetch_and_op(const void *origin_addr, void *result_addr,
MPIU_ERR_CHKANDJUMP(win_ptr->epoch_state == MPIDI_EPOCH_NONE,
mpi_errno, MPI_ERR_RMA_SYNC, "**rmasync");
- rank = win_ptr->myrank;
+ rank = win_ptr->comm_ptr->rank;
/* The datatype and op must be predefined. This is checked above the ADI,
* so there's no need to check it again here. */
diff --git a/src/mpid/ch3/src/ch3u_rma_ops.c b/src/mpid/ch3/src/ch3u_rma_ops.c
index f2fc7ca..95d47b9 100644
--- a/src/mpid/ch3/src/ch3u_rma_ops.c
+++ b/src/mpid/ch3/src/ch3u_rma_ops.c
@@ -207,7 +207,7 @@ int MPIDI_Put(const void *origin_addr, int origin_count, MPI_Datatype
goto fn_exit;
}
- rank = win_ptr->myrank;
+ rank = win_ptr->comm_ptr->rank;
/* If the put is a local operation, do it here */
if (target_rank == rank || win_ptr->create_flavor == MPI_WIN_FLAVOR_SHARED)
@@ -318,7 +318,7 @@ int MPIDI_Get(void *origin_addr, int origin_count, MPI_Datatype
goto fn_exit;
}
- rank = win_ptr->myrank;
+ rank = win_ptr->comm_ptr->rank;
/* If the get is a local operation, do it here */
if (target_rank == rank || win_ptr->create_flavor == MPI_WIN_FLAVOR_SHARED)
@@ -428,7 +428,7 @@ int MPIDI_Accumulate(const void *origin_addr, int origin_count, MPI_Datatype
goto fn_exit;
}
- rank = win_ptr->myrank;
+ rank = win_ptr->comm_ptr->rank;
MPIDI_CH3I_DATATYPE_IS_PREDEFINED(origin_datatype, origin_predefined);
MPIDI_CH3I_DATATYPE_IS_PREDEFINED(target_datatype, target_predefined);
diff --git a/src/mpid/ch3/src/ch3u_rma_reqops.c b/src/mpid/ch3/src/ch3u_rma_reqops.c
index acfe1cb..71335b3 100644
--- a/src/mpid/ch3/src/ch3u_rma_reqops.c
+++ b/src/mpid/ch3/src/ch3u_rma_reqops.c
@@ -181,7 +181,7 @@ int MPIDI_Rput(const void *origin_addr, int origin_count,
/* If the operation is already complete, return a completed request.
* Otherwise, generate a grequest. */
/* FIXME: We still may need to flush or sync for shared memory windows */
- if (target_rank == MPI_PROC_NULL || target_rank == win_ptr->myrank ||
+ if (target_rank == MPI_PROC_NULL || target_rank == win_ptr->comm_ptr->rank ||
win_ptr->create_flavor == MPI_WIN_FLAVOR_SHARED || data_sz == 0)
{
mpi_errno = MPIR_Grequest_start_impl(MPIDI_CH3I_Rma_req_query,
@@ -262,7 +262,7 @@ int MPIDI_Rget(void *origin_addr, int origin_count,
/* If the operation is already complete, return a completed request.
* Otherwise, generate a grequest. */
/* FIXME: We still may need to flush or sync for shared memory windows */
- if (target_rank == MPI_PROC_NULL || target_rank == win_ptr->myrank ||
+ if (target_rank == MPI_PROC_NULL || target_rank == win_ptr->comm_ptr->rank ||
win_ptr->create_flavor == MPI_WIN_FLAVOR_SHARED || data_sz == 0)
{
mpi_errno = MPIR_Grequest_start_impl(MPIDI_CH3I_Rma_req_query,
@@ -342,7 +342,7 @@ int MPIDI_Raccumulate(const void *origin_addr, int origin_count,
/* If the operation is already complete, return a completed request.
* Otherwise, generate a grequest. */
/* FIXME: We still may need to flush or sync for shared memory windows */
- if (target_rank == MPI_PROC_NULL || target_rank == win_ptr->myrank ||
+ if (target_rank == MPI_PROC_NULL || target_rank == win_ptr->comm_ptr->rank ||
win_ptr->create_flavor == MPI_WIN_FLAVOR_SHARED || data_sz == 0)
{
mpi_errno = MPIR_Grequest_start_impl(MPIDI_CH3I_Rma_req_query,
@@ -428,7 +428,7 @@ int MPIDI_Rget_accumulate(const void *origin_addr, int origin_count,
/* If the operation is already complete, return a completed request.
* Otherwise, generate a grequest. */
/* FIXME: We still may need to flush or sync for shared memory windows */
- if (target_rank == MPI_PROC_NULL || target_rank == win_ptr->myrank ||
+ if (target_rank == MPI_PROC_NULL || target_rank == win_ptr->comm_ptr->rank ||
win_ptr->create_flavor == MPI_WIN_FLAVOR_SHARED ||
(data_sz == 0 && trg_data_sz == 0))
{
diff --git a/src/mpid/ch3/src/ch3u_rma_sync.c b/src/mpid/ch3/src/ch3u_rma_sync.c
index 00b0a76..1e7e4a6 100644
--- a/src/mpid/ch3/src/ch3u_rma_sync.c
+++ b/src/mpid/ch3/src/ch3u_rma_sync.c
@@ -1370,7 +1370,7 @@ int MPIDI_Win_post(MPID_Group *post_grp_ptr, int assert, MPID_Win *win_ptr)
win_grp_ptr, ranks_in_win_grp);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
- rank = win_ptr->myrank;
+ rank = win_ptr->comm_ptr->rank;
MPIU_CHKLMEM_MALLOC(req, MPI_Request *, post_grp_size * sizeof(MPI_Request), mpi_errno, "req");
MPIU_CHKLMEM_MALLOC(status, MPI_Status *, post_grp_size*sizeof(MPI_Status), mpi_errno, "status");
@@ -1562,7 +1562,7 @@ int MPIDI_Win_complete(MPID_Win *win_ptr)
win_grp_ptr, ranks_in_win_grp);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
- rank = win_ptr->myrank;
+ rank = win_ptr->comm_ptr->rank;
/* If MPI_MODE_NOCHECK was not specified, we need to check if
Win_post was called on the target processes. Wait for a 0-byte sync
@@ -1920,7 +1920,7 @@ int MPIDI_Win_lock(int lock_type, int dest, int assert, MPID_Win *win_ptr)
target_state->remote_lock_mode = lock_type;
target_state->remote_lock_assert = assert;
- if (dest == win_ptr->myrank) {
+ if (dest == win_ptr->comm_ptr->rank) {
/* The target is this process itself. We must block until the lock
* is acquired. Once it is acquired, local puts, gets, accumulates
* will be done directly without queueing. */
@@ -1989,7 +1989,7 @@ int MPIDI_Win_unlock(int dest, MPID_Win *win_ptr)
OPA_read_write_barrier();
}
- if (dest == win_ptr->myrank) {
+ if (dest == win_ptr->comm_ptr->rank) {
/* local lock. release the lock on the window, grant the next one
* in the queue, and return. */
MPIU_Assert(MPIDI_CH3I_RMA_Ops_isempty(&win_ptr->targets[dest].rma_ops_list));
@@ -2410,7 +2410,7 @@ int MPIDI_Win_lock_all(int assert, MPID_Win *win_ptr)
for (i = 0; i < MPIR_Comm_size(win_ptr->comm_ptr); i++) {
/* Local process is already locked */
- if (i == win_ptr->myrank) continue;
+ if (i == win_ptr->comm_ptr->rank) continue;
mpi_errno = MPIDI_CH3I_Send_lock_msg(i, MPI_LOCK_SHARED, win_ptr);
if (mpi_errno) { MPIU_ERR_POP(mpi_errno); }
@@ -2418,7 +2418,7 @@ int MPIDI_Win_lock_all(int assert, MPID_Win *win_ptr)
for (i = 0; i < MPIR_Comm_size(win_ptr->comm_ptr); i++) {
/* Local process is already locked */
- if (i == win_ptr->myrank) continue;
+ if (i == win_ptr->comm_ptr->rank) continue;
mpi_errno = MPIDI_CH3I_Wait_for_lock_granted(win_ptr, i);
if (mpi_errno) { MPIU_ERR_POP(mpi_errno); }
@@ -2772,8 +2772,8 @@ static int MPIDI_CH3I_Acquire_local_lock(MPID_Win *win_ptr, int lock_type) {
MPIU_INSTR_DURATION_END(winlock_getlocallock);
}
- win_ptr->targets[win_ptr->myrank].remote_lock_state = MPIDI_CH3_WIN_LOCK_GRANTED;
- win_ptr->targets[win_ptr->myrank].remote_lock_mode = lock_type;
+ win_ptr->targets[win_ptr->comm_ptr->rank].remote_lock_state = MPIDI_CH3_WIN_LOCK_GRANTED;
+ win_ptr->targets[win_ptr->comm_ptr->rank].remote_lock_mode = lock_type;
fn_exit:
MPIDI_RMA_FUNC_EXIT(MPID_STATE_MPIDI_ACQUIRE_LOCAL_LOCK);
diff --git a/src/mpid/ch3/src/mpid_rma.c b/src/mpid/ch3/src/mpid_rma.c
index bb10dca..8a581e7 100644
--- a/src/mpid/ch3/src/mpid_rma.c
+++ b/src/mpid/ch3/src/mpid_rma.c
@@ -266,7 +266,6 @@ static int win_init(MPI_Aint size, int disp_unit, int create_flavor, int model,
(*win_ptr)->start_group_ptr = NULL;
(*win_ptr)->start_assert = 0;
(*win_ptr)->comm_ptr = win_comm_ptr;
- (*win_ptr)->myrank = comm_ptr->rank;
(*win_ptr)->my_counter = 0;
/* (*win_ptr)->base_addrs[] is set by caller; */
http://git.mpich.org/mpich.git/commitdiff/bd899327f783a3a085f64e5830d8435dc…
commit bd899327f783a3a085f64e5830d8435dca22714d
Author: James Dinan <dinan(a)mcs.anl.gov>
Date: Tue May 7 12:54:13 2013 -0500
Move CH3-specific MPID_Win members into CH3
Several fields of MPID_Win were not used above the ADI. These have been
moved to CH3 to reduce clutter. Downstream devices should redefine
these fields in MPID_DEV_WIN_DECL if they are needed.
Reviewer: balaji
diff --git a/src/include/mpiimpl.h b/src/include/mpiimpl.h
index d3e6d03..deedd53 100644
--- a/src/include/mpiimpl.h
+++ b/src/include/mpiimpl.h
@@ -1693,10 +1693,7 @@ typedef struct MPID_Win {
MPI_Aint size;
int disp_unit; /* Displacement unit of *local* window */
MPID_Attribute *attributes;
- MPID_Group *start_group_ptr; /* group passed in MPI_Win_start */
MPID_Comm *comm_ptr; /* Pointer to comm of window (dup) */
- int myrank; /* Rank of this process in comm (used to
- detect operations on self) */
#ifdef USE_THREADED_WINDOW_CODE
/* These were causing compilation errors. We need to figure out how to
integrate threads into MPICH before including these fields. */
diff --git a/src/mpid/ch3/include/mpidpre.h b/src/mpid/ch3/include/mpidpre.h
index 49245d0..3a23e5b 100644
--- a/src/mpid/ch3/include/mpidpre.h
+++ b/src/mpid/ch3/include/mpidpre.h
@@ -257,6 +257,8 @@ struct MPIDI_Win_target_state {
};
#define MPIDI_DEV_WIN_DECL \
+ int myrank; /* Rank of this process in comm (used to \
+ detect operations on self) */ \
volatile int my_counter; /* completion counter for operations \
targeting this window */ \
void **base_addrs; /* array of base addresses of the windows of \
@@ -293,6 +295,7 @@ struct MPIDI_Win_target_state {
this state must be updated collectively (in \
fence) to ensure that the fence state across \
all processes remains consistent. */ \
+ MPID_Group *start_group_ptr; /* group passed in MPI_Win_start */ \
int start_assert; /* assert passed to MPI_Win_start */ \
#ifdef MPIDI_CH3_WIN_DECL
http://git.mpich.org/mpich.git/commitdiff/4450a0a2f0519d4f384da21b110ab7135…
commit 4450a0a2f0519d4f384da21b110ab7135d31791f
Author: James Dinan <dinan(a)mcs.anl.gov>
Date: Tue May 7 13:29:13 2013 -0500
Cleanup RMA comment in MPIDI_Reqest
diff --git a/src/mpid/ch3/include/mpidpre.h b/src/mpid/ch3/include/mpidpre.h
index 032670a..49245d0 100644
--- a/src/mpid/ch3/include/mpidpre.h
+++ b/src/mpid/ch3/include/mpidpre.h
@@ -370,7 +370,7 @@ typedef struct MPIDI_Request {
* unexpected, exclusive access otherwise */
int recv_pending_count;
- /* The next 8 are for RMA */
+ /* The next several fields are used to hold state for ongoing RMA operations */
MPI_Op op;
/* For accumulate, since data is first read into a tmp_buf */
void *real_user_buf;
-----------------------------------------------------------------------
Summary of changes:
src/include/mpiimpl.h | 3 ---
src/mpid/ch3/channels/nemesis/src/ch3_rma_shm.c | 2 +-
src/mpid/ch3/include/mpidpre.h | 3 ++-
src/mpid/ch3/src/ch3u_rma_acc_ops.c | 6 +++---
src/mpid/ch3/src/ch3u_rma_ops.c | 6 +++---
src/mpid/ch3/src/ch3u_rma_reqops.c | 8 ++++----
src/mpid/ch3/src/ch3u_rma_sync.c | 16 ++++++++--------
src/mpid/ch3/src/mpid_rma.c | 1 -
8 files changed, 21 insertions(+), 24 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0