Next: MPI Issues
Up: AUTOPACK User Manual 1
Previous: Asynchronous Reductions
  Contents
This feature allows the user to trade performance and memory in return
for deterministic delivery of messages. For a given set of message
sends among multiple processors, a given destination processor will
always receive the same sequence of messages. This is the case
regardless of the receive criteria (requested tag and source) as long
as the same receive criteria are issued in the same order each time.
In order to accomplish this, use the same library constructs as for an
Asynchronous Reduction (Section 5), with the exception
that AP_dsend_begin() and AP_dsend_end() are
called rather than AP_send_begin() and AP_send_end()
There are several restrictions and caveats to deterministic
message delivery:
- Upon entry to AP_dsend_begin(), there must be no
outstanding messages (i.e. messages that have been sent but not yet
received). If any are detected it is considered a fatal error as the
library will not be able to guarantee ordering.
- AP_dsend_begin() and AP_dsend_end()
will both perform barrier synchronizations.
- AP_dsend_end() will not return until all messages from
the block of sends have been received into library memory. It is not
possible to start processing the incoming messages before all have
arrived, and memory requirements are therefore increased.
Next: MPI Issues
Up: AUTOPACK User Manual 1
Previous: Asynchronous Reductions
  Contents
Raymond Loy
2000-05-12