cudaStreamAddCallback()
経由でコールバックを登録すると、どのスレッドがそれを実行するのですか?cudaStreamAddCallbackに渡されたコールバックを実行するスレッドは何ですか?
CUDAのドキュメントはcudaStreamAddCallback
は、ストリーム内のすべての現在キューに入れられた項目が完了した後にホストに呼び出されるコールバックを追加することを言います。
cudaStreamAddCallback
コールごとに、コールバックが1回だけ実行されます。コールバックは、後でストリームが終了するまでブロックします。
しかし、コールバック自体がどのように呼び出されるかについては何も言及していません。
短い答えは、これはCUDAランタイムの内部実装の詳細であり、あなたがする必要がないことである:この質問の答えを持っており、未回答キュー落ちるようにするだけのコメントを肉付けする
これは、CUDAドライバによって起動され、管理されるスレッドです。 CUDAプログラミングモデルで明白に見えるものではありません。このスレッドを作成または管理するために明示的に何もする必要はありません。コールバックが開始されたストリームがコールバックに到達すると(つまり、そのストリームに発行された以前のすべてのアクティビティが完了したとき)コールバックが呼び出されます。 –