問題タブ [cuda-streams]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
concurrency - nvidia K20cに古いストリーム管理方法を使用させますか?
K20から、異なるストリームが完全に同時実行になります(以前はエッジで同時実行されていました)。
しかし、私のプログラムには古い方法が必要です。または、依存関係の問題を解決するために多くの同期を行う必要があります。
ストリーム管理を古い方法に切り替えることは可能ですか?
cuda - ストリームのスケジュール順
プロセス 1 とプロセス 2 (以下) の両方を見る方法は、同じ時間がかかるという点で同等です。私が間違っている?
プロセス 1:
プロセス 2: (同じ操作、別の順序)
concurrency - 複数のカーネルの Cuda ストリーム処理
こんにちは、複数のカーネルの Cuda ストリーム処理に関するいくつかの質問です。3.5 対応の kepler デバイスで s ストリームとカーネルを想定します。ここで、s <= 32 です。カーネルは、サイズ n の dev_input 配列とサイズ s*n の dev 出力配列を使用します。カーネルは入力配列からデータを読み取り、その値をレジスターに格納して操作し、その結果を dev_output の位置 s*n + tid に書き込みます。
毎回 n 個のストリームの 1 つを使用して、同じカーネルを s 回実行することを目指しています。simpleHyperQ の例に似ています。次のいずれかが同時実行に影響するかどうか、またどのように影響するかについてコメントできますか?
- dev_input と dev_output は固定されていません。
- dev_input そのまま vs dev_input サイズ s*n、各カーネルは一意のデータを読み取ります (読み取りの競合はありません)
- カーネルは定数メモリからデータを読み取ります
- ブロックごとに 10kb の共有メモリが割り当てられます。
- カーネルは 60 個のレジスタを使用します
良いコメントをいただければ幸いです...!!!
乾杯、タナシオ
ロバート、詳細な回答をありがとう。とても役に立ちました。4を編集しました。ブロックあたり10kbです。したがって、私の状況では、61 ブロックと 256 スレッドのグリッドを起動します。カーネルはかなり計算的にバインドされています。同じカーネルの 8 つのストリームを起動します。それらをプロファイリングすると、最初の 2 つの間に非常に良い重複が見られ、その後ますます悪化します。カーネルの実行時間は約 6ms です。最初の 2 つのストリームがほぼ完全に同時に実行された後、残りのストリーム間の距離は 3 ミリ秒になります。5に関しては、255レジスタファイルを持つK20を使用しています。したがって、そこからの欠点は期待できません。gk110sに指定されているものと同等の同時実行性を達成できない理由が本当に理解できません..
以下のリンクをご覧ください。kF.png という画像があります。これは、ストリームのプロファイラー出力を示しています..!!!
memory - グローバルメモリとCUDAストリーム
私はCUDAに取り組んでいますが、グローバルメモリとストリームCUDAに疑問があります。
させて:
したがって、このカーネルを異なるストリームGPUで実行するとします。Auxはすべてのストリームで同じですか?または、すべてのストリームにAuxグローバル変数であるAux変数がありますか?ガイドcudaでその情報を見つけることができません。
前もって感謝します。
cuda - CUDA オーバーラップ データが機能しない
私のシステムでは、ストリームを使用してデータ転送とカーネル実行をオーバーラップさせることができません。
こんにちは、CUDA で重複計算とデータ転送を使用したいのですが、できません。NVIDIA のヘルプ ドキュメントには、ストリームを使用すると、計算とデータ転送のオーバーラップが可能であると記載されています。しかし、システムが機能していません。助けてください。
私のシステムは以下です
- OS:Windows7 64bit
- CUDA : バージョン 5.0.7
- 開発キット : Visual studion 2008
- GPU:GTX680
プロフィールを取得 View is Like this
オーバーラップしていません。コードは以下のとおりです。
プロファイラーがカーネル実行とデータ転送のオーバーラップを示さない理由を教えてください。
concurrency - ストリームはどのように CUDA で同時実行を提供できますか?
CUDA のドキュメントでは、次のように 2 つのストリーム (stream0 と stream1) を使用する場合: stream0 でデータをコピーし、次に stream0 で最初のカーネルを起動し、stream0 でデバイスからデータを回復し、次に同じ操作がstream1で行われます。このように、本「CUDA by example 2010」で言及されているように、同時実行は提供されませんが、「同時カーネルサンプル」ではこの方法が使用され、同時実行が提供されます。では、2 つの例の違いを理解するのを手伝っていただけませんか?