- Increment the pipeline depth before we trigger the send function. As
mentioned in the comment the completion/callback of the triggered send operation can happen before the call returns. If this happens and if the pipeline depth is 0 before we triggered the send operation and this is the last send operation of the request then the completion detection code will decrement the pipeline depth and check it for equality to 0. Because (0-1) != 0 the pml completion function for this request will *not* be called. This part 2 of the fix for ticket #246. This commit was SVN r12292.
Этот коммит содержится в:
родитель
3563f15fde
Коммит
f3f39e003e
@ -967,14 +967,15 @@ int mca_pml_ob1_send_request_schedule_exclusive(
|
||||
#endif /* OMPI_WANT_PERUSE */
|
||||
|
||||
/* initiate send - note that this may complete before the call returns */
|
||||
OPAL_THREAD_ADD_SIZE_T(&sendreq->req_pipeline_depth,1);
|
||||
rc = mca_bml_base_send(bml_btl, des, MCA_BTL_TAG_PML);
|
||||
|
||||
if(rc == OMPI_SUCCESS) {
|
||||
bytes_remaining -= size;
|
||||
/* update state */
|
||||
sendreq->req_send_offset += size;
|
||||
OPAL_THREAD_ADD_SIZE_T(&sendreq->req_pipeline_depth,1);
|
||||
} else {
|
||||
} else {
|
||||
OPAL_THREAD_ADD_SIZE_T(&sendreq->req_pipeline_depth,-1);
|
||||
mca_bml_base_free(bml_btl,des);
|
||||
continue;
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user