GPGPUの産業への適用     について          2012/3/8   システム数理と応用研究会     JAIST東京サテライト  日本ユニシス株式会社     加藤公一
目次•   GPGPUとは•   CUDAによるGPGPUプログラミング紹介•   GPGPUの応用例•   今後の展望
自己紹介加藤公一(かとうきみかず)所属:日本ユニシス株式会社     総合技術研究所2008年情報理工学博士@東大現在の仕事:研究開発新規製品開発におけるアルゴリズム設計
会社紹介       (簡易版)日本ユニシス株式会社業種:情報システムに関連サービスいわゆるB2Bセクター開発・保守が収益の柱
GPGPUとは• General Purpose GPU• 本来描画専用プロセッサであったGPUを描画  以外の目的に使うこと• 計算速度や消費電力でメリットがある
NVIDIA CUDA• NVIDIA社による開発環境• C言語(C++)の拡張• GPGPUの分野ではほぼデファクト
歴史• 2003年:データパラレル言語Brook  (I.Buck)• 2006年:NVIDIA社がCUDAを発表• 2007年:NVIDIAチーフサイエンティスト  D.Kirk(当時)が東大でCUDAに関する  講義            ...
アプリケーション      (TSUBAMEの例)• 津波のシミュレーション• 気象のシミュレーション• 金属凝固のシミュレーション – 祝!ゴードンベル賞!
スパコンから企業システムへ• 科学技術分野は、弊社ビジネスからは遠い• 一方GPGPUは科学技術以外にも使えるはず  だ• GPGPUはスパコン以外で使えるはずだ
消費電力• GPGPUは計算量当たりの消費電力が非常に  小さいのも魅力の一つ• しかし、待機電力は無視できない• ITサービスのクラウド化が進む中、省電力は  サービス提供側にメリット – 処理系のブラックボックス化 – とはいってもGPGP...
GPGPUの難しさ• 並列計算アルゴリズム設計の難しさ• GPUの特性に合わせたアルゴリズム設計の  難しさ• どのような計算がGPGPUに向いているかとい  う「目利き」が必要
Free Lunch is Over!Herb Sutter, Free Lunch is Over : A Fundamental Turn Toward Concurrency in Software
今までは・・・1. プログラムを書く2. 放っておいても2年後くらいには2倍の速度   で動くようになる3. 速くなったから新たな機能を追加できる4. 1.に戻る以上エンジニアの「タダ飯」サイクル
これから(2003年くらいから)は• コア1個当たりの計算性能はあまり向上して  いない• しかし、チップ自体の性能はまだムーアの法  則にしたがっている – マルチコア・メニーコアによるマジック• したがって、チップの性能を引き出すには「う ...
つまり・・・• 並列計算は難しい• GPGPUはもっと難しい• でもその難しさを避け続けると、ソフトウェア  に付加価値をつけられなくなる
GPUのパフォーマンス NVIDIA CUDA Programming Guideより
やはりGPUすごい! でも、「タダ飯」は食えない
ではどうタダ飯ではないのか?   以下CUDAの概説
CUDAのプログラミングモデル• 速度を出すには数千~数万スレッドが必要• CPUからGPUのデータの受け渡しはPCIeで• いくつかのスレッドのかたまりは、スレッドブ  ロックと呼ばれ、処理の単位になる• 同一スレッドブロック内の同期のコスト...
メモリ構成• 全体から参照できるグローバルメモリ• スレッドブロック内で共有する共有メモリ – ブロックあたり16k~48kByteしかないので注意 – 速いのでキャッシュのように使う• スレッドから参照されるレジスタ        Threa...
コアレスアクセス    Coalesced Memory Access• 同じブロック内のスレッドがグローバルアドレ  スをアクセスする際、同時に一続きのアドレス  にアクセスすると動作が速い – 一度のメモリフェッチですべて持ってくる   T...
ポイント• CPU、GPUの間のメモリ転送に気をつける• スレッド間同期の粒度に気をつける• メモリアクセスは、できるだけお行儀を良く(=  コアレスになるように)する
GPGPUが得意な計算           苦手な計算• 数千並列で計算できる       • あまり細かく並列化できない• メモリアクセスが規則的      • メモリアクセスがランダムにち• 同期をあまりとらなくてもいい   かい     ...
リコメンデーションエンジン
基本原理         movieperson           W   X   Y   Z     A           5   4     B           4   3       3     C                ...
全体構成           入力:大規模な疎行列                                                            対CPU比計算速度                     特異値分解  ...
k最近傍問題(kNN)• 与えられたn個のd次元ベクトルについて、そ  れぞれのベクトルから近い順にk個列挙せよ  という問題• Nは数百万~数億、dは数百くらいがターゲッ  ト
アルゴリズム• ベクトル間の距離を計算して昇順にソートす  ればよい• 上位k位までの比較で十分(部分ソート)• 距離計算はN体問題の計算アルゴリズムの  応用
N体問題のアルゴリズム    Block 0    Block 1    Block 2                       少しずつ共有メモリにコピーするNyland et al. “Fast N-Body Simulation wi...
N体問題をkNNに適用するときの問題• 次元が大きすぎるので共有メモリの容量が不  十分
解決策次元方向に刻んで、スライスごとに共有メモリに読み込む                      Block 0                      Block 1                      Block 2      ...
部分ソートは?• 論文を書いたときとは、GPUのスペックが違っ  て、今では挿入ソートで十分速い
結果• 商品としては売れてません• しかし、これをきっかけに仕事の受注も   NVIDIA GPU Technology Conferenceでのメディア取材
製造業への応用• もともとCAD(設計システム)では大量の図形  を取り扱うので、GPGPUとは相性がいいので  はないか• 計算速度が問題となるアプリケーションが多  い• 弊社としてのビジネス実績もある
ノイズ除去               実物のスキャンデータからCADデータを生成したい                     対CPU比約30倍の計算速度を達成                     (陰関数曲面を利用したアルゴリズム)土...
今後に向けて:CAE• CAE(物理シミュレーション)は、製造業の設計  工程で大きなウェートを占める – 計算に時間がかかる:数日間計算機を回すことも – 試作品作成コストを考えると省略できない• なので、計算を速くすることのメリットは大きい...
並列計算法• 反復法を利用 – 前処理付き共役勾配法• 反復の1回分を並列化     While 収束するまで do        並列計算(行列ベクトル積、ベクトルの内積など)     End While
GPU化されたCAEエンジン          (疎行列ソルバ)• オープンソース – CUSP – CUDA SDK Sample• 商用 – ANSYS       大体、対CPU(4コア)比2倍くらいの速さ
なぜあまり速くならないか• 計算時間の大半は、行列×ベクトルの計算と、  三角行列の逆行列の計算 – つまり内積計算が大量に
疎行列ソルバの今後の高速化• 数列和の高速化のための特殊回路などが  GPUに組み込まれるとうれしいなあ – 他力本願 (^^;)• NVIDIAはそれなりに力を入れている様子• とはいっても、GPUを支えているのはゲーマー  であることを忘れ...
まとめ• GPGPUはスパコンのためだけのものではない – 実際に商用ソフトも出てきている – 例えば、リコメンデーションシステム、スキャン   データのノイズ除去など• なんでもGPGPU化すれば速くなるわけではな  い – でもそれはCPU...
Upcoming SlideShare
Loading in …5
×

2012-03-08 MSS研究会

1,699 views

Published on

2012/03/08
電子情報通信学会システム数理と応用研究会招待講演での資料です。

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,699
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

2012-03-08 MSS研究会

  1. 1. GPGPUの産業への適用 について 2012/3/8 システム数理と応用研究会 JAIST東京サテライト 日本ユニシス株式会社 加藤公一
  2. 2. 目次• GPGPUとは• CUDAによるGPGPUプログラミング紹介• GPGPUの応用例• 今後の展望
  3. 3. 自己紹介加藤公一(かとうきみかず)所属:日本ユニシス株式会社 総合技術研究所2008年情報理工学博士@東大現在の仕事:研究開発新規製品開発におけるアルゴリズム設計
  4. 4. 会社紹介 (簡易版)日本ユニシス株式会社業種:情報システムに関連サービスいわゆるB2Bセクター開発・保守が収益の柱
  5. 5. GPGPUとは• General Purpose GPU• 本来描画専用プロセッサであったGPUを描画 以外の目的に使うこと• 計算速度や消費電力でメリットがある
  6. 6. NVIDIA CUDA• NVIDIA社による開発環境• C言語(C++)の拡張• GPGPUの分野ではほぼデファクト
  7. 7. 歴史• 2003年:データパラレル言語Brook (I.Buck)• 2006年:NVIDIA社がCUDAを発表• 2007年:NVIDIAチーフサイエンティスト D.Kirk(当時)が東大でCUDAに関する 講義 私はここから参戦• 2008年:東工大TSUBAMEがTesla (NVIDIAの計算専用GPU)を導入• 2008年:Apple社がOpenCLを提案
  8. 8. アプリケーション (TSUBAMEの例)• 津波のシミュレーション• 気象のシミュレーション• 金属凝固のシミュレーション – 祝!ゴードンベル賞!
  9. 9. スパコンから企業システムへ• 科学技術分野は、弊社ビジネスからは遠い• 一方GPGPUは科学技術以外にも使えるはず だ• GPGPUはスパコン以外で使えるはずだ
  10. 10. 消費電力• GPGPUは計算量当たりの消費電力が非常に 小さいのも魅力の一つ• しかし、待機電力は無視できない• ITサービスのクラウド化が進む中、省電力は サービス提供側にメリット – 処理系のブラックボックス化 – とはいってもGPGPUクラウドは発展途上
  11. 11. GPGPUの難しさ• 並列計算アルゴリズム設計の難しさ• GPUの特性に合わせたアルゴリズム設計の 難しさ• どのような計算がGPGPUに向いているかとい う「目利き」が必要
  12. 12. Free Lunch is Over!Herb Sutter, Free Lunch is Over : A Fundamental Turn Toward Concurrency in Software
  13. 13. 今までは・・・1. プログラムを書く2. 放っておいても2年後くらいには2倍の速度 で動くようになる3. 速くなったから新たな機能を追加できる4. 1.に戻る以上エンジニアの「タダ飯」サイクル
  14. 14. これから(2003年くらいから)は• コア1個当たりの計算性能はあまり向上して いない• しかし、チップ自体の性能はまだムーアの法 則にしたがっている – マルチコア・メニーコアによるマジック• したがって、チップの性能を引き出すには「う まく」設計する必要がある – 並列計算は難しい• その中の一つの選択肢としてのGPGPU
  15. 15. つまり・・・• 並列計算は難しい• GPGPUはもっと難しい• でもその難しさを避け続けると、ソフトウェア に付加価値をつけられなくなる
  16. 16. GPUのパフォーマンス NVIDIA CUDA Programming Guideより
  17. 17. やはりGPUすごい! でも、「タダ飯」は食えない
  18. 18. ではどうタダ飯ではないのか? 以下CUDAの概説
  19. 19. CUDAのプログラミングモデル• 速度を出すには数千~数万スレッドが必要• CPUからGPUのデータの受け渡しはPCIeで• いくつかのスレッドのかたまりは、スレッドブ ロックと呼ばれ、処理の単位になる• 同一スレッドブロック内の同期のコストは低い、 スレッドブロックをまたがる同期のコストは高 い
  20. 20. メモリ構成• 全体から参照できるグローバルメモリ• スレッドブロック内で共有する共有メモリ – ブロックあたり16k~48kByteしかないので注意 – 速いのでキャッシュのように使う• スレッドから参照されるレジスタ Thread Block 0 Thread Block 1 共有メモリ 共有メモリ グローバルメモリ
  21. 21. コアレスアクセス Coalesced Memory Access• 同じブロック内のスレッドがグローバルアドレ スをアクセスする際、同時に一続きのアドレス にアクセスすると動作が速い – 一度のメモリフェッチですべて持ってくる Thread0 Thread0 Thread1 Thread1 Thread2 Thread2 Thread3 Thread3 ・ ・ ・ ・ ・ ・
  22. 22. ポイント• CPU、GPUの間のメモリ転送に気をつける• スレッド間同期の粒度に気をつける• メモリアクセスは、できるだけお行儀を良く(= コアレスになるように)する
  23. 23. GPGPUが得意な計算 苦手な計算• 数千並列で計算できる • あまり細かく並列化できない• メモリアクセスが規則的 • メモリアクセスがランダムにち• 同期をあまりとらなくてもいい かい • 同期が頻繁に必要(特にグ ローバルな同期) • 規模が小さい たとえば・・・ • 次元が小さいベクトル計算を 含む漸化式 • 辞書を引くような処理が多発 • 配列の要素の総和
  24. 24. リコメンデーションエンジン
  25. 25. 基本原理 movieperson W X Y Z A 5 4 B 4 3 3 C 3 D 4 E 1 5 列ベクトルについて、一番近いものを探す 「映画Xが好きな人は、映画Wも好き」
  26. 26. 全体構成 入力:大規模な疎行列 対CPU比計算速度 特異値分解 (SVD) x30 k最近傍探索 (kNN) x130 我々の成果! (注:CPUシングルコアとの比較)論文K.Kato and T.Hosino, Solving k-Nearest Neighbor Problem on Multiple Graphics Processors, In Proc. CCGrid2010,Melbourne, Australia, pp 769-773, 2010.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. Multi-GPU algorithm for k-nearest neighbor problem. Concurrency and Computation: Practiceand Experience, 23, 2011.
  27. 27. k最近傍問題(kNN)• 与えられたn個のd次元ベクトルについて、そ れぞれのベクトルから近い順にk個列挙せよ という問題• Nは数百万~数億、dは数百くらいがターゲッ ト
  28. 28. アルゴリズム• ベクトル間の距離を計算して昇順にソートす ればよい• 上位k位までの比較で十分(部分ソート)• 距離計算はN体問題の計算アルゴリズムの 応用
  29. 29. N体問題のアルゴリズム Block 0 Block 1 Block 2 少しずつ共有メモリにコピーするNyland et al. “Fast N-Body Simulation with CUDA”, in GPU Gems III, pp 677—695, 2008
  30. 30. N体問題をkNNに適用するときの問題• 次元が大きすぎるので共有メモリの容量が不 十分
  31. 31. 解決策次元方向に刻んで、スライスごとに共有メモリに読み込む Block 0 Block 1 Block 2 K.Kato and T.Hosino, Solving k-Nearest Neighbor Problem on Multiple Graphics Processors, In Proc. CCGrid2010, Melbourne, Australia, pp 769-773, 2010. K.Kato and T.Hosino. Multi-GPU algorithm for k-nearest neighbor problem. Concurrency and Computation: Practice and Experience, 23, 2011.
  32. 32. 部分ソートは?• 論文を書いたときとは、GPUのスペックが違っ て、今では挿入ソートで十分速い
  33. 33. 結果• 商品としては売れてません• しかし、これをきっかけに仕事の受注も NVIDIA GPU Technology Conferenceでのメディア取材
  34. 34. 製造業への応用• もともとCAD(設計システム)では大量の図形 を取り扱うので、GPGPUとは相性がいいので はないか• 計算速度が問題となるアプリケーションが多 い• 弊社としてのビジネス実績もある
  35. 35. ノイズ除去 実物のスキャンデータからCADデータを生成したい 対CPU比約30倍の計算速度を達成 (陰関数曲面を利用したアルゴリズム)土江、谷本:陰関数曲面を利用したノイズ除去とGPGPUによる高速化 型技術 Vol.25, No.12, pp38-39 (日刊工業新聞社), 2010年
  36. 36. 今後に向けて:CAE• CAE(物理シミュレーション)は、製造業の設計 工程で大きなウェートを占める – 計算に時間がかかる:数日間計算機を回すことも – 試作品作成コストを考えると省略できない• なので、計算を速くすることのメリットは大きい• 構造計算(有限要素法)では、疎行列の逆行 列の計算が、一番のネック
  37. 37. 並列計算法• 反復法を利用 – 前処理付き共役勾配法• 反復の1回分を並列化 While 収束するまで do 並列計算(行列ベクトル積、ベクトルの内積など) End While
  38. 38. GPU化されたCAEエンジン (疎行列ソルバ)• オープンソース – CUSP – CUDA SDK Sample• 商用 – ANSYS 大体、対CPU(4コア)比2倍くらいの速さ
  39. 39. なぜあまり速くならないか• 計算時間の大半は、行列×ベクトルの計算と、 三角行列の逆行列の計算 – つまり内積計算が大量に
  40. 40. 疎行列ソルバの今後の高速化• 数列和の高速化のための特殊回路などが GPUに組み込まれるとうれしいなあ – 他力本願 (^^;)• NVIDIAはそれなりに力を入れている様子• とはいっても、GPUを支えているのはゲーマー であることを忘れてはならない – コモディティの力
  41. 41. まとめ• GPGPUはスパコンのためだけのものではない – 実際に商用ソフトも出てきている – 例えば、リコメンデーションシステム、スキャン データのノイズ除去など• なんでもGPGPU化すれば速くなるわけではな い – でもそれはCPUでも同じ話 – 何が速くなりそうか、何が価値を生みそうか、とい う「目利き」が重要

×