Hi,

I’m currently evaluating to use openmpi (4.0.1) in our application.

We are using a construct like this for some cleanup functionality, to cancel 
some Send requests:

if (*req != MPI_REQUEST_NULL) {
MPI_Cancel(req);
MPI_Wait(req, MPI_STATUS_IGNORE);
assert(*req == MPI_REQUEST_NULL);
}

However the MPI_Wait hangs indefinitely and I’ve debugged into it and I came 
across this in pml_ob1_sendreq.c, eventually invoked from MPI_Cancel in my 
scenario:

static int mca_pml_ob1_send_request_cancel(struct ompi_request_t* request, int 
complete)
{
    /* we dont cancel send requests by now */
    return OMPI_SUCCESS;
}

The man page for MPI_Cancel does not mention that cancelling Send requests does 
not work, so I’m wondering,
whether this is a current limitation or are we not supposed to end up in this 
specific …_request_cancel implementation?

Thank you in advance!

Christian

Reply via email to