|
OOFEM 3.0
|
#include <combuff.h>
Public Member Functions | |
| CommunicationBuffer (MPI_Comm comm, std::size_t size, bool dynamic=0) | |
| CommunicationBuffer (MPI_Comm comm, bool dynamic=0) | |
| Constructor. Creates empty buffer, using given communicator for packing. | |
| virtual | ~CommunicationBuffer () |
| Destructor. | |
| virtual int | resize (std::size_t newSize)=0 |
| virtual void | init ()=0 |
| virtual void | initForPacking ()=0 |
| Initialize for packing. | |
| virtual void | initForUnpacking ()=0 |
| Initialize for Unpacking (data already received). | |
| int | read (bool &data) override |
| Reads a bool value from data. | |
| int | write (bool data) override |
| Writes a bool value. | |
| int | givePackSizeOfInt (std::size_t count) override |
| int | givePackSizeOfDouble (std::size_t count) override |
| int | givePackSizeOfChar (std::size_t count) override |
| int | givePackSizeOfBool (std::size_t count) override |
| int | givePackSizeOfLong (std::size_t count) override |
| int | givePackSizeOfSizet (std::size_t count) override |
| virtual int | read (int *data, std::size_t count)=0 |
| Reads count integer values into array pointed by data. | |
| int | read (int &data) |
| virtual int | read (unsigned long *data, std::size_t count)=0 |
| Reads count unsigned long values into array pointed by data. | |
| int | read (unsigned long &data) |
| virtual int | read (long *data, std::size_t count)=0 |
| Reads count long values into array pointed by data. | |
| int | read (long &data) |
| virtual int | read (double *data, std::size_t count)=0 |
| Reads count double values into array pointed by data. | |
| int | read (double &data) |
| virtual int | read (char *data, std::size_t count)=0 |
| Reads count char values into array pointed by data. | |
| int | read (char &data) |
| int | read (std ::string &data) |
| Reads a string (stored as an int for the length followed by char*). | |
| virtual int | write (const int *data, std::size_t count)=0 |
| Writes count integer values from array pointed by data. | |
| int | write (int data) |
| virtual int | write (const unsigned long *data, std::size_t count)=0 |
| Writes count unsigned long values from array pointed by data. | |
| int | write (unsigned long data) |
| virtual int | write (const long *data, std::size_t count)=0 |
| Writes count long values from array pointed by data. | |
| int | write (long data) |
| virtual int | write (const double *data, std::size_t count)=0 |
| Writes count double values from array pointed by data. | |
| int | write (double data) |
| virtual int | write (const char *data, std::size_t count)=0 |
| Writes count char values from array pointed by data. | |
| int | write (char data) |
| int | write (const std ::string &data) |
| Reads a string (stored as an int for the length followed by char*). | |
| int | write (const char *data) |
| Writes a string (wrapper needed, otherwise write(bool) is called ). | |
Services for buffer sending/receiving | |
| virtual int | iSend (int dest, int tag)=0 |
| virtual int | iRecv (int source, int tag, std::size_t count=0)=0 |
| virtual int | testCompletion ()=0 |
| virtual int | waitCompletion ()=0 |
| virtual int | bcast (int root)=0 |
| Public Member Functions inherited from oofem::DataStream | |
| virtual | ~DataStream () |
| Destructor. | |
| int | read (int &data) |
| int | read (unsigned long &data) |
| int | read (long &data) |
| int | read (double &data) |
| int | read (char &data) |
| int | read (std ::string &data) |
| Reads a string (stored as an int for the length followed by char*). | |
| int | write (int data) |
| int | write (unsigned long data) |
| int | write (long data) |
| int | write (double data) |
| int | write (char data) |
| int | write (const std ::string &data) |
| Reads a string (stored as an int for the length followed by char*). | |
| int | write (const char *data) |
| Writes a string (wrapper needed, otherwise write(bool) is called ). | |
Protected Attributes | |
| MPI_Comm | communicator |
Class CommunicationBuffer provides abstraction for communication buffer. buffer is used as input or output buffer to various communication services provided by message parsing libraries. It provides methods for buffer initialization and resizing, methods for packing and/or unpacking data to/from buffer. Multiple messages can be packed/unpacked into/from buffer. The services for packing/unpacking take care about multiple messages stored, they maintain proper current buffer position for data inserting/retrieval. Interface to low level message parsing function is provided, allowing to send and receive buffer to selected destination.
|
inline |
Definition at line 232 of file combuff.h.
References communicator.
Referenced by oofem::DynamicCommunicationBuffer::DynamicCommunicationBuffer(), oofem::DynamicCommunicationBuffer::DynamicCommunicationBuffer(), oofem::StaticCommunicationBuffer::StaticCommunicationBuffer(), and oofem::StaticCommunicationBuffer::StaticCommunicationBuffer().
|
inline |
Constructor. Creates empty buffer, using given communicator for packing.
Definition at line 234 of file combuff.h.
References communicator.
|
inlinevirtual |
|
pure virtual |
Initializes broadcast over collaborating processes. The whole buffer size is broadcasted. All buffers participating in broadcast should have the same size.
| root | Rank of broadcast root. |
Implemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
overridevirtual |
Implements oofem::DataStream.
Definition at line 300 of file combuff.C.
References communicator.
Referenced by initForUnpacking().
|
overridevirtual |
Implements oofem::DataStream.
Definition at line 293 of file combuff.C.
References communicator.
Referenced by initForUnpacking().
|
overridevirtual |
Implements oofem::DataStream.
Definition at line 286 of file combuff.C.
References communicator.
Referenced by initForUnpacking().
|
overridevirtual |
Implements oofem::DataStream.
Definition at line 279 of file combuff.C.
References communicator, and my_MPI_SIZE_T.
Referenced by initForUnpacking(), oofem::NonlocalMaterialWTP::migrate(), and oofem::FETICommunicator::setUpCommunicationMaps().
|
overridevirtual |
Implements oofem::DataStream.
Definition at line 307 of file combuff.C.
References communicator.
Referenced by initForUnpacking().
|
overridevirtual |
Implements oofem::DataStream.
Definition at line 314 of file combuff.C.
References communicator, and my_MPI_SIZE_T.
Referenced by initForUnpacking().
|
pure virtual |
Initializes buffer to empty state. All packed data are lost.
Implemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
pure virtual |
Initialize for packing.
Implemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
pure virtual |
Initialize for Unpacking (data already received).
Implemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
References givePackSizeOfBool(), givePackSizeOfChar(), givePackSizeOfDouble(), givePackSizeOfInt(), givePackSizeOfLong(), givePackSizeOfSizet(), read(), oofem::DataStream::read(), write(), and oofem::DataStream::write().
|
pure virtual |
Starts standard mode, nonblocking receive. The buffer must be large enough to receive all data.
| source | Rank of source. |
| tag | Message tag. |
| count | Number of elements to receive (bytes). Causes receive buffer to resize to count elements. If zero (default value) buffer is not resized. |
Implemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
Referenced by oofem::Natural2GlobalOrdering::init().
|
pure virtual |
Starts standard mode, nonblocking send.
| dest | Rank of destination. |
| tag | Message tag. |
Implemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
Referenced by oofem::Natural2GlobalOrdering::init().
|
overridevirtual |
Reads a bool value from data.
Implements oofem::DataStream.
Reimplemented in oofem::StaticCommunicationBuffer.
Definition at line 265 of file combuff.C.
References read().
Referenced by oofem::Natural2GlobalOrdering::init(), initForUnpacking(), oofem::FETISolver::masterUnpackQQProduct(), oofem::FETISolver::masterUnpackRBM(), read(), oofem::FETISolver::unpackDirectionVector(), oofem::FETISolver::unpackGammas(), oofem::FETISolver::unpackPPVector(), oofem::FETISolver::unpackResiduals(), and oofem::FETISolver::unpackSolution().
|
inline |
Definition at line 85 of file datastream.h.
|
virtual |
Reads count char values into array pointed by data.
Implements oofem::DataStream.
Reimplemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
inline |
Definition at line 82 of file datastream.h.
|
virtual |
Reads count double values into array pointed by data.
Implements oofem::DataStream.
Reimplemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
inline |
Definition at line 68 of file datastream.h.
|
virtual |
Reads count integer values into array pointed by data.
Implements oofem::DataStream.
Reimplemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
inline |
Definition at line 79 of file datastream.h.
|
virtual |
Reads count long values into array pointed by data.
Implements oofem::DataStream.
Reimplemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
| int oofem::DataStream::read | ( | std ::string & | data | ) |
Reads a string (stored as an int for the length followed by char*).
Definition at line 89 of file datastream.C.
|
inline |
Definition at line 71 of file datastream.h.
|
virtual |
Reads count unsigned long values into array pointed by data.
Implements oofem::DataStream.
Reimplemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
pure virtual |
Resizes buffer to given size. If buffer size is to be enlarged, then previously packed data are kept in new buffer. Otherwise buffer is cleared using init service. Current implementation only performs buffer growing, request for size decrease is ignored to avoid reallocation if further request for growing is encountered.
| newSize | New buffer size in bytes. |
Implemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
Referenced by oofem::Natural2GlobalOrdering::init().
|
pure virtual |
Tests if the operation identified by this->request is complete. In such case, true is returned and if communication was initiated by nonblocking send/receive, then request handle is set to MPI_REQUEST_NULL. Otherwise call returns flag=false.
Implemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
pure virtual |
Waits until a completion of a nonblocking communication. The completion of a send operation indicates that the sender is now free to update the locations in the send buffer, the completion of a receive operation indicates that the receive buffer contains the received message, the receiver is now free to access it, and that the status object is set. If the communication object associated with this request was created (nonblocking send or receive call), then the object is deallocated by the call to MPI_WAIT and the request handle is set to MPI_REQUEST_NULL.
Implemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
overridevirtual |
Writes a bool value.
Implements oofem::DataStream.
Reimplemented in oofem::StaticCommunicationBuffer.
Definition at line 273 of file combuff.C.
References write().
Referenced by oofem::Natural2GlobalOrdering::init(), initForUnpacking(), oofem::FETISolver::packDirectionVector(), oofem::FETISolver::packGammas(), oofem::FETISolver::packPPVector(), oofem::FETISolver::packQQProducts(), oofem::FETISolver::packRBM(), oofem::FETISolver::packResiduals(), oofem::FETISolver::packSolution(), and write().
|
inline |
Definition at line 117 of file datastream.h.
|
inline |
Writes a string (wrapper needed, otherwise write(bool) is called ).
Definition at line 123 of file datastream.h.
|
virtual |
Writes count char values from array pointed by data.
Implements oofem::DataStream.
Reimplemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
virtual |
Writes count double values from array pointed by data.
Implements oofem::DataStream.
Reimplemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
virtual |
Writes count integer values from array pointed by data.
Implements oofem::DataStream.
Reimplemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
virtual |
Writes count long values from array pointed by data.
Implements oofem::DataStream.
Reimplemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
| int oofem::DataStream::write | ( | const std ::string & | data | ) |
Reads a string (stored as an int for the length followed by char*).
Definition at line 121 of file datastream.C.
|
virtual |
Writes count unsigned long values from array pointed by data.
Implements oofem::DataStream.
Reimplemented in oofem::DynamicCommunicationBuffer, and oofem::StaticCommunicationBuffer.
|
inline |
Definition at line 114 of file datastream.h.
|
inline |
Definition at line 100 of file datastream.h.
|
inline |
Definition at line 111 of file datastream.h.
|
inline |
Definition at line 103 of file datastream.h.
|
protected |
Definition at line 230 of file combuff.h.
Referenced by oofem::DynamicCommunicationBuffer::__read(), oofem::DynamicCommunicationBuffer::__write(), oofem::DynamicCommunicationBuffer::allocateNewPacket(), oofem::StaticCommunicationBuffer::bcast(), CommunicationBuffer(), CommunicationBuffer(), oofem::DynamicCommunicationBuffer::giveFitSize(), givePackSizeOfBool(), givePackSizeOfChar(), givePackSizeOfDouble(), givePackSizeOfInt(), givePackSizeOfLong(), givePackSizeOfSizet(), oofem::DynamicCommunicationBuffer::iRecv(), oofem::StaticCommunicationBuffer::iRecv(), oofem::DynamicCommunicationBuffer::iSend(), oofem::StaticCommunicationBuffer::iSend(), oofem::StaticCommunicationBuffer::read(), oofem::StaticCommunicationBuffer::read(), oofem::StaticCommunicationBuffer::read(), oofem::StaticCommunicationBuffer::read(), oofem::StaticCommunicationBuffer::read(), oofem::DynamicCommunicationBuffer::receiveCompleted(), oofem::StaticCommunicationBuffer::write(), oofem::StaticCommunicationBuffer::write(), oofem::StaticCommunicationBuffer::write(), oofem::StaticCommunicationBuffer::write(), and oofem::StaticCommunicationBuffer::write().