The Gaudi Framework
master (57817a18)
Toggle main menu visibility
Loading...
Searching...
No Matches
CUDAStream.h
Go to the documentation of this file.
1
/***********************************************************************************\
2
* (c) Copyright 2023-2026 CERN for the benefit of the LHCb and ATLAS collaborations *
3
* *
4
* This software is distributed under the terms of the Apache version 2 licence, *
5
* copied verbatim in the file "LICENSE". *
6
* *
7
* In applying this licence, CERN does not waive the privileges and immunities *
8
* granted to it by virtue of its status as an Intergovernmental Organization *
9
* or submit itself to any jurisdiction. *
10
\***********************************************************************************/
11
#pragma once
12
// Gaudi
13
#include <
Gaudi/AsynchronousAlgorithm.h
>
14
15
// Forward declaration hack so we can have a cudaStream_t member here
16
struct
CUstream_st;
17
typedef
struct
CUstream_st*
cudaStream_t
;
18
19
namespace
Gaudi::CUDA
{
20
class
Stream
{
21
private
:
22
cudaStream_t
m_stream
;
23
const
bool
m_owning
;
24
const
Gaudi::Algorithm
*
m_parent
;
25
const
Gaudi::AsynchronousAlgorithm
*
m_async_parent
;
26
int
m_dependents
;
27
28
public
:
30
Stream
(
const
Gaudi::Algorithm
*
parent
,
cudaStream_t
stream );
32
Stream
(
const
Gaudi::Algorithm
*
parent
);
33
~Stream
();
34
36
operator
cudaStream_t
();
37
39
const
Gaudi::Algorithm
*
parent
();
40
42
const
Gaudi::AsynchronousAlgorithm
*
asyncParent
();
43
45
StatusCode
await
();
46
48
void
registerDependency
();
49
51
void
removeDependency
();
52
};
53
}
// namespace Gaudi::CUDA
AsynchronousAlgorithm.h
cudaStream_t
struct CUstream_st * cudaStream_t
Definition
CUDAStream.h:17
Gaudi::Algorithm
Base class from which all concrete algorithm classes should be derived.
Definition
Algorithm.h:87
Gaudi::AsynchronousAlgorithm
Base class for asynchronous algorithms.
Definition
AsynchronousAlgorithm.h:33
Gaudi::CUDA::Stream::m_async_parent
const Gaudi::AsynchronousAlgorithm * m_async_parent
Definition
CUDAStream.h:25
Gaudi::CUDA::Stream::removeDependency
void removeDependency()
INTERNAL: Remove a dependency.
Definition
CUDAStream.cpp:139
Gaudi::CUDA::Stream::asyncParent
const Gaudi::AsynchronousAlgorithm * asyncParent()
Access the parent AsynchronousAlgorithm.
Definition
CUDAStream.cpp:112
Gaudi::CUDA::Stream::registerDependency
void registerDependency()
INTERNAL: Register a dependency.
Definition
CUDAStream.cpp:138
Gaudi::CUDA::Stream::Stream
Stream(const Gaudi::Algorithm *parent, cudaStream_t stream)
Wrap an existing cudaStream.
Definition
CUDAStream.cpp:78
Gaudi::CUDA::Stream::m_owning
const bool m_owning
Definition
CUDAStream.h:23
Gaudi::CUDA::Stream::await
StatusCode await()
Yield fiber until stream is done.
Definition
CUDAStream.cpp:114
Gaudi::CUDA::Stream::m_dependents
int m_dependents
Definition
CUDAStream.h:26
Gaudi::CUDA::Stream::parent
const Gaudi::Algorithm * parent()
Access the parent algorithm.
Definition
CUDAStream.cpp:111
Gaudi::CUDA::Stream::m_parent
const Gaudi::Algorithm * m_parent
Definition
CUDAStream.h:24
Gaudi::CUDA::Stream::~Stream
~Stream()
Definition
CUDAStream.cpp:100
Gaudi::CUDA::Stream::m_stream
cudaStream_t m_stream
Definition
CUDAStream.h:22
StatusCode
This class is used for returning status codes from appropriate routines.
Definition
StatusCode.h:64
Gaudi::CUDA
Definition
CUDAStream.h:19
GaudiCUDA
include
Gaudi
CUDA
CUDAStream.h
Generated on
for The Gaudi Framework by
1.17.0