Module mpi::request
[−]
[src]
Request objects for non-blocking operations
Non-blocking operations such as immediate_send() return request objects that borrow any
buffers involved in the operation so as to ensure proper access restrictions. In order to
release the borrowed buffers from the request objects, a completion operation such as
wait() or test() must
be used on the request object.
Note: If the Request is dropped (as opposed to calling wait or test explicitly), the
program will panic.
To enforce this rule, every request object must be registered to some pre-existing
Scope. At the end of a Scope, all its remaining requests will be waited
for until completion. Scopes can be created using either scope or
StaticScope.
To handle request completion in an RAII style, a request can be wrapped in either
WaitGuard or CancelGuard, which will
follow the respective policy for completing the operation. When the guard is dropped, the
request will be automatically unregistered from its Scope.
Unfinished features
- 3.7: Nonblocking mode:
- Completion,
MPI_Waitany(),MPI_Waitall(),MPI_Waitsome(),MPI_Testany(),MPI_Testall(),MPI_Testsome(),MPI_Request_get_status()
- Completion,
- 3.8:
- Cancellation,
MPI_Test_cancelled()
- Cancellation,
Structs
| CancelGuard |
Guard object that tries to cancel and waits for the completion of an operation when it is dropped |
| LocalScope |
A temporary scope that lasts no more than the lifetime |
| Request |
A request object for a non-blocking operation registered with a |
| StaticScope |
The scope that lasts as long as the entire execution of the program |
| WaitGuard |
Guard object that waits for the completion of an operation when it is dropped |
Traits
| Scope |
A common interface for |
Functions
| scope |
Used to create a |