CUDA by exampleを読んだときのメモ:第7章「Texture Memory」(書きかけ)

  • この章ではテクスチャメモリについて学ぶ。コンスタントメモリと同様、読み込み専用のメモリであり、あるケースにおいて、メモリトラフィックを減らしてパフォーマンスを向上させる。
  • 元来はグラフィックのアプリに対してのそれであったが、数値計算にも有用である。

7章の目的

  • テクスチャメモリの特徴について。性能面で。
  • 1次元でテクスチャメモリをCUDA Cで実装する方法について
  • 2次元でテクスチャメモリをCUDA Cで実装する方法について

テクスチャメモリの概要

  • コンスタントメモリ同様、チップ上に存在し、キャッシュされる。
  • あるケースにおいては、グローバルメモリへのアクセスを減少することで、速いメモリアクセスとなる。
  • メモリアクセスに局所性がある場合に、良く効く機能。
  • 図7.1に、thread0からthread3が隣接するメモリにアクセスする例を示す。このような場合、メモリアクセスは連続ではないので、CPUでのキャッシュではキャッシュが効かないが、テクスチャメモリでは良いパフォーマンスを示す。

熱伝導の計算

単純な熱伝導モデル
  • テクスチャメモリの性能を、長方形の領域での熱伝導の例。
  • 図のように、ランダムに熱源がある例。
温度の時間発展の計算
  • 温度一定のセル(熱源)では、時間変化しないので、時間変化の計算を全グリッドにて行った後に、あらかじめ定められた値を上書きする
  • 境界条件を考慮してカーネルを組む
テクスチャメモリの使用
  • 温度の時間発展において、メモリアクセスの局所性が強い。テクスチャメモリが効果的な事例だ。

7章のまとめ

  • コンスタントメモリ同様、キャッシュの効果が得られるケースがある。
  • 熱伝導方程式などの場合とか。
  • 1次元のテクスチャメモリまたは2次元のテクスチャメモリが使える。パフォーマンスは同等。
  • 1次元又は2次元の選択は、スレッドブロック又はグリッドの形状に応じて使いやすいものを。
  • 2次元の熱伝導方程式では、境界条件の扱いがよいので2次元を選択した。