4

CUDA デバイスでは、各 SM に 64KB のオンチップ メモリがあり、近くに配置されます。デフォルトでは、これは 48KB の共有メモリと 16KB のL1 キャッシュに分割されます。メモリ アクセス パターンを特定するのが難しいカーネルの場合、このパーティショニングを 16KB の共有メモリと 48KB の L1 キャッシュに変更できます。

CUDA では、SM ごとに 64KB のオンチップ メモリのすべてをL1 キャッシュとして使用できないのはなぜですか?

共有メモリを使用しないが、余分な 16KB の L1 キャッシュを使用できるカーネルには多くの種類があります。

4

1 に答える 1

4

その理由はコンピュータ グラフィックスにあると思います。OpenGL または Direct3D コードを実行する場合、SM はダイレクト マップ メモリ (CUDA 共有) を 1 つの目的 (頂点属性など) に使用し、セットアソシアティブ メモリ (L1 キャッシュ) を別の目的に使用します。グラフィックス パイプラインの場合、アーキテクトは、他のユニットの頂点スループット制限に基づいて、頂点属性などに必要なメモリ量を具体的に調整できます (たとえば)。

GPU のアーキテクチャに関する決定 (さらに言えば、一般的なプロセッサ設計) について考えるとき、多くの決定は大部分が経済的なものであることを覚えておくことが重要です。GPU コンピューティングには、ゲームとグラフィックスという本業があります。この日常業務がなければ、GPU コンピューティングは経済的に実行可能になることはなく、超並列コンピューティングが大衆に利用可能になることもなかったでしょう。

コンピューティング用の GPU のほぼすべての機能は、グラフィックス パイプラインで何らかの形で使用されます。そうでない場合 (ECC メモリを考えてください)、それを使用する市場 (HPC を考えてください) 向けのより高い製品価格で資金を調達する必要があります。

于 2012-03-29T23:54:27.663 に答える