The MPI standard allows
MPI_Isend( ..., &request )
MPI_Request_free( &request )
and
MPI_Irecv( ..., &request )
MPI_Request_free( &request )
In order for us to properly complete this, we need to continue to push
the
requests until they complete. For this to work, we need to put the request on
a global list of these requests, and run through this list frequently.
At the very least, the device push should process this list. For this,
we
need a list next pointer in the request.