class
cudaStreamclass to create a CUDA stream in an RAII-styled wrapper
Contents
A cudaStream object is an RAII-styled wrapper over a native CUDA stream (cudaStream_t
). A cudaStream object is move-only.
Constructors, destructors, conversion operators
- cudaStream(cudaStream_t stream) explicit
- constructs an RAII-styled object from the given CUDA stream
- cudaStream()
- constructs an RAII-styled object for a new CUDA stream
- cudaStream(const cudaStream&) deleted
- disabled copy constructor
- cudaStream(cudaStream&& rhs)
- move constructor
- ~cudaStream()
- destructs the CUDA stream
- operator cudaStream_t() const
- implicit conversion to the native CUDA stream (cudaStream_t)
Public functions
- auto operator=(const cudaStream&) -> cudaStream& deleted
- disabled copy assignment
- auto operator=(cudaStream&& rhs) -> cudaStream&
- move assignment
- void reset(cudaStream_t stream = nullptr)
- replaces the managed stream
- void synchronize() const
- synchronizes the associated stream
- void begin_capture(cudaStreamCaptureMode m = cudaStreamCaptureModeGlobal) const
- begins graph capturing on the stream
- auto end_capture() const -> cudaGraph_t
- ends graph capturing on the stream
- void record(cudaEvent_t event) const
- records an event on the stream
- void wait(cudaEvent_t event) const
- waits on an event
Function documentation
tf:: cudaStream:: cudaStream(cudaStream_t stream) explicit
constructs an RAII-styled object from the given CUDA stream
Constructs a cudaStream object which owns stream
.
tf:: cudaStream:: cudaStream()
constructs an RAII-styled object for a new CUDA stream
Equivalently calling cudaStreamCreate
to create a stream.
tf:: cudaStream:: operator cudaStream_t() const
implicit conversion to the native CUDA stream (cudaStream_t)
Returns the underlying stream of type cudaStream_t
.
void tf:: cudaStream:: reset(cudaStream_t stream = nullptr)
replaces the managed stream
Destructs the managed stream and resets it to the given stream.
void tf:: cudaStream:: synchronize() const
synchronizes the associated stream
Equivalently calling cudaStreamSynchronize
to block until this stream has completed all operations.
void tf:: cudaStream:: begin_capture(cudaStreamCaptureMode m = cudaStreamCaptureModeGlobal) const
begins graph capturing on the stream
When a stream is in capture mode, all operations pushed into the stream will not be executed, but will instead be captured into a graph, which will be returned via cudaStream::
A thread's mode can be one of the following:
cudaStreamCaptureModeGlobal:
This is the default mode. If the local thread has an ongoing capture sequence that was not initiated withcudaStreamCaptureModeRelaxed
atcuStreamBeginCapture
, or if any other thread has a concurrent capture sequence initiated withcudaStreamCaptureModeGlobal
, this thread is prohibited from potentially unsafe API calls.cudaStreamCaptureModeThreadLocal:
If the local thread has an ongoing capture sequence not initiated withcudaStreamCaptureModeRelaxed
, it is prohibited from potentially unsafe API calls. Concurrent capture sequences in other threads are ignored.cudaStreamCaptureModeRelaxed:
The local thread is not prohibited from potentially unsafe API calls. Note that the thread is still prohibited from API calls which necessarily conflict with stream capture, for example, attemptingcudaEventQuery
on an event that was last recorded inside a capture sequence.
cudaGraph_t tf:: cudaStream:: end_capture() const
ends graph capturing on the stream
Equivalently calling cudaStreamEndCapture
to end capture on stream and returning the captured graph. Capture must have been initiated on stream via a call to cudaStream::
void tf:: cudaStream:: record(cudaEvent_t event) const
records an event on the stream
Equivalently calling cudaEventRecord
to record an event on this stream, both of which must be on the same CUDA context.
void tf:: cudaStream:: wait(cudaEvent_t event) const
waits on an event
Equivalently calling cudaStreamWaitEvent
to make all future work submitted to stream wait for all work captured in event.