2012-04-16 10 views
1

あなたが「16キロバイトの共有メモリ+ 48K L1キャッシュ」または「48キロバイトの共有メモリ+ 16キロバイトのL1キャッシュ」CUDAプログラミングの両方を使用しての違いを説明してくださいもらえますか?時間の実行ではどうすればよいですか?いつ私はより小さなGPU時間を期待することができますか?CUDAプログラミング - 共有メモリ構成

+0

何かを変更する必要がある場合は、重複した質問(http://stackoverflow.com/questions/10180949/cuda-programming-l1-and-l2-caches)を投稿しないでください。元の質問を編集してください。 – ulmangt

+2

公正では、これは重複した質問ではありません。あなたがリンクしたもう一つの質問は、L1/L2キャッシュについてのものでした。これはL1/smemに関するものです。 Smem(共有メモリ)はL2とは全く別の話題です。 – Tom

答えて

3

フェルミおよびケプラーnVIDIA GPUでは、各SMには64KBのメモリチャンクがあり、16/48または48/16共有メモリ/ L1キャッシュとして構成できます。どちらのモードを使用するかは、カーネルがどのくらい共有メモリを使用するかによって決まります。カーネルが多くの共有メモリを使用している場合は、48KBの共有メモリとして構成すると、占有率が向上し、パフォーマンスが向上します。

一方、カーネルが共有メモリをまったく使用しない場合、またはスレッドごとにごくわずかな量しか使用しない場合は、48KBのL1キャッシュとして構成します。

CUDAツールキットに含まれているスプレッドシートである「占有量計算機」と「here」を使用すると、「非常に少量」の量が最もよく示されます。このスプレッドシートを使用すると、ブロックごとの異なる共有メモリとブロックサイズの違いを調べることができます。

関連する問題