Hello,

 

These comments are on the MPI 3.1 spec[0], Section 3.7.5, pages 61 and 62 on MPI_Waitsome and MPI_Testsome.

 

The spec makes two comments on what elements in `array_of_indices` and `array_of_statuses` are accessed:

 

“Returns in the first outcount locations of the array array_of_indices the indices of these operations (index within the array array_of_requests; the array is indexed from zero in C and from one in Fortran)”

 

“Returns in the first outcount locations of the array array_of_status the status for these completed operations.”

 

As far as I can tell, the spec provides no other indication of the size of these two arrays. So, as a user, I would think that `array_of_indices` is only required to be as large as the largest possible value of `outcount`.

 

The max value of outcount is not necessarily the same as the size of `array_of_requests`: If an array_of_requests has 10 elements, but the user knows that only 8 of the requests are active, they know that outcount must be less than or equal to 8.

 

The reason I ask is that OpenMPI takes the liberty of treating `array_of_indices` as being the same size as `array_of_requests`[1]. It uses array_of_indices[i] as scratch space to store the completion of array_of_requests[i].

 

Is the spec ambiguous here, or is OpenMPI in violation of the spec? Or am I missing an explicit definition of the required size of these arrays?

 

Thank you very much!

 

[0] http://mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf

[1] https://github.com/open-mpi/ompi/blob/master/ompi/request/req_wait.c#L422

 

Andrew Gaspar

CCS-7 – Applied Computer Science

505-664-0676 / agaspar@lanl.gov