-
- Downloads
ENH: add Pstream chunked transfer detail
- to service both List and Map exchanges with limited message sizes (termed 'data chunking' here) add a PstreamDetail for walking and dispatching. Like other Detail components, the API is subject to (possibly breaking) changes in the future at any time. The regular exchangeBuf detail has this type of signature: PstreamDetail::exchangeBuf ( const UList<std::pair<int, stdFoam::span<const Type>>>& sends, const UList<std::pair<int, stdFoam::span<Type>>>& recvs, ... ) Where [rank, span] is the tuple pack. The basic idea is to pre-process the send/receive buffers and marshall them into a flat list of [rank, span] tuples. The originating buffers could be any type of container (List or Map) which is then marshalled into this given sequence that can be processed in source-agnostic fashion. If data chunking is required (when UPstream::maxCommsSize > 0) it is possible to make a cheap copy of the rank/address information and then walk different slices or views. ENH: replace private static methods with PstreamDetail functions - simpler to update locally.
Showing
- src/OpenFOAM/db/IOstreams/Pstreams/Pstream.H 52 additions, 89 deletionssrc/OpenFOAM/db/IOstreams/Pstreams/Pstream.H
- src/OpenFOAM/db/IOstreams/Pstreams/PstreamExchange.C 283 additions, 158 deletionssrc/OpenFOAM/db/IOstreams/Pstreams/PstreamExchange.C
- src/OpenFOAM/db/IOstreams/Pstreams/PstreamExchangeConsensus.C 0 additions, 12 deletions...OpenFOAM/db/IOstreams/Pstreams/PstreamExchangeConsensus.C
Loading
Please register or sign in to comment