宇宙誕生の少し前から宇宙終焉の少し先までを数で表す論文

この宇宙を数で表すことは出来るのか。

第3−8節 GPUのメモリ階層

GPUのメモリ階層

GPUの性能は、
演算器の数だけで決まるわけではありません。
実際には、
メモリアクセスの効率
が性能を大きく左右します。

なぜメモリ階層が重要なのか

GPUでは、
数千のスレッドが同時に動作します。
そのため、

  • 同時アクセスが多い
  • 待ち時間が発生しやすい

という特徴があります。
GPUはこれを前提に、
明確なメモリ階層
を設計しています。

グローバルメモリ

グローバルメモリは、
GPUがアクセスできる
最も大容量のメモリ
です。

  • 全スレッドからアクセス可能
  • レイテンシが大きい
  • 帯域は広い

そのため、
アクセス方法を誤ると、
性能が大きく低下します。

メモリコアレッシング

GPUでは、
ワープ内のスレッドが
連続したアドレス
にアクセスすることで、
メモリアクセスをまとめることができます。

これを
メモリコアレッシング
と呼びます。

共有メモリ

共有メモリは、
同一ブロック内のスレッドで
高速に共有できるメモリ
です。

  • レイテンシが小さい
  • 明示的に使用
  • 容量は小さい

CPUのキャッシュとは異なり、
設計者が
使い方を決める必要
があります。

レジスタ

GPUのレジスタは、
各スレッド専用に割り当てられます。

レジスタ使用量が多すぎると、
同時に実行できるスレッド数が減り、
並列度が低下
します。

CPUとの比較

  • CPU:自動キャッシュ制御
  • GPU:設計者が配置を意識

GPUでは、
アルゴリズムとメモリ配置
が不可分です。

FPGAとの違い

FPGAでは、
メモリも回路の一部として配置されます。

GPUは、
既存のメモリ構造をどう使うか
が設計の焦点になります。