GPUコンピューティングと並列計算(PDF/527KB)

技術動向レポート
GPUコンピューティングと並列計算
― □□□□□□□□□□□□□□ ―
サイエンスソリューション部
シニアマネジャー
永野 勝尋
今、GPUがホットである。1チップで1TFlopsを超える性能は驚異的であり、HPCに限らず
広く注目を集めるのも肯ける。しかし、GPUを使いこなすためには並列計算に関するより深い
理解が求められる。
だ待っていればコンピューターの性能が上がって手
1.並列化の必要性(なぜ今GPUなのか)
持ちのソフトウェア資産が何の努力もなしに高速化
“フリーランチは終わった。”これはGeForceの父
される時代は過ぎ去って、ソフトウェアを並列処理
と呼ばれるデヴィッド・カーク博士の言葉である。
に対応させる努力をしない限りコンピューターの性
コンピューターの性能向上は常に日進月歩という枕
能向上の恩恵には与れないという警句である。
詞が冠せられてきたが、ここ数年その中身が大きく
HPC(ハイパフォーマンスコンピューティング)
変ってきた。従来は半導体の微細化→CPUの高ク
の分野では、既に複数のCPUを用いた並列計算は
ロック化という流れで演算速度が向上してきたが、
一般的であり、今日スーパーコンピューターと呼ば
リーク電流の増大に伴いクロックの向上は頭打ちに
れている高性能コンピューターはほぼ例外なくこの
なってきた(図表1)。一方、微細化はいまだムーア
タイプである。しかし、HPCの分野でもフリーラ
の法則に従って順調に進んでおり、CPUベンダー
ンチは終わりつつある。スーパーコンピューターの
は性能向上の手段を高クロック化からマルチコア/
性能向上は、単体CPUの性能向上、搭載するCPU
メニーコア化による並列計算へと大きく舵を切っ
数の増加、CPUを繋ぐネットワーク性能の向上に
た。先のカーク博士の言葉は、これまでのようにた
よって図られてきたが、ここにもマルチコア/メニ
ーコア化の波が押し寄せてきたのである。2010年6
図表 1 Intel社製CPUのトランジスタ数とクロ
ックの推移
月に発表されたスーパーコンピューターの性能ラン
キングTOP500(http://www.top500.org)の2位に中
1.E + 05
1.E + 09
訓国立スーパーコンピューターセンターの
国深 坩
1.E + 08
Nebulae(星雲)が躍り出て、HPCに携わる多くの
1.E + 03
1.E + 07
人が新しい波の到来をひしひしと感じたに違いな
1.E + 02
1.E + 06
1.E + 01
1.E + 05
クロック(M H z )
トランジスタ数
1.E + 00
1970
1.E + 04
1975
1980
1985
1990
2000
2005
2010
1.E + 03
1.E-01
年
01
1995
トランジスタ数
クロック
1.E + 04
い。NebulaeはIntel製CPUとNVIDIA製GPU(グ
ラフィック・プロセッシング・ユニット)を搭載し
たシステムで、CPUとGPUを合わせた理論ピーク
性能は2.98PFlops、LINPACKベンチマークは
1.27PFlopsである。そしてついに2010年11月の最
GPUコンピューティングと並列計算
新ランキングで中国天津国立スーパーコンピュータ
グもあるが必ずしも人気のある方法ではない。
ーセンターのTianhe-1A(天河-1A)がトップに立っ
CPUの各コアもあたかも1個のCPUのように扱い、
た。Tianhe-1Aは14,336個のCPUと7,168個のGPU
MPIだけで済ませるflat MPIが主流である。flat
を搭載し、理論ピーク性能4.7PFlops、LINPACK
MPIではマルチコアは単にCPUが増えただけでプ
ベンチマーク2.56PFlopsを誇る。また、東京工業大
ログラムは一切変更する必要がないし、そもそも領
学のTSUBAME 2.0 も LINPACK ベンチマーク
域間と領域内の2つの並列計算など面倒で多くの人
1.19 PFlops で4位に入る健闘を見せたが、理論ピー
は考えたく無いのである。しかし、コアの数が数百
ク性能2.28PFlopsのうち実に約9割をGPUに依存し
に増え、一方で個々のコアが非力でまとまった大き
ている。最新ランキングではトップ5のうち3台が
さの領域の計算が困難な状況になったらどうであろ
“GPUスーパーコンピューター”となったが、この
う。もはやflat MPIは使えない。まさしくこれが
傾向は更に拡大するものと思われる。美味しいラン
GPUコンピューティングが直面しているもっとも
チを食べるためには、それなりの出費を覚悟しなけ
大きなコストである。GPUコンピューティングで
ればならないのである。
は並列計算の粒度が細かいのである。これは我々が
慣れ親しんできた領域分割法に代表される並列計算
2.GPUによる並列計算
の世界とは大きく異なっている。
それでは、GPUという美味しいランチを食べる
具体的な例を見ていこう。構造格子上で偏微分方
ためのコストは具体的には一体何であろうか。開発
程式を離散化することによって得られる連立方程式
環境としてはNVIDIAのCUDAやクロノスグループの
を解く方法にADI法やSLOR法といったものがあ
OpenCLなどがあり、開発言語も従来のCやFortran
る。これらの解法のコア部分は図表2に示すように
をわずかに拡張したものが使える。コードがCPU
格子線に沿って左から右、ついで右から左へと逐次
用のものとGPU用のものを準備する必要があるな
的に解いていく過程である。格子線どうしは独立に
ど開発手順が複雑で面倒だといった意見も聞かれる
計算できるため、格子線単位でCPUに割り振って
が、これも本質的な問題ではない。もっとも大きな
いけば個々の格子線の計算は逐次でも複数の格子線
問題は並列計算の質がこれまで慣れ親しんできたマ
を並列に計算できるのである。CPUが少ないうち
ルチCPUのシステムとは大きく異なることである。
は1個のCPUが多数の格子線の計算を担当するが、
産業界で広く利用される流体解析や構造解析は、領
CPUが増えるにつれて1個のCPUが担当する格子線
域分割法という方法でマルチCPUシステムに実装
の数は減少していき、格子線の数よりも増えればあ
されるのが普通である。領域分割法はその名の通り
ぶれるCPUもでてくる。GPUの場合、数百個の演
計算対象領域を複数の領域に分割し、個々の領域の
計算を利用可能なCPUに割り振る方法である。並
図表 2 ADI法やSLOR法の計算順序
列計算の単位は領域であり、個々の領域の計算は
CPU内で逐次的に進められる。並列計算の粒度で
いえば粗粒度の並列計算ということになる。領域ど
うしの計算は並列に進められるが、領域内の計算は
あくまで逐次的なのである。CPUがマルチコアの
場合、OpenMPを使って領域内の計算も並列化しよ
前進計算(左から右に向けて計算)
後退計算(右から左に向けて計算)
うとするMPI-OpenMPハイブリッドプログラミン
02
算コアを持つためこの問題は避けて通れない。すべ
では、これらの問題の解決を目指している。
ての演算コアを休み無く働かせるためには格子線の
具体的な計算事例を見ていこう。図表3と図表4は、
中の計算も並列に実行する工夫が必要である。逐次
GPUを使って気液二相流の計算を行った例である。
的に計算すると断っておきながら、後で並列に計算
解析プログラムは青木研究室で開発されたもので、
するというのは詭弁のように聞こえるかもしれない
大規模連立方程式を解く部分に共同研究の成果が取
が、一見すると逐次的に見えるアルゴリズムの中に
り入れられている。図表3はダム崩壊と呼ばれる問
も詳細に検討すると並列化できるものが存在するこ
題で、水槽の片側に仕切り板で水を貯めておき、仕
とがある。この例ではサイクリック・リダクション
切り板を瞬時に取り除くと水は水槽のもう片側に雪
法と呼ばれる手法で格子線の中の計算も並列化でき
崩を打って崩れ落ちていく。図はこの状況をシミュ
る。GPUを活用するためにはより深い並列性を引
レーションし、計算結果を可視化したものである。
き出す必要があるのである。自明な並列性から、ア
この例では計算領域を576×96×288の格子に分割
ルゴリズムの中の隠れた並列性に注目する。GPU
し、水が完全に水槽の反対側に移動する0.5秒まで
コンピューティングでは並列計算に関するより深い
計算している。移動する水面の先端で砕波が起きて
理解が不可欠なのである。
3.GPUコンピューティングの事例
図表 3 ダム崩壊の計算結果(東京工業大学青木
研究室ご提供)
当社は現在、東京工業大学の青木研究室とGPU
の利用技術に関する共同研究を実施している。マル
チグリッド法という手法を用いて大規模連立方程式
を高速に解くことが目的である。既出の流体解析や
構造解析は連立方程式を解く部分に全計算時間の半
分以上を費やしており、これを高速化するメリット
は計り知れない。マルチグリッド法をGPUに実装
する場合も並列化の問題は発生する。マルチグリッ
ド法のコア部分はILU法やガウス・ザイデル法など
の緩和法であるが、これらの手法は逐次的である。
これらを並列化するためにはマルチカラー法と呼ば
れる方法が使われる。マルチCPUでは、マルチカ
ラー法以外にも多くの並列化手法が利用されてきた
が、GPUでは今のところマルチカラー法が唯一の
方法だと思われる。格子点単位で並列性を抽出でき
る手法は、マルチカラー法しか知られていないから
である。また、マルチグリッド法特有の問題として
粗格子の計算効率が低いといった問題もある。先の
例で言えば格子線の数が少なくなって演算コアが遊
んでしまうのである。複数GPUを使って並列計算
を行う場合の通信遅延も大きな壁である。共同研究
03
図表 4 ミルククラウンの計算結果(東京工業大
学青木研究室ご提供)
GPUコンピューティングと並列計算
いる様子がよく捕らえられている。また図表4はミ
謝辞
ルククラウンのシミュレーション例である。薄く張
図表3、図表4のシミュレーション結果は東京工業
ったミルクの膜の上にミルク滴を垂らすと跳ねたミ
大学青木研究室の杉原健太氏にご提供頂いた。また、
ルクが王冠のように見えることからこう呼ばれる。
研究を進める上で青木尊之教授、杉原氏には多くの
格子数は448×448×224で、王冠ができる6ミリ秒
貴重なご意見を頂いた。深く感謝する次第である。
まで計算している。ミルククラウンが形成される条
件は厳しく、空間分解能や表面張力のモデリングな
ど精緻なシミュレーションでなければ再現すること
※GeForce、CUDAはNVIDIA社の登録商標です。
Open CLはApple社の登録商標で、クロノスグルー
ができない。本シミュレーションはGeForce
プのライセンスの下で使用されています。
GTX285というGPUを8個並列に動作させて実施し
その他の会社名、製品名は各社の登録商標または商
ている。このような大規模な流体解析もGPUを使
標です。
うとCPUだけを使った場合に比べ10倍から30倍と
いった速度で計算できる。多くのシミュレーション
を繰り返し実行する研究開発の最前線ではこの差は
実に大きい。
4.まだ迷っている人に
GPUはHPCの中で確固とした地位を築けるので
あろうか、それとも一時的な流行で終わるのだろう
か。GPUを利用するかどうかは、この答えが出る
まで待って決めようと考えている人も多いであろ
う。GPUの将来がどうなるかは誰にも分からない
が、一つだけ明らかなことがある。それは、単体
CPU(コア)の性能が一時の停滞を脱して急速に
伸び始めるということは期待できないし、必然的に
1チップ内の演算コアの数は増え続けるということ
である。このようなハードウェアで走るプログラム
がCUDAやOpenCLで書き続けられるかどうかは分
からないが、そこで記述される並列アルゴリズムは
不変である。苦労して並列化することによって得た
ノウハウは開発言語が変っても生き続ける。GPU
コンピューティングに関する開発環境も随分整備さ
れてきた。個人的には躊躇する理由は何も無いよう
に感じるが如何であろうか。フリーランチは終わっ
た。しかし、有償だが美味しいランチは貴方のすぐ
そばにある。
04