2017-02-01 3 views
1

ストリームがビデオフレーム上の複数の関心領域を処理するのに役立つかもしれない場所を理解しようとしています。ストリームをサポートするNPP関数を使用している場合は、ROIと同じ数のストリームを起動する場合ですか?ストリームごとにCPUスレッドを作成する可能性もありますか?または、1つのストリームを使用してすべてのROIを処理し、おそらくCPUの複数のスレッドからのこの単一のストリームを使用する利点はありますか?CUDAストリームを使用する利点

答えて

3

CUDAでは、一般にストリームを使用すると、GPUを2つの方法でうまく活用するのに役立ちます。第1に、コピーと実行が異なるストリームで行われる場合、ホストとデバイスとの間のメモリコピーをカーネル実行によってオーバーラップさせることができる。第2に、GPUに十分なリソースがあれば、異なるストリームで動作する個々のカーネルが重複する可能性があります。

さらに、ROIごとのスレッドを作成することは、GPUとCPU(もしあれば)の使用率の比較に依存します。 CPUに多くの処理があり、CPUがGPUの計算を保留している場合は、より多くのスレッドを作成すると役立ちます。

ストリーム内の操作の重複を制限する詳細(CUDAの実際のバージョンはを参照)があります。メモリコピーは、RAM内のメモリソースまたはデスティネーションがページロックされている場合にのみ、カーネルの実行と重複します。または、ストリーム間の同期は、ホストスレッドがデフォルトストリーム内のコマンドを発行するときに発生します。 (各スレッドには独自のデフォルトストリームがあるので、別のスレッドでROIを処理すると再び役立ちます)

ROIの処理が異なるストリームで発生する(カーネルのリソース消費、メモリコピーと計算の比率などに依存して)...

+0

ありがとう!非常に役立ちます! – AeroClassics

+0

@AeroClassicsの場合は、回答を承認することを検討してください。 – stuhlo

関連する問題