cuda::experimental::stream

Defined in include/cuda/experimental/__stream/stream.cuh

struct stream : public cuda::experimental::stream_ref

An owning wrapper for cudaStream_t.

Public Functions

inline explicit stream(device_ref __dev, int __priority = default_priority)

Constructs a stream on a specified device and with specified priority.

Priority is defaulted to stream::default_priority

Throws

cuda_error – if stream creation fails

inline explicit stream(::cuda::experimental::logical_device __dev, int __priority = default_priority)

Constructs a stream on a specified logical device and with specified priority.

Priority is defaulted to stream::default_priority

Throws

cuda_error – if stream creation fails

inline stream()

Constructs a stream on the default device.

Throws

cuda_error – if stream creation fails.

inline explicit stream(uninit_t) noexcept

Construct a new stream object into the moved-from state.

Post

stream() returns an invalid stream handle

inline stream(stream &&__other) noexcept

Move-construct a new stream object.

Parameters

__other

Post

__other is in moved-from state.

stream(const stream&) = delete
inline ~stream()

Destroy the stream object.

Note

If the stream fails to be destroyed, the error is silently ignored.

inline stream &operator=(stream &&__other) noexcept

Move-assign a stream object.

Parameters

__other

Post

__other is in a moved-from state.

stream &operator=(const stream&) = delete
inline ::cudaStream_t release()

Retrieve the native cudaStream_t handle and give up ownership.

Returns

cudaStream_t The native handle being held by the stream object.

Post

The stream object is in a moved-from state.

inline event record_event(event::flags __flags = event::flags::none) const

Create a new event and record it into this stream.

Throws

cuda_error – if event creation or record failed

Returns

A new event that was recorded into this stream

inline timed_event record_timed_event(event::flags __flags = event::flags::none) const

Create a new timed event and record it into this stream.

Throws

cuda_error – if event creation or record failed

Returns

A new timed event that was recorded into this stream

inline void wait(event_ref __ev) const

Make all future work submitted into this stream depend on completion of the specified event.

Parameters

__ev – Event that this stream should wait for

Throws

cuda_error – if inserting the dependency fails

inline void wait(stream_ref __other) const

Make all future work submitted into this stream depend on completion of all work from the specified stream.

Parameters

__other – Stream that this stream should wait for

Throws

cuda_error – if inserting the dependency fails

inline logical_device logical_device() const

Get the logical device under which this stream was created Compared to device() member function the returned logical_device will hold a green context for streams created under one.

inline device_ref device() const

Get device under which this stream was created.

Note: In case of a stream created under a green_context the device on which that green_context was created is returned

Throws

cuda_error – if device check fails

Public Static Functions

static inline stream from_native_handle(::cudaStream_t __handle)

Construct an stream object from a native cudaStream_t handle.

Note

The constructed stream object takes ownership of the native handle.

Parameters

__handle – The native handle

Returns

stream The constructed stream object

static stream from_native_handle(int) = delete
static stream from_native_handle(cuda::std::nullptr_t) = delete

Public Static Attributes

static constexpr int default_priority = 0