cupy.cuda.Stream

class cupy.cuda.Stream(null=False, non_blocking=False)

CUDA stream.

This class handles the CUDA stream handle in RAII way, i.e., when an Stream instance is destroyed by the GC, its handle is also destroyed.

Parameters
  • null (bool) – If True, the stream is a null stream (i.e. the default stream that synchronizes with all streams). Otherwise, a plain new stream is created. Note that you can also use Stream.null singleton object instead of creating new null stream object.

  • non_blocking (bool) – If True, the stream does not synchronize with the NULL stream.

Variables

ptr (intptr_t) – Raw stream handle. It can be passed to the CUDA Runtime API via ctypes.

Methods

__enter__(self)
__exit__(self, *args)
add_callback(self, callback, arg)

Adds a callback that is called when all queued work is done.

Parameters
  • callback (function) – Callback function. It must take three arguments (Stream object, int error status, and user data object), and returns nothing.

  • arg (object) – Argument to the callback.

record(self, event=None)

Records an event on the stream.

Parameters

event (None or cupy.cuda.Event) – CUDA event. If None, then a new plain event is created and used.

Returns

The recorded event.

Return type

cupy.cuda.Event

synchronize(self)

Waits for the stream completing all queued work.

use(self)

Makes this stream current.

If you want to switch a stream temporarily, use the with statement.

wait_event(self, event)

Makes the stream wait for an event.

The future work on this stream will be done after the event.

Parameters

event (cupy.cuda.Event) – CUDA event.

__eq__(self, other)
__ne__(value, /)

Return self!=value.

__lt__(value, /)

Return self<value.

__le__(value, /)

Return self<=value.

__gt__(value, /)

Return self>value.

__ge__(value, /)

Return self>=value.

Attributes

done

True if all work on this stream has been done.

null = <Stream 0>