此类封装了一个异步调用的队列。 更多...
#include <opencv2/core/cuda.hpp>
此类封装了一个异步调用的队列。
- 注意
- 目前,如果您将一个操作使用不同的数据两次排队,可能会遇到问题。某些函数使用常量 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]
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(),并支持相同的参数值。
◆ cudaPtr()
void * cv::cuda::Stream::cudaPtr |
( |
| ) |
const |
Python |
---|
| cv.cuda.Stream.cudaPtr( | | ) -> | retval |
◆ 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 |
◆ 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
◆ DefaultDeviceInitializer
friend class DefaultDeviceInitializer |
|
friend |
◆ StreamAccessor
此类的文档是从以下文件生成的