@@ -62,6 +62,9 @@ void ucc_tl_ucp_put_completion_cb(void *request, ucs_status_t status,
6262void ucc_tl_ucp_get_completion_cb (void * request , ucs_status_t status ,
6363 void * user_data );
6464
65+ void ucc_tl_ucp_flush_completion_cb (void * request , ucs_status_t status ,
66+ void * user_data );
67+
6568void ucc_tl_ucp_recv_completion_cb_st (void * request , ucs_status_t status ,
6669 const ucp_tag_recv_info_t * info ,
6770 void * user_data );
@@ -531,7 +534,8 @@ static inline ucc_status_t ucc_tl_ucp_flush(ucc_tl_ucp_team_t *team)
531534}
532535
533536static inline ucc_status_t ucc_tl_ucp_ep_flush (ucc_rank_t dest_group_rank ,
534- ucc_tl_ucp_team_t * team )
537+ ucc_tl_ucp_team_t * team ,
538+ ucc_tl_ucp_task_t * task )
535539{
536540 ucp_request_param_t req_param = {0 };
537541 ucc_status_t status ;
@@ -543,12 +547,19 @@ static inline ucc_status_t ucc_tl_ucp_ep_flush(ucc_rank_t dest_group_rank,
543547 return status ;
544548 }
545549
550+ req_param .op_attr_mask =
551+ UCP_OP_ATTR_FIELD_CALLBACK | UCP_OP_ATTR_FIELD_USER_DATA ;
552+ req_param .cb .send = ucc_tl_ucp_flush_completion_cb ;
553+ req_param .user_data = (void * )task ;
554+
546555 req = ucp_ep_flush_nbx (ep , & req_param );
556+ task -> flush_posted ++ ;
547557 if (UCS_OK != req ) {
548558 if (UCS_PTR_IS_ERR (req )) {
549559 return ucs_status_to_ucc_status (UCS_PTR_STATUS (req ));
550560 }
551- ucp_request_free (req );
561+ } else {
562+ task -> flush_completed ++ ;
552563 }
553564 return UCC_OK ;
554565}
0 commit comments