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

此類的文件是從以下檔案生成的: