walberla::gpu::communication::NonUniformGPUScheme< Stencil > Class Template Reference

#include <NonUniformGPUScheme.h>

Classes

struct  Header
 

Public Types

enum  INDEX { EQUAL_LEVEL = 0, COARSE_TO_FINE = 1, FINE_TO_COARSE = 2 }
 
using CpuBuffer_T = walberla::gpu::communication::PinnedMemoryBuffer
 
using GpuBuffer_T = walberla::gpu::communication::GPUMemoryBuffer
 

Public Member Functions

 NonUniformGPUScheme (const weak_ptr< StructuredBlockForest > &bf, bool sendDirectlyFromGPU=false, int tag=5432)
 
 NonUniformGPUScheme (const weak_ptr< StructuredBlockForest > &bf, const Set< SUID > &requiredBlockSelectors, const Set< SUID > &incompatibleBlockSelectors, bool sendDirectlyFromGPU=false, int tag=5432)
 
 ~NonUniformGPUScheme ()
 

Pack Info Registration

weak_ptr< StructuredBlockForestblockForest_
 
uint_t forestModificationStamp_ {uint_c(0)}
 
std::vector< std::vector< bool > > communicationInProgress_
 
bool sendFromGPU_
 
int baseTag_
 
std::vector< std::vector< mpi::GenericBufferSystem< CpuBuffer_T, CpuBuffer_T > > > bufferSystemCPU_
 
std::vector< std::vector< mpi::GenericBufferSystem< GpuBuffer_T, GpuBuffer_T > > > bufferSystemGPU_
 
std::vector< std::vector< GpuBuffer_T > > localBuffer_
 
GpuBuffer_T adaptiveGPUBuffer
 
std::vector< shared_ptr< GeneratedNonUniformGPUPackInfo > > packInfos_
 
std::vector< std::vector< std::map< mpi::MPIRank, std::vector< Header > > > > headers_
 
Set< SUID > requiredBlockSelectors_
 
Set< SUID > incompatibleBlockSelectors_
 
gpuStream_t streams_ [Stencil::Q]
 
void addPackInfo (const shared_ptr< GeneratedNonUniformGPUPackInfo > &pi)
 
void communicateEqualLevel (uint_t level)
 
void communicateCoarseToFine (uint_t fineLevel)
 
void communicateFineToCoarse (uint_t fineLevel)
 
std::function< void()> communicateEqualLevelFunctor (const uint_t level)
 
std::function< void()> communicateCoarseToFineFunctor (const uint_t fineLevel)
 
std::function< void()> communicateFineToCoarseFunctor (const uint_t fineLevel)
 
void startCommunicateEqualLevel (uint_t level)
 
void startCommunicateCoarseToFine (uint_t fineLevel)
 
void startCommunicateFineToCoarse (uint_t fineLevel)
 
void waitCommunicateEqualLevel (uint_t level)
 
void waitCommunicateCoarseToFine (uint_t fineLevel)
 
void waitCommunicateFineToCoarse (uint_t fineLevel)
 
void setupCommunication ()
 
void init ()
 
void refresh ()
 
bool isAnyCommunicationInProgress () const
 
void startCommunicationEqualLevel (uint_t index, std::set< uint_t > &participatingLevels)
 
void startCommunicationCoarseToFine (uint_t index, uint_t coarsestLevel)
 
void startCommunicationFineToCoarse (uint_t index, uint_t finestLevel)
 

Member Typedef Documentation

◆ CpuBuffer_T

◆ GpuBuffer_T

Member Enumeration Documentation

◆ INDEX

Enumerator
EQUAL_LEVEL 
COARSE_TO_FINE 
FINE_TO_COARSE 

Constructor & Destructor Documentation

◆ NonUniformGPUScheme() [1/2]

template<typename Stencil >
walberla::gpu::communication::NonUniformGPUScheme< Stencil >::NonUniformGPUScheme ( const weak_ptr< StructuredBlockForest > &  bf,
bool  sendDirectlyFromGPU = false,
int  tag = 5432 
)
explicit

◆ NonUniformGPUScheme() [2/2]

template<typename Stencil >
walberla::gpu::communication::NonUniformGPUScheme< Stencil >::NonUniformGPUScheme ( const weak_ptr< StructuredBlockForest > &  bf,
const Set< SUID > &  requiredBlockSelectors,
const Set< SUID > &  incompatibleBlockSelectors,
bool  sendDirectlyFromGPU = false,
int  tag = 5432 
)
explicit

◆ ~NonUniformGPUScheme()

Member Function Documentation

◆ addPackInfo()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::addPackInfo ( const shared_ptr< GeneratedNonUniformGPUPackInfo > &  pi)

◆ communicateCoarseToFine()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::communicateCoarseToFine ( uint_t  fineLevel)
inline

◆ communicateCoarseToFineFunctor()

template<typename Stencil >
std::function<void()> walberla::gpu::communication::NonUniformGPUScheme< Stencil >::communicateCoarseToFineFunctor ( const uint_t  fineLevel)
inline

◆ communicateEqualLevel()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::communicateEqualLevel ( uint_t  level)
inline

◆ communicateEqualLevelFunctor()

template<typename Stencil >
std::function<void()> walberla::gpu::communication::NonUniformGPUScheme< Stencil >::communicateEqualLevelFunctor ( const uint_t  level)
inline

◆ communicateFineToCoarse()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::communicateFineToCoarse ( uint_t  fineLevel)
inline

◆ communicateFineToCoarseFunctor()

template<typename Stencil >
std::function<void()> walberla::gpu::communication::NonUniformGPUScheme< Stencil >::communicateFineToCoarseFunctor ( const uint_t  fineLevel)
inline

◆ init()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::init
private

◆ isAnyCommunicationInProgress()

template<typename Stencil >
bool walberla::gpu::communication::NonUniformGPUScheme< Stencil >::isAnyCommunicationInProgress
private

◆ refresh()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::refresh
private

◆ setupCommunication()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::setupCommunication
private

◆ startCommunicateCoarseToFine()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::startCommunicateCoarseToFine ( uint_t  fineLevel)
inline

◆ startCommunicateEqualLevel()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::startCommunicateEqualLevel ( uint_t  level)
inline

◆ startCommunicateFineToCoarse()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::startCommunicateFineToCoarse ( uint_t  fineLevel)
inline

◆ startCommunicationCoarseToFine()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::startCommunicationCoarseToFine ( uint_t  index,
uint_t  coarsestLevel 
)
private

◆ startCommunicationEqualLevel()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::startCommunicationEqualLevel ( uint_t  index,
std::set< uint_t > &  participatingLevels 
)
private

◆ startCommunicationFineToCoarse()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::startCommunicationFineToCoarse ( uint_t  index,
uint_t  finestLevel 
)
private

◆ waitCommunicateCoarseToFine()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::waitCommunicateCoarseToFine ( uint_t  fineLevel)
inline

◆ waitCommunicateEqualLevel()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::waitCommunicateEqualLevel ( uint_t  level)
inline

◆ waitCommunicateFineToCoarse()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::waitCommunicateFineToCoarse ( uint_t  fineLevel)
inline

Member Data Documentation

◆ adaptiveGPUBuffer

template<typename Stencil >
GpuBuffer_T walberla::gpu::communication::NonUniformGPUScheme< Stencil >::adaptiveGPUBuffer
private

◆ baseTag_

template<typename Stencil >
int walberla::gpu::communication::NonUniformGPUScheme< Stencil >::baseTag_
private

◆ blockForest_

template<typename Stencil >
weak_ptr< StructuredBlockForest > walberla::gpu::communication::NonUniformGPUScheme< Stencil >::blockForest_
private

◆ bufferSystemCPU_

template<typename Stencil >
std::vector< std::vector< mpi::GenericBufferSystem< CpuBuffer_T, CpuBuffer_T > > > walberla::gpu::communication::NonUniformGPUScheme< Stencil >::bufferSystemCPU_
private

◆ bufferSystemGPU_

template<typename Stencil >
std::vector< std::vector< mpi::GenericBufferSystem< GpuBuffer_T, GpuBuffer_T > > > walberla::gpu::communication::NonUniformGPUScheme< Stencil >::bufferSystemGPU_
private

◆ communicationInProgress_

template<typename Stencil >
std::vector< std::vector< bool > > walberla::gpu::communication::NonUniformGPUScheme< Stencil >::communicationInProgress_
private

◆ forestModificationStamp_

template<typename Stencil >
uint_t walberla::gpu::communication::NonUniformGPUScheme< Stencil >::forestModificationStamp_ {uint_c(0)}
private

◆ headers_

template<typename Stencil >
std::vector< std::vector< std::map< mpi::MPIRank, std::vector< Header > > > > walberla::gpu::communication::NonUniformGPUScheme< Stencil >::headers_
private

◆ incompatibleBlockSelectors_

template<typename Stencil >
Set< SUID > walberla::gpu::communication::NonUniformGPUScheme< Stencil >::incompatibleBlockSelectors_
private

◆ localBuffer_

template<typename Stencil >
std::vector< std::vector< GpuBuffer_T > > walberla::gpu::communication::NonUniformGPUScheme< Stencil >::localBuffer_
private

◆ packInfos_

template<typename Stencil >
std::vector< shared_ptr< GeneratedNonUniformGPUPackInfo > > walberla::gpu::communication::NonUniformGPUScheme< Stencil >::packInfos_
private

◆ requiredBlockSelectors_

template<typename Stencil >
Set< SUID > walberla::gpu::communication::NonUniformGPUScheme< Stencil >::requiredBlockSelectors_
private

◆ sendFromGPU_

template<typename Stencil >
bool walberla::gpu::communication::NonUniformGPUScheme< Stencil >::sendFromGPU_
private

◆ streams_

template<typename Stencil >
gpuStream_t walberla::gpu::communication::NonUniformGPUScheme< Stencil >::streams_[Stencil::Q]
private

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