I agree, MPI_GREQUEST_COMPLETABLE would be better.
> Also ---- there is discussion of allowing MPI_Request_free on a GR which
> indicates that if I create a GR "my_gr" then call
> MPI_Request_free(&my_gr) something will occur when I later call
> MPI_Grequest_complete. What is it that I call MPI_Grequest_complete
> with? After the MPI_Request_free my_gr==MPI_REQUEST_NULL. I think that
> the fate of a GR which has been the victim of MPI_Request_free must be
> considered undefined.
But here I disagree.
We and the user can differentiate between
- using a GR (i.e. calling MPI_GR_START, MPI_WAIT/TEST/CANCEL
or MPI_REQUEST_FREE), and
- providing a GR (i.e. also calling MPI_GR_START, and the work of
query_fn, free_fn, cancel_fn, and using MPI_GR_COMPLETABLE)
In the area of 'using' the handle is valid from MPI_GR_START
until MPI_WAIT, positive MPI_TEST, or MPI_REQUEST_FREE.
In the area of 'providing' the handle is valid (also) from MPI_GR_START,
but until MPI_GR_COMPLETABLE is called.
I think, the best would be a short advice to users:
Also MPI_REQUEST_FREE assigns MPI_REQUEST_NULL to the request
variable, the original request handle value stays valid as long
as the application has not called MPI_GREQUEST_COMPLETABLE
with this handle, i.e. its value must be saved by the application
if MPI_GREQUEST_COMPLETABLE is called after MPI_REQUEST_FREE.
Rolf Rabenseifner (Computer Center )
Rechenzentrum Universitaet Stuttgart (University of Stuttgart)
Allmandring 30 Phone: ++49 711 6855530
D-70550 Stuttgart 80 FAX: ++49 711 6787626