Main Page
+
Namespaces
Namespace List
+
Namespace Members
+
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
z
+
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Classes
Class List
Class Index
Class Hierarchy
+
Class Members
+
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
+
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
+
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
+
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Properties
_
a
c
d
e
f
l
m
o
p
s
t
u
v
+
Related Functions
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Package Documentation
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
src
HeterogeneousCore
CUDAUtilities
interface
ScopedSetDevice.h
Go to the documentation of this file.
1
#ifndef HeterogeneousCore_CUDAUtilities_ScopedSetDevice_h
2
#define HeterogeneousCore_CUDAUtilities_ScopedSetDevice_h
3
4
#include "
HeterogeneousCore/CUDAUtilities/interface/cudaCheck.h
"
5
6
#include <cuda_runtime.h>
7
8
namespace
cms
{
9
namespace
cuda
{
10
class
ScopedSetDevice
{
11
public
:
12
// Store the original device, without setting a new one
13
ScopedSetDevice
() {
14
// Store the original device
15
cudaCheck
(cudaGetDevice(&
originalDevice_
));
16
}
17
18
// Store the original device, and set a new current device
19
explicit
ScopedSetDevice
(
int
device) :
ScopedSetDevice
() {
20
// Change the current device
21
set
(device);
22
}
23
24
// Restore the original device
25
~ScopedSetDevice
() {
26
// Intentionally don't check the return value to avoid
27
// exceptions to be thrown. If this call fails, the process is
28
// doomed anyway.
29
cudaSetDevice(
originalDevice_
);
30
}
31
32
// Set a new current device, without changing the original device
33
// that will be restored when this object is destroyed
34
void
set
(
int
device) {
35
// Change the current device
36
cudaCheck
(cudaSetDevice(device));
37
}
38
39
private
:
40
int
originalDevice_
;
41
};
42
}
// namespace cuda
43
}
// namespace cms
44
45
#endif
cms::cuda::ScopedSetDevice::ScopedSetDevice
ScopedSetDevice()
Definition:
ScopedSetDevice.h:13
cms::cuda::ScopedSetDevice
Definition:
ScopedSetDevice.h:10
cms::cuda::ScopedSetDevice::~ScopedSetDevice
~ScopedSetDevice()
Definition:
ScopedSetDevice.h:25
cms
Namespace of DDCMS conversion namespace.
Definition:
ProducerAnalyzer.cc:41
cudaCheck.h
cms::cuda::ScopedSetDevice::ScopedSetDevice
ScopedSetDevice(int device)
Definition:
ScopedSetDevice.h:19
ecalDigis_cff.cuda
cuda
Definition:
ecalDigis_cff.py:35
cudaCheck
#define cudaCheck(ARG,...)
Definition:
cudaCheck.h:69
cms::cuda::ScopedSetDevice::originalDevice_
int originalDevice_
Definition:
ScopedSetDevice.h:40
Generated for CMSSW Reference Manual by
1.8.14