SIGGRAPH 2009 メモ (Aug. 6)

会場の Ernest N. Morial コンベンション センターです。ミシシッピー川沿いにあるので、途中を横切る道もなく、端から端までやたら長い会場です。

SIGGRAPH 2009 032

今日は終日 Beond Programmable Shading に出席しました。この講義録は https://s09.idav.ucdavis.edu/ に公開されています。このブログからもダウンロードできるように、それぞれリンクをつけておきました。

ちなみに昨年の講義録はhttps://s08.idav.ucdavis.edu/ にあるので、比較するのも面白いかもしれません。実感としてはLarrabeeが現実のものになりつつあるにもかかわらず、ソフトウェア側の混沌さは増しているような気がしました。

Beyond Programmable Shading I

SIGGRAPH 2009 033
Why and How is interactive Graphics Programming Changing ? by Aaron Lefohn @ Intel

インタラクティブグラフィックス技術は、データ並列とタスク並列アルゴリズムとグラフィックス パイプラインのミックスで作られている

どうやって?

  1. 固定機能パイプライン
  2. プログラマブル シェーディング
  3. データ&タスク並列アルゴリズムの追加
  4. グラフィックス パイプラインの拡張・修正

ここで話したいのは...

  • どのような形式の並列化が使われているのか
  • どのようなハードウェアが使われているのか&なぜ?
  • なぜ現在のパイプラインでは不十分なのか
  • 既存のAPIの将来は?
Beyond Programmable Shading Retrospective by Mike Houston @ AMD

GPGPUのキラーアプリケーションはグラフィックスだった!

インタラクティブ グラフィックスのこれまでの歴史

SIGGRAPH 2009 035 SIGGRAPH 2009 036

インタラクティブ グラフィックスはソフトウェアベースになっていくのか?この柔軟性は生産性を犠牲にするのか?

SIGGRAPH 2009 038

Running Code at a Tera Flops: Overview of GPU Architecture by Kayvon Fatahalian @ Stanford

GPUとはヘテロなチップを持つマルチプロセッサーであり、グラフィックス用に高度にチューニングされている。GPUを、最大スループット用に最適化されたマルチコア プロセッサーと考えよう。

  1. マルチコア
  2. SIMD(明示的/暗黙的)
  3. スケジューラーによるインターリーブ コンテキスト

GPUにとってバンド幅が非常に重要。

Parallel Programming for Interactive Graphics by Tim Foley @ Intel/Stanford

グラフィックスにおける3種類の並列化

  • データ並列
  • タスク並列
  • パイプライン並列

 

 

 

 

データ並列

複数の要素全体に単一のカーネルを適用、要素ごとの演算は同一。

  • (フラット)ドメイン
  • 階層ドメイン
  • 非均一ドメイン(不完全な配列)

パイプライン並列

    • アルゴリズムはステージの順列
    • 各ステージは0以上の処理を発行
    • パイプラインはアンバランスを処理する
    • ユーザー定義のパイプライン
      • 中間ストレージとスケジューリング アルゴリズムの挑戦
      • PS3では標準的に実践

タスク並列

    • 非同期関数呼び出し
    • タスク/ジョブ システム
      • PS3では標準的
      • 1ワーカースレッド/ハードウェア コンテキスト
      • 協調型スケジューリング
    • タスクの粒度
      • 荒いタスク
      • 細かいタスク(細かくするほどスケジューリングがオーバーヘッドに)

3つの並列の合成

探している

  • アーキテクチャ
  • ツール
  • アルゴリズム
Parallel Graphics in Frostbite by Johan Andersson @ DICE
  • CPU並列とGPU並列のゲームエンジン
  • ジョブ ベースの並列化
    • システムをジョブに分割
    • 編み込み(Braided)並列化(タスク並列とデータ並列の中間)
  • レンダリング ジョブのほとんどはGPUだが...
    • 並列コマンド バッファ、D3D11並列ディスパッチ
    • 遮蔽カリング
    • PS3ジオメトリー処理
    • カスタム ジオメトリー処理
    • デカール投影
    • 遅延ライティング/シェーディング
  • 将来のプログラミングモデルでは、コンピュート シェーダ ストリーム I/Oとしてキューが必要
  • 良い並列モデルは、良いゲームエンジンの性能にとって重要
id Tech 5 Challenges by Van Waveren @ id So
ftware

GPU仮想テクスチャ

  • テクスチャ フィルタリング
  • テクスチャ スラッシング
  • LODスナップ
  • テクスチャ管理

性能を得るには以下のソフトウェア アーキテクチャが必要

  • OSスレッド
  • ジョブの分解
    • 衝突検出
    • アニメーション ブレンド
    • 障害物回避
    • 透明性
  • (GP)GPU上のジョブ
    • ジョブを多数の細かいスレッドに分割

Beyond Programmable Shading II

SIGGRAPH 2009 034
GPU Primitive – Case Study: Hair Rendering by Ulf Assarsson @ Chalmers University

3つのキーコンセプト

  • ストリーム圧縮(Compaction)
  • 事前合計
  • ソート

リアルタイムの髪のレンダリングにおける挑戦は、セルフシャドウと半透明

Real-Time Micropolygon Rendring Pipeline is Not Far Away by Kayvon Fatahalian @ Stanford

現在のパイプラインでマイクロポリゴンをレンダリングすることは非効率

  1. テセレーション
    • 適応型テセレーション、スプリット – ダイス
    • スプリット:プリミティブを再帰的に分割
    • ダイス:単純な均一テセレーション
    • D3D11テセレータは、スプリットではなくダイスだけ
    • DiagSplit:リアルタイム パイプライン用のスプリットーダイス
    • 並列テセレーションは活発な分野
  2. ラスタ化
    • ラスタライザーの再実装
    • マイクロポリゴンのラスタ化は高価
    • モーションブラーを可能にするには3倍から7倍
    • 焦点のぼかし(DOF)
  3. シェーディング
    • REYESスタイルのシェーディング
    • 頂点でシェーディング

SIGGRAPH 2009 039

リアルタイム マイクロポリゴン レンダリングは、将来可能になるだろう。

AMD Case Study by Justin Hensley @ AMD

適応型画像ベースのライティングの近似

  • 合計範囲テーブル(SAT:Summed Area Table)
  • 動的光沢環境反射
Innovating in a Software Graphics Pipeline by Paul Lalonde @ Intel

 

 

伝統的なAPI⇔拡張済みパイプライン⇔拡張可能なパイプライン⇔Bare Metal

  • グラフィックスAPIはイノベーションのボトルネック
  • 伝統的なレンダリング モデル vs ソフトウェア レンダリング モデル
  • メニーコア グラフィックス
    • C/C++並列言語+Larrabee(LRB)
    • WDDM
  • フレームバッファ RMW(Read, Modify, Write)
    • LRB ラスタライザ→ピクセル シェーダ→フレームバッファ2次キャッシュ
    • LRBはレンダリング後のフレームバッファをそのまま修正できる
    • GPU ラスタライザ→ピクセル シェーダ→ROP→フレームバッファ
  • 半透明
    • K Buffer
    • レンダーターゲットのリスト(LRT)
    • テクスチャのリスト(List<Texture>)
  • プログラマブルによって解決できる
    • フレームバッファのL2キャッシュで画像処理
    • テクスチャ ページングの要求

LRBは拡張可能なパイプラインによって究極のものを提供

SIGGRAPH 2009 041 

NVIDIA Case Study by David Luevke @ NVIDIA Research
  1. レイトレース
  2. REYES
Panel: What Next for 3D Graphics Programming Mode ?

 SIGGRAPH 2009 042 SIGGRAPH 2009 043