Stream

Struct Stream 

Source
pub struct Stream { /* private fields */ }
Expand description

This class encapsulates a queue of asynchronous calls.

Note: Currently, you may face problems if an operation is enqueued twice with different data. Some functions use the constant GPU memory, and next call may update the memory before the previous one has been finished. But calling different operations asynchronously is safe because each operation has its own constant buffer. Memory copy/upload/download/set operations to the buffers you hold are also safe.

Note: The Stream class is not thread-safe. Please use different Stream objects for different CPU threads.

void thread1()
{
   cv::cuda::Stream stream1;
   cv::cuda::func1(..., stream1);
}

void thread2()
{
   cv::cuda::Stream stream2;
   cv::cuda::func2(..., stream2);
}

Note: By default all CUDA routines are launched in Stream::Null() object, if the stream is not specified by user. In multi-threading environment the stream objects must be passed explicitly (see previous note).

Implementations§

Source§

impl Stream

Source

pub fn default() -> Result<Stream>

creates a new asynchronous stream

Source

pub fn new(allocator: &Ptr<GpuMat_Allocator>) -> Result<Stream>

creates a new asynchronous stream with custom allocator

Source

pub fn new_1(cuda_flags: size_t) -> Result<Stream>

creates a new Stream using the cudaFlags argument to determine the behaviors of the stream

Note: The cudaFlags parameter is passed to the underlying api cudaStreamCreateWithFlags() and supports the same parameter values.

   // creates an OpenCV cuda::Stream that manages an asynchronous, non-blocking,
   // non-default CUDA stream
   cv::cuda::Stream cvStream(cudaStreamNonBlocking);
Source

pub fn null() -> Result<Stream>

return Stream object for default CUDA stream

Trait Implementations§

Source§

impl Boxed for Stream

Source§

unsafe fn from_raw(ptr: <Stream as OpenCVFromExtern>::ExternReceive) -> Self

Wrap the specified raw pointer Read more
Source§

fn into_raw(self) -> <Stream as OpenCVTypeExternContainer>::ExternSendMut

Return the underlying raw pointer while consuming this wrapper. Read more
Source§

fn as_raw(&self) -> <Stream as OpenCVTypeExternContainer>::ExternSend

Return the underlying raw pointer. Read more
Source§

fn as_raw_mut(&mut self) -> <Stream as OpenCVTypeExternContainer>::ExternSendMut

Return the underlying mutable raw pointer Read more
Source§

impl Debug for Stream

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for Stream

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl StreamTrait for Stream

Source§

fn as_raw_mut_Stream(&mut self) -> *mut c_void

Source§

fn wait_for_completion(&mut self) -> Result<()>

Blocks the current CPU thread until all operations in the stream are complete.
Source§

fn wait_event(&mut self, event: &impl EventTraitConst) -> Result<()>

Makes a compute stream wait on an event.
Source§

fn enqueue_host_callback( &mut self, callback: Stream_StreamCallback, ) -> Result<()>

Adds a callback to be called on the host after all currently enqueued items in the stream have completed. Read more
Source§

impl StreamTraitConst for Stream

Source§

fn as_raw_Stream(&self) -> *const c_void

Source§

fn query_if_complete(&self) -> Result<bool>

Returns true if the current stream queue is finished. Otherwise, it returns false.
Source§

fn cuda_ptr(&self) -> Result<*mut c_void>

return Pointer to CUDA stream
Source§

impl Send for Stream

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<Mat> ModifyInplace for Mat
where Mat: Boxed,

Source§

unsafe fn modify_inplace<Res>( &mut self, f: impl FnOnce(&Mat, &mut Mat) -> Res, ) -> Res

Helper function to call OpenCV functions that allow in-place modification of a Mat or another similar object. By passing a mutable reference to the Mat to this function your closure will get called with the read reference and a write references to the same Mat. This is unsafe in a general case as it leads to having non-exclusive mutable access to the internal data, but it can be useful for some performance sensitive operations. One example of an OpenCV function that allows such in-place modification is imgproc::threshold. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.