Output inter-processor communications stream using MPI send/recv etc. - operating on external buffer. More...
Public Member Functions | |
UOPstream (const UPstream::commsTypes commsType, const int toProcNo, DynamicList< char > &sendBuf, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm, const bool sendAtDestruct=true, IOstreamOption::streamFormat fmt=IOstreamOption::BINARY) | |
Construct given process index to write to using the given attached send buffer, optional communication characteristics and IO format. More... | |
UOPstream (const int toProcNo, PstreamBuffers &buffers) | |
Construct given buffers. More... | |
UOPstream (DynamicList< char > &sendBuf, IOstreamOption::streamFormat fmt=IOstreamOption::BINARY) | |
Construct for writing into a standalone buffer. Data transfer is handled externally by the caller. More... | |
virtual | ~UOPstream () |
Destructor, usually sends buffer on destruct. More... | |
bool | send () |
Send buffer contents now and not in destructor [advanced usage]. Returns true on success. More... | |
virtual bool | write (const token &tok) override |
Use all write methods from base class. More... | |
virtual Ostream & | write (const char c) override |
Use all write methods from base class. More... | |
virtual Ostream & | write (const char *str) override |
Use all write methods from base class. More... | |
virtual Ostream & | write (const word &str) override |
Use all write methods from base class. More... | |
virtual Ostream & | write (const std::string &str) override |
Use all write methods from base class. More... | |
virtual Ostream & | write (const int32_t val) override |
Use all write methods from base class. More... | |
virtual Ostream & | write (const int64_t val) override |
Use all write methods from base class. More... | |
virtual Ostream & | write (const float val) override |
Use all write methods from base class. More... | |
virtual Ostream & | write (const double val) override |
Use all write methods from base class. More... | |
virtual Ostream & | write (const char *data, std::streamsize count) override |
Use all write methods from base class. More... | |
Public Member Functions inherited from UOPstreamBase | |
virtual | ~UOPstreamBase () |
Destructor. More... | |
virtual std::ios_base::fmtflags | flags () const override |
Return current stream flags. Dummy for parallel stream, returns 0. More... | |
virtual std::ios_base::fmtflags | flags (std::ios_base::fmtflags) override |
Set stream flags, return old stream flags. Dummy for parallel stream, returns 0. More... | |
virtual bool | write (const token &tok) override |
Write token to stream or otherwise handle it. More... | |
virtual Ostream & | write (const char c) override |
Write single character. Whitespace is suppressed. More... | |
virtual Ostream & | writeQuoted (const char *str, std::streamsize len, const bool quoted=true) override |
Write character/string content, with/without surrounding quotes. More... | |
virtual Ostream & | write (const char *str) override |
Write the word-characters of a character string. More... | |
virtual Ostream & | write (const word &str) override |
Write word. More... | |
virtual Ostream & | write (const std::string &str) override |
Write string. More... | |
virtual Ostream & | write (const int32_t val) override |
Write int32_t as a label. More... | |
virtual Ostream & | write (const int64_t val) override |
Write int64_t as a label. More... | |
virtual Ostream & | write (const float val) override |
Write float. More... | |
virtual Ostream & | write (const double val) override |
Write double. More... | |
virtual Ostream & | write (const char *data, std::streamsize count) override |
Write binary block with 8-byte alignment. More... | |
virtual Ostream & | writeRaw (const char *data, std::streamsize count) override |
Low-level raw binary output. More... | |
virtual bool | beginRawWrite (std::streamsize count) override |
Begin marker for low-level raw binary output. More... | |
virtual bool | endRawWrite () override |
End marker for low-level raw binary output. More... | |
virtual void | indent () override |
Add indentation characters. More... | |
virtual void | flush () override |
Flush stream. More... | |
virtual void | endl () override |
Add newline and flush stream. More... | |
virtual char | fill () const override |
Get the current padding character. More... | |
virtual char | fill (const char) override |
Set padding character for formatted field up to field width. More... | |
virtual int | width () const override |
Get width of output field. More... | |
virtual int | width (const int) override |
Set width of output field. More... | |
virtual int | precision () const override |
Get precision of output field. More... | |
virtual int | precision (const int) override |
Set precision of output field. More... | |
virtual void | rewind () |
Rewind the send buffer for overwriting. More... | |
void | print (Ostream &os) const override |
Print stream description to Ostream. More... | |
virtual Ostream & | writeQuoted (const char *str, std::streamsize len, const bool quoted=true)=0 |
Inherit write methods from Ostream. More... | |
virtual Ostream & | writeQuoted (const std::string &str, const bool quoted=true) |
Inherit write methods from Ostream. More... | |
Public Member Functions inherited from UPstream | |
ClassName ("UPstream") | |
Declare name of the class and its debug switch. More... | |
UPstream (const commsTypes commsType) noexcept | |
Construct for given communication type. More... | |
commsTypes | commsType () const noexcept |
Get the communications type of the stream. More... | |
commsTypes | commsType (const commsTypes ct) noexcept |
Set the communications type of the stream. More... | |
template<class T > | |
Foam::List< T > | allGatherValues (const T &localValue, const label comm) |
template<class T > | |
Foam::List< T > | listGatherValues (const T &localValue, const label comm) |
Public Member Functions inherited from Ostream | |
Ostream (const Ostream &)=default | |
Copy construct. More... | |
virtual | ~Ostream ()=default |
Destructor. More... | |
Ostream (IOstreamOption streamOpt=IOstreamOption()) | |
Default construct (ASCII, uncompressed), construct with specified stream option. More... | |
Ostream (IOstreamOption::streamFormat fmt, IOstreamOption::compressionType cmp=IOstreamOption::UNCOMPRESSED) | |
Construct with format (uncompressed) More... | |
virtual Ostream & | writeQuoted (const std::string &str, const bool quoted=true) |
Write string content, with/without surrounding quotes. More... | |
virtual Ostream & | write (const keyType &kw) |
Write keyType. More... | |
unsigned short | indentSize () const noexcept |
Return indent size (spaces per level) More... | |
unsigned short | indentSize (unsigned short val) noexcept |
Change indent size (spaces per level), return old value. More... | |
unsigned short | indentLevel () const noexcept |
Return the indent level. More... | |
unsigned short | indentLevel (unsigned short val) noexcept |
Change the indent level, return old value. More... | |
void | incrIndent () noexcept |
Increment the indent level. More... | |
void | decrIndent () |
Decrement the indent level. More... | |
virtual Ostream & | writeKeyword (const keyType &kw) |
Write the keyword followed by an appropriate indentation. More... | |
virtual Ostream & | beginBlock (const keyType &kw) |
Write begin block group with the given name. More... | |
virtual Ostream & | beginBlock () |
Write begin block group without a name. More... | |
virtual Ostream & | endBlock () |
Write end block group. More... | |
virtual Ostream & | endEntry () |
Write end entry (';') followed by newline. More... | |
template<class T > | |
Ostream & | writeEntry (const keyType &key, const T &value) |
Write a keyword/value entry. More... | |
template<class T > | |
Ostream & | writeEntryIfDifferent (const word &key, const T &value1, const T &value2) |
Write a keyword/value entry only when the two values differ. More... | |
Ostream & | operator() () const |
Return a non-const reference to const Ostream. More... | |
unsigned short & | indentLevel () noexcept |
Access to indent level. More... | |
unsigned short & | indentSize () noexcept |
Access to indent size. More... | |
Public Member Functions inherited from IOstream | |
IOstream (const IOstream &)=default | |
Copy construct. More... | |
virtual | ~IOstream ()=default |
Destructor. More... | |
IOstream (IOstreamOption streamOpt=IOstreamOption()) | |
Default construct (ASCII, uncompressed), construct with specified stream option. More... | |
IOstream (IOstreamOption::streamFormat fmt, IOstreamOption::versionNumber ver, IOstreamOption::compressionType cmp=IOstreamOption::UNCOMPRESSED) | |
Construct with format, version (compression) More... | |
virtual const fileName & | name () const |
The name of the stream. More... | |
fileName | relativeName () const |
Return the name of the stream relative to the current case. More... | |
virtual bool | check (const char *operation) const |
Check IOstream status for given operation. More... | |
bool | fatalCheck (const char *operation) const |
Check IOstream status for given operation. More... | |
bool | opened () const noexcept |
True if stream has been opened. More... | |
bool | closed () const noexcept |
True if stream is closed. More... | |
bool | good () const noexcept |
True if next operation might succeed. More... | |
bool | eof () const noexcept |
True if end of input seen. More... | |
bool | fail () const noexcept |
True if next operation will fail. More... | |
bool | bad () const noexcept |
True if stream is corrupted. More... | |
operator bool () const noexcept | |
Return true if the stream has not failed. More... | |
bool | operator! () const noexcept |
Return true if the stream has failed. More... | |
unsigned | labelByteSize () const noexcept |
The sizeof (label) in bytes associated with the stream. More... | |
unsigned | scalarByteSize () const noexcept |
The sizeof (scalar) in bytes associated with the stream. More... | |
void | setLabelByteSize (unsigned nbytes) noexcept |
Set the sizeof (label) in bytes associated with the stream. More... | |
void | setScalarByteSize (unsigned nbytes) noexcept |
Set the sizeof (scalar) in bytes associated with the stream. More... | |
template<class T = label> | |
std::enable_if< std::is_integral< T >::value, bool >::type | checkLabelSize () const noexcept |
Check if the label byte-size associated with the stream is the same as the given type. More... | |
template<class T = scalar> | |
std::enable_if< std::is_floating_point< T >::value, bool >::type | checkScalarSize () const noexcept |
Check if the scalar byte-size associated with the stream is the same as the given type. More... | |
label | lineNumber () const noexcept |
Const access to the current stream line number. More... | |
label & | lineNumber () noexcept |
Non-const access to the current stream line number. More... | |
label | lineNumber (const label num) noexcept |
Set the stream line number. More... | |
void | setEof () noexcept |
Set stream state as reached 'eof'. More... | |
void | setFail () noexcept |
Set stream state as 'failed'. More... | |
void | setBad () noexcept |
Set stream state to be 'bad'. More... | |
std::ios_base::fmtflags | setf (std::ios_base::fmtflags f) |
Set stream flag(s), return old stream flags. More... | |
std::ios_base::fmtflags | setf (const std::ios_base::fmtflags f, const std::ios_base::fmtflags mask) |
Set stream flag(s) with mask, return old stream flags. More... | |
void | unsetf (std::ios_base::fmtflags f) |
Unset flags of stream. More... | |
void | print (Ostream &os, const int streamState) const |
Print information about the stream state bits. More... | |
InfoProxy< IOstream > | info () const noexcept |
Return info proxy, used to print IOstream information to a stream. More... | |
Public Member Functions inherited from IOstreamOption | |
constexpr | IOstreamOption (streamFormat fmt=streamFormat::ASCII, compressionType comp=compressionType::UNCOMPRESSED) noexcept |
Default construct (ASCII, UNCOMPRESSED, currentVersion) or construct with format, compression. More... | |
constexpr | IOstreamOption (streamFormat fmt, compressionType comp, versionNumber ver) noexcept |
Construct from components (format, compression, version) More... | |
constexpr | IOstreamOption (streamFormat fmt, versionNumber ver, compressionType comp=compressionType::UNCOMPRESSED) noexcept |
Construct from components (format, version, compression) More... | |
IOstreamOption (const IOstreamOption &opt, streamFormat fmt) noexcept | |
Copy construct with change of format. More... | |
streamFormat | format () const noexcept |
Get the current stream format. More... | |
streamFormat | format (const streamFormat fmt) noexcept |
Set the stream format. More... | |
streamFormat | format (const word &formatName) |
Set the stream format from string value. More... | |
compressionType | compression () const noexcept |
Get the stream compression. More... | |
compressionType | compression (const compressionType comp) noexcept |
Set the stream compression. More... | |
compressionType | compression (const word &compName) |
Set the stream compression from string value. More... | |
versionNumber | version () const noexcept |
Get the stream version. More... | |
versionNumber | version (const versionNumber ver) noexcept |
Set the stream version. More... | |
versionNumber | version (const token &tok) |
Set the stream version from token. More... | |
Static Public Member Functions | |
static bool | write (const UPstream::commsTypes commsType, const int toProcNo, const char *buf, const std::streamsize bufSize, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm, UPstream::Request *req=nullptr, const UPstream::sendModes sendMode=UPstream::sendModes::normal) |
Write buffer contents to given processor. More... | |
static bool | write (UPstream::Request &req, const int toProcNo, const char *buf, const std::streamsize bufSize, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm, const UPstream::sendModes sendMode=UPstream::sendModes::normal) |
Write buffer contents (non-blocking) to given processor. More... | |
template<class Type > | |
static bool | write (const UPstream::commsTypes commsType, const int toProcNo, const UList< Type > &buffer, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm, UPstream::Request *req=nullptr, const UPstream::sendModes sendMode=UPstream::sendModes::normal) |
Write UList contents to given processor. More... | |
template<class Type > | |
static bool | write (UPstream::Request &req, const int toProcNo, const UList< Type > &buffer, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm, const UPstream::sendModes sendMode=UPstream::sendModes::normal) |
Write UList contents (non-blocking) to given processor. More... | |
Static Public Member Functions inherited from UPstream | |
static constexpr label | commGlobal () noexcept |
Communicator for all ranks, irrespective of any local worlds. More... | |
static constexpr label | commSelf () noexcept |
Communicator within the current rank only. More... | |
static label | commWorld () noexcept |
Communicator for all ranks (respecting any local worlds) More... | |
static label | commWorld (const label communicator) noexcept |
Set world communicator. Negative values are a no-op. More... | |
static label | commWarn (const label communicator) noexcept |
Alter communicator debugging setting. Warns for use of any communicator differing from specified. More... | |
static label | nComms () noexcept |
Number of currently defined communicators. More... | |
static void | printCommTree (const label communicator) |
Debugging: print the communication tree. More... | |
static label | commIntraHost () |
Demand-driven: Intra-host communicator (respects any local worlds) More... | |
static label | commInterHost () |
Demand-driven: Inter-host communicator (respects any local worlds) More... | |
static bool | hasHostComms () |
Test for presence of any intra or inter host communicators. More... | |
static void | clearHostComms () |
Remove any existing intra and inter host communicators. More... | |
static label | allocateCommunicator (const label parent, const labelRange &subRanks, const bool withComponents=true) |
Allocate new communicator with contiguous sub-ranks on the parent communicator. More... | |
static label | allocateCommunicator (const label parent, const labelUList &subRanks, const bool withComponents=true) |
Allocate new communicator with sub-ranks on the parent communicator. More... | |
static void | freeCommunicator (const label communicator, const bool withComponents=true) |
Free a previously allocated communicator. More... | |
static label | allocateInterHostCommunicator (const label parentCommunicator=worldComm) |
Allocate an inter-host communicator. More... | |
static label | allocateIntraHostCommunicator (const label parentCommunicator=worldComm) |
Allocate an intra-host communicator. More... | |
static int | baseProcNo (label comm, int procID) |
Return physical processor number (i.e. processor number in worldComm) given communicator and processor. More... | |
static label | procNo (const label comm, const int baseProcID) |
Return processor number in communicator (given physical processor number) (= reverse of baseProcNo) More... | |
static label | procNo (const label comm, const label currentComm, const int currentProcID) |
Return processor number in communicator (given processor number and communicator) More... | |
static void | addValidParOptions (HashTable< string > &validParOptions) |
Add the valid option this type of communications library adds/requires on the command line. More... | |
static bool | init (int &argc, char **&argv, const bool needsThread) |
Initialisation function called from main. More... | |
static bool | initNull () |
Special purpose initialisation function. More... | |
static void | barrier (const label communicator, UPstream::Request *req=nullptr) |
Impose a synchronisation barrier (optionally non-blocking) More... | |
static std::pair< int, int64_t > | probeMessage (const UPstream::commsTypes commsType, const int fromProcNo, const int tag=UPstream::msgType(), const label communicator=worldComm) |
Probe for an incoming message. More... | |
static label | nRequests () noexcept |
Number of outstanding requests (on the internal list of requests) More... | |
static void | resetRequests (const label n) |
Truncate outstanding requests to given length, which is expected to be in the range [0 to nRequests()]. More... | |
static void | addRequest (UPstream::Request &req) |
Transfer the (wrapped) MPI request to the internal global list. More... | |
static void | cancelRequest (const label i) |
Non-blocking comms: cancel and free outstanding request. Corresponds to MPI_Cancel() + MPI_Request_free() More... | |
static void | cancelRequest (UPstream::Request &req) |
Non-blocking comms: cancel and free outstanding request. Corresponds to MPI_Cancel() + MPI_Request_free() More... | |
static void | cancelRequests (UList< UPstream::Request > &requests) |
Non-blocking comms: cancel and free outstanding requests. Corresponds to MPI_Cancel() + MPI_Request_free() More... | |
static void | removeRequests (const label pos, label len=-1) |
Non-blocking comms: cancel/free outstanding requests (from position onwards) and remove from internal list of requests. Corresponds to MPI_Cancel() + MPI_Request_free() More... | |
static void | freeRequest (UPstream::Request &req) |
Non-blocking comms: free outstanding request. Corresponds to MPI_Request_free() More... | |
static void | freeRequests (UList< UPstream::Request > &requests) |
Non-blocking comms: free outstanding requests. Corresponds to MPI_Request_free() More... | |
static void | waitRequests (const label pos, label len=-1) |
Wait until all requests (from position onwards) have finished. Corresponds to MPI_Waitall() More... | |
static void | waitRequests (UList< UPstream::Request > &requests) |
Wait until all requests have finished. Corresponds to MPI_Waitall() More... | |
static bool | waitAnyRequest (const label pos, label len=-1) |
Wait until any request (from position onwards) has finished. Corresponds to MPI_Waitany() More... | |
static bool | waitSomeRequests (const label pos, label len=-1, DynamicList< int > *indices=nullptr) |
Wait until some requests (from position onwards) have finished. Corresponds to MPI_Waitsome() More... | |
static bool | waitSomeRequests (UList< UPstream::Request > &requests, DynamicList< int > *indices=nullptr) |
Wait until some requests have finished. Corresponds to MPI_Waitsome() More... | |
static label | waitAnyRequest (UList< UPstream::Request > &requests) |
Wait until any request has finished and return its index. Corresponds to MPI_Waitany() More... | |
static void | waitRequest (const label i) |
Wait until request i has finished. Corresponds to MPI_Wait() More... | |
static void | waitRequest (UPstream::Request &req) |
Wait until specified request has finished. Corresponds to MPI_Wait() More... | |
static bool | finishedRequest (const label i) |
Non-blocking comms: has request i finished? Corresponds to MPI_Test() More... | |
static bool | finishedRequest (UPstream::Request &req) |
Non-blocking comms: has request finished? Corresponds to MPI_Test() More... | |
static bool | finishedRequests (const label pos, label len=-1) |
Non-blocking comms: have all requests (from position onwards) finished? Corresponds to MPI_Testall() More... | |
static bool | finishedRequests (UList< UPstream::Request > &requests) |
Non-blocking comms: have all requests finished? Corresponds to MPI_Testall() More... | |
static bool | finishedRequestPair (label &req0, label &req1) |
Non-blocking comms: have both requests finished? Corresponds to pair of MPI_Test() More... | |
static void | waitRequestPair (label &req0, label &req1) |
Non-blocking comms: wait for both requests to finish. Corresponds to pair of MPI_Wait() More... | |
static bool | parRun (const bool on) noexcept |
Set as parallel run on/off. More... | |
static bool & | parRun () noexcept |
Test if this a parallel run. More... | |
static bool | haveThreads () noexcept |
Have support for threads. More... | |
static constexpr int | masterNo () noexcept |
Relative rank for the master process - is always 0. More... | |
static label | nProcs (const label communicator=worldComm) |
Number of ranks in parallel run (for given communicator). It is 1 for serial run. More... | |
static int | myProcNo (const label communicator=worldComm) |
Rank of this process in the communicator (starting from masterNo()). Can be negative if the process is not a rank in the communicator. More... | |
static bool | master (const label communicator=worldComm) |
True if process corresponds to the master rank in the communicator. More... | |
static bool | is_rank (const label communicator=worldComm) |
True if process corresponds to any rank (master or sub-rank) in the given communicator. More... | |
static bool | is_subrank (const label communicator=worldComm) |
True if process corresponds to a sub-rank in the given communicator. More... | |
static bool | is_parallel (const label communicator=worldComm) |
True if parallel algorithm or exchange is required. More... | |
static label | parent (const label communicator) |
The parent communicator. More... | |
static List< int > & | procID (const label communicator) |
The list of ranks within a given communicator. More... | |
static const wordList & | allWorlds () noexcept |
All worlds. More... | |
static const labelList & | worldIDs () noexcept |
The indices into allWorlds for all processes. More... | |
static label | myWorldID () |
My worldID. More... | |
static const word & | myWorld () |
My world. More... | |
static rangeType | allProcs (const label communicator=worldComm) |
Range of process indices for all processes. More... | |
static rangeType | subProcs (const label communicator=worldComm) |
Range of process indices for sub-processes. More... | |
static const List< commsStruct > & | linearCommunication (const label communicator=worldComm) |
Communication schedule for linear all-to-master (proc 0) More... | |
static const List< commsStruct > & | treeCommunication (const label communicator=worldComm) |
Communication schedule for tree all-to-master (proc 0) More... | |
static const List< commsStruct > & | whichCommunication (const label communicator=worldComm) |
Communication schedule for all-to-master (proc 0) as linear/tree/none with switching based on UPstream::nProcsSimpleSum and the is_parallel() state. More... | |
static int & | msgType () noexcept |
Message tag of standard messages. More... | |
static int | msgType (int val) noexcept |
Set the message tag for standard messages. More... | |
static int | incrMsgType (int val=1) noexcept |
Increment the message tag for standard messages. More... | |
static void | shutdown (int errNo=0) |
Shutdown (finalize) MPI as required. More... | |
static void | abort () |
Call MPI_Abort with no other checks or cleanup. More... | |
static void | exit (int errNo=1) |
Shutdown (finalize) MPI as required and exit program with errNo. More... | |
static void | allToAll (const UList< int32_t > &sendData, UList< int32_t > &recvData, const label communicator=worldComm) |
Exchange int32_t data with all ranks in communicator. More... | |
static void | allToAllConsensus (const UList< int32_t > &sendData, UList< int32_t > &recvData, const int tag, const label communicator=worldComm) |
Exchange non-zero int32_t data between ranks [NBX]. More... | |
static void | allToAllConsensus (const Map< int32_t > &sendData, Map< int32_t > &recvData, const int tag, const label communicator=worldComm) |
Exchange int32_t data between ranks [NBX]. More... | |
static Map< int32_t > | allToAllConsensus (const Map< int32_t > &sendData, const int tag, const label communicator=worldComm) |
Exchange int32_t data between ranks [NBX]. More... | |
static void | allToAll (const UList< int64_t > &sendData, UList< int64_t > &recvData, const label communicator=worldComm) |
Exchange int64_t data with all ranks in communicator. More... | |
static void | allToAllConsensus (const UList< int64_t > &sendData, UList< int64_t > &recvData, const int tag, const label communicator=worldComm) |
Exchange non-zero int64_t data between ranks [NBX]. More... | |
static void | allToAllConsensus (const Map< int64_t > &sendData, Map< int64_t > &recvData, const int tag, const label communicator=worldComm) |
Exchange int64_t data between ranks [NBX]. More... | |
static Map< int64_t > | allToAllConsensus (const Map< int64_t > &sendData, const int tag, const label communicator=worldComm) |
Exchange int64_t data between ranks [NBX]. More... | |
static void | mpiGather (const char *sendData, char *recvData, int count, const label communicator=worldComm) |
Receive identically-sized char data from all ranks. More... | |
static void | mpiScatter (const char *sendData, char *recvData, int count, const label communicator=worldComm) |
Send identically-sized char data to all ranks. More... | |
static void | mpiAllGather (char *allData, int count, const label communicator=worldComm) |
Gather/scatter identically-sized char data. More... | |
static void | gather (const char *sendData, int sendCount, char *recvData, const UList< int > &recvCounts, const UList< int > &recvOffsets, const label communicator=worldComm) |
Receive variable length char data from all ranks. More... | |
static void | scatter (const char *sendData, const UList< int > &sendCounts, const UList< int > &sendOffsets, char *recvData, int recvCount, const label communicator=worldComm) |
Send variable length char data to all ranks. More... | |
static void | mpiGather (const int32_t *sendData, int32_t *recvData, int count, const label communicator=worldComm) |
Receive identically-sized int32_t data from all ranks. More... | |
static void | mpiScatter (const int32_t *sendData, int32_t *recvData, int count, const label communicator=worldComm) |
Send identically-sized int32_t data to all ranks. More... | |
static void | mpiAllGather (int32_t *allData, int count, const label communicator=worldComm) |
Gather/scatter identically-sized int32_t data. More... | |
static void | gather (const int32_t *sendData, int sendCount, int32_t *recvData, const UList< int > &recvCounts, const UList< int > &recvOffsets, const label communicator=worldComm) |
Receive variable length int32_t data from all ranks. More... | |
static void | scatter (const int32_t *sendData, const UList< int > &sendCounts, const UList< int > &sendOffsets, int32_t *recvData, int recvCount, const label communicator=worldComm) |
Send variable length int32_t data to all ranks. More... | |
static void | mpiGather (const int64_t *sendData, int64_t *recvData, int count, const label communicator=worldComm) |
Receive identically-sized int64_t data from all ranks. More... | |
static void | mpiScatter (const int64_t *sendData, int64_t *recvData, int count, const label communicator=worldComm) |
Send identically-sized int64_t data to all ranks. More... | |
static void | mpiAllGather (int64_t *allData, int count, const label communicator=worldComm) |
Gather/scatter identically-sized int64_t data. More... | |
static void | gather (const int64_t *sendData, int sendCount, int64_t *recvData, const UList< int > &recvCounts, const UList< int > &recvOffsets, const label communicator=worldComm) |
Receive variable length int64_t data from all ranks. More... | |
static void | scatter (const int64_t *sendData, const UList< int > &sendCounts, const UList< int > &sendOffsets, int64_t *recvData, int recvCount, const label communicator=worldComm) |
Send variable length int64_t data to all ranks. More... | |
static void | mpiGather (const uint32_t *sendData, uint32_t *recvData, int count, const label communicator=worldComm) |
Receive identically-sized uint32_t data from all ranks. More... | |
static void | mpiScatter (const uint32_t *sendData, uint32_t *recvData, int count, const label communicator=worldComm) |
Send identically-sized uint32_t data to all ranks. More... | |
static void | mpiAllGather (uint32_t *allData, int count, const label communicator=worldComm) |
Gather/scatter identically-sized uint32_t data. More... | |
static void | gather (const uint32_t *sendData, int sendCount, uint32_t *recvData, const UList< int > &recvCounts, const UList< int > &recvOffsets, const label communicator=worldComm) |
Receive variable length uint32_t data from all ranks. More... | |
static void | scatter (const uint32_t *sendData, const UList< int > &sendCounts, const UList< int > &sendOffsets, uint32_t *recvData, int recvCount, const label communicator=worldComm) |
Send variable length uint32_t data to all ranks. More... | |
static void | mpiGather (const uint64_t *sendData, uint64_t *recvData, int count, const label communicator=worldComm) |
Receive identically-sized uint64_t data from all ranks. More... | |
static void | mpiScatter (const uint64_t *sendData, uint64_t *recvData, int count, const label communicator=worldComm) |
Send identically-sized uint64_t data to all ranks. More... | |
static void | mpiAllGather (uint64_t *allData, int count, const label communicator=worldComm) |
Gather/scatter identically-sized uint64_t data. More... | |
static void | gather (const uint64_t *sendData, int sendCount, uint64_t *recvData, const UList< int > &recvCounts, const UList< int > &recvOffsets, const label communicator=worldComm) |
Receive variable length uint64_t data from all ranks. More... | |
static void | scatter (const uint64_t *sendData, const UList< int > &sendCounts, const UList< int > &sendOffsets, uint64_t *recvData, int recvCount, const label communicator=worldComm) |
Send variable length uint64_t data to all ranks. More... | |
static void | mpiGather (const float *sendData, float *recvData, int count, const label communicator=worldComm) |
Receive identically-sized float data from all ranks. More... | |
static void | mpiScatter (const float *sendData, float *recvData, int count, const label communicator=worldComm) |
Send identically-sized float data to all ranks. More... | |
static void | mpiAllGather (float *allData, int count, const label communicator=worldComm) |
Gather/scatter identically-sized float data. More... | |
static void | gather (const float *sendData, int sendCount, float *recvData, const UList< int > &recvCounts, const UList< int > &recvOffsets, const label communicator=worldComm) |
Receive variable length float data from all ranks. More... | |
static void | scatter (const float *sendData, const UList< int > &sendCounts, const UList< int > &sendOffsets, float *recvData, int recvCount, const label communicator=worldComm) |
Send variable length float data to all ranks. More... | |
static void | mpiGather (const double *sendData, double *recvData, int count, const label communicator=worldComm) |
Receive identically-sized double data from all ranks. More... | |
static void | mpiScatter (const double *sendData, double *recvData, int count, const label communicator=worldComm) |
Send identically-sized double data to all ranks. More... | |
static void | mpiAllGather (double *allData, int count, const label communicator=worldComm) |
Gather/scatter identically-sized double data. More... | |
static void | gather (const double *sendData, int sendCount, double *recvData, const UList< int > &recvCounts, const UList< int > &recvOffsets, const label communicator=worldComm) |
Receive variable length double data from all ranks. More... | |
static void | scatter (const double *sendData, const UList< int > &sendCounts, const UList< int > &sendOffsets, double *recvData, int recvCount, const label communicator=worldComm) |
Send variable length double data to all ranks. More... | |
template<class T > | |
static List< T > | allGatherValues (const T &localValue, const label communicator=worldComm) |
Allgather individual values into list locations. More... | |
template<class T > | |
static List< T > | listGatherValues (const T &localValue, const label communicator=worldComm) |
Gather individual values into list locations. More... | |
template<class T > | |
static T | listScatterValues (const UList< T > &allValues, const label communicator=worldComm) |
Scatter individual values from list locations. More... | |
static bool | broadcast (char *buf, const std::streamsize bufSize, const label communicator, const int rootProcNo=masterNo()) |
Broadcast buffer contents to all processes in given communicator. The sizes must match on all processes. More... | |
static void | reduceAnd (bool &value, const label communicator=worldComm) |
Logical (and) reduction (MPI_AllReduce) More... | |
static void | reduceOr (bool &value, const label communicator=worldComm) |
Logical (or) reduction (MPI_AllReduce) More... | |
static void | waitRequests () |
Wait for all requests to finish. More... | |
static constexpr int | firstSlave () noexcept |
Process index of first sub-process. More... | |
Static Public Member Functions inherited from IOstream | |
static unsigned int | defaultPrecision () noexcept |
Return the default precision. More... | |
static unsigned int | defaultPrecision (unsigned int prec) noexcept |
Reset the default precision. More... | |
static unsigned int | minPrecision (unsigned int prec) noexcept |
Set the minimum default precision. More... | |
Static Public Member Functions inherited from IOstreamOption | |
static floatFormat | floatFormatEnum (const word &fmtName, const floatFormat deflt=floatFormat::general) |
Lookup floatFormat enum corresponding to the string (general | fixed | scientific). More... | |
static floatFormat | floatFormatEnum (const word &key, const dictionary &dict, const floatFormat deflt=floatFormat::general) |
getOrDefault floatFormat from dictionary, warn only on bad enumeration. More... | |
static streamFormat | formatEnum (const word &fmtName, const streamFormat deflt=streamFormat::ASCII) |
Lookup streamFormat enum corresponding to the string (ascii | binary). More... | |
static streamFormat | formatEnum (const word &key, const dictionary &dict, const streamFormat deflt=streamFormat::ASCII) |
getOrDefault streamFormat from dictionary, warn only on bad enumeration. More... | |
static compressionType | compressionEnum (const word &compName, const compressionType deflt=compressionType::UNCOMPRESSED) |
The compression enum corresponding to the string. More... | |
static compressionType | compressionEnum (const word &key, const dictionary &dict, const compressionType deflt=compressionType::UNCOMPRESSED) |
getOrDefault compressionType from dictionary, warn only on bad enumeration. More... | |
Additional Inherited Members | |
Public Types inherited from UPstream | |
enum | commsTypes : char { buffered, scheduled, nonBlocking, blocking = buffered } |
Communications types. More... | |
enum | sendModes : char { normal, sync } |
Different MPI-send modes (ignored for commsTypes::buffered) More... | |
typedef IntRange< int > | rangeType |
Int ranges are used for MPI ranks (processes) More... | |
Public Types inherited from IOstream | |
enum | streamAccess : char { CLOSED = 0, OPENED } |
Enumeration for stream open/closed state. More... | |
Public Types inherited from IOstreamOption | |
enum | streamFormat : char { ASCII = 0, BINARY } |
Data format (ascii | binary) More... | |
enum | compressionType : char { UNCOMPRESSED = 0, COMPRESSED } |
Compression treatment (UNCOMPRESSED | COMPRESSED) More... | |
enum | appendType : char { NO_APPEND = 0, APPEND_APP, APPEND_ATE, NON_APPEND = NO_APPEND, APPEND = APPEND_APP } |
File appending (NO_APPEND | APPEND_APP | APPEND_ATE) More... | |
enum | atomicType : char { NON_ATOMIC = 0, ATOMIC } |
Atomic operations (output) More... | |
enum | floatFormat : unsigned { general = unsigned(0), fixed = unsigned(std::ios_base::fixed), scientific = unsigned(std::ios_base::scientific) } |
Float formats (eg, time directory name formats) More... | |
Static Public Attributes inherited from UPstream | |
static const Enum< commsTypes > | commsTypeNames |
Enumerated names for the communication types. More... | |
static bool | floatTransfer |
Should compact transfer be used in which floats replace doubles reducing the bandwidth requirement at the expense of some loss in accuracy. More... | |
static int | nProcsSimpleSum |
Number of processors to change from linear to tree communication. More... | |
static int | nProcsNonblockingExchange |
Number of processors to change to nonBlocking consensual exchange (NBX). Ignored for zero or negative values. More... | |
static int | nPollProcInterfaces |
Number of polling cycles in processor updates. More... | |
static commsTypes | defaultCommsType |
Default commsType. More... | |
static int | maxCommsSize |
Optional maximum message size (bytes) More... | |
static int | tuning_NBX_ |
Tuning parameters for non-blocking exchange (NBX) More... | |
static const int | mpiBufferSize |
MPI buffer-size (bytes) More... | |
static label | worldComm |
Communicator for all ranks. May differ from commGlobal() if local worlds are in use. More... | |
static label | warnComm |
Debugging: warn for use of any communicator differing from warnComm. More... | |
Static Public Attributes inherited from IOstream | |
static unsigned int | precision_ |
Default precision. More... | |
Static Public Attributes inherited from IOstreamOption | |
static const Enum< floatFormat > | floatFormatNames |
Names for float formats (general, fixed, scientific) More... | |
static const Enum< streamFormat > | formatNames |
Stream format names (ascii, binary) More... | |
static const versionNumber | currentVersion |
The current version number (2.0) More... | |
Protected Member Functions inherited from UOPstreamBase | |
UOPstreamBase (const UPstream::commsTypes commsType, const int toProcNo, DynamicList< char > &sendBuf, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm, const bool sendAtDestruct=true, IOstreamOption::streamFormat fmt=IOstreamOption::BINARY) | |
Construct given process index to write to using the given attached send buffer, optional communication characteristics and IO format. More... | |
UOPstreamBase (const int toProcNo, PstreamBuffers &buffers) | |
Construct given buffers. More... | |
UOPstreamBase (DynamicList< char > &sendBuf, IOstreamOption::streamFormat fmt) | |
Construct for externally obtained buffers. More... | |
Protected Member Functions inherited from IOstream | |
void | setOpened () noexcept |
Set stream opened. More... | |
void | setClosed () noexcept |
Set stream closed. More... | |
void | setState (std::ios_base::iostate state) noexcept |
Set stream state. More... | |
void | setGood () noexcept |
Set stream state to be good. More... | |
Protected Attributes inherited from UOPstreamBase | |
const int | toProcNo_ |
Destination rank for the data. More... | |
const int | tag_ |
Message tag for communication. More... | |
const int | comm_ |
The communicator index. More... | |
bool | sendAtDestruct_ |
Call bufferIPCsend on termination (in the destructor) More... | |
DynamicList< char > & | sendBuf_ |
Reference to the send buffer data. More... | |
Protected Attributes inherited from Ostream | |
unsigned short | indentSize_ = 4 |
Number of spaces per indent level. More... | |
unsigned short | indentLevel_ = 0 |
Current indent level. More... | |
Protected Attributes inherited from IOstream | |
std::ios_base::iostate | ioState_ |
Mirror of internal stream io state. More... | |
streamAccess | openClosed_ |
The stream open/closed state. More... | |
unsigned char | sizeofLabel_ |
The sizeof (label), possibly read from the header. More... | |
unsigned char | sizeofScalar_ |
The sizeof (scalar), possibly read from the header. More... | |
label | lineNumber_ |
The file line. More... | |
Static Protected Attributes inherited from Ostream | |
static constexpr const unsigned short | entryIndentation_ = 16 |
Indentation of the entry from the start of the keyword. More... | |
Static Protected Attributes inherited from IOstream | |
static fileName | staticName_ |
Name for any generic stream - normally treat as readonly. More... | |
Output inter-processor communications stream using MPI send/recv etc. - operating on external buffer.
Definition at line 394 of file UOPstream.H.
UOPstream | ( | const UPstream::commsTypes | commsType, |
const int | toProcNo, | ||
DynamicList< char > & | sendBuf, | ||
const int | tag = UPstream::msgType() , |
||
const label | comm = UPstream::worldComm , |
||
const bool | sendAtDestruct = true , |
||
IOstreamOption::streamFormat | fmt = IOstreamOption::BINARY |
||
) |
Construct given process index to write to using the given attached send buffer, optional communication characteristics and IO format.
Definition at line 28 of file OPstreams.C.
UOPstream | ( | const int | toProcNo, |
PstreamBuffers & | buffers | ||
) |
Construct given buffers.
Definition at line 42 of file OPstreams.C.
|
explicit |
Construct for writing into a standalone buffer. Data transfer is handled externally by the caller.
Definition at line 49 of file OPstreams.C.
|
virtual |
Destructor, usually sends buffer on destruct.
Definition at line 93 of file OPstreams.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
bool send | ( | ) |
Send buffer contents now and not in destructor [advanced usage]. Returns true on success.
Definition at line 84 of file OPstreams.C.
Referenced by LUscalarMatrix::LUscalarMatrix(), argList::parse(), mapDistributeBase::schedule(), OPstream::send(), syncTools::syncEdgeMap(), and syncTools::syncPointMap().
|
static |
Write buffer contents to given processor.
[out] | req | request information (for non-blocking) |
Definition at line 36 of file UOPstreamWrite.C.
References NotImplemented.
Referenced by Foam::PstreamDetail::exchangeBuffers(), Foam::PstreamDetail::exchangeConsensus(), Foam::PstreamDetail::exchangeContainer(), processorGAMGInterfaceField::initInterfaceMatrixUpdate(), syncTools::syncBoundaryFaceList(), syncTools::syncFaceList(), OFstreamCollator::write(), UOPstream::write(), and decomposedBlockData::writeBlocks().
|
inlinestatic |
Write buffer contents (non-blocking) to given processor.
[out] | req | request information |
Definition at line 488 of file UOPstream.H.
References UPstream::nonBlocking, and UOPstream::write().
|
inlinestatic |
Write UList contents to given processor.
Only valid for contiguous data types.
[out] | req | request information (for non-blocking) |
Definition at line 520 of file UOPstream.H.
References UList< T >::cdata_bytes(), UPstream::commsType(), UList< T >::size_bytes(), and UOPstream::write().
|
inlinestatic |
Write UList contents (non-blocking) to given processor.
Only valid for contiguous data types.
[out] | req | request information |
Definition at line 552 of file UOPstream.H.
References UList< T >::cdata_bytes(), UPstream::nonBlocking, UList< T >::size_bytes(), and UOPstream::write().
|
override |
Use all write methods from base class.
Definition at line 203 of file UOPstreamBase.C.
|
override |
Use all write methods from base class.
Definition at line 248 of file UOPstreamBase.C.
|
override |
Use all write methods from base class.
Definition at line 280 of file UOPstreamBase.C.
|
override |
Use all write methods from base class.
Definition at line 297 of file UOPstreamBase.C.
|
override |
Use all write methods from base class.
Definition at line 306 of file UOPstreamBase.C.
|
override |
Use all write methods from base class.
Definition at line 315 of file UOPstreamBase.C.
|
override |
Use all write methods from base class.
Definition at line 323 of file UOPstreamBase.C.
|
override |
Use all write methods from base class.
Definition at line 331 of file UOPstreamBase.C.
|
override |
Use all write methods from base class.
Definition at line 339 of file UOPstreamBase.C.
|
override |
Use all write methods from base class.
Definition at line 348 of file UOPstreamBase.C.