CUDA C プログラミング ガイドには、次のステートメントが記載されています。
カーネルの同時実行をサポートし、コンピューティング機能が 3.0 以下のデバイスの場合、ストリーミングされたカーネルの起動が完了しているかどうかを確認するために依存関係のチェックが必要な操作:
‣ CUDA コンテキスト内の任意のストリームから以前に起動されたすべてのカーネルのすべてのスレッド ブロックが実行を開始した場合にのみ、実行を開始できます。
‣ チェック中のカーネル起動が完了するまで、CUDA コンテキスト内の任意のストリームからの以降のカーネル起動をすべてブロックします。
私はここでかなり迷っています。依存関係チェックとは何ですか? 一部のデバイス メモリでのカーネル実行には、同じデバイス メモリを含む以前のすべてのカーネルまたはメモリ転送の依存関係チェックが必要であると言えますか? これが true の場合 (そうでない場合もあります)、この依存関係チェックは、上記のステートメントに従って他のストリームから以降のすべてのカーネルをブロックするため、その後非同期または同時実行は発生しませんが、これは正しくないようです。
説明や詳細をいただければ幸いです。