2

ホストをブロックせずに 2 つの CUDA ストリームを同期することは可能ですか? cudaStreamWaitEvent非ブロッキングの があることは知っています。cudaEventCreate しかし、 と を使用したイベントの作成と破棄についてはどうでしょうかcudaEventDestroy

ドキュメントcudaEventDestroyは次のように書かれています:

イベントが記録されたが、cudaEventDestroy() が呼び出されたときにまだ完了していない場合、関数はすぐに戻り、デバイスがイベントを完了すると、イベントに関連付けられたリソースが自動的に解放されます。

ここで理解できないのは、記録されたイベントと完了したイベントの違いです。また、これは、イベントがまだ記録されていない場合、呼び出しがブロックされていることを意味しているようです。

これに光を当てることができる人は誰ですか?

4

1 に答える 1

5

を使用することで、正しい軌道に乗っていますcudaStreamWaitEvent。イベントの作成にはコストがかかりますが、アプリケーションの起動時にイベントを作成して、GPU ルーチン中の作成時間のコストがかからないようにすることができます。

イベントをストリームに入れると、イベントが記録されます。イベントが完了する前にストリームに入れられたすべてのアクティビティの後に完了します。イベントを記録すると、基本的にストリームにマーカーが配置されます。これにより、イベントが完了cudaStreamWaitEventするまでストリームの進行を停止できます。

于 2016-08-08T15:41:20.037 に答える