Hello Users,
the man page for MPI_Waitany states that
"The array_of_requests list *may contain null* or inactive handles. If
the list contains no active handles (list has length zero or all
entries are null or inactive), then the call returns immediately with
index = MPI_UNDEFINED, and an empty status."
I've been having problems with Open MPI and a code that runs fine with
LAM, I have managed to trace it to a call to MPI_Waitany with some
requests set to null (but properly allocated).
The current trunk code for ompi/mpi/c/waitany.c states:
int MPI_Waitany(int count, MPI_Request *requests, int *index,
MPI_Status *status)
{
OPAL_CR_TEST_CHECKPOINT_READY();
if ( MPI_PARAM_CHECK ) {
int i, rc = MPI_SUCCESS;
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
if ((NULL == requests) && (0 != count)) {
rc = MPI_ERR_REQUEST;
} else {
for (i = 0; i < count; i++) {
if (NULL == requests[i]) {
rc = MPI_ERR_REQUEST;
break;
}
}
}
if ((NULL == index) || (0 > count)) {
rc = MPI_ERR_ARG;
}
OMPI_ERRHANDLER_CHECK(rc, MPI_COMM_WORLD, rc, FUNC_NAME);
}
(...)
>From what I understand in this code, if any of the requests is NULL
then an MPI_ERR_REQUEST error will be issued.
Is this a limitation of Open MPI (i.e. further processing of this
query will result in an error if a request is null), or a simple bug?
Of course, I could be mistaken... :-)
Cheers!
|