Commit 8a6dab58 authored by Xin Zhao's avatar Xin Zhao Committed by Pavan Balaji
Browse files

Add progress poking and GC progress during issuing out the ops.

Here we add progress poking and GC progress during issuing out
operations in order to make progress on receiving incoming
messages while issuing out messages. Otherwise, if all processes
are busy issuing out large number of operations, there will be
no process making progress on receiving and sending progress
cannot be finished until reaching the ending epoch.
Signed-off-by: Pavan Balaji's avatarPavan Balaji <>
parent d6f65c81
......@@ -29,6 +29,19 @@ cvars:
routines to wait until no. of active requests being
reduced to this value.
category : CH3
type : int
default : 128
class : none
description : >-
Threshold at which the RMA implementation attempts to complete requests
while completing RMA operations and while using the lazy synchonization
approach. Change this value if programs fail because they run out of
requests or other internal resources
......@@ -460,6 +473,22 @@ static inline int issue_ops_target(MPID_Win * win_ptr, MPIDI_RMA_Target_t * targ
&(target->issued_read_op_list_tail), curr_op);
/* Poke the progress engine when next_op_to_issue is not the current OP, in
* order to make sure the issuing function is re-entrant safe. */
if (target->next_op_to_issue != curr_op &&
win_ptr->active_req_cnt > MPIR_CVAR_CH3_RMA_POKE_PROGRESS_REQ_THRESHOLD) {
int local_completed, remote_completed;
mpi_errno = poke_progress_engine();
if (mpi_errno != MPI_SUCCESS)
mpi_errno = MPIDI_CH3I_RMA_Cleanup_ops_win(win_ptr, &local_completed,
if (mpi_errno != MPI_SUCCESS)
curr_op = target->next_op_to_issue;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment