HeterogeneousCore
CUDAUtilities
interface
StreamCache.h
Go to the documentation of this file.
1
#ifndef HeterogeneousCore_CUDAUtilities_StreamCache_h
2
#define HeterogeneousCore_CUDAUtilities_StreamCache_h
3
4
#include <vector>
5
6
#include <cuda_runtime.h>
7
8
#include "
FWCore/Utilities/interface/ReusableObjectHolder.h
"
9
#include "
HeterogeneousCore/CUDAUtilities/interface/SharedStreamPtr.h
"
10
11
class
CUDAService
;
12
13
namespace
cms
{
14
namespace
cuda
{
15
class
StreamCache
{
16
public
:
17
using
BareStream
= SharedStreamPtr::element_type;
18
19
StreamCache
();
20
21
// Gets a (cached) CUDA stream for the current device. The stream
22
// will be returned to the cache by the shared_ptr destructor.
23
// This function is thread safe
24
SharedStreamPtr
get
();
25
26
private
:
27
friend
class ::CUDAService;
28
// not thread safe, intended to be called only from CUDAService destructor
29
void
clear
();
30
31
class
Deleter
{
32
public
:
33
Deleter
() =
default
;
34
Deleter
(
int
d
) :
device_
{
d
} {}
35
void
operator()
(cudaStream_t
stream
)
const
;
36
37
private
:
38
int
device_
= -1;
39
};
40
41
std::vector<edm::ReusableObjectHolder<BareStream, Deleter>>
cache_
;
42
};
43
44
// Gets the global instance of a StreamCache
45
// This function is thread safe
46
StreamCache
&
getStreamCache
();
47
}
// namespace cuda
48
}
// namespace cms
49
50
#endif
cms::cuda::StreamCache::BareStream
SharedStreamPtr::element_type BareStream
Definition:
StreamCache.h:17
cms::cuda::StreamCache::Deleter::Deleter
Deleter(int d)
Definition:
StreamCache.h:34
cms::cuda::SharedStreamPtr
std::shared_ptr< std::remove_pointer_t< cudaStream_t > > SharedStreamPtr
Definition:
SharedStreamPtr.h:14
cms::cuda::stream
uint32_t const T *__restrict__ const uint32_t *__restrict__ int32_t int Histo::index_type cudaStream_t stream
Definition:
HistoContainer.h:51
cms::cuda::StreamCache::clear
void clear()
Definition:
StreamCache.cc:29
ReusableObjectHolder.h
cms::cuda::StreamCache::StreamCache
StreamCache()
Definition:
StreamCache.cc:18
cms::cuda::getStreamCache
StreamCache & getStreamCache()
Definition:
StreamCache.cc:39
cms::cuda::StreamCache::cache_
std::vector< edm::ReusableObjectHolder< BareStream, Deleter > > cache_
Definition:
StreamCache.h:41
SharedStreamPtr.h
cms::cuda::StreamCache::get
SharedStreamPtr get()
Definition:
StreamCache.cc:20
cms::cuda::StreamCache::Deleter::operator()
void operator()(cudaStream_t stream) const
Definition:
StreamCache.cc:9
cms::cuda::StreamCache::Deleter::device_
int device_
Definition:
StreamCache.h:38
cms::cuda::StreamCache::Deleter
Definition:
StreamCache.h:31
ecalDigis_cff.cuda
cuda
Definition:
ecalDigis_cff.py:35
cms::cuda::StreamCache
Definition:
StreamCache.h:15
ztail.d
d
Definition:
ztail.py:151
CUDAService
Definition:
CUDAService.h:15
cms
Namespace of DDCMS conversion namespace.
Definition:
ProducerAnalyzer.cc:21
cms::cuda::StreamCache::Deleter::Deleter
Deleter()=default
Generated for CMSSW Reference Manual by
1.8.16