Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
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
ecalDigis_cff.cuda
tuple cuda
Definition:
ecalDigis_cff.py:35
cms::cuda::ScopedSetDevice::set
void set(int device)
Definition:
ScopedSetDevice.h:34
cms::cuda::ScopedSetDevice
Definition:
ScopedSetDevice.h:10
cms::cuda::ScopedSetDevice::~ScopedSetDevice
~ScopedSetDevice()
Definition:
ScopedSetDevice.h:25
cudaCheck.h
cms::cuda::ScopedSetDevice::ScopedSetDevice
ScopedSetDevice(int device)
Definition:
ScopedSetDevice.h:19
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.5