Class cv::cuda::Stream#
This class encapsulates a queue of asynchronous calls. View details
#include <opencv2/core/cuda.hpp>Collaboration diagram for cv::cuda::Stream:
Friends#
Return |
Name |
Description |
|---|---|---|
|
||
|
||
|
Detailed 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.
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).
Member Typedef Documentation#
bool_type#
StreamCallback#
typedef void(*) cv::cuda::Stream::StreamCallback(int status, void *userData)
Constructor & Destructor Documentation#
Stream()#
cv::cuda::Stream::Stream(const Ptr< Impl > & impl)
Python:
Stream()#
Python:
creates a new asynchronous stream
Stream()#
cv::cuda::Stream::Stream(const Ptr< GpuMat::Allocator > & allocator)
Python:
creates a new asynchronous stream with custom allocator
Stream()#
cv::cuda::Stream::Stream(const size_t cudaFlags)
Python:
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);
Member Function Documentation#
this_type_does_not_support_comparisons()#
void cv::cuda::Stream::this_type_does_not_support_comparisons()
cudaPtr()#
void * cv::cuda::Stream::cudaPtr()
Python:
cv.cuda.Stream.cudaPtr() -> retval
return Pointer to CUDA stream
enqueueHostCallback()#
void cv::cuda::Stream::enqueueHostCallback(
StreamCallback callback,
void * userData )
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.
operator bool_type()#
cv::cuda::Stream::operator bool_type()
returns true if stream object is not default (!= 0)
queryIfComplete()#
bool cv::cuda::Stream::queryIfComplete()
Python:
cv.cuda.Stream.queryIfComplete() -> retval
Returns true if the current stream queue is finished. Otherwise, it returns false.
waitEvent()#
void cv::cuda::Stream::waitEvent(const Event & event)
Python:
cv.cuda.Stream.waitEvent(event)
Makes a compute stream wait on an event.
waitForCompletion()#
void cv::cuda::Stream::waitForCompletion()
Python:
cv.cuda.Stream.waitForCompletion()
Blocks the current CPU thread until all operations in the stream are complete.
Null()#
static Stream & cv::cuda::Stream::Null()
Python:
cv.cuda.Stream.Null() -> retval
cv.cuda.Stream_Null() -> retval
return Stream object for default CUDA stream
Member Data Documentation#
impl_#
Source file#
The documentation for this class was generated from the following file:
opencv2/core/cuda.hpp