OpenCV  4.10.0
开源计算机视觉库
正在加载...
正在搜索...
没有匹配项
公共类型 | 公共成员函数 | 静态公共成员函数 | 友元 | 所有成员列表
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)
 使用 cudaFlags 参数创建新的 Stream 来确定流的行为
 
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 ()
 返回 Stream 对象,用于默认的 CUDA 流
 

友元

class BufferPool
 
class DefaultDeviceInitializer
 
struct StreamAccessor
 

详细描述

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

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

成员类型定义文档

◆ StreamCallback

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

构造函数和析构函数文档

◆ Stream() [1/3]

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

创建一个新的异步流

◆ Stream() [2/3]

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

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

◆ Stream() [3/3]

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

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

注意
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

返回 Stream 对象,用于默认的 CUDA 流

◆ 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 event)
Python
cv.cuda.Stream.waitEvent(event) -> None

使计算流等待事件。

◆ waitForCompletion()

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

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

友元和相关符号文档

◆ BufferPool

friend class BufferPool
friend

◆ DefaultDeviceInitializer

friend class DefaultDeviceInitializer
friend

◆ StreamAccessor

friend struct StreamAccessor
friend

此类的文档是从以下文件生成的