waLBerla 7.2
Loading...
Searching...
No Matches
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 (const NonUniformGPUScheme &)=delete
 
 ~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_
 
std::array< StreamRAII, Stencil::Q > streams_
 
std::vector< uint8_ttimestepPerLevel_
 
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 setTimestepForLevel (uint_t level, uint8_t timestep)
 
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/3]

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

◆ NonUniformGPUScheme() [2/3]

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() [3/3]

template<typename Stencil >
walberla::gpu::communication::NonUniformGPUScheme< Stencil >::NonUniformGPUScheme ( const NonUniformGPUScheme< Stencil > & )
delete

◆ ~NonUniformGPUScheme()

template<typename Stencil >
walberla::gpu::communication::NonUniformGPUScheme< Stencil >::~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 ( ) const
nodiscardprivate

◆ refresh()

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

◆ setTimestepForLevel()

template<typename Stencil >
void walberla::gpu::communication::NonUniformGPUScheme< Stencil >::setTimestepForLevel ( uint_t level,
uint8_t timestep )
inline

◆ 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 >
std::array<StreamRAII, Stencil::Q> walberla::gpu::communication::NonUniformGPUScheme< Stencil >::streams_
private

◆ timestepPerLevel_

template<typename Stencil >
std::vector< uint8_t > walberla::gpu::communication::NonUniformGPUScheme< Stencil >::timestepPerLevel_
private

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