A variant of StreamGuard that is specialized for CUDA. More...
#include <CUDAGuard.h>
Public Member Functions | |
CUDAStreamGuard ()=delete | |
No default constructor, see Note [Omitted default constructor from RAII]. | |
CUDAStreamGuard (Stream stream) | |
Set the current CUDA device to the device associated with the passed stream, and set the current CUDA stream on that device to the passed stream. More... | |
CUDAStreamGuard (const CUDAStreamGuard &)=delete | |
Copy is disallowed. | |
CUDAStreamGuard & | operator= (const CUDAStreamGuard &)=delete |
CUDAStreamGuard (CUDAStreamGuard &&other)=delete | |
Move is disallowed, as CUDAStreamGuard does not have an uninitialized state, which is required for moves on types with nontrivial destructors. More... | |
CUDAStreamGuard & | operator= (CUDAStreamGuard &&other)=delete |
void | reset_stream (Stream stream) |
Resets the currently set stream to the original stream and the currently set device to the original device. More... | |
CUDAStream | original_stream () const |
Returns the CUDA stream that was set at the time the guard was constructed. | |
CUDAStream | current_stream () const |
Returns the most recent CUDA stream that was set using this device guard, either from construction, or via set_stream. More... | |
Device | current_device () const |
Returns the most recent CUDA device that was set using this device guard, either from construction, or via set_device/reset_device/set_index. More... | |
Device | original_device () const |
Returns the CUDA device that was set at the most recent reset_stream(), or otherwise the device at construction time. More... | |
A variant of StreamGuard that is specialized for CUDA.
See CUDAGuard for when you can use this.
Definition at line 117 of file CUDAGuard.h.
|
inlineexplicit |
Set the current CUDA device to the device associated with the passed stream, and set the current CUDA stream on that device to the passed stream.
Errors if the Stream is not a CUDA stream.
Definition at line 124 of file CUDAGuard.h.
|
delete |
Move is disallowed, as CUDAStreamGuard does not have an uninitialized state, which is required for moves on types with nontrivial destructors.
|
inline |
Returns the most recent CUDA device that was set using this device guard, either from construction, or via set_device/reset_device/set_index.
Definition at line 162 of file CUDAGuard.h.
|
inline |
Returns the most recent CUDA stream that was set using this device guard, either from construction, or via set_stream.
Definition at line 156 of file CUDAGuard.h.
|
inline |
Returns the CUDA device that was set at the most recent reset_stream(), or otherwise the device at construction time.
Definition at line 166 of file CUDAGuard.h.
|
inline |
Resets the currently set stream to the original stream and the currently set device to the original device.
Then, set the current device to the device associated with the passed stream, and set the current stream on that device to the passed stream. Errors if the stream passed is not a CUDA stream.
NOTE: this implementation may skip some stream/device setting if it can prove that it is unnecessary.
WARNING: reset_stream does NOT preserve previously set streams on different devices. If you need to set streams on multiple devices on CUDA, use CUDAMultiStreamGuard instead.
Definition at line 147 of file CUDAGuard.h.