VirtualFluids
0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
CudaStreamManager.h
Go to the documentation of this file.
1
//=======================================================================================
2
// ____ ____ __ ______ __________ __ __ __ __
3
// \ \ | | | | | _ \ |___ ___| | | | | / \ | |
4
// \ \ | | | | | |_) | | | | | | | / \ | |
5
// \ \ | | | | | _ / | | | | | | / /\ \ | |
6
// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____
7
// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______|
8
// \ \ | | ________________________________________________________________
9
// \ \ | | | ______________________________________________________________|
10
// \ \| | | | __ __ __ __ ______ _______
11
// \ | | |_____ | | | | | | | | | _ \ / _____)
12
// \ | | _____| | | | | | | | | | | \ \ \_______
13
// \ | | | | |_____ | \_/ | | | | |_/ / _____ |
14
// \ _____| |__| |________| \_______/ |__| |______/ (_______/
15
//
16
// This file is part of VirtualFluids. VirtualFluids is free software: you can
17
// redistribute it and/or modify it under the terms of the GNU General Public
18
// License as published by the Free Software Foundation, either version 3 of
19
// the License, or (at your option) any later version.
20
//
21
// VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
22
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24
// for more details.
25
//
26
// SPDX-License-Identifier: GPL-3.0-or-later
27
// SPDX-FileCopyrightText: Copyright © VirtualFluids Project contributors, see AUTHORS.md in root folder
28
//
32
//=======================================================================================
33
#ifndef STREAM_MANAGER_H
34
#define STREAM_MANAGER_H
35
36
#include <map>
37
#include <cuda.h>
38
#include <cuda_runtime.h>
39
#include <
basics/DataTypes.h
>
40
41
namespace
vf::gpu
{
42
43
enum class
CudaStreamIndex
44
{
45
Legacy
,
46
Bulk
,
47
SubDomainBorder
,
48
Precursor
,
49
ActuatorFarm
,
50
PrecursorWriter
,
51
BuoyancyProvider
52
};
53
54
class
CudaStreamManager
55
{
56
private
:
57
std::multimap<CudaStreamIndex, cudaStream_t> cudaStreams;
58
cudaEvent_t
startBulkKernel =
NULL
;
59
cudaStream_t
legacyStream =
CU_STREAM_LEGACY
;
60
61
public
:
62
int
registerAndLaunchStream
(
CudaStreamIndex
streamIndex);
63
void
terminateStreams
();
64
cudaStream_t
&
getStream
(
CudaStreamIndex
streamIndex,
uint
multiStreamIndex
= 0);
65
66
bool
streamIsRegistered
(
CudaStreamIndex
streamIndex);
67
// Events
68
void
createCudaEvents
();
69
void
destroyCudaEvents
();
70
71
void
triggerStartBulkKernel
(
CudaStreamIndex
streamIndex,
uint
multiStreamIndex
= 0);
72
void
waitOnStartBulkKernelEvent
(
CudaStreamIndex
streamIndex,
uint
multiStreamIndex
= 0);
73
};
74
75
}
76
77
#endif
78
DataTypes.h
vf::gpu::ActuatorFarm
Definition
ActuatorFarm.h:51
vf::gpu::CudaStreamManager
Definition
CudaStreamManager.h:55
vf::gpu::CudaStreamManager::createCudaEvents
void createCudaEvents()
Definition
CudaStreamManager.cpp:72
vf::gpu::CudaStreamManager::terminateStreams
void terminateStreams()
Definition
CudaStreamManager.cpp:49
vf::gpu::CudaStreamManager::triggerStartBulkKernel
void triggerStartBulkKernel(CudaStreamIndex streamIndex, uint multiStreamIndex=0)
Definition
CudaStreamManager.cpp:82
vf::gpu::CudaStreamManager::destroyCudaEvents
void destroyCudaEvents()
Definition
CudaStreamManager.cpp:77
vf::gpu::CudaStreamManager::streamIsRegistered
bool streamIsRegistered(CudaStreamIndex streamIndex)
Definition
CudaStreamManager.cpp:67
vf::gpu::CudaStreamManager::getStream
cudaStream_t & getStream(CudaStreamIndex streamIndex, uint multiStreamIndex=0)
Definition
CudaStreamManager.cpp:55
vf::gpu::CudaStreamManager::waitOnStartBulkKernelEvent
void waitOnStartBulkKernelEvent(CudaStreamIndex streamIndex, uint multiStreamIndex=0)
Definition
CudaStreamManager.cpp:87
vf::gpu::CudaStreamManager::registerAndLaunchStream
int registerAndLaunchStream(CudaStreamIndex streamIndex)
Definition
CudaStreamManager.cpp:39
vf::gpu::PrecursorWriter
Probe writing planes of data to be used as inflow data in successor simulation using PrecursorBC The ...
Definition
PrecursorWriter.h:62
SPtr
std::shared_ptr< T > SPtr
Definition
PointerDefinitions.h:39
uint
unsigned int uint
Definition
DataTypes.h:47
vf::gpu
Definition
AdvectionDiffusion.h:43
vf::gpu::CollisionTemplate::SubDomainBorder
@ SubDomainBorder
vf::gpu::CudaStreamIndex
CudaStreamIndex
Definition
CudaStreamManager.h:44
vf::gpu::CudaStreamIndex::Legacy
@ Legacy
vf::gpu::CudaStreamIndex::Bulk
@ Bulk
vf::gpu::CudaStreamIndex::Precursor
@ Precursor
vf::gpu::CudaStreamIndex::BuoyancyProvider
@ BuoyancyProvider
src
gpu
core
Cuda
CudaStreamManager.h
Generated on Thu Aug 13 2026 00:03:25 for VirtualFluids by
1.9.8