2012-02-02 20 views
2

CUDAのグローバルメモリへの書き込みの影響についてお聞きしたいと思います。グローバルメモリの読み込みは、着信メモリを待つためにかなりのサイクルが必要となることがあり、実行を一時的にブロックする可能性があるため、パフォーマンス(結合、キャッシュ、バンクの競合)に大きな影響を与えることがよくあります。CUDAのグローバルメモリへの書き込み

しかし、CUDAの書き込みメモリはどうですか?それはどのタイプのメモリ書き込みパターンにも苦しんでいますか?総コストは、カーネル内のすべての書き込みの合計ですか?

関連するすべての参考資料とコメントをお待ちしております。

+4

これはまさに実験プログラムを使って探索するのが楽しい質問の種類です。さまざまなパターンで何百万もの読み書きを実行する基本的なOpenCLまたはCUDAプログラムを書くことができます。繰り返しテストを繰り返し実行し、平均的な結果を確認してください。これはおそらく、起動する各APIの退屈な部分を学ぶ良い方法です。 – James

+0

コメントのためのジェームズありがとう! – Zk1001

答えて

2

一般的にあなたの質問に対する答えは「はい」です。店舗は荷物と似ています。違いは、店舗は「火事と忘れ」であるため、店舗を発行した後にマルチプロセッサーがすぐに実行できるストアド・アドレスに依存しない作業があれば、ストールはread-after-write依存関係が発生します。

詳しくは、CUDA programming guideのセクション5.3.2をお読みください。

異なるアーキテクチャーファミリーに関する特定の情報については、その資料の付録Fも参照してください。たとえば、コンピューティング機能1.xは、コンピューティング機能2.x(フェルミ)デバイスよりもパフォーマンスが高いです。

+0

答えをありがとう。私は、この理論の大部分がマイクロベンチマーキングによって確認できることを認識しました。しかし、フェルミが現場に来ると混乱することはほとんどありません。私はフェルミの前に、メモリ連携のためのパフォーマンスカウンターがあることに気がつきましたが、今はそれらはなくなっています!この背後に何らかの理由がありますか?私はメモリの連携はもはやフェルミに全く影響を及ぼさないと思っています(読み書きの両方)が、その概念はキャッシュの寄与によって複雑になります。だから、私の推測では、それがNVIDIAがこれらのカウンタを削除した理由です。誰でもこれについて何か考えている? – Zk1001

+0

はい、正しいです。カウンタはキャッシュヒット/ミスカウンタに置き換えられました。最新のビジュアルプロファイラーバージョン(4.1)では、生カウンターデータを表示するのではなく、カウンターから有用なメトリックを構築することにより、このデータをより簡単に解釈することができます。フェルミでは、合併されたメモリセグメントの数ではなく、フェッチされたキャッシュラインの数がすべて減ります。 – harrism

関連する問題