K20から、異なるストリームが完全に同時実行になります(以前はエッジで同時実行されていました)。
しかし、私のプログラムには古い方法が必要です。または、依存関係の問題を解決するために多くの同期を行う必要があります。
ストリーム管理を古い方法に切り替えることは可能ですか?
K20から、異なるストリームが完全に同時実行になります(以前はエッジで同時実行されていました)。
しかし、私のプログラムには古い方法が必要です。または、依存関係の問題を解決するために多くの同期を行う必要があります。
ストリーム管理を古い方法に切り替えることは可能ですか?
非同期電流実行に関するCUDACプログラミングガイドセクション
ストリームは、順番に実行される一連のコマンド(おそらく異なるホストスレッドによって発行される)です。一方、異なるストリームは、コマンドを相互に順不同で、または同時に実行する場合があります。この動作は保証されていないため、正確性を信頼するべきではありません(たとえば、カーネル間通信は定義されていません)。
アプリケーションがComputeCapability2. *および3.0のストリームの実装に依存している場合、プログラムはストリームの定義に違反し、CUDAドライバーへの変更(ストリームごとの要求のキューイングなど)または新しいハードウェアによってプログラムが破損します。
一時的な回避策が必要な場合は、すべての作業を単一のユーザー定義ストリームに移動することをお勧めします。これはパフォーマンスに影響を与える可能性がありますが、一時的な回避策である可能性があります。
cudaEvent_t
カーネルの依存関係をオブジェクトで表現できますか?
Streams and Concurrency Webinarは、イベントの使用方法に関するいくつかの簡単なコードスニペットを示しています。そのプレゼンテーションの詳細の一部は、Kepler以前のハードウェアにのみ適用できますが、元の質問から、複数のコマンドキューが存在するようになったFermi以降の状況に精通していると思います。