私はCUDAストリームとイベントについて読んでいました。以下のリンクのスレッドから、司会者が言った(私は引用しています):CUDAのストリームとイベント:明確化
ストリームに提出されたコマンドは、順番に完了することが保証されています。アプリケーションがグリッドランチとイベントレコードをストリームに送信すると、ドライバはグリッドランチ、同期コマンド、およびイベントレコードを接続にプッシュします。フロントエンドは、カーネルの起動が完了して同期トークンがクリアされるまで、イベント記録コマンドを処理しません。 接続がブロックされています。コンピューティング機能3.5デバイスでは、フロントエンドは他の接続を処理し続けることができます。計算機能< 3.5デバイスでは、フロントエンドは単にブロックされます。
は私が懸命に試みたが、司会者は、接続がブロックされていることを述べ、なぜ私が理解することはできません。何か説明してください。ありがとうございました。
スレッドURL:このコンテキストでhttps://devtalk.nvidia.com/default/topic/599056/concurrent-kernel-and-events-on-kepler/?offset=4
このコンテキストでの接続は、コマンドキューのように機能します。 <3.5のコンピューティング機能を持つデバイスには、単一の接続/コマンドキューしかありません。論理的には複数のストリームが存在する可能性がありますが、コマンドがデバイスに送信されるまでには、それらはすべて同じキューで終了し、お互いをもう追い越すことはできません。したがって、イベントを記録するような、デバイス側をブロックする1つのコマンドは、他のすべてのブロックをブロックします。それ以降のデバイスは複数の接続をサポートしているため、各ストリームは独自のコマンドキューを取得します(いくつかの制限まで)。 – tera
@tera:それを追加したい場合は完璧な答えです。 – talonmies