|
| template<class Type > |
| static void | broadcast (Type &value, const int communicator=UPstream::worldComm) |
| | Broadcast content (contiguous or non-contiguous) to all communicator ranks. Does nothing in non-parallel. More...
|
| |
| template<class Type , unsigned N> |
| static void | broadcast (FixedList< Type, N > &list, const int communicator=UPstream::worldComm) |
| | Broadcast fixed-list content (contiguous or non-contiguous) to all communicator ranks. Does nothing in non-parallel. More...
|
| |
| template<class Type , class... Args> |
| static void | broadcasts (const int communicator, Type &value, Args &&... values) |
| | Broadcast multiple items to all communicator ranks. Does nothing in non-parallel. More...
|
| |
| template<class ListType > |
| static void | broadcastList (ListType &list, const int communicator=UPstream::worldComm) |
| | Broadcast list content (contiguous or non-contiguous) to all communicator ranks. Does nothing in non-parallel. More...
|
| |
| template<class T , class BinaryOp , bool InplaceMode> |
| static void | gather_algorithm (const UPstream::commsStructList &comms, T &value, BinaryOp bop, const int tag, const int communicator) |
| | Implementation: gather (reduce) single element data onto UPstream::masterNo() More...
|
| |
| template<class T , class BinaryOp , bool InplaceMode> |
| static bool | gather_topo_algorithm (T &value, BinaryOp bop, const int tag, const int communicator) |
| | Implementation: gather (reduce) single element data onto UPstream::masterNo() using a topo algorithm. More...
|
| |
| template<class T , class BinaryOp , bool InplaceMode = false> |
| static void | gather (T &value, BinaryOp bop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Gather (reduce) data, applying bop to combine value from different processors. The basis for Foam::reduce(). More...
|
| |
| template<class T > |
| static List< T > | listGatherValues (const T &localValue, const int communicator=UPstream::worldComm, const int tag=UPstream::msgType()) |
| | Gather individual values into list locations. More...
|
| |
| template<class T > |
| static T | listScatterValues (const UList< T > &allValues, const int communicator=UPstream::worldComm, const int tag=UPstream::msgType()) |
| | Scatter individual values from list locations. More...
|
| |
| template<class T , class CombineOp > |
| static void | combineGather (T &value, CombineOp cop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Forwards to Pstream::gather with an in-place cop. More...
|
| |
| template<class T , class CombineOp > |
| static void | combineReduce (T &value, CombineOp cop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Reduce inplace (cf. MPI Allreduce) applying cop to inplace combine value from different processors. More...
|
| |
| template<class T , class CombineOp > |
| static void | combineAllGather (T &value, CombineOp cop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Same as Pstream::combineReduce. More...
|
| |
| template<class T , class BinaryOp , bool InplaceMode> |
| static void | listGather_algorithm (const UPstream::commsStructList &comms, UList< T > &values, BinaryOp bop, const int tag, const int communicator) |
| | Implementation: gather (reduce) list element data onto UPstream::masterNo() More...
|
| |
| template<class T , class BinaryOp , bool InplaceMode> |
| static bool | listGather_topo_algorithm (UList< T > &values, BinaryOp bop, const int tag, const int communicator) |
| | Implementation: gather (reduce) list element data onto UPstream::masterNo() using a topo algorithm. More...
|
| |
| template<class T , class BinaryOp , bool InplaceMode = false> |
| static void | listGather (UList< T > &values, BinaryOp bop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Gather (reduce) list elements, applying bop to each list element. More...
|
| |
| template<class T , class CombineOp > |
| static void | listCombineGather (UList< T > &values, CombineOp cop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Forwards to Pstream::listGather with an in-place cop. More...
|
| |
| template<class T , class BinaryOp , bool InplaceMode = false> |
| static void | listReduce (UList< T > &values, BinaryOp bop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Reduce list elements (list must be equal size on all ranks), applying bop to each list element. More...
|
| |
| template<class T , class CombineOp > |
| static void | listCombineReduce (UList< T > &values, CombineOp cop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Forwards to Pstream::listReduce with an in-place cop. More...
|
| |
| template<class T , class CombineOp > |
| static void | listCombineAllGather (UList< T > &values, CombineOp cop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Same as Pstream::listCombineReduce. More...
|
| |
| template<class Container , class BinaryOp , bool InplaceMode> |
| static void | mapGather_algorithm (const UPstream::commsStructList &comms, Container &values, BinaryOp bop, const int tag, const int communicator) |
| | Implementation: gather (reduce) Map/HashTable containers onto UPstream::masterNo() More...
|
| |
| template<class Container , class BinaryOp , bool InplaceMode> |
| static bool | mapGather_topo_algorithm (Container &values, BinaryOp bop, const int tag, const int communicator) |
| | Implementation: gather (reduce) Map/HashTable containers onto UPstream::masterNo() using a topo algorithm. More...
|
| |
| template<class Container , class BinaryOp , bool InplaceMode = false> |
| static void | mapGather (Container &values, BinaryOp bop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Gather (reduce) Map/HashTable containers, applying bop to combine entries from different processors. More...
|
| |
| template<class Container , class CombineOp > |
| static void | mapCombineGather (Container &values, CombineOp cop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Forwards to Pstream::mapGather with an in-place cop. More...
|
| |
| template<class Container , class BinaryOp , bool InplaceMode = false> |
| static void | mapReduce (Container &values, BinaryOp bop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Reduce inplace (cf. MPI Allreduce) applying bop to combine map values from different processors. After completion all processors have the same data. More...
|
| |
| template<class Container , class CombineOp > |
| static void | mapCombineReduce (Container &values, CombineOp cop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Forwards to Pstream::mapReduce with an in-place cop. More...
|
| |
| template<class Container , class CombineOp > |
| static void | mapCombineAllGather (Container &values, CombineOp cop, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Same as Pstream::mapCombineReduce. More...
|
| |
| template<class T > |
| static void | gatherList_algorithm (const UPstream::commsStructList &comms, UList< T > &values, const int tag, const int communicator) |
| | Implementation: gather data, keeping individual values separate. Output is only valid (consistent) on UPstream::masterNo() More...
|
| |
| template<class T > |
| static bool | gatherList_topo_algorithm (UList< T > &values, const int tag, const int communicator) |
| | Gather data, keeping individual values separate. More...
|
| |
| template<class T > |
| static void | scatterList_algorithm (const UPstream::commsStructList &comms, UList< T > &values, const int tag, const int communicator) |
| | Implementation: inverse of gatherList_algorithm. More...
|
| |
| template<class T > |
| static void | gatherList (UList< T > &values, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Gather data, but keep individual values separate. More...
|
| |
| template<class T > |
| static void | allGatherList (UList< T > &values, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm) |
| | Gather data, but keep individual values separate. Uses MPI_Allgather or manual communication. More...
|
| |
| template<class Container > |
| static void | exchangeSizes (const labelUList &sendProcs, const labelUList &recvProcs, const Container &sendBufs, labelList &sizes, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm) |
| | Helper: exchange sizes of sendBufs for specified send/recv ranks. More...
|
| |
| template<class Container > |
| static void | exchangeSizes (const labelUList &neighProcs, const Container &sendBufs, labelList &sizes, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm) |
| | Helper: exchange sizes of sendBufs for specified neighbour ranks. More...
|
| |
| template<class Container > |
| static void | exchangeSizes (const Container &sendBufs, labelList &recvSizes, const int comm=UPstream::worldComm) |
| | Helper: exchange sizes of sendBufs. The sendBufs is the data per processor (in the communicator). More...
|
| |
| template<class Container > |
| static void | exchangeSizes (const Map< Container > &sendBufs, Map< label > &recvSizes, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm) |
| | Exchange the non-zero sizes of sendBufs entries (sparse map) with other ranks in the communicator using non-blocking consensus exchange. More...
|
| |
| template<class Container , class Type > |
| static void | exchange (const UList< Container > &sendBufs, const labelUList &recvSizes, List< Container > &recvBufs, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm, const bool wait=true) |
| | Helper: exchange contiguous data. Sends sendBufs, receives into recvBufs using predetermined receive sizing. More...
|
| |
| template<class Container , class Type > |
| static void | exchange (const Map< Container > &sendBufs, const Map< label > &recvSizes, Map< Container > &recvBufs, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm, const bool wait=true) |
| | Exchange contiguous data. Sends sendBufs, receives into recvBufs. More...
|
| |
| template<class Container , class Type > |
| static void | exchange (const UList< Container > &sendBufs, List< Container > &recvBufs, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm, const bool wait=true) |
| | Exchange contiguous data. Sends sendBufs, receives into recvBufs. Determines sizes to receive. More...
|
| |
| template<class Container , class Type > |
| static void | exchange (const Map< Container > &sendBufs, Map< Container > &recvBufs, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm, const bool wait=true) |
| | Exchange contiguous data. Sends sendBufs, receives into recvBufs. Determines sizes to receive. More...
|
| |
| template<class Container , class Type > |
| static void | exchangeConsensus (const UList< Container > &sendBufs, List< Container > &recvBufs, const int tag, const int comm, const bool wait=true) |
| | Exchange contiguous data using non-blocking consensus (NBX) Sends sendData, receives into recvData. More...
|
| |
| template<class Container , class Type > |
| static void | exchangeConsensus (const Map< Container > &sendBufs, Map< Container > &recvBufs, const int tag, const int comm, const bool wait=true) |
| | Exchange contiguous data using non-blocking consensus (NBX) Sends sendData, receives into recvData. More...
|
| |
| template<class Container , class Type > |
| static Map< Container > | exchangeConsensus (const Map< Container > &sendBufs, const int tag, const int comm, const bool wait=true) |
| | Exchange contiguous data using non-blocking consensus (NBX) Sends sendData returns receive information. More...
|
| |
| template<class T > |
| static void | scatter (T &value, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm) |
| |
| template<class T > |
| static void | combineScatter (T &value, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm) |
| |
| template<class T > |
| static void | listCombineScatter (List< T > &value, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm) |
| |
| template<class Container > |
| static void | mapCombineScatter (Container &values, const int tag=UPstream::msgType(), const int comm=UPstream::worldComm) |
| |
| template<class Type > |
| static bool | broadcast (Type *buffer, std::streamsize count, const int communicator, const int root=UPstream::masterNo()) |
| | Broadcast buffer content to all processes in communicator. More...
|
| |
| template<class Type , unsigned N> |
| static bool | broadcast (FixedList< Type, N > &list, const int communicator, const int root=UPstream::masterNo()) |
| | Broadcast buffer content to all processes in communicator. More...
|
| |
| static bool | usingTopoControl (UPstream::topoControls ctrl) noexcept |
| | Test for selection of given topology-aware routine. More...
|
| |
| static constexpr int | commGlobal () noexcept |
| | Communicator for all ranks, irrespective of any local worlds. More...
|
| |
| static constexpr int | commSelf () noexcept |
| | Communicator within the current rank only. More...
|
| |
| static int | commConstWorld () noexcept |
| | Communicator for all ranks (respecting any local worlds). 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. Negative values disable. More...
|
| |
| static label | nComms () noexcept |
| | Number of currently defined communicators. More...
|
| |
| static void | printCommTree (int communicator, bool linear=false) |
| | Debugging: print the communication tree. More...
|
| |
| static int | commInterNode () noexcept |
| | Communicator between nodes/hosts (respects any local worlds) More...
|
| |
| static int | commLocalNode () noexcept |
| | Communicator within the node/host (respects any local worlds) More...
|
| |
| static bool | hasNodeCommunicators () noexcept |
| | Both inter-node and local-node communicators have been created. More...
|
| |
| static bool | usingNodeComms (const int communicator) |
| | True if node topology-aware routines have been enabled, it is running in parallel, the starting point is the world-communicator and it is not an odd corner case (ie, all processes on one node, all processes on different nodes) More...
|
| |
| static label | newCommunicator (const label parent, const labelRange &subRanks, const bool withComponents=true) |
| | Create new communicator with sub-ranks on the parent communicator. More...
|
| |
| static label | newCommunicator (const label parent, const labelUList &subRanks, const bool withComponents=true) |
| | Create new communicator with sub-ranks on the parent communicator. More...
|
| |
| static label | dupCommunicator (const label parent) |
| | Duplicate the parent communicator. More...
|
| |
| static label | splitCommunicator (const label parent, const int colour, const bool two_step=true) |
| | Allocate a new communicator by splitting the parent communicator on the given colour. More...
|
| |
| static void | freeCommunicator (const label communicator, const bool withComponents=true) |
| | Free a previously allocated 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 int communicator, UPstream::Request *req=nullptr) |
| | Impose a synchronisation barrier (optionally non-blocking) More...
|
| |
| static void | send_done (const int toProcNo, const int communicator, const int tag=UPstream::msgType()+1970) |
| | Impose a point-to-point synchronisation barrier by sending a zero-byte "done" message to given rank. More...
|
| |
| static int | wait_done (const int fromProcNo, const int communicator, const int tag=UPstream::msgType()+1970) |
| | Impose a point-to-point synchronisation barrier by receiving a zero-byte "done" message from given rank. More...
|
| |
| static std::pair< int, int64_t > | probeMessage (const UPstream::commsTypes commsType, const int fromProcNo, const int tag=UPstream::msgType(), const int communicator=worldComm) |
| | Probe for an incoming message. More...
|
| |
| static void | printNodeCommsControl (Ostream &os) |
| | Report the node-communication settings. More...
|
| |
| static void | printTopoControl (Ostream &os) |
| | Report the topology routines settings. 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 and invalidate the parameter (ignores null requests) 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 (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 (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 (label pos, label len=-1) |
| | Wait until any request (from position onwards) has finished. Corresponds to MPI_Waitany() More...
|
| |
| static bool | waitSomeRequests (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 int | 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 | activeRequest (const label i) |
| | Is request i active (!= MPI_REQUEST_NULL)? More...
|
| |
| static bool | activeRequest (const UPstream::Request &req) |
| | Is request active (!= MPI_REQUEST_NULL)? 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 (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()). 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 int | numNodes () noexcept |
| | The number of shared/host nodes in the (const) world communicator. More...
|
| |
| static label | parent (int communicator) |
| | The parent communicator. More...
|
| |
| static List< int > & | procID (int communicator) |
| | The list of ranks within a given communicator. More...
|
| |
| static bool | sameProcs (int communicator1, int communicator2) |
| | Test for communicator equality. More...
|
| |
| template<typename T1 , typename = std::void_t <std::enable_if_t<std::is_integral_v<T1>>>> |
| static bool | sameProcs (int communicator, const UList< T1 > &procs) |
| | Test equality of communicator procs with the given list of ranks. Includes a guard for the communicator index. More...
|
| |
| template<typename T1 , typename T2 , typename = std::void_t < std::enable_if_t<std::is_integral_v<T1>>, std::enable_if_t<std::is_integral_v<T2>> >> |
| static bool | sameProcs (const UList< T1 > &procs1, const UList< T2 > &procs2) |
| | Test the equality of two lists of ranks. 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< int > & | interNode_offsets () |
| | Processor offsets corresponding to the inter-node communicator. More...
|
| |
| static const rangeType & | localNode_parentProcs () |
| | The range (start/size) of the commLocalNode ranks in terms of the (const) world communicator processors. More...
|
| |
| static const commsStructList & | linearCommunication (int communicator) |
| | Linear communication schedule (special case) for given communicator. More...
|
| |
| static const commsStructList & | treeCommunication (int communicator) |
| | Tree communication schedule (standard case) for given communicator. More...
|
| |
| static const commsStructList & | whichCommunication (const int communicator, bool linear=false) |
| | Communication schedule for all-to-master (proc 0) as linear/tree/none with switching based on UPstream::nProcsSimpleSum, the is_parallel() state and the optional linear parameter. 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 (int errNo=1) |
| | 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 int communicator=UPstream::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 int communicator=UPstream::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 int communicator=UPstream::worldComm) |
| | Exchange int32_t data between ranks [NBX]. More...
|
| |
| static Map< int32_t > | allToAllConsensus (const Map< int32_t > &sendData, const int tag, const int communicator=UPstream::worldComm) |
| | Exchange int32_t data between ranks [NBX]. More...
|
| |
| static void | allToAll (const UList< int64_t > &sendData, UList< int64_t > &recvData, const int communicator=UPstream::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 int communicator=UPstream::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 int communicator=UPstream::worldComm) |
| | Exchange int64_t data between ranks [NBX]. More...
|
| |
| static Map< int64_t > | allToAllConsensus (const Map< int64_t > &sendData, const int tag, const int communicator=UPstream::worldComm) |
| | Exchange int64_t data between ranks [NBX]. More...
|
| |
| template<class Type > |
| static void | mpiGather (const Type *sendData, Type *recvData, int count, const int communicator=UPstream::worldComm) |
| | Receive identically-sized (contiguous) data from all ranks. More...
|
| |
| template<class Type > |
| static void | mpiScatter (const Type *sendData, Type *recvData, int count, const int communicator=UPstream::worldComm) |
| | Send identically-sized (contiguous) data to all ranks. More...
|
| |
| template<class Type > |
| static void | mpiAllGather (Type *allData, int count, const int communicator=UPstream::worldComm) |
| | Gather/scatter identically-sized data. More...
|
| |
| template<class Type > |
| static void | mpiGatherv (const Type *sendData, int sendCount, Type *recvData, const UList< int > &recvCounts, const UList< int > &recvOffsets, const int communicator=UPstream::worldComm) |
| | Receive variable length data from all ranks. More...
|
| |
| template<class Type > |
| static void | mpiScatterv (const Type *sendData, const UList< int > &sendCounts, const UList< int > &sendOffsets, Type *recvData, int recvCount, const int communicator=UPstream::worldComm) |
| | Send variable length data to all ranks. More...
|
| |
| template<class T > |
| static List< T > | allGatherValues (const T &localValue, const int communicator=UPstream::worldComm) |
| | Allgather individual values into list locations. More...
|
| |
| template<class T > |
| static List< T > | listGatherValues (const T &localValue, const int communicator=UPstream::worldComm) |
| | Gather individual values into list locations. More...
|
| |
| template<class T > |
| static T | listScatterValues (const UList< T > &allValues, const int communicator=UPstream::worldComm) |
| | Scatter individual values from list locations. More...
|
| |
| template<class Type > |
| static bool | broadcast (Type *buffer, std::streamsize count, const int communicator, const int root=UPstream::masterNo()) |
| | Broadcast buffer contents (contiguous types) to all ranks (default: from rank=0). The sizes must match on all processes. More...
|
| |
| template<class Type , unsigned N> |
| static bool | broadcast (FixedList< Type, N > &list, const int communicator, const int root=UPstream::masterNo()) |
| | Broadcast fixed-list content (contiguous types) to all ranks (default: from rank=0). The sizes must match on all processes. More...
|
| |
| template<class T > |
| static void | mpiReduce (T values[], int count, const UPstream::opCodes opCodeId, const int communicator) |
| | MPI_Reduce (blocking) for known operators. More...
|
| |
| template<UPstream::opCodes opCode, class T > |
| static void | mpiReduce (T values[], int count, const int communicator) |
| | MPI_Reduce (blocking) for known operators. More...
|
| |
| template<class T > |
| static void | mpiAllReduce (T values[], int count, const UPstream::opCodes opCodeId, const int communicator) |
| | MPI_Allreduce (blocking) for known operators. More...
|
| |
| template<UPstream::opCodes opCode, class T > |
| static void | mpiAllReduce (T values[], int count, const int communicator) |
| | MPI_Allreduce (blocking) for known operators. More...
|
| |
| template<class T > |
| static void | mpiAllReduce (T values[], int count, const UPstream::opCodes opCodeId, const int communicator, UPstream::Request &req) |
| | MPI_Iallreduce (non-blocking) for known operators. More...
|
| |
| template<UPstream::opCodes opCode, class T > |
| static void | mpiAllReduce (T values[], int count, const int communicator, UPstream::Request &req) |
| | MPI_Iallreduce (non-blocking) for known operators. More...
|
| |
| template<Foam::UPstream::opCodes opCode, class T > |
| static void | mpiScan (T values[], int count, const int communicator, const bool exclusive=false) |
| | Inclusive/exclusive scan (in-place). More...
|
| |
| template<Foam::UPstream::opCodes opCode, class T > |
| static T | mpiScan (const T &localValue, const int communicator, const bool exclusive=false) |
| | Inclusive/exclusive scan returning the result. In exclusive mode, the degenerate value on rank=0 has no meaning but is treated like non-exclusive mode (ie, original values) More...
|
| |
| template<class T > |
| static void | mpiScan_min (T values[], int count, const int communicator, const bool exclusive=false) |
| | Inclusive/exclusive min scan (in-place) More...
|
| |
| template<class T > |
| static void | mpiExscan_min (T values[], int count, const int communicator) |
| | Exclusive min scan (in-place) More...
|
| |
| template<class T > |
| static T | mpiScan_min (const T &value, const int communicator, const bool exclusive=false) |
| | Inclusive/exclusive min scan returning result. More...
|
| |
| template<class T > |
| static T | mpiExscan_min (const T &value, const int communicator) |
| | Exclusive min scan returning result. More...
|
| |
| template<class T > |
| static void | mpiScan_max (T values[], int count, const int communicator, const bool exclusive=false) |
| | Inclusive/exclusive max scan (in-place) More...
|
| |
| template<class T > |
| static void | mpiExscan_max (T values[], int count, const int communicator) |
| | Exclusive max scan (in-place) More...
|
| |
| template<class T > |
| static T | mpiScan_max (const T &value, const int communicator, const bool exclusive=false) |
| | Inclusive/exclusive max scan returning result. More...
|
| |
| template<class T > |
| static T | mpiExscan_max (const T &value, const int communicator) |
| | Exclusive max scan returning result. More...
|
| |
| template<class T > |
| static void | mpiScan_sum (T values[], int count, const int communicator, const bool exclusive=false) |
| | Inclusive/exclusive sum scan (in-place) More...
|
| |
| template<class T > |
| static void | mpiExscan_sum (T values[], int count, const int communicator) |
| | Exclusive sum scan (in-place) More...
|
| |
| template<class T > |
| static T | mpiScan_sum (const T &value, const int communicator, const bool exclusive=false) |
| | Inclusive/exclusive sum scan returning result. More...
|
| |
| template<class T > |
| static T | mpiExscan_sum (const T &value, const int communicator) |
| | Exclusive sum scan returning result. More...
|
| |
| static void | reduceAnd (bool &value, const int communicator=worldComm) |
| | Logical (and) reduction (MPI_AllReduce) More...
|
| |
| static void | reduceOr (bool &value, const int communicator=worldComm) |
| | Logical (or) reduction (MPI_AllReduce) More...
|
| |
| static int | find_first (bool condition, int communicator) |
| | Locate the first rank for which the condition is true, or -1 if no ranks satisfy the condition. More...
|
| |
| static int | find_last (bool condition, int communicator) |
| | Locate the last rank for which the condition is true, or -1 if no ranks satisfy the condition. More...
|
| |
| static label | allocateCommunicator (const label parent, const labelRange &subRanks, const bool withComponents=true) |
| |
| static label | allocateCommunicator (const label parent, const labelUList &subRanks, const bool withComponents=true) |
| |
| static label | commInterHost () noexcept |
| | Communicator between nodes (respects any local worlds) More...
|
| |
| static label | commIntraHost () noexcept |
| | Communicator within the node (respects any local worlds) More...
|
| |
| static void | waitRequests () |
| | Wait for all requests to finish. More...
|
| |
| template<class Type > |
| static void | gather (const Type *send, int count, Type *recv, const UList< int > &counts, const UList< int > &offsets, const int comm=UPstream::worldComm) |
| |
| template<class Type > |
| static void | scatter (const Type *send, const UList< int > &counts, const UList< int > &offsets, Type *recv, int count, const int comm=UPstream::worldComm) |
| |