OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项
cv::cuda::Stream 类参考

此类封装了一个异步调用队列。更多...

#include <opencv2/core/cuda.hpp>

cv::cuda::Stream 的协作图

公开类型

typedef void(*) StreamCallback(int status, void *userData)
 

公开成员函数

 流 (Stream) ()
 创建一个新的异步流
 
 Stream (const Ptr< GpuMat::Allocator > &allocator)
 使用自定义分配器创建一个新的异步流
 
 Stream (const size_t cudaFlags)
 创建一个新的Stream,使用 cudaFlags 参数来确定流的行为
 
void * cudaPtr () const
 返回 CUDA 流的指针
 
void enqueueHostCallback (StreamCallback callback, void *userData)
 添加一个回调函数,该函数将在流中所有当前已入队的项完成之后在主机上调用。
 
 operator bool_type () const
 如果流对象不是默认的 (!= 0),则返回 true
 
bool queryIfComplete () const
 如果当前流队列已完成,则返回 true。否则,返回 false。
 
void waitEvent (const Event &event)
 使一个计算流等待一个事件。
 
void waitForCompletion ()
 阻止当前 CPU 线程,直到流中的所有操作都完成。
 

静态公开成员函数

static StreamNull ()
 返回默认 CUDA 流的Stream对象
 

友元

class BufferPool
 
class DefaultDeviceInitializer
 
struct StreamAccessor
 

详细说明

此类封装了一个异步调用队列。

注意
当前,如果您将一个操作多次入队不同的数据,可能会遇到问题。某些函数使用常量 GPU 内存,并且下一个调用可能会在前一个调用完成之前更新该内存。但是,异步调用不同的操作是安全的,因为每个操作都有自己的常量缓冲区。对您持有的缓冲区的内存复制/上传/下载/设置操作也是安全的。
Stream 类不是线程安全的。请为不同的 CPU 线程使用不同的Stream对象。
void thread1()
{
cv::cuda::func1(..., stream1);
}
void thread2()
{
cv::cuda::func2(..., stream2);
}
此类封装了一个异步调用队列。
定义 cuda.hpp:917
注意
默认情况下,所有 CUDA 例程都在Stream::Null()对象中启动,如果用户未指定流。在多线程环境中,必须显式传递流对象(请参阅前面的说明)。

成员类型定义说明

◆ StreamCallback

void(*) cv::cuda::Stream::StreamCallback(int status, void *userData)

构造函数与析构函数说明

◆ Stream() [1/3]

cv::cuda::Stream::Stream ( )
Python
cv.cuda.Stream() -> <cuda_Stream object>
cv.cuda.Stream(allocator) -> <cuda_Stream object>
cv.cuda.Stream(cudaFlags) -> <cuda_Stream object>

创建一个新的异步流

◆ Stream() [2/3]

cv::cuda::Stream::Stream ( const Ptr< GpuMat::Allocator > & allocator)
Python
cv.cuda.Stream() -> <cuda_Stream object>
cv.cuda.Stream(allocator) -> <cuda_Stream object>
cv.cuda.Stream(cudaFlags) -> <cuda_Stream object>

使用自定义分配器创建一个新的异步流

◆ Stream() [3/3]

cv::cuda::Stream::Stream ( const size_t cudaFlags)
Python
cv.cuda.Stream() -> <cuda_Stream object>
cv.cuda.Stream(allocator) -> <cuda_Stream object>
cv.cuda.Stream(cudaFlags) -> <cuda_Stream object>

创建一个新的Stream,使用 cudaFlags 参数来确定流的行为

注意
cudaFlags 参数将传递给底层 API cudaStreamCreateWithFlags(),并支持相同的参数值。
// 创建一个 OpenCV cuda::Stream,它管理一个异步、非阻塞、
// 非默认的 CUDA 流
cv::cuda::Stream cvStream(cudaStreamNonBlocking);

成员函数说明

◆ cudaPtr()

void * cv::cuda::Stream::cudaPtr ( ) const
Python
cv.cuda.Stream.cudaPtr() -> retval

返回 CUDA 流的指针

◆ enqueueHostCallback()

void cv::cuda::Stream::enqueueHostCallback ( StreamCallback callback,
void * userData )

添加一个回调函数,该函数将在流中所有当前已入队的项完成之后在主机上调用。

注意
回调函数不得调用任何 CUDA API。回调函数不得执行任何可能依赖于未完成的设备工作或其他未被强制要求提前运行的回调函数的同步操作。在独立流中具有无强制顺序的回调函数将按未定义顺序执行,并可能被序列化。

◆ Null()

static Stream & cv::cuda::Stream::Null ( )
static (静态)
Python
cv.cuda.Stream.Null() -> retval
cv.cuda.Stream_Null() -> retval

返回默认 CUDA 流的Stream对象

◆ operator bool_type()

cv::cuda::Stream::operator bool_type ( ) const

如果流对象不是默认的 (!= 0),则返回 true

◆ queryIfComplete()

bool cv::cuda::Stream::queryIfComplete ( ) const
Python
cv.cuda.Stream.queryIfComplete() -> retval

如果当前流队列已完成,则返回 true。否则,返回 false。

◆ waitEvent()

void cv::cuda::Stream::waitEvent ( const Event & 事件)
Python
cv.cuda.Stream.waitEvent(事件) -> None

使一个计算流等待一个事件。

◆ waitForCompletion()

void cv::cuda::Stream::waitForCompletion ( )
Python
cv.cuda.Stream.waitForCompletion() -> None

阻止当前 CPU 线程,直到流中的所有操作都完成。

友元及相关符号文档

◆ BufferPool

friend class BufferPool
友元

◆ DefaultDeviceInitializer

friend class DefaultDeviceInitializer
友元

◆ StreamAccessor

friend struct StreamAccessor
友元

该类的文档由以下文件生成: