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 |