AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
|
A Communicator that utilizes a binary tree stucture of MPI nodes to scalably pass Message classes. More...
#include </home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/develop/src/axom/lumberjack/BinaryTreeCommunicator.hpp>
Public Member Functions | |
void | initialize (MPI_Comm comm, int ranksLimit) |
Called to initialize the Communicator. More... | |
void | finalize () |
Called to finalize the Communicator. More... | |
int | rank () |
Returns the MPI rank of this node. More... | |
void | ranksLimit (int value) |
Sets the rank limit. More... | |
int | ranksLimit () |
Returns the rank limit. More... | |
int | numPushesToFlush () |
Function used by the Lumberjack class to indicate how many individual pushes fully flush all currently held Message classes to the root node. The Communicator class's tree structure dictates this. More... | |
void | push (const char *packedMessagesToBeSent, std::vector< const char * > &receivedPackedMessages) |
All children push their Message classes pushed to their parent and then combined. More... | |
bool | isOutputNode () |
Function used by the Lumberjack to indicate whether this node should be outputting messages. Only the root node outputs messages. More... | |
A Communicator that utilizes a binary tree stucture of MPI nodes to scalably pass Message classes.
You will need to add your Communicator using Lumberjack::initialize.
|
virtual |
Called to initialize the Communicator.
This performs any setup work the Communicator needs before doing any work. It is required that this is called before using the Communicator.
[in] | comm | The MPI Communicator |
[in] | ranksLimit | Limit on how many ranks are individually tracked per Message. |
Implements axom::lumberjack::Communicator.
|
virtual |
Called to finalize the Communicator.
This performs any cleanup work the Communicator needs to do before going away. It is required that this is the last function called by the Communicator.
Implements axom::lumberjack::Communicator.
|
virtual |
Returns the MPI rank of this node.
Implements axom::lumberjack::Communicator.
|
virtual |
Sets the rank limit.
This is the limit on how many ranks generated a given message are individually tracked per Message. After the limit has been reached, only the Message::rankCount is incremented.
[in] | value | limits how many ranks are tracked per Message. |
Implements axom::lumberjack::Communicator.
|
virtual |
Returns the rank limit.
This is the limit on how many ranks generated a given message are individually tracked per Message. After the limit has been reached, only the Message::rankCount is incremented.
Implements axom::lumberjack::Communicator.
|
virtual |
Function used by the Lumberjack class to indicate how many individual pushes fully flush all currently held Message classes to the root node. The Communicator class's tree structure dictates this.
Implements axom::lumberjack::Communicator.
|
virtual |
All children push their Message classes pushed to their parent and then combined.
[in] | packedMessagesToBeSent | All of this rank's Message classes packed into a single buffer. |
[in,out] | receivedPackedMessages | Received packed message buffers from this nodes children. |
This is helpful when you want to spread your Lumberjack work over a set of your work. Instead of doing all of Lumberjack's work at one point in your program. This does not guarantee your Message will be ready to output. After this call only Message classes at the root node will be returned from Lumberjack::getMessages.
Implements axom::lumberjack::Communicator.
|
virtual |
Function used by the Lumberjack to indicate whether this node should be outputting messages. Only the root node outputs messages.
Implements axom::lumberjack::Communicator.