3#include "cuda_pool.hpp"
18struct cudaStreamCreator {
23 cudaStream_t operator () ()
const {
25 TF_CHECK_CUDA(cudaStreamCreate(&stream),
"failed to create a CUDA stream");
31struct cudaStreamDeleter {
36 void operator () (cudaStream_t stream)
const {
38 cudaStreamDestroy(stream);
44struct cudaStreamSynchronizer {
46 void operator () (cudaStream_t stream)
const {
48 cudaStreamSynchronize(stream),
"failed to synchronize a CUDA stream"
203 rhs._stream =
nullptr;
210 cudaStreamDeleter {} (_stream);
222 cudaStreamDeleter {} (_stream);
223 _stream = rhs._stream;
224 rhs._stream =
nullptr;
233 void reset(cudaStream_t stream =
nullptr) {
234 cudaStreamDeleter {} (_stream);
243 operator cudaStream_t ()
const {
254 cudaStreamSynchronizer{}(_stream);
283 void begin_capture(cudaStreamCaptureMode m = cudaStreamCaptureModeGlobal)
const {
285 cudaStreamBeginCapture(_stream, m),
286 "failed to begin capture on stream ", _stream,
" with thread mode ", m
300 cudaGraph_t native_g;
302 cudaStreamEndCapture(_stream, &native_g),
303 "failed to end capture on stream ", _stream
316 cudaEventRecord(event, _stream),
317 "failed to record event ", event,
" on stream ", _stream
327 void wait(cudaEvent_t event)
const {
329 cudaStreamWaitEvent(_stream, event, 0),
330 "failed to wait for event ", event,
" on stream ", _stream
336 cudaStream_t _stream {
nullptr};
346struct cudaEventCreator {
351 cudaEvent_t operator () ()
const {
353 TF_CHECK_CUDA(cudaEventCreate(&event),
"failed to create a CUDA event");
359struct cudaEventDeleter {
364 void operator () (cudaEvent_t event)
const {
365 cudaEventDestroy(event);
515 rhs._event =
nullptr;
522 cudaEventDeleter {} (_event);
534 cudaEventDeleter {} (_event);
536 rhs._event =
nullptr;
545 operator cudaEvent_t ()
const {
554 void reset(cudaEvent_t event =
nullptr) {
555 cudaEventDeleter {} (_event);
561 cudaEvent_t _event {
nullptr};
**
Definition cuda_stream.hpp:490
cudaEvent()
constructs an RAII-styled object for a new CUDA event
Definition cuda_stream.hpp:503
void reset(cudaEvent_t event=nullptr)
replaces the managed event
Definition cuda_stream.hpp:554
cudaEvent(cudaEvent &&rhs)
move constructor
Definition cuda_stream.hpp:514
~cudaEvent()
destructs the CUDA event
Definition cuda_stream.hpp:521
cudaEvent & operator=(const cudaEvent &)=delete
disabled copy assignment
cudaEvent(cudaEvent_t event)
constructs an RAII-styled object from the given CUDA event
Definition cuda_stream.hpp:497
cudaEvent(const cudaEvent &)=delete
disabled copy constructor
**
Definition cuda_stream.hpp:174
void synchronize() const
synchronizes the associated stream
Definition cuda_stream.hpp:253
cudaStream & operator=(const cudaStream &)=delete
disabled copy assignment
void reset(cudaStream_t stream=nullptr)
replaces the managed stream
Definition cuda_stream.hpp:233
void wait(cudaEvent_t event) const
waits on an event
Definition cuda_stream.hpp:327
void record(cudaEvent_t event) const
records an event on the stream
Definition cuda_stream.hpp:314
cudaGraph_t end_capture() const
ends graph capturing on the stream
Definition cuda_stream.hpp:299
cudaStream(cudaStream_t stream)
constructs an RAII-styled object from the given CUDA stream
Definition cuda_stream.hpp:183
~cudaStream()
destructs the CUDA stream
Definition cuda_stream.hpp:209
void begin_capture(cudaStreamCaptureMode m=cudaStreamCaptureModeGlobal) const
begins graph capturing on the stream
Definition cuda_stream.hpp:283
cudaStream()
constructs an RAII-styled object for a new CUDA stream
Definition cuda_stream.hpp:191
cudaStream(const cudaStream &)=delete
disabled copy constructor
cudaStream(cudaStream &&rhs)
move constructor
Definition cuda_stream.hpp:202
taskflow namespace
Definition small_vector.hpp:27