[][src]Trait opencv::core::prelude::StreamTrait

pub trait StreamTrait {
    pub fn as_raw_Stream(&self) -> *const c_void;
pub fn as_raw_mut_Stream(&mut self) -> *mut c_void; pub fn query_if_complete(&self) -> Result<bool> { ... }
pub fn wait_for_completion(&mut self) -> Result<()> { ... }
pub fn wait_event(&mut self, event: &Event) -> Result<()> { ... }
pub fn enqueue_host_callback(
        &mut self,
        callback: Stream_StreamCallback
    ) -> Result<()> { ... }
pub fn cuda_ptr(&self) -> Result<*mut c_void> { ... } }

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).

Required methods

Loading content...

Provided methods

pub fn query_if_complete(&self) -> Result<bool>[src]

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

pub fn wait_for_completion(&mut self) -> Result<()>[src]

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

pub fn wait_event(&mut self, event: &Event) -> Result<()>[src]

Makes a compute stream wait on an event.

pub fn enqueue_host_callback(
    &mut self,
    callback: Stream_StreamCallback
) -> Result<()>
[src]

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

Note: Callbacks must not make any CUDA API calls. Callbacks must not perform any synchronization that may depend on outstanding device work or other callbacks that are not mandated to run earlier. Callbacks without a mandated order (in independent streams) execute in undefined order and may be serialized.

pub fn cuda_ptr(&self) -> Result<*mut c_void>[src]

return Pointer to CUDA stream

Loading content...

Implementors

impl StreamTrait for Stream[src]

Loading content...