1. all GRs are persistent
2. the "GR template" model is no longer possible
In the interest of simplicity, I am open to the idea of not using a
template model. With the new proposal, I could implement MPI_Iwrite as
follows:
MPI_Iwrite()
{
MPI_Request_Init(...);
MPI_Start(...);
}
The user would sometime later call MPI_Test/MPI_Wait, and nothing else.
The problem is, how would the request be freed? Who would call
MPI_Request_free? The user will not, because he/she doesn't know that
a persistent request has been started. I won't be able to free it
until MPI_Finalize, and too many such requests may pile up until then.
An alternative that I suggest is to let GRs be nonpersistent, and let
MPI_Request_init take all the callback functions as well as extra
state, and actually start the nonpersistent GR. The it would
require just one function call:
MPI_Iwrite()
{
MPI_Request_Init(callback fns, extra_state, request);
}
Won't that be the simplest?
Rajeev