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