2011-06-30 27 views
1

私はGeForce GTX 580(コンピューティング機能2.0)を使用しています。CUDA:グローバルメモリ合体があるかどうか調べることはできますか?

私のプログラムでは、ボトルネックがカーネル内のグローバルメモリへのアクセスであると思われます。すべての計算では、グローバルメモリに格納された配列をインデックスすることによって得られた数値が含まれているため、倍精度から単精度に切り替えるだけでパフォーマンスが10%向上するためです。

だから、このボトルネックを改善するために、私は、メモリの合体​​について考えた(浮動小数点演算がボトルネック(?)している場合、それは二倍の速フェルミデバイスでなければなりません私の知る限り)。ここの問題は、私がそれを達成したかどうかわからないということです。私はすでにそれを持っている、そしてこれは(インテリジェントなi7のシーケンシャルバージョンよりも25倍速い)、またはそれが何らかの形で書き換えて合体を得るためにはるかに速く動くようになるかもしれない。

しかし、知る方法はありますか?私はどういうわけか、他の方法で発見するために合体を「止める」ことができますか?

答えて

1

はありません、メモリ合体が、それはあなたが正しいメモリアクセスパターンとの位置合わせを使用することによって達成ものです、あなたがオンまたはオフにするものではありません。私は決して使用していない(Windowsでは動作していない)とは確信していませんが、nVidiaのParallel Nsightはメモリアクセスが合体しているかどうかを教えてくれます。

+0

私はLinux上で働いているので、私はNsightを使用することはできませんね。 – Eskil

+0

私はCompute Visual Profilerを持っているので、おそらく私はそれをチェックすることができます。しかし、私は何を探しているのかわかりません。 – Eskil

+0

@JonathanDursiがビジュアルプロファイラでも情報を提供できると述べたので、私はそれについての経験は持っていません。 – jmsu

関連する問題