関東gpgpu勉強会資料
DESCRIPTION
関東GPGPU勉強会(2012-06-02)の資料です。TRANSCRIPT
![Page 1: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/1.jpg)
GPGPUこの 3年でどう変わったか
関東GPGPU勉強会2012/6/2
日本ユニシス株式会社加藤公一
![Page 2: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/2.jpg)
自己紹介加藤公一(かとうきみかず)• Twitter: @hamukazu• 所属:日本ユニシス株式会社• IEICE システム数理と応用研究会専門委員• GPGPU参戦: 2008年• 社内では NVIDIAの回しものと言われている
![Page 3: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/3.jpg)
NVIDIA GTC
• NVIDIA主催の GPGPUのお祭り• 私は 2009年に講演• 今年( 2012年)は聴衆として参加
![Page 4: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/4.jpg)
今日の話• 自分の研究の紹介• GTC 2009と 2012を比べて何が変わったか?
![Page 5: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/5.jpg)
GTC2009での私の講演• You Might Also Like: A Multi-GPU
Recommendation System• GPUでリコメンデーションシステムを作りましょう、という話
![Page 6: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/6.jpg)
全体の処理の流れ
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勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/7.jpg)
k-Nearest Neighbor Algorithm
The algorithm consists of two parts:
Computation of distances andk-partial sort
![Page 8: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/8.jpg)
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勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/9.jpg)
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勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/10.jpg)
部分ソート(上位 k個ソート)アルゴリズム
• GTC2009当時は、かなりトリッキーなアルゴリズムで速度を出していました
• しかし Fermiで試すと、かなり事情が変わっていた–挿入ソートだけでかなりいけた
• 実はこのネタで GTC2012も出そうと思ってたのだが断念
![Page 11: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/11.jpg)
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勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/12.jpg)
そして GTC2012
Efficient k-NN Search Algorithms on GPUsNikos Sismanis, Nikos Pitsianis, Xiaobai Sun
Bitonic sortが最速では、という話
![Page 13: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/13.jpg)
部分ソート、実は深い!• kと nの値で最適アルゴリズムが変わる• さらに GPUの特性によって変わる• Keplerでまたさらに考え直し?• 考えるのは大変だけど楽しい• でもこれだけで一生を終えたくない
![Page 14: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/14.jpg)
その他何が変わったか• 開発環境が劇的に変化(改善)• C言語が Javaになったような感じ(たとえが悪い?)
![Page 15: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/15.jpg)
2009年当時のデバッグ環境• エミュレータのみ• エミュレータで再現しないバグが最悪
![Page 16: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/16.jpg)
エミュレータで再現しないバグの対処法(当時)
• 怪しいところで、メモリのスナップショットをグローバルメモリの別領域に(手動で)コピー
• カーネル関数終了後、スナップショットを device to hostコピー
• それを見て不具合を見つける
![Page 17: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/17.jpg)
ワイルドだろぉ
![Page 18: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/18.jpg)
GTC2009Developer Round Table(だったっけ?)• コンパイラは信用できない• 思ったパフォーマンスが出ないときは、まずコンパイラを疑う
• 普通は、アセンブラ( ptxファイル)を見て確認する
![Page 19: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/19.jpg)
そして今は・・・• NVCC優秀• CUDA-GDB, CUDA-MEMCHECK• Profilerの Eclispeプラグイン• Nsightとか• OpenACC、 CAPS HMPP
![Page 20: 関東GPGPU勉強会資料](https://reader035.vdocuments.net/reader035/viewer/2022062300/558297bed8b42a94688b4738/html5/thumbnails/20.jpg)
まとめ• 3年の間に目覚ましい進歩–次の 3年はどうなるか
• 最適アルゴリズムも進歩に合わせて変化• 革新的な技術に初期のころから手をつけると苦労が大きい–その分メリットも