Streams of work for the device to perform.
In CUDA, most work is performed asynchronously. Even tasks such as memory copying can be scheduled by the host and performed when ready. Scheduling this work is done using a Stream.
A stream is required for all asynchronous tasks in CUDA, such as kernel launches and asynchronous memory copying. Each task in a stream is performed in the order it was scheduled, and tasks within a stream cannot overlap. Tasks scheduled in multiple streams may interleave or execute concurrently. Sequencing between multiple streams can be achieved using events, which are not currently supported by RustaCUDA. Finally, the host can wait for all work scheduled in a stream to be completed.