Class Schedule is used to construct and execute a set of data communication transactions. Each transaction represents some data dependency and exchange between two processors, or locally involving a single processor. Once a communication schedule is constructed, transactions are provided to the schedule, using either the addTransaction() method or the appendTransaction() method. The schedule is then executed forcing the communication, either interprocessor or local to occur. The basic idea behind the schedule is that it enables the cost of assembling communication dependencies and data transfers over many communication phases.
More...
#include <tbox/Schedule.h>
Note that since the transactions are stored in lists, the "add" and "append" mimick the semantics of the List class. That is, addTransaction() will put the transaction at the head of the list, while appendTransaction() will put the transaction at the end of the list. This flexibility is provided for situations where the order of transaction execution matters. Regardless of which method is used to assemble the transactions, they will be executed in the order in which they appear in the list.
- See also
- tbox::Transaction
-
tbox::List
◆ Schedule() [1/2]
| SAMRAI::tbox::Schedule::Schedule |
( |
| ) |
|
Create an empty schedule with no transactions.
◆ ~Schedule()
| virtual SAMRAI::tbox::Schedule::~Schedule |
( |
| ) |
|
|
virtual |
The destructor deletes the schedule and all associated storage. Note that the schedule should not be deleted during a communication phase.
◆ Schedule() [2/2]
| SAMRAI::tbox::Schedule::Schedule |
( |
const Schedule & |
| ) |
|
|
private |
◆ addTransaction()
Add a data transaction to the head of the list of transactions already assembled in the schedule. The transaction must involve the local processor as either a source or destination or both. If the transaction does not include the local processor, then the transaction is not placed on the schedule.
- Parameters
-
| transaction | Pointer to transaction added to the schedule. |
◆ appendTransaction()
| void SAMRAI::tbox::Schedule::appendTransaction |
( |
const Pointer< Transaction > & |
transaction | ) |
|
Append a data transaction to the tail of the list of transactions already assembled in the schedule. The transaction must involve the local processor as either a source or destination or both. If the transaction does not include the local processor, then the transaction is not placed on the schedule.
- Parameters
-
| transaction | Pointer to transaction appended to the schedule. |
◆ communicate()
| void SAMRAI::tbox::Schedule::communicate |
( |
| ) |
|
Perform the communication described by the schedule.
◆ beginCommunication()
| void SAMRAI::tbox::Schedule::beginCommunication |
( |
| ) |
|
Begin the communication process but do not deliver data to the transaction objects. Member function finalizeCommunication() must be called to finish the message communication.
◆ finalizeCommunication()
| void SAMRAI::tbox::Schedule::finalizeCommunication |
( |
| ) |
|
Finish the communication and deliver the messages. This member function completes communication began by beginCommunication().
◆ printClassData()
| void SAMRAI::tbox::Schedule::printClassData |
( |
std::ostream & |
stream | ) |
const |
Print class data to the specified output stream.
◆ firstConstructorTasks()
| void SAMRAI::tbox::Schedule::firstConstructorTasks |
( |
| ) |
|
|
private |
◆ freeTimers()
| static void SAMRAI::tbox::Schedule::freeTimers |
( |
| ) |
|
|
staticprivate |
Free static timers.
To be called by shutdown registry to make sure memory for timers does not leak.
◆ calculateSendSizes()
| void SAMRAI::tbox::Schedule::calculateSendSizes |
( |
| ) |
|
|
private |
◆ calculateReceiveSizes()
| void SAMRAI::tbox::Schedule::calculateReceiveSizes |
( |
| ) |
|
|
private |
◆ postMessageReceives()
| void SAMRAI::tbox::Schedule::postMessageReceives |
( |
| ) |
|
|
private |
◆ sendMessages()
| void SAMRAI::tbox::Schedule::sendMessages |
( |
| ) |
|
|
private |
◆ performLocalCopies()
| void SAMRAI::tbox::Schedule::performLocalCopies |
( |
| ) |
|
|
private |
◆ processIncomingMessages()
| void SAMRAI::tbox::Schedule::processIncomingMessages |
( |
| ) |
|
|
private |
◆ deallocateSendBuffers()
| void SAMRAI::tbox::Schedule::deallocateSendBuffers |
( |
| ) |
|
|
private |
◆ operator=()
| void SAMRAI::tbox::Schedule::operator= |
( |
const Schedule & |
| ) |
|
|
private |
◆ d_nnodes
| int SAMRAI::tbox::Schedule::d_nnodes |
|
private |
◆ d_incoming
◆ d_outgoing
◆ d_send_set
◆ d_recv_set
◆ d_local_set
The documentation for this class was generated from the following file: