AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
|
Classes | |
class | BinaryTreeCommunicator |
A Communicator that utilizes a binary tree stucture of MPI nodes to scalably pass Message classes. More... | |
class | Combiner |
Abstract base class defining the interface of all Combiner classes. More... | |
class | Communicator |
Abstract base class defining the interface of all Communicator classes. More... | |
class | Lumberjack |
Class that all user interactions with Lumberjack are through. More... | |
class | Message |
Holds information about messages and where they came from. More... | |
class | RootCommunicator |
A Communicator that all MPI nodes communicate with the root node. This class does NOT scale and is provided for demonstration purposes only. More... | |
class | TextEqualityCombiner |
Combines Message classes if their Message::text are equal. More... | |
class | TextTagCombiner |
Combines Message classes if their Message::text and Message::tag are equal. More... | |
Functions | |
const char * | packMessages (const std::vector< Message * > &messages) |
This packs all given Message classes into one const char buffer. More... | |
void | unpackMessages (std::vector< Message * > &messages, const char *packedMessages, const int ranksLimit) |
This unpacks the given const char buffer and adds the created Messages classes to the given vector. More... | |
bool | isPackedMessagesEmpty (const char *packedMessages) |
This checks if a given set of packed messages is empty. More... | |
const char * | mpiBlockingReceiveMessages (MPI_Comm comm) |
Receives any Message sent to this rank. Returns null if terminating message is sent. More... | |
void | mpiNonBlockingSendMessages (MPI_Comm comm, int destinationRank, const char *packedMessagesToBeSent) |
Sends all Message sent to the given rank. More... | |
Variables | |
const char *const | zeroMessage = "0" |
Message to indicate no messages need to be sent from child node. More... | |
const char | memberDelimiter = '*' |
Delimiter used for packing messages and separating their members. More... | |
const char | rankDelimiter = ',' |
Delimiter used for packing messages and separating their individual tracked ranks. More... | |
const char* axom::lumberjack::packMessages | ( | const std::vector< Message * > & | messages | ) |
This packs all given Message classes into one const char buffer.
The messages are packed into the following format: <message count>[*<packed message size>*<packed message>]... This function does not alter the messages vector.
[in] | messages | Message classes to be packed for sending |
void axom::lumberjack::unpackMessages | ( | std::vector< Message * > & | messages, |
const char * | packedMessages, | ||
const int | ranksLimit | ||
) |
This unpacks the given const char buffer and adds the created Messages classes to the given vector.
The messages are packed into the following format: <message count>[*<packed message size>*<packed message>]... This function only adds to the messages vector and does not alter the packagedMessages parameter.
[in,out] | messages | Vector to append created messages to |
[in] | packedMessages | Packed messages to be unpacked |
[in] | ranksLimit | Limits how many ranks are tracked per Message. |
|
inline |
This checks if a given set of packed messages is empty.
[in] | packedMessages | Packed messages to be checked for empty. |
References zeroMessage.
const char* axom::lumberjack::mpiBlockingReceiveMessages | ( | MPI_Comm | comm | ) |
Receives any Message sent to this rank. Returns null if terminating message is sent.
[in] | comm | The MPI Communicator. |
void axom::lumberjack::mpiNonBlockingSendMessages | ( | MPI_Comm | comm, |
int | destinationRank, | ||
const char * | packedMessagesToBeSent | ||
) |
Sends all Message sent to the given rank.
Clears and deletes all Message classes when done.
[in] | comm | The MPI Communicator. |
[in] | destinationRank | Where the Message classes is being sent. |
[in,out] | packedMessagesToBeSent | All of the Message classes to be sent packed together. |
const char* const axom::lumberjack::zeroMessage = "0" |
Message to indicate no messages need to be sent from child node.
const char axom::lumberjack::memberDelimiter = '*' |
Delimiter used for packing messages and separating their members.
const char axom::lumberjack::rankDelimiter = ',' |
Delimiter used for packing messages and separating their individual tracked ranks.