2012-03-08 MSS研究会

41
GPGPUの産業への適用 について 2012/3/8 システム数理と応用研究会 JAIST東京サテライト 日本ユニシス株式会社 加藤公一

description

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

Transcript of 2012-03-08 MSS研究会

Page 1: 2012-03-08 MSS研究会

GPGPUの産業への適用 について

2012/3/8 システム数理と応用研究会

JAIST東京サテライト

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

Page 2: 2012-03-08 MSS研究会

目次

• GPGPUとは

• CUDAによるGPGPUプログラミング紹介

• GPGPUの応用例

• 今後の展望

Page 3: 2012-03-08 MSS研究会

自己紹介

加藤公一(かとうきみかず)

所属:日本ユニシス株式会社

総合技術研究所

2008年情報理工学博士@東大

現在の仕事:

研究開発

新規製品開発におけるアルゴリズム設計

Page 4: 2012-03-08 MSS研究会

会社紹介 (簡易版)

日本ユニシス株式会社

業種:情報システムに関連サービス

いわゆるB2Bセクター

開発・保守が収益の柱

Page 5: 2012-03-08 MSS研究会

GPGPUとは

• General Purpose GPU

• 本来描画専用プロセッサであったGPUを描画以外の目的に使うこと

• 計算速度や消費電力でメリットがある

Page 6: 2012-03-08 MSS研究会

NVIDIA CUDA

• NVIDIA社による開発環境

• C言語(C++)の拡張

• GPGPUの分野ではほぼデファクト

Page 7: 2012-03-08 MSS研究会

歴史

• 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研究会

アプリケーション (TSUBAMEの例)

• 津波のシミュレーション

• 気象のシミュレーション

• 金属凝固のシミュレーション

–祝!ゴードンベル賞!

Page 9: 2012-03-08 MSS研究会

スパコンから企業システムへ

• 科学技術分野は、弊社ビジネスからは遠い

• 一方GPGPUは科学技術以外にも使えるはずだ

• GPGPUはスパコン以外で使えるはずだ

Page 10: 2012-03-08 MSS研究会

消費電力

• GPGPUは計算量当たりの消費電力が非常に小さいのも魅力の一つ

• しかし、待機電力は無視できない

• ITサービスのクラウド化が進む中、省電力はサービス提供側にメリット

–処理系のブラックボックス化

– とはいってもGPGPUクラウドは発展途上

Page 11: 2012-03-08 MSS研究会

GPGPUの難しさ

• 並列計算アルゴリズム設計の難しさ

• GPUの特性に合わせたアルゴリズム設計の難しさ

• どのような計算がGPGPUに向いているかという「目利き」が必要

Page 12: 2012-03-08 MSS研究会

Free Lunch is Over!

Herb Sutter, Free Lunch is Over : A Fundamental Turn Toward Concurrency in Software

Page 13: 2012-03-08 MSS研究会

今までは・・・

1. プログラムを書く

2. 放っておいても2年後くらいには2倍の速度で動くようになる

3. 速くなったから新たな機能を追加できる

4. 1.に戻る

以上エンジニアの「タダ飯」サイクル

Page 14: 2012-03-08 MSS研究会

これから(2003年くらいから)は

• コア1個当たりの計算性能はあまり向上していない

• しかし、チップ自体の性能はまだムーアの法則にしたがっている –マルチコア・メニーコアによるマジック

• したがって、チップの性能を引き出すには「うまく」設計する必要がある –並列計算は難しい

• その中の一つの選択肢としてのGPGPU

Page 15: 2012-03-08 MSS研究会

つまり・・・

• 並列計算は難しい

• GPGPUはもっと難しい

• でもその難しさを避け続けると、ソフトウェアに付加価値をつけられなくなる

Page 16: 2012-03-08 MSS研究会

GPUのパフォーマンス

NVIDIA CUDA Programming Guideより

Page 17: 2012-03-08 MSS研究会

やはりGPUすごい! でも、「タダ飯」は食えない

Page 18: 2012-03-08 MSS研究会

ではどうタダ飯ではないのか? 以下CUDAの概説

Page 19: 2012-03-08 MSS研究会

CUDAのプログラミングモデル

• 速度を出すには数千~数万スレッドが必要

• CPUからGPUのデータの受け渡しはPCIeで

• いくつかのスレッドのかたまりは、スレッドブロックと呼ばれ、処理の単位になる

• 同一スレッドブロック内の同期のコストは低い、スレッドブロックをまたがる同期のコストは高い

Page 20: 2012-03-08 MSS研究会

メモリ構成

• 全体から参照できるグローバルメモリ

• スレッドブロック内で共有する共有メモリ

–ブロックあたり16k~48kByteしかないので注意

–速いのでキャッシュのように使う

• スレッドから参照されるレジスタ

共有メモリ

グローバルメモリ

共有メモリ

Thread Block 0 Thread Block 1

Page 21: 2012-03-08 MSS研究会

コアレスアクセス Coalesced Memory Access

• 同じブロック内のスレッドがグローバルアドレスをアクセスする際、同時に一続きのアドレスにアクセスすると動作が速い

–一度のメモリフェッチですべて持ってくる

Thread0

Thread1

Thread2

Thread3

Thread0

Thread1

Thread2

Thread3

・ ・ ・

・ ・ ・

Page 22: 2012-03-08 MSS研究会

ポイント

• CPU、GPUの間のメモリ転送に気をつける

• スレッド間同期の粒度に気をつける

• メモリアクセスは、できるだけお行儀を良く(=コアレスになるように)する

Page 23: 2012-03-08 MSS研究会

• 数千並列で計算できる • メモリアクセスが規則的 • 同期をあまりとらなくてもいい

• あまり細かく並列化できない

• メモリアクセスがランダムにちかい

• 同期が頻繁に必要(特にグローバルな同期) • 規模が小さい

GPGPUが得意な計算 苦手な計算

たとえば・・・

• 次元が小さいベクトル計算を含む漸化式 • 辞書を引くような処理が多発 • 配列の要素の総和

Page 24: 2012-03-08 MSS研究会

リコメンデーションエンジン

Page 25: 2012-03-08 MSS研究会

基本原理

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研究会

全体構成

特異値分解 (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研究会

k最近傍問題(kNN)

• 与えられたn個のd次元ベクトルについて、それぞれのベクトルから近い順にk個列挙せよという問題

• Nは数百万~数億、dは数百くらいがターゲット

Page 28: 2012-03-08 MSS研究会

アルゴリズム

• ベクトル間の距離を計算して昇順にソートすればよい

• 上位k位までの比較で十分(部分ソート)

• 距離計算はN体問題の計算アルゴリズムの応用

Page 29: 2012-03-08 MSS研究会

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研究会

N体問題をkNNに適用するときの問題

• 次元が大きすぎるので共有メモリの容量が不十分

Page 31: 2012-03-08 MSS研究会

解決策

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研究会

部分ソートは?

• 論文を書いたときとは、GPUのスペックが違って、今では挿入ソートで十分速い

Page 33: 2012-03-08 MSS研究会

結果

• 商品としては売れてません

• しかし、これをきっかけに仕事の受注も

NVIDIA GPU Technology Conferenceでのメディア取材

Page 34: 2012-03-08 MSS研究会

製造業への応用

• もともとCAD(設計システム)では大量の図形を取り扱うので、GPGPUとは相性がいいのではないか

• 計算速度が問題となるアプリケーションが多い

• 弊社としてのビジネス実績もある

Page 35: 2012-03-08 MSS研究会

ノイズ除去

対CPU比約30倍の計算速度を達成

実物のスキャンデータからCADデータを生成したい

(陰関数曲面を利用したアルゴリズム)

土江、谷本:陰関数曲面を利用したノイズ除去とGPGPUによる高速化 型技術 Vol.25, No.12, pp38-39 (日刊工業新聞社), 2010年

Page 36: 2012-03-08 MSS研究会

今後に向けて:CAE

• CAE(物理シミュレーション)は、製造業の設計工程で大きなウェートを占める

–計算に時間がかかる:数日間計算機を回すことも

–試作品作成コストを考えると省略できない

• なので、計算を速くすることのメリットは大きい

• 構造計算(有限要素法)では、疎行列の逆行列の計算が、一番のネック

Page 37: 2012-03-08 MSS研究会

並列計算法

• 反復法を利用

–前処理付き共役勾配法

• 反復の1回分を並列化

While 収束するまで do 並列計算(行列ベクトル積、ベクトルの内積など) End While

Page 38: 2012-03-08 MSS研究会

GPU化されたCAEエンジン (疎行列ソルバ)

• オープンソース

– CUSP

– CUDA SDK Sample

• 商用

– ANSYS

大体、対CPU(4コア)比2倍くらいの速さ

Page 39: 2012-03-08 MSS研究会

なぜあまり速くならないか

• 計算時間の大半は、行列×ベクトルの計算と、三角行列の逆行列の計算

–つまり内積計算が大量に

Page 40: 2012-03-08 MSS研究会

疎行列ソルバの今後の高速化

• 数列和の高速化のための特殊回路などがGPUに組み込まれるとうれしいなあ

–他力本願 (^^;)

• NVIDIAはそれなりに力を入れている様子

• とはいっても、GPUを支えているのはゲーマーであることを忘れてはならない

– コモディティの力

Page 41: 2012-03-08 MSS研究会

まとめ

• GPGPUはスパコンのためだけのものではない –実際に商用ソフトも出てきている

–例えば、リコメンデーションシステム、スキャンデータのノイズ除去など

• なんでもGPGPU化すれば速くなるわけではない –でもそれはCPUでも同じ話

–何が速くなりそうか、何が価値を生みそうか、という「目利き」が重要