Adapter to use a communication::UniformPackInfo in a NonUniformBufferedScheme.
No communication between coarse <-> fine blocks happens.
#include <UniformToNonUniformPackInfoAdapter.h>
|
shared_ptr< walberla::communication::UniformPackInfo > | uniformPackInfo_ |
|
| UniformToNonUniformPackInfoAdapter (const shared_ptr< walberla::communication::UniformPackInfo > &uniformPackInfo) |
|
| ~UniformToNonUniformPackInfoAdapter () override=default |
|
bool | constantDataExchange () const override |
| Should return true if the amount of data that is packed for a given block in direction "dir" is guaranteed to remain constant over time.
|
|
bool | threadsafeReceiving () const override |
| Must return false if calling unpackData*() and/or communicateLocal*() methods is not thread-safe.
|
|
void | unpackDataEqualLevel (Block *receiver, stencil::Direction dir, mpi::RecvBuffer &buffer) override |
| If NOT thread-safe, threadsafeReceiving must return false!
|
|
void | communicateLocalEqualLevel (const Block *sender, Block *receiver, stencil::Direction dir) override |
| If NOT thread-safe, threadsafeReceiving must return false!
|
|
void | unpackDataCoarseToFine (Block *, const BlockID &, stencil::Direction, mpi::RecvBuffer &) override |
|
void | communicateLocalCoarseToFine (const Block *, Block *, stencil::Direction) override |
|
void | unpackDataFineToCoarse (Block *, const BlockID &, stencil::Direction, mpi::RecvBuffer &) override |
|
void | communicateLocalFineToCoarse (const Block *, Block *, stencil::Direction) override |
|
void | packDataEqualLevelImpl (const Block *sender, stencil::Direction dir, mpi::SendBuffer &buffer) const override |
| Must be thread-safe!
|
|
void | packDataCoarseToFineImpl (const Block *, const BlockID &, stencil::Direction, mpi::SendBuffer &) const override |
|
void | packDataFineToCoarseImpl (const Block *, const BlockID &, stencil::Direction, mpi::SendBuffer &) const override |
|
|
| NonUniformPackInfo ()=default |
|
virtual | ~NonUniformPackInfo ()=default |
|
void | packDataEqualLevel (const Block *sender, stencil::Direction dir, mpi::SendBuffer &buffer) const |
| Must be thread-safe! Calls packDataEqualLevelImpl.
|
|
void | packDataCoarseToFine (const Block *coarseSender, const BlockID &fineReceiver, stencil::Direction dir, mpi::SendBuffer &buffer) const |
|
void | packDataFineToCoarse (const Block *fineSender, const BlockID &coarseReceiver, stencil::Direction dir, mpi::SendBuffer &buffer) const |
|
void | clearBufferSizeCheckMap () |
|
std::map< const Block *, std::map< stencil::Direction, std::map< uint_t, size_t > > > | bufferSize_ |
|
◆ UniformToNonUniformPackInfoAdapter()
◆ ~UniformToNonUniformPackInfoAdapter()
walberla::blockforest::communication::UniformToNonUniformPackInfoAdapter::~UniformToNonUniformPackInfoAdapter |
( |
| ) |
|
|
overridedefault |
◆ communicateLocalCoarseToFine()
void walberla::blockforest::communication::UniformToNonUniformPackInfoAdapter::communicateLocalCoarseToFine |
( |
const Block * | , |
|
|
Block * | , |
|
|
stencil::Direction | ) |
|
inlineoverridevirtual |
◆ communicateLocalEqualLevel()
void walberla::blockforest::communication::UniformToNonUniformPackInfoAdapter::communicateLocalEqualLevel |
( |
const Block * | sender, |
|
|
Block * | receiver, |
|
|
stencil::Direction | dir ) |
|
inlineoverridevirtual |
◆ communicateLocalFineToCoarse()
void walberla::blockforest::communication::UniformToNonUniformPackInfoAdapter::communicateLocalFineToCoarse |
( |
const Block * | , |
|
|
Block * | , |
|
|
stencil::Direction | ) |
|
inlineoverridevirtual |
◆ constantDataExchange()
bool walberla::blockforest::communication::UniformToNonUniformPackInfoAdapter::constantDataExchange |
( |
| ) |
const |
|
inlineoverridevirtual |
Should return true if the amount of data that is packed for a given block in direction "dir" is guaranteed to remain constant over time.
False otherwise. If you are not sure what to return, return false! Returning false is always safe. Falsely return true will lead to errors! However, if the data can be guaranteed to remain constant over time, returning true enables performance optimizations during the communication.
Implements walberla::blockforest::communication::NonUniformPackInfo.
◆ packDataCoarseToFineImpl()
|
inlineoverrideprotectedvirtual |
◆ packDataEqualLevelImpl()
|
inlineoverrideprotectedvirtual |
◆ packDataFineToCoarseImpl()
|
inlineoverrideprotectedvirtual |
◆ threadsafeReceiving()
bool walberla::blockforest::communication::UniformToNonUniformPackInfoAdapter::threadsafeReceiving |
( |
| ) |
const |
|
inlineoverridevirtual |
Must return false if calling unpackData*()
and/or communicateLocal*()
methods is not thread-safe.
True otherwise. If you are not sure what to return, return false! Returning false is always safe. Falsely return true will most likely lead to errors! However, if both unpackData*()
AND communicateLocal*()
are thread-safe, returning true can lead to performance improvements.
Implements walberla::blockforest::communication::NonUniformPackInfo.
◆ unpackDataCoarseToFine()
◆ unpackDataEqualLevel()
◆ unpackDataFineToCoarse()
◆ uniformPackInfo_
The documentation for this class was generated from the following file: