|
waLBerla 7.2
|
#include <NonuniformGeneratedGPUPdfPackInfo.h>
Inheritance diagram for walberla::lbm_generated::NonuniformGeneratedGPUPdfPackInfo< PdfField_T >:Public Types | |
| using | LatticeStorageSpecification_T = typename PdfField_T::LatticeStorageSpecification |
| using | Stencil = typename LatticeStorageSpecification_T::Stencil |
| using | CommunicationStencil = typename LatticeStorageSpecification_T::CommunicationStencil |
| using | CommData_T = NonuniformGPUCommData< LatticeStorageSpecification_T > |
| using | value_type = typename PdfField_T::value_type |
Public Member Functions | |
| NonuniformGeneratedGPUPdfPackInfo (const uint64_t meshLevels, const BlockDataID pdfFieldID, const BlockDataID commDataID) | |
| void | init (const uint64_t meshLevels) |
| void | sync () override |
| ~NonuniformGeneratedGPUPdfPackInfo () | |
| bool | constantDataExchange () const override |
| bool | threadsafeReceiving () const override |
| void | unpackDataEqualLevel (Block *receiver, Direction dir, GpuBuffer_T &buffer, gpuStream_t stream) override |
| Equal Level. | |
| void | addForLocalEqualLevelComm (const Block *sender, Block *receiver, stencil::Direction dir) override |
| void | communicateLocalEqualLevel (uint64_t level, uint8_t timestep, gpuStream_t stream) override |
| void | communicateLocalEqualLevel (const Block *sender, Block *receiver, stencil::Direction dir, gpuStream_t stream) override |
| void | unpackDataCoarseToFine (Block *fineReceiver, const BlockID &coarseSender, stencil::Direction dir, GpuBuffer_T &buffer, gpuStream_t stream) override |
| Coarse to Fine. | |
| void | communicateLocalCoarseToFine (const Block *coarseSender, Block *fineReceiver, stencil::Direction dir, gpuStream_t stream) override |
| void | communicateLocalCoarseToFine (const Block *coarseSender, Block *fineReceiver, stencil::Direction dir, GpuBuffer_T &buffer, gpuStream_t stream) override |
| void | prepareCoalescence (Block *coarseReceiver, gpuStream_t gpuStream=nullptr) |
| Fine to Coarse. | |
| void | unpackDataFineToCoarse (Block *coarseReceiver, const BlockID &fineSender, stencil::Direction dir, GpuBuffer_T &buffer, gpuStream_t stream) override |
| void | communicateLocalFineToCoarse (const Block *fineSender, Block *coarseReceiver, stencil::Direction dir, gpuStream_t stream) override |
| void | communicateLocalFineToCoarse (const Block *fineSender, Block *coarseReceiver, stencil::Direction dir, GpuBuffer_T &buffer, gpuStream_t stream) override |
| uint_t | sizeEqualLevelSend (const Block *sender, stencil::Direction dir) const override |
| uint_t | sizeCoarseToFineSend (const Block *coarseSender, const BlockID &fineReceiver, stencil::Direction dir) const override |
| uint_t | sizeCoarseToFineReceive (Block *fineReceiver, stencil::Direction dir) const override |
| uint_t | sizeFineToCoarseSend (const Block *fineSender, stencil::Direction dir) const override |
Public Member Functions inherited from walberla::gpu::GeneratedNonUniformGPUPackInfo | |
| GeneratedNonUniformGPUPackInfo ()=default | |
| virtual | ~GeneratedNonUniformGPUPackInfo ()=default |
| void | packDataEqualLevel (const Block *sender, stencil::Direction dir, GpuBuffer_T &buffer, gpuStream_t stream=nullptr) const |
| virtual void | unpackDataEqualLevel (Block *receiver, stencil::Direction dir, GpuBuffer_T &buffer, gpuStream_t stream)=0 |
| void | packDataCoarseToFine (const Block *coarseSender, const BlockID &fineReceiver, stencil::Direction dir, GpuBuffer_T &buffer, gpuStream_t stream=nullptr) const |
| void | packDataFineToCoarse (const Block *fineSender, const BlockID &coarseReceiver, stencil::Direction dir, GpuBuffer_T &buffer, gpuStream_t stream=nullptr) const |
| void | clearBufferSizeCheckMap () |
Public Attributes | |
| const BlockDataID | commDataID_ |
Protected Member Functions | |
| void | packDataEqualLevelImpl (const Block *sender, stencil::Direction dir, GpuBuffer_T &buffer, gpuStream_t stream) const override |
| void | packDataCoarseToFineImpl (const Block *coarseSender, const BlockID &fineReceiver, stencil::Direction dir, GpuBuffer_T &buffer, gpuStream_t stream) const override |
| void | packDataFineToCoarseImpl (const Block *fineSender, const BlockID &coarseReceiver, stencil::Direction dir, GpuBuffer_T &buffer, gpuStream_t stream) const override |
Private Member Functions | |
| Vector3< cell_idx_t > | getNeighborShift (const BlockID &fineBlock, stencil::Direction dir) const |
| Helper Functions As in PdfFieldPackInfo.h. | |
| bool | areNeighborsInDirection (const Block *block, const BlockID &neighborID, Vector3< cell_idx_t > dirVec) const |
Checks whether or not the block with ID neighborID is a neighbor of block in direction dir. | |
| CellInterval | intervalHullInDirection (const CellInterval &ci, Vector3< cell_idx_t > tangentialDir, cell_idx_t width) const |
| Returns the part of a cell interval's hull of given width in direction dirVec. | |
| bool | skipsThroughCoarseBlock (const Block *block, Direction dir) const |
| For edge or corner directions, checks if a coarser block is part of the respective edge or corner intersection. | |
| void | getCoarseBlockCommIntervals (const BlockID &fineBlockID, Direction dir, const PdfField_T *field, std::vector< std::pair< Direction, CellInterval > > &intervals) const |
| For coarse-to-fine and fine-to-coarse communication, returns a list of pairs (Direction, CellInterval) mapping sub-directions of the communication direction to cell intervals on the coarse block interior whose data must be communicated as if communicating in those sub-directions. | |
| void | getFineBlockCommIntervals (const BlockID &fineBlockID, Direction dir, const PdfField_T *field, std::vector< std::pair< Direction, CellInterval > > &intervals) const |
| For coarse-to-fine and fine-to-coarse communication, returns a list of pairs (Direction, CellInterval) mapping sub-directions of the communication direction to cell intervals on the fine block whose data must be communicated as if communicating in those sub-directions. | |
| CellInterval | getCoarseBlockCoalescenceInterval (const Block *coarseBlock, const BlockID &fineBlockID, Direction dir, const PdfField_T *field) const |
Private Attributes | |
| const BlockDataID | pdfFieldID_ |
| internal::NonuniformGPUPackingKernelsWrapper< PdfField_T, LatticeStorageSpecification_T::inplace > | kernels_ |
| std::array< int64_t, 4 > | strides |
| std::vector< std::unordered_map< Vector3< int64_t >, std::vector< value_type * > > > | equalCommSRC |
| std::vector< std::unordered_map< Vector3< int64_t >, std::vector< value_type * > > > | equalCommDST |
| std::vector< std::unordered_map< Vector3< int64_t >, value_type ** > > | equalCommSRCGPU |
| std::vector< std::unordered_map< Vector3< int64_t >, value_type ** > > | equalCommDSTGPU |
Additional Inherited Members | |
Protected Attributes inherited from walberla::gpu::GeneratedNonUniformGPUPackInfo | |
| std::map< const Block *, std::map< stencil::Direction, std::map< uint_t, size_t > > > | bufferSize_ |
| using walberla::lbm_generated::NonuniformGeneratedGPUPdfPackInfo< PdfField_T >::CommData_T = NonuniformGPUCommData< LatticeStorageSpecification_T > |
| using walberla::lbm_generated::NonuniformGeneratedGPUPdfPackInfo< PdfField_T >::CommunicationStencil = typename LatticeStorageSpecification_T::CommunicationStencil |
| using walberla::lbm_generated::NonuniformGeneratedGPUPdfPackInfo< PdfField_T >::LatticeStorageSpecification_T = typename PdfField_T::LatticeStorageSpecification |
| using walberla::lbm_generated::NonuniformGeneratedGPUPdfPackInfo< PdfField_T >::Stencil = typename LatticeStorageSpecification_T::Stencil |
| using walberla::lbm_generated::NonuniformGeneratedGPUPdfPackInfo< PdfField_T >::value_type = typename PdfField_T::value_type |
|
inline |
|
inline |
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
private |
Checks whether or not the block with ID neighborID is a neighbor of block in direction dir.
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
inlineoverridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
private |
|
inlineprivate |
For coarse-to-fine and fine-to-coarse communication, returns a list of pairs (Direction, CellInterval) mapping sub-directions of the communication direction to cell intervals on the coarse block interior whose data must be communicated as if communicating in those sub-directions.
| fineBlockID | ID of the fine block |
| dir | Direction from the coarse to the fine block |
| field | Pointer to the PDF field on the coarse block |
| intervals | Vector that will be filled with the computed intervals |
|
inlineprivate |
For coarse-to-fine and fine-to-coarse communication, returns a list of pairs (Direction, CellInterval) mapping sub-directions of the communication direction to cell intervals on the fine block whose data must be communicated as if communicating in those sub-directions.
| fineBlockID | ID of the fine block |
| dir | Direction from the fine to the coarse block |
| field | Pointer to the PDF Field on the fine block |
| intervals | Vector that will be filled with the computed intervals |
|
inlineprivate |
Helper Functions As in PdfFieldPackInfo.h.
|
inline |
|
inlineprivate |
Returns the part of a cell interval's hull of given width in direction dirVec.
| ci | The original cell interval |
| dirVec | Direction Vector |
| width | Width of the hull |
|
overrideprotectedvirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
overrideprotectedvirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
overrideprotectedvirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
| void walberla::lbm_generated::NonuniformGeneratedGPUPdfPackInfo< PdfField_T >::prepareCoalescence | ( | Block * | coarseReceiver, |
| gpuStream_t | gpuStream = nullptr ) |
Fine to Coarse.
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
inlineprivate |
For edge or corner directions, checks if a coarser block is part of the respective edge or corner intersection.
| block | The local block |
| dir | The direction to check |
true if dir is an edge or corner direction skipping through a coarser block.
|
inlineoverridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
inlineoverridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
overridevirtual |
Coarse to Fine.
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
|
override |
Equal Level.
|
overridevirtual |
Implements walberla::gpu::GeneratedNonUniformGPUPackInfo.
| const BlockDataID walberla::lbm_generated::NonuniformGeneratedGPUPdfPackInfo< PdfField_T >::commDataID_ |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |