
Go to the source code of this file.
Namespaces | |
| Foam | |
| Namespace for OpenFOAM. | |
| Foam::PstreamDetail | |
| Implementation details for UPstream/Pstream/MPI etc. | |
Functions | |
| template<class Type > | |
| std::size_t | maxTransferCount (const std::size_t max_bytes=std::size_t(0)) noexcept |
| Number of elements corresponding to max byte transfer. More... | |
| std::size_t | maxTransferBytes (const int64_t max_bytes) noexcept |
| Upper limit on number of transfer bytes. More... | |
| template<class Type > | |
| void | exchangeBuffers (const UList< std::pair< int, stdFoam::span< const Type >>> &sends, const UList< std::pair< int, stdFoam::span< Type >>> &recvs, const int tag, const label comm, const int64_t maxComms_bytes=UPstream::maxCommsSize) |
| Exchange of contiguous data, with or without chunking. Setup sends and receives, each specified as [rank, span] tuple. More... | |
| template<class Container , class Type > | |
| void | exchangeContainer (const UList< Container > &sendBufs, UList< Container > &recvBufs, const int tag, const label comm, const bool wait, const int64_t maxComms_bytes=UPstream::maxCommsSize) |
| Exchange contiguous data using point-to-point communication. Sends sendBufs, receives into recvBufs. More... | |
| template<class Container , class Type > | |
| void | exchangeContainer (const Map< Container > &sendBufs, Map< Container > &recvBufs, const int tag, const label comm, const bool wait, const int64_t maxComms_bytes=UPstream::maxCommsSize) |
| Exchange contiguous data using point-to-point communication. Sends sendBufs, receives into recvBufs. More... | |
Original source file PstreamExchange.C
iter data window ---- ----------- 0 [0, 1*chunk] 1 [1*chunk, 2*chunk] 2 [2*chunk, 3*chunk] ...
In older versions (v2312 and earlier) the number of chunks was determined by the sender sizes and used an extra MPI_Allreduce. However instead rely on the send/recv buffers having been consistently sized, which avoids the additional reduction.
Definition in file PstreamExchange.C.