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

#include <UniformGPUScheme.h>

Classes

struct  Header
 

Public Member Functions

 UniformGPUScheme (weak_ptr< StructuredBlockForest > bf, bool sendDirectlyFromGPU=false, bool useLocalCommunication=true, const int tag=5432)
 
 UniformGPUScheme (weak_ptr< StructuredBlockForest > bf, const Set< SUID > &requiredBlockSelectors, const Set< SUID > &incompatibleBlockSelectors, bool sendDirectlyFromGPU=false, bool useLocalCommunication=true, const int tag=5432)
 
void addPackInfo (const shared_ptr< GeneratedGPUPackInfo > &pi)
 
void startCommunication (gpuStream_t stream=nullptr)
 
void wait (gpuStream_t stream=nullptr)
 
void operator() (gpuStream_t stream=nullptr)
 
void communicate (gpuStream_t stream=nullptr)
 
std::function< void()> getCommunicateFunctor (gpuStream_t stream=nullptr)
 
std::function< void()> getStartCommunicateFunctor (gpuStream_t stream=nullptr)
 
std::function< void()> getWaitFunctor (gpuStream_t stream=nullptr)
 

Private Types

using CpuBuffer_T = gpu::communication::PinnedMemoryBuffer
 
using GpuBuffer_T = gpu::communication::GPUMemoryBuffer
 

Private Member Functions

void setupCommunication ()
 

Private Attributes

weak_ptr< StructuredBlockForestblockForest_
 
uint_t forestModificationStamp_
 
bool setupBeforeNextCommunication_
 
bool communicationInProgress_
 
bool sendFromGPU_
 
bool useLocalCommunication_
 
mpi::GenericBufferSystem< CpuBuffer_T, CpuBuffer_TbufferSystemCPU_
 
mpi::GenericBufferSystem< GpuBuffer_T, GpuBuffer_TbufferSystemGPU_
 
std::vector< shared_ptr< GeneratedGPUPackInfo > > packInfos_
 
ParallelStreams parallelSectionManager_
 
std::map< mpi::MPIRank, std::vector< Header > > headers_
 
Set< SUID > requiredBlockSelectors_
 
Set< SUID > incompatibleBlockSelectors_
 

Member Typedef Documentation

◆ CpuBuffer_T

◆ GpuBuffer_T

Constructor & Destructor Documentation

◆ UniformGPUScheme() [1/2]

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

◆ UniformGPUScheme() [2/2]

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

Member Function Documentation

◆ addPackInfo()

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

◆ communicate()

template<typename Stencil >
void walberla::gpu::communication::UniformGPUScheme< Stencil >::communicate ( gpuStream_t  stream = nullptr)
inline

◆ getCommunicateFunctor()

template<typename Stencil >
std::function< void()> walberla::gpu::communication::UniformGPUScheme< Stencil >::getCommunicateFunctor ( gpuStream_t  stream = nullptr)

◆ getStartCommunicateFunctor()

template<typename Stencil >
std::function< void()> walberla::gpu::communication::UniformGPUScheme< Stencil >::getStartCommunicateFunctor ( gpuStream_t  stream = nullptr)

◆ getWaitFunctor()

template<typename Stencil >
std::function< void()> walberla::gpu::communication::UniformGPUScheme< Stencil >::getWaitFunctor ( gpuStream_t  stream = nullptr)

◆ operator()()

template<typename Stencil >
void walberla::gpu::communication::UniformGPUScheme< Stencil >::operator() ( gpuStream_t  stream = nullptr)
inline

◆ setupCommunication()

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

◆ startCommunication()

template<typename Stencil >
void walberla::gpu::communication::UniformGPUScheme< Stencil >::startCommunication ( gpuStream_t  stream = nullptr)

◆ wait()

template<typename Stencil >
void walberla::gpu::communication::UniformGPUScheme< Stencil >::wait ( gpuStream_t  stream = nullptr)

Member Data Documentation

◆ blockForest_

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

◆ bufferSystemCPU_

template<typename Stencil >
mpi::GenericBufferSystem<CpuBuffer_T, CpuBuffer_T> walberla::gpu::communication::UniformGPUScheme< Stencil >::bufferSystemCPU_
private

◆ bufferSystemGPU_

template<typename Stencil >
mpi::GenericBufferSystem<GpuBuffer_T, GpuBuffer_T> walberla::gpu::communication::UniformGPUScheme< Stencil >::bufferSystemGPU_
private

◆ communicationInProgress_

template<typename Stencil >
bool walberla::gpu::communication::UniformGPUScheme< Stencil >::communicationInProgress_
private

◆ forestModificationStamp_

template<typename Stencil >
uint_t walberla::gpu::communication::UniformGPUScheme< Stencil >::forestModificationStamp_
private

◆ headers_

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

◆ incompatibleBlockSelectors_

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

◆ packInfos_

template<typename Stencil >
std::vector<shared_ptr<GeneratedGPUPackInfo> > walberla::gpu::communication::UniformGPUScheme< Stencil >::packInfos_
private

◆ parallelSectionManager_

template<typename Stencil >
ParallelStreams walberla::gpu::communication::UniformGPUScheme< Stencil >::parallelSectionManager_
private

◆ requiredBlockSelectors_

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

◆ sendFromGPU_

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

◆ setupBeforeNextCommunication_

template<typename Stencil >
bool walberla::gpu::communication::UniformGPUScheme< Stencil >::setupBeforeNextCommunication_
private

◆ useLocalCommunication_

template<typename Stencil >
bool walberla::gpu::communication::UniformGPUScheme< Stencil >::useLocalCommunication_
private

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