OpenLB 1.7
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
communicator.hh File Reference
#include "communication/mpiRequest.h"
#include "communication/communicatable.h"
#include "communication/superCommunicationTagCoordinator.h"
#include "registry.h"
#include "context.hh"
#include <thrust/device_vector.h>
#include "mpi.h"
+ Include dependency graph for communicator.hh:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, Platform::GPU_CUDA > >::SendTask
 Wrapper for a non-blocking block propagation send request. More...
 
class  olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, Platform::GPU_CUDA > >::RecvTask
 Wrapper for a non-blocking block propagation receive request. More...
 
class  olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, Platform::GPU_CUDA > >::RecvTask::ref
 Manual replacement for std::reference_wrapper<RecvTask> More...
 
struct  olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, Platform::GPU_CUDA > >::CopyTask
 Wrapper for a local plain-copy block communication request. More...
 
class  olb::ConcreteBlockCommunicator< ConcreteBlockLattice< T, DESCRIPTOR, Platform::GPU_CUDA > >::HomogeneousCopyTask
 Wrapper for a local plain-copy block communication request. More...
 
class  olb::HeterogeneousCopyTaskDataForGpuTarget< T, DESCRIPTOR, SOURCE >
 Private implementation of heterogeneous copy task between CPU_* source and GPU_CUDA target. More...
 
class  olb::HeterogeneousCopyTaskDataForGpuSource< T, DESCRIPTOR, TARGET >
 Private implementation of heterogeneous copy task between GPU_CUDA source and CPU_* target. More...
 

Namespaces

namespace  olb
 Top level namespace for all of OpenLB.
 
namespace  olb::gpu
 Implementations of GPU specifics.
 
namespace  olb::gpu::cuda
 Implementations of Nvidia CUDA specifics.
 
namespace  olb::gpu::cuda::kernel
 CUDA kernels to execute collisions and post processors.
 

Functions

template<>
void olb::checkPlatform< Platform::GPU_CUDA > ()
 Verifies availability of CUDA device and MPI support.
 
template<typename CONTEXT , typename FIELD >
void olb::gpu::cuda::kernel::gather_field (CONTEXT lattice, const CellID *indices, std::size_t nIndices, typename FIELD::template value_type< typename CONTEXT::value_t > *buffer) __global__
 CUDA kernel for gathering FIELD data of lattice at indices into buffer.
 
template<typename SOURCE , typename TARGET , typename FIELD >
void olb::gpu::cuda::kernel::copy_field (SOURCE sourceLattice, TARGET targetLattice, const CellID *sourceIndices, const CellID *targetIndices, std::size_t nIndices) __global__
 CUDA kernel for copying FIELD data of sourceLattice at sourceIndices into targetLattice at targetIndices.
 
__global__ void olb::gpu::cuda::kernel::gather_any_fields (AnyDeviceFieldArrayD *fields, std::size_t nFields, const CellID *indices, std::size_t nIndices, std::uint8_t *buffer)
 CUDA kernel for gathering fields at indices into buffer.
 
__global__ void olb::gpu::cuda::kernel::copy_any_fields (AnyDeviceFieldArrayD *sourceFields, AnyDeviceFieldArrayD *targetFields, std::size_t nFields, const CellID *sourceIndices, const CellID *targetIndices, std::size_t nIndices)
 CUDA kernel for copying sourceFields at sourceIndices to targetFields at targetIndices.
 
template<typename CONTEXT , typename FIELD >
void olb::gpu::cuda::kernel::scatter_field (CONTEXT lattice, const CellID *indices, std::size_t nIndices, typename FIELD::template value_type< typename CONTEXT::value_t > *buffer) __global__
 CUDA kernel for scattering FIELD data in buffer to indices in lattice.
 
__global__ void olb::gpu::cuda::kernel::scatter_any_fields (AnyDeviceFieldArrayD *fields, std::size_t nFields, const CellID *indices, std::size_t nIndices, std::uint8_t *buffer)
 CUDA kernel for scattering fields in buffer to indices in lattice.
 
template<typename FIELD , typename CONTEXT >
void olb::gpu::cuda::gather_field (CONTEXT &lattice, const thrust::device_vector< CellID > &indices, std::uint8_t *buffer)
 Blocking gather of FIELD at given indices into buffer.
 
template<typename FIELD , typename CONTEXT >
void olb::gpu::cuda::async_gather_field (cudaStream_t stream, CONTEXT &lattice, const thrust::device_vector< CellID > &indices, std::uint8_t *buffer)
 Non-blocking gather of FIELD at given indices into buffer.
 
template<typename FIELD , typename SOURCE , typename TARGET >
void olb::gpu::cuda::async_copy_field (cudaStream_t stream, SOURCE &sourceLattice, TARGET &targetLattice, const thrust::device_vector< CellID > &sourceIndices, const thrust::device_vector< CellID > &targetIndices)
 Non-blocking copy of FIELD at given indices from sourceLattice to targetLattice.
 
void olb::gpu::cuda::gather_any_fields (thrust::device_vector< AnyDeviceFieldArrayD > &fields, const thrust::device_vector< CellID > &indices, std::uint8_t *buffer)
 Blocking gather of fields at given indices into buffer.
 
void olb::gpu::cuda::async_gather_any_fields (cudaStream_t stream, thrust::device_vector< AnyDeviceFieldArrayD > &fields, const thrust::device_vector< CellID > &indices, std::uint8_t *buffer)
 Non-blocking gather of fields at given indices into buffer.
 
void olb::gpu::cuda::async_copy_any_fields (cudaStream_t stream, thrust::device_vector< AnyDeviceFieldArrayD > &sourceFields, thrust::device_vector< AnyDeviceFieldArrayD > &targetFields, const thrust::device_vector< CellID > &sourceIndices, const thrust::device_vector< CellID > &targetIndices)
 Non-blocking copy of fields at given indices from sourceIndices to targetIndices.
 
template<typename FIELD , typename CONTEXT >
void olb::gpu::cuda::scatter_field (CONTEXT &lattice, const thrust::device_vector< CellID > &indices, std::uint8_t *buffer)
 Blocking scatter of FIELD data in buffer to given indices.
 
template<typename FIELD , typename CONTEXT >
void olb::gpu::cuda::async_scatter_field (cudaStream_t stream, CONTEXT &lattice, const thrust::device_vector< CellID > &indices, std::uint8_t *buffer)
 Non-blocking scatter of FIELD data in buffer to given indices.
 
void olb::gpu::cuda::scatter_any_fields (thrust::device_vector< AnyDeviceFieldArrayD > &fields, const thrust::device_vector< CellID > &indices, std::uint8_t *buffer)
 Blocking scatter of fields data in buffer to given indices.
 
void olb::gpu::cuda::async_scatter_any_fields (cudaStream_t stream, thrust::device_vector< AnyDeviceFieldArrayD > &fields, const thrust::device_vector< CellID > &indices, std::uint8_t *buffer)
 Non-blocking scatter of fields data in buffer to given indices.