Just as with MPI, the nonblocking versions are critical and can be used to implement the blocking versions. The nonblocking routines are much like the blocking versions, except that they take the MPI_Request handle for the operation (not just a device-specific handle, as in the first-generation ADI). However, the MPID routines do not allocate the MPI_Request as the MPI routines do; rather, an MPI routine allocates the request and passes it to the MPID routine. The semantics of the communication are the same as for their MPI counterparts.
There is no ADI support for persistent requests; this feature is discussed further in Section Structure of MPI_Request .