waLBerla 7.3
Loading...
Searching...
No Matches
walberla::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)}
bool setupBeforeNextCommunication_
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< SUIDrequiredBlockSelectors_
Set< SUIDincompatibleBlockSelectors_
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

◆ setupBeforeNextCommunication_

template<typename Stencil>
bool walberla::gpu::communication::NonUniformGPUScheme< Stencil >::setupBeforeNextCommunication_
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: