ブログパーツマイリスト

無料ブログはココログ

« CPU ロードマップ OpenCLのメモリ階層を知る | トップページ | CPU ロードマップ Fermiの急所はクロスバースイッチ »

2010年8月15日 (日)

CPU ロードマップ OpenCLの苦手なこと

データ構造メモリ階層を鑑みて、苦手な処理を考える

苦手な処理
  1. GPUとCPUでデータをやり取りすること
  2. PCIe経由なので、メモリコピーを2回行う、PCIeの帯域の制限のダブルパンチは強烈。
    よって、CPUへデータを送る、CPUからデータをもらう処理がボトルネックになり、CPUとGPUを一緒に仕事をさせてはいけない。
    ※AMDのFusionは、メモリコントローラの共有で、解決する。

  3. 異なるWork-Groupの間でデータをやり取りする。
  4. 異なるWork-groupに送るには、global memory(VRAM)を経由するので、時間がかかる。

    例えば、Work-group:「A」の演算データについて、100以上であればWork-group:「B」に送る、100以下であればWork-group:「C」に送る、という処理は、全てのWork-groupがVRAMにアクセスすることになる。
    ただし、PCIeを経由する処理は、これより全然遅い。

  5. データをスタック(再利用)させる
  6. データを再利用すると、private memoryやlocal memoryfに収まらなければ、global memoryへ保存するため、時間がかかる。
    ただし、PCIeを経由する処理は、これより全然遅い。


2.、3.はキャッシュを増やす、メモリアクセスのレイテンシを下げることで、ある程度解決される。
※個々のWork-itemにバラバラな命令を実行させることは、SIMDから外れるので、割愛。

得意な処理
苦手な処理の裏返しで、CPUに戻したり、GPU内で再利用せず、結果の表示だけ、というストリーム演算。
動画再生、Photoshopのフィルタ処理、ゲームと、今と同じ。

GPUのプログラムの最適化は、CPUでやらせること、GPUでやらせることを明確に分け、相互のやり取りはなるべく避ける、というアプリケーションやデータ構造の設計から検討が必要だ。
しかし、AMDのFusionはメモリコントローラを共有するので、CPUとGPUのやり取りが頻発するアプリケーションでは、数ランク上のGPUより速い可能性が高い。

« CPU ロードマップ OpenCLのメモリ階層を知る | トップページ | CPU ロードマップ Fermiの急所はクロスバースイッチ »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217868/49151421

この記事へのトラックバック一覧です: CPU ロードマップ OpenCLの苦手なこと:

« CPU ロードマップ OpenCLのメモリ階層を知る | トップページ | CPU ロードマップ Fermiの急所はクロスバースイッチ »