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 6f020c71b5f6349b3b616280ba9c24ed7988de40 (commit) via 7da26cd82a0826c4581b4e357a66eb1cbee6c8bc (commit) via e204ed26d4c07e5b6f6b14f0f32b1a47c6cc72e9 (commit) via 9c17714a7fe3b4233cc50962e71c6ca7527d521b (commit) from 40b1483fb31d9207644783a2574b08149dfa594b (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/6f020c71b5f6349b3b616280ba9c24ed79... commit 6f020c71b5f6349b3b616280ba9c24ed7988de40 Author: Xin Zhao <[email protected]> Date: Mon Aug 10 16:46:19 2015 -0500 Increase time limit of some GACC-based RMA tests to 4 min. In 40b1483fb31d9207644783a2574b08149dfa594b, we reduced the value of MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD to 64K by measuring with an one-to-all benchmark involving PUT operations on MXM. This effects the performance of some GACC-based tests. Here we increase the time limit of those tests to 4 min. The default value of MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD is just a reference value according the one-to-all PUT tests. In a real application, user should tune the value depending on different operations and communication patterns. Signed-off-by: Pavan Balaji <[email protected]> diff --git a/test/mpi/rma/testlist.in b/test/mpi/rma/testlist.in index c824afd..de7b025 100644 --- a/test/mpi/rma/testlist.in +++ b/test/mpi/rma/testlist.in @@ -32,10 +32,10 @@ lock_dt 2 lock_dt_flush 2 lock_dt_flushlocal 2 lockall_dt 4 -lockall_dt_flush 4 -lockall_dt_flushall 4 -lockall_dt_flushlocal 4 -lockall_dt_flushlocalall 4 +lockall_dt_flush 4 timeLimit=240 +lockall_dt_flushall 4 timeLimit=240 +lockall_dt_flushlocal 4 timeLimit=240 +lockall_dt_flushlocalall 4 timeLimit=240 lock_contention_dt 4 transpose4 2 fetchandadd 7 http://git.mpich.org/mpich.git/commitdiff/7da26cd82a0826c4581b4e357a66eb1cbe... commit 7da26cd82a0826c4581b4e357a66eb1cbee6c8bc Author: Xin Zhao <[email protected]> Date: Mon Aug 10 14:47:53 2015 -0500 Bug-fix on RMA working with asynchronous thread. In RMA operation routines, when the total number of active internal requests hits the upper bound, we let the process to poke the progress engine in a while loop until the number of active requests is reduced. However, when ASYNC_PROGRESS is on, this can cause the deadlock situation in the main thread. Because poking progress engine is a nonblocking call, it will not yield CPU to async thread. If the async thread already starts receiving the last packet before main thread starts poking the progress engine, then main thread will not receive any more packets, which makes the while loop endlessly running. Here we fix this issue by replacing nonblocking progress engine call with blocking progress engine call. Signed-off-by: Pavan Balaji <[email protected]> diff --git a/src/mpid/ch3/src/ch3u_rma_ops.c b/src/mpid/ch3/src/ch3u_rma_ops.c index 91df74b..95f153f 100644 --- a/src/mpid/ch3/src/ch3u_rma_ops.c +++ b/src/mpid/ch3/src/ch3u_rma_ops.c @@ -194,7 +194,7 @@ int MPIDI_CH3I_Put(const void *origin_addr, int origin_count, MPI_Datatype if (MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD >= 0 && MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { while (MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { - mpi_errno = poke_progress_engine(); + mpi_errno = wait_progress_engine(); if (mpi_errno != MPI_SUCCESS) MPIU_ERR_POP(mpi_errno); } @@ -363,7 +363,7 @@ int MPIDI_CH3I_Get(void *origin_addr, int origin_count, MPI_Datatype if (MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD >= 0 && MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { while (MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { - mpi_errno = poke_progress_engine(); + mpi_errno = wait_progress_engine(); if (mpi_errno != MPI_SUCCESS) MPIU_ERR_POP(mpi_errno); } @@ -574,7 +574,7 @@ int MPIDI_CH3I_Accumulate(const void *origin_addr, int origin_count, MPI_Datatyp if (MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD >= 0 && MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { while (MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { - mpi_errno = poke_progress_engine(); + mpi_errno = wait_progress_engine(); if (mpi_errno != MPI_SUCCESS) MPIU_ERR_POP(mpi_errno); } @@ -826,7 +826,7 @@ int MPIDI_CH3I_Get_accumulate(const void *origin_addr, int origin_count, if (MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD >= 0 && MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { while (MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { - mpi_errno = poke_progress_engine(); + mpi_errno = wait_progress_engine(); if (mpi_errno != MPI_SUCCESS) MPIU_ERR_POP(mpi_errno); } @@ -1073,7 +1073,7 @@ int MPID_Compare_and_swap(const void *origin_addr, const void *compare_addr, if (MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD >= 0 && MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { while (MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { - mpi_errno = poke_progress_engine(); + mpi_errno = wait_progress_engine(); if (mpi_errno != MPI_SUCCESS) MPIU_ERR_POP(mpi_errno); } @@ -1215,7 +1215,7 @@ int MPID_Fetch_and_op(const void *origin_addr, void *result_addr, if (MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD >= 0 && MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { while (MPIDI_CH3I_RMA_Active_req_cnt >= MPIR_CVAR_CH3_RMA_ACTIVE_REQ_THRESHOLD) { - mpi_errno = poke_progress_engine(); + mpi_errno = wait_progress_engine(); if (mpi_errno != MPI_SUCCESS) MPIU_ERR_POP(mpi_errno); } http://git.mpich.org/mpich.git/commitdiff/e204ed26d4c07e5b6f6b14f0f32b1a47c6... commit e204ed26d4c07e5b6f6b14f0f32b1a47c6cc72e9 Author: Xin Zhao <[email protected]> Date: Mon Aug 10 14:40:59 2015 -0500 Add an assert to check MPIDI_CH3I_RMA_Active_req_cnt. Signed-off-by: Pavan Balaji <[email protected]> diff --git a/src/mpid/ch3/src/ch3u_handle_op_req.c b/src/mpid/ch3/src/ch3u_handle_op_req.c index 5b8af99..6e6283f 100644 --- a/src/mpid/ch3/src/ch3u_handle_op_req.c +++ b/src/mpid/ch3/src/ch3u_handle_op_req.c @@ -29,6 +29,7 @@ int MPIDI_CH3_Req_handler_rma_op_complete(MPID_Request * sreq) MPID_Win_get_ptr(sreq->dev.source_win_handle, win_ptr); MPIU_Assert(win_ptr != NULL); MPIDI_CH3I_RMA_Active_req_cnt--; + MPIU_Assert(MPIDI_CH3I_RMA_Active_req_cnt >= 0); if (sreq->dev.request_handle != MPI_REQUEST_NULL) { /* get user request */ http://git.mpich.org/mpich.git/commitdiff/9c17714a7fe3b4233cc50962e71c6ca752... commit 9c17714a7fe3b4233cc50962e71c6ca7527d521b Author: Xin Zhao <[email protected]> Date: Mon Aug 10 14:06:17 2015 -0500 Delete redundant function call. Signed-off-by: Pavan Balaji <[email protected]> diff --git a/src/mpid/ch3/include/mpid_rma_oplist.h b/src/mpid/ch3/include/mpid_rma_oplist.h index 4355d9d..bc598ea 100644 --- a/src/mpid/ch3/include/mpid_rma_oplist.h +++ b/src/mpid/ch3/include/mpid_rma_oplist.h @@ -517,12 +517,6 @@ static inline int MPIDI_CH3I_Win_get_op(MPID_Win * win_ptr, MPIDI_RMA_Op_t ** e) if (new_ptr != NULL) break; - MPIR_T_PVAR_TIMER_START(RMA, rma_rmaqueue_alloc); - new_ptr = MPIDI_CH3I_Win_op_alloc(win_ptr); - MPIR_T_PVAR_TIMER_END(RMA, rma_rmaqueue_alloc); - if (new_ptr != NULL) - break; - mpi_errno = MPIDI_CH3I_RMA_Cleanup_ops_aggressive(win_ptr); if (mpi_errno != MPI_SUCCESS) MPIU_ERR_POP(mpi_errno); ----------------------------------------------------------------------- Summary of changes: src/mpid/ch3/include/mpid_rma_oplist.h | 6 ------ src/mpid/ch3/src/ch3u_handle_op_req.c | 1 + src/mpid/ch3/src/ch3u_rma_ops.c | 12 ++++++------ test/mpi/rma/testlist.in | 8 ++++---- 4 files changed, 11 insertions(+), 16 deletions(-) hooks/post-receive -- MPICH primary repository