walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T > Class Template Reference

Detailed Description

template<typename PdfField_T>
class walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >

Pack Info class template for lattice Boltzmann PDF fields.

Relies on a code-generated class providing kernel implementations for packing, unpacking and local copying of data.

This template relies on a PackingKernels implementation generated by lbmpy_walberla.packing_kernels. The code generated part provides the kernels for transferring data between communication buffers and fields. The iteration slices are constructed by this class.

The code-generated substructure enables the usage of arbitrary, in particular in-place streaming patterns.

Template Parameters
PackingKernels_TType of a PackingKernels implementation generated using lbmpy_walberla.generate_packing_kernels.

#include <UniformGeneratedGPUPdfPackInfo.h>

+ Inheritance diagram for walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >:

Public Types

using LatticeStorageSpecification_T = typename PdfField_T::LatticeStorageSpecification
 
using PackingKernels_T = typename LatticeStorageSpecification_T::PackKernels
 
using Stencil = typename LatticeStorageSpecification_T::Stencil
 

Public Member Functions

 UniformGeneratedGPUPdfPackInfo (const BlockDataID pdfFieldID, cell_idx_t cellLayersToSend=1, bool sendAll=false)
 
void pack (stencil::Direction dir, unsigned char *buffer, IBlock *block, gpuStream_t stream) override
 
void communicateLocal (stencil::Direction dir, const IBlock *sender, IBlock *receiver, gpuStream_t stream) override
 
void unpack (stencil::Direction dir, unsigned char *buffer, IBlock *block, gpuStream_t stream) override
 
uint_t size (stencil::Direction dir, IBlock *block) override
 
- Public Member Functions inherited from walberla::gpu::GeneratedGPUPackInfo
 GeneratedGPUPackInfo ()=default
 
virtual ~GeneratedGPUPackInfo ()=default
 

Private Attributes

const BlockDataID pdfFieldID_
 
internal::UniformPackingGPUKernelsWrapper< PdfField_T, LatticeStorageSpecification_T::inplace > kernels_
 
cell_idx_t ghostLayersToSend_
 
bool sendAll_
 

Member Typedef Documentation

◆ LatticeStorageSpecification_T

template<typename PdfField_T >
using walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::LatticeStorageSpecification_T = typename PdfField_T::LatticeStorageSpecification

◆ PackingKernels_T

template<typename PdfField_T >
using walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::PackingKernels_T = typename LatticeStorageSpecification_T::PackKernels

◆ Stencil

template<typename PdfField_T >
using walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::Stencil = typename LatticeStorageSpecification_T::Stencil

Constructor & Destructor Documentation

◆ UniformGeneratedGPUPdfPackInfo()

template<typename PdfField_T >
walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::UniformGeneratedGPUPdfPackInfo ( const BlockDataID  pdfFieldID,
cell_idx_t  cellLayersToSend = 1,
bool  sendAll = false 
)
inline

Member Function Documentation

◆ communicateLocal()

template<typename PdfField_T >
void walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::communicateLocal ( stencil::Direction  dir,
const IBlock sender,
IBlock receiver,
gpuStream_t  stream 
)
overridevirtual

◆ pack()

template<typename PdfField_T >
void walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::pack ( stencil::Direction  dir,
unsigned char *  buffer,
IBlock block,
gpuStream_t  stream 
)
overridevirtual

◆ size()

template<typename PdfField_T >
uint_t walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::size ( stencil::Direction  dir,
IBlock block 
)
overridevirtual

◆ unpack()

template<typename PdfField_T >
void walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::unpack ( stencil::Direction  dir,
unsigned char *  buffer,
IBlock block,
gpuStream_t  stream 
)
overridevirtual

Member Data Documentation

◆ ghostLayersToSend_

template<typename PdfField_T >
cell_idx_t walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::ghostLayersToSend_
private

◆ kernels_

template<typename PdfField_T >
internal::UniformPackingGPUKernelsWrapper< PdfField_T, LatticeStorageSpecification_T::inplace > walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::kernels_
private

◆ pdfFieldID_

template<typename PdfField_T >
const BlockDataID walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::pdfFieldID_
private

◆ sendAll_

template<typename PdfField_T >
bool walberla::lbm_generated::UniformGeneratedGPUPdfPackInfo< PdfField_T >::sendAll_
private

The documentation for this class was generated from the following file: