OpenCV 4.12.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 Stream ()
 返回默认 CUDA 流的 Stream 对象
 

友元

class BufferPool
 
class 默认设备初始化器
 
struct StreamAccessor
 

详细描述

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

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

成员 Typedef 文档

◆ StreamCallback

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(分配器) -> <cuda_Stream 对象>
cv.cuda.Stream(cudaFlags) -> <cuda_Stream 对象>

创建一个新的异步流

◆ Stream() [2/3]

cv::cuda::Stream::Stream ( const Ptr< GpuMat::Allocator > & 分配器)
Python
cv.cuda.Stream() -> <cuda_Stream 对象>
cv.cuda.Stream(分配器) -> <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(分配器) -> <cuda_Stream 对象>
cv.cuda.Stream(cudaFlags) -> <cuda_Stream 对象>

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

注意
cudaFlags 参数被传递给底层的 cudaStreamCreateWithFlags() API,并支持相同的参数值。
// 创建一个 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 & event)
Python
cv.cuda.Stream.waitEvent(event) ->

使计算流等待一个事件。

◆ waitForCompletion()

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

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

友元和相关符号文档

◆ BufferPool

friend class BufferPool
friend

◆ DefaultDeviceInitializer

友元类 DefaultDeviceInitializer
friend

◆ StreamAccessor

friend struct StreamAccessor
friend

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