このクラスは非同期呼び出しのキューをカプセル化する。 続き...
#include <opencv2/core/cuda.hpp>
このクラスは非同期呼び出しのキューをカプセル化する。
- 覚え書き
- 現在、異なるデータで同じ操作を2回キューイングすると問題が発生する可能性がある。一部の関数は定数GPUメモリを使用するため、前の呼び出しが完了する前に次の呼び出しがメモリを更新する場合がある。ただし、各操作はそれぞれ独自の定数バッファを持つため、異なる操作を非同期に呼び出すのは安全である。保持しているバッファに対するメモリのコピー/アップロード/ダウンロード/設定操作も安全である。
- Stream クラスはスレッドセーフではない。異なるCPUスレッドには異なる Stream オブジェクトを使用すること。
void thread1()
{
cv::cuda::func1(..., stream1);
}
void thread2()
{
cv::cuda::func2(..., stream2);
}
This class encapsulates a queue of asynchronous calls.
Definition cuda.hpp:933
- 覚え書き
- ユーザがストリームを指定しない場合、デフォルトではすべての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]
| 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> |
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 |
デフォルトの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 | ) -> | None |
◆ waitForCompletion()
| void cv::cuda::Stream::waitForCompletion |
( |
| ) |
|
| Python: |
|---|
| cv.cuda.Stream.waitForCompletion( | | ) -> | None |
ストリーム内のすべての操作が完了するまで、現在のCPUスレッドをブロックする。
◆ BufferPool
◆ DefaultDeviceInitializer
| friend class DefaultDeviceInitializer |
|
friend |
◆ StreamAccessor
このクラス詳解は次のファイルから抽出されました: