ブログパーツマイリスト

無料ブログはココログ

« CPU ロードマップ BulldozerはK10より高速 | トップページ | CPU ロードマップ OpenCLのメモリ階層を知る »

2010年8月13日 (金)

CPU ロードマップ OpenCLのデータ構造を知る

OpenCLのデータ構造の基本は、配列というか、行列である。
この行列というか、配列に対し、配列演算子で演算を行う。
ちょうど、Fortran90と同じ。こうした並列処理ではFortran90が20年近く進んでいる。
なお、OpenCLなので、ATIを中心に。

入れ子構造
データ構造は、行列の中に行列がある、入れ子の構造。
大きさ順に並べると、理解しやすい。

NDRange>Work-Group>Wavefront>Work-item

NDRangeがもっとも大きく、Work-itemがもっとも小さい。
実際のデータは、Work-itemに格納される。

個々の構造
  • NDRange(n-dimensional grid)
  • もっとも大きなデータの定義域。Global Domainという英語だとわかりよいかも。
    演算されるデータの範囲を決めるもので、get_global_size(n)で定義する。
    NDRangeの中に、Work-Groupが行列で含まれる。

  • Work-Group
  • NDRangeの中に含まれる、配列(行列)。
    get_group_size(n)で定義する。
    ※ATIでは group of wavefronts、wavesとも言う。

  • Wavefront(ATIの呼び方。CUDAではWarp)
  • Work-Groupの中に含まれる、配列(行列)。
    同じ命令を実行するWork-itemを集めたもので、メモリアクセスや命令発行などのレイテンシを下げることが出来る。
    ただし、Wavefrontに含まれるWork-itemの数は、GPUに依存する。Warpも同じ。
    例えば、Radeon HD 5870のWavefrontは、Work-itemが64個だが、5400シリーズは32個と、GPUのstream coreの数によって変わる。

  • Work-item
  • 実際のデータが格納された配列。
    ※ATIではCS instance、pixel、vertexとも言う。
    NDRangeの中では、位置は相対的に指定される。


データ構造について、GPU依存があるのは使いづらいが、まあ、妥当な感じ。

« CPU ロードマップ BulldozerはK10より高速 | トップページ | CPU ロードマップ OpenCLのメモリ階層を知る »

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

コメント

コメントを書く

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

トラックバック

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

この記事へのトラックバック一覧です: CPU ロードマップ OpenCLのデータ構造を知る:

« CPU ロードマップ BulldozerはK10より高速 | トップページ | CPU ロードマップ OpenCLのメモリ階層を知る »