24#ifndef PLATFORM_GPU_CUDA_COMMUNICATOR_H
25#define PLATFORM_GPU_CUDA_COMMUNICATOR_H
33template <
typename T,
typename DESCRIPTOR>
36template <
typename T,
typename DESCRIPTOR, Platform PLATFORM>
37class ConcreteBlockLattice;
39template <
typename T,
typename DESCRIPTOR, Platform SOURCE, Platform TARGET>
40struct HeterogeneousCopyTask;
54template <
typename T,
typename DESCRIPTOR, Platform SOURCE>
58 std::unique_ptr<ConcreteHeterogeneousCopyTask> _impl;
62 const std::vector<std::type_index>& fields,
75template <
typename T,
typename DESCRIPTOR, Platform TARGET>
79 std::unique_ptr<ConcreteHeterogeneousCopyTask> _impl;
83 const std::vector<std::type_index>& fields,
95template <
typename T,
typename DESCRIPTOR>
100#ifdef PARALLEL_MODE_MPI
101 MPI_Comm _mpiCommunicator;
104#ifdef PARALLEL_MODE_MPI
108 std::vector<std::unique_ptr<SendTask>> _sendTasks;
109 std::vector<std::unique_ptr<RecvTask>> _recvTasks;
117#ifdef PARALLEL_MODE_MPI
125#ifdef PARALLEL_MODE_MPI
127 void send()
override;
129 void wait()
override;
131 void copy()
override;
135 class HomogeneousCopyTask;
137 std::vector<std::unique_ptr<CopyTask>> _copyTasks;
Configurable overlap communication neighborhood of a block.
Implementation of BlockLattice on a concrete PLATFORM.
Wrapper for a local heterogeneous block communication request.
Base class for all LoadBalancer.
Communication-free negotation of unique tags for inter-cuboid communication.
Super class maintaining block lattices for a cuboid decomposition.
Top level namespace for all of OpenLB.
Platform
OpenLB execution targets.
@ GPU_CUDA
Vector CPU (AVX2 / AVX-512 collision)
void checkPlatform< Platform::GPU_CUDA >()
Verifies availability of CUDA device and MPI support.
Generic communicator for the overlap neighborhood of a block.
Private implementation of HeterogeneousCopyTask (PIMPL)
virtual ~ConcreteHeterogeneousCopyTask()