関東GPGPU勉強会資料

20
GPGPU ここ 3 こここここここここ ここ GPGPU こここ 2012/6/2 ここここここここここ こここ

description

関東GPGPU勉強会(2012-06-02)の資料です。

Transcript of 関東GPGPU勉強会資料

Page 1: 関東GPGPU勉強会資料

GPGPUこの 3年でどう変わったか

関東GPGPU勉強会2012/6/2

日本ユニシス株式会社加藤公一

Page 2: 関東GPGPU勉強会資料

自己紹介加藤公一(かとうきみかず)• Twitter: @hamukazu• 所属:日本ユニシス株式会社• IEICE システム数理と応用研究会専門委員• GPGPU参戦: 2008年• 社内では NVIDIAの回しものと言われている

Page 3: 関東GPGPU勉強会資料

NVIDIA GTC

• NVIDIA主催の GPGPUのお祭り• 私は 2009年に講演• 今年( 2012年)は聴衆として参加

Page 4: 関東GPGPU勉強会資料

今日の話• 自分の研究の紹介• GTC 2009と 2012を比べて何が変わったか?

Page 5: 関東GPGPU勉強会資料

GTC2009での私の講演• You Might Also Like: A Multi-GPU

Recommendation System• GPUでリコメンデーションシステムを作りましょう、という話

Page 6: 関東GPGPU勉強会資料

全体の処理の流れ

Singular Value Decomposition

K-Nearest Neighbor

K. Kato and T. Hosino. Multi-GPU algorithm for k-nearest neighbor problem. Concurrency and Computation: Practice and Experience, 23, 2011.K.Kato and T.Hosino, Singular Value Decomposition for Collaborative Filtering on a GPU, IOP Conference Series: Materials Science and Engineering 10 012017, 2010.K.Kato and T.Hosino, Solving k-Nearest Neighbor Problem on Multiple Graphics Processors, In Proc. CCGrid2010, Melbourne, Australia, pp 769-773, 2010.

Page 7: 関東GPGPU勉強会資料

k-Nearest Neighbor Algorithm

The algorithm consists of two parts:

Computation of distances andk-partial sort

Page 8: 関東GPGPU勉強会資料

N-Body Algorithm[Nyland et al. 2008]

Nyland et al. “Fast N-Body Simulation with CUDA”, in GPU Gems III, pp 677—695, 2008

Because of limited size of shared memory

Block 0

Block 1

Block 2

Page 9: 関東GPGPU勉強会資料

High dimensional case

Block 0

Block 1

Block 2

“Slice” the dimension so that the data can be loaded in a shared memory

Page 10: 関東GPGPU勉強会資料

部分ソート(上位 k個ソート)アルゴリズム

• GTC2009当時は、かなりトリッキーなアルゴリズムで速度を出していました

• しかし Fermiで試すと、かなり事情が変わっていた–挿入ソートだけでかなりいけた

• 実はこのネタで GTC2012も出そうと思ってたのだが断念

Page 11: 関東GPGPU勉強会資料

Bench mark (kNN)n 10000 20000 40000 80000

1x GTX280 (a) 2.7 8.6 34.1 131.82x GTX280 (b) 1.8 5.7 17.7 68.6Core i7 (c) 354.2 1419.0 5680.7 22756.9(c)/(a) 131.1 173.3 166.5 172.6(c)/(b) 196.7 248.9 320.9 331.7

n 10000 20000 40000 80000

1x GTX280 (a) 2.6 8.2 32.1 124.82x GTX280 (b) 1.7 5.5 16.9 65.2Core i7 (c) 124.8 503.0 2010.0 8041.4(c)/(a) 48.0 61.3 62.6 64.4(c)/(b) 73.4 91,4 118.9 123.3

Hellinger distance

Euclidian distance

d=256, k=100

Page 12: 関東GPGPU勉強会資料

そして GTC2012

Efficient k-NN Search Algorithms on GPUsNikos Sismanis, Nikos Pitsianis, Xiaobai Sun

Bitonic sortが最速では、という話

Page 13: 関東GPGPU勉強会資料

部分ソート、実は深い!• kと nの値で最適アルゴリズムが変わる• さらに GPUの特性によって変わる• Keplerでまたさらに考え直し?• 考えるのは大変だけど楽しい• でもこれだけで一生を終えたくない

Page 14: 関東GPGPU勉強会資料

その他何が変わったか• 開発環境が劇的に変化(改善)• C言語が Javaになったような感じ(たとえが悪い?)

Page 15: 関東GPGPU勉強会資料

2009年当時のデバッグ環境• エミュレータのみ• エミュレータで再現しないバグが最悪

Page 16: 関東GPGPU勉強会資料

エミュレータで再現しないバグの対処法(当時)

• 怪しいところで、メモリのスナップショットをグローバルメモリの別領域に(手動で)コピー

• カーネル関数終了後、スナップショットを device to hostコピー

• それを見て不具合を見つける

Page 17: 関東GPGPU勉強会資料

ワイルドだろぉ

Page 18: 関東GPGPU勉強会資料

GTC2009Developer Round Table(だったっけ?)• コンパイラは信用できない• 思ったパフォーマンスが出ないときは、まずコンパイラを疑う

• 普通は、アセンブラ( ptxファイル)を見て確認する

Page 19: 関東GPGPU勉強会資料

そして今は・・・• NVCC優秀• CUDA-GDB, CUDA-MEMCHECK• Profilerの Eclispeプラグイン• Nsightとか• OpenACC、 CAPS HMPP

Page 20: 関東GPGPU勉強会資料

まとめ• 3年の間に目覚ましい進歩–次の 3年はどうなるか

• 最適アルゴリズムも進歩に合わせて変化• 革新的な技術に初期のころから手をつけると苦労が大きい–その分メリットも