ページの先頭です

技術動向レポート

GPUコンピューティングと並列計算

サイエンスソリューション部
シニアマネジャー 永野勝尋

今、GPUがホットである。1チップで1TFlopsを超える性能は驚異的であり、HPCに限らず広く注目を集めるのも肯ける。しかし、GPUを使いこなすためには並列計算に関するより深い理解が求められる。

1.並列化の必要性(なぜ今GPUなのか)

“フリーランチは終わった。”これはGeForceの父と呼ばれるデヴィッド・カーク博士の言葉である。コンピューターの性能向上は常に日進月歩という枕詞が冠せられてきたが、ここ数年その中身が大きく変ってきた。従来は半導体の微細化→CPUの高クロック化という流れで演算速度が向上してきたが、リーク電流の増大に伴いクロックの向上は頭打ちになってきた(図表1)。一方、微細化はいまだムーアの法則に従って順調に進んでおり、CPUベンダーは性能向上の手段を高クロック化からマルチコア/メニーコア化による並列計算へと大きく舵を切った。先のカーク博士の言葉は、これまでのようにただ待っていればコンピューターの性能が上がって手持ちのソフトウェア資産が何の努力もなしに高速化される時代は過ぎ去って、ソフトウェアを並列処理に対応させる努力をしない限りコンピューターの性能向上の恩恵には与れないという警句である。

図表1 Intel社製CPUのトランジスタ数とクロックの推移

図表1 Intel社製CPUのトランジスタ数とクロックの推移

HPC(ハイパフォーマンスコンピューティング)の分野では、既に複数のCPUを用いた並列計算は一般的であり、今日スーパーコンピューターと呼ばれている高性能コンピューターはほぼ例外なくこのタイプである。しかし、HPCの分野でもフリーランチは終わりつつある。スーパーコンピューターの性能向上は、単体CPUの性能向上、搭載するCPU数の増加、CPUを繋ぐネットワーク性能の向上によって図られてきたが、ここにもマルチコア/メニーコア化の波が押し寄せてきたのである。2010年6月に発表されたスーパーコンピューターの性能ランキングTOP500(http://www.top500.org)の2位に中国深圳(シンセン)国立スーパーコンピューターセンターのNebulae(星雲)が躍り出て、HPCに携わる多くの人が新しい波の到来をひしひしと感じたに違いない。NebulaeはIntel製CPUとNVIDIA製GPU(グラフィック・プロセッシング・ユニット)を搭載したシステムで、CPUとGPUを合わせた理論ピーク性能は2.98PFlops、LINPACKベンチマークは1.27PFlopsである。そしてついに2010年11月の最新ランキングで中国天津国立スーパーコンピューターセンターのTianhe-1A(天河-1A)がトップに立った。Tianhe-1Aは14,336個のCPUと7,168個のGPUを搭載し、理論ピーク性能4.7PFlops、LINPACKベンチマーク2.56PFlopsを誇る。また、東京工業大学のTSUBAME2.0 もLINPACK ベンチマーク1.19PFlopsで4位に入る健闘を見せたが、理論ピーク性能2.28PFlopsのうち実に約9割をGPUに依存している。最新ランキングではトップ5のうち3台が“GPUスーパーコンピューター”となったが、この傾向は更に拡大するものと思われる。美味しいランチを食べるためには、それなりの出費を覚悟しなければならないのである。

2.GPUによる並列計算

それでは、GPUという美味しいランチを食べるためのコストは具体的には一体何であろうか。開発環境としてはNVIDIAのCUDAやクロノスグループのOpenCLなどがあり、開発言語も従来のCやFortranをわずかに拡張したものが使える。コードがCPU用のものとGPU用のものを準備する必要があるなど開発手順が複雑で面倒だといった意見も聞かれるが、これも本質的な問題ではない。もっとも大きな問題は並列計算の質がこれまで慣れ親しんできたマルチCPUのシステムとは大きく異なることである。産業界で広く利用される流体解析や構造解析は、領域分割法という方法でマルチCPUシステムに実装されるのが普通である。領域分割法はその名の通り計算対象領域を複数の領域に分割し、個々の領域の計算を利用可能なCPUに割り振る方法である。並列計算の単位は領域であり、個々の領域の計算はCPU内で逐次的に進められる。並列計算の粒度でいえば粗粒度の並列計算ということになる。領域どうしの計算は並列に進められるが、領域内の計算はあくまで逐次的なのである。CPUがマルチコアの場合、OpenMPを使って領域内の計算も並列化しようとするMPI-OpenMPハイブリッドプログラミングもあるが必ずしも人気のある方法ではない。CPUの各コアもあたかも1個のCPUのように扱い、MPIだけで済ませるflat MPIが主流である。flatMPIではマルチコアは単にCPUが増えただけでプログラムは一切変更する必要がないし、そもそも領域間と領域内の2つの並列計算など面倒で多くの人は考えたく無いのである。しかし、コアの数が数百に増え、一方で個々のコアが非力でまとまった大きさの領域の計算が困難な状況になったらどうであろう。もはやflat MPIは使えない。まさしくこれがGPUコンピューティングが直面しているもっとも大きなコストである。GPUコンピューティングでは並列計算の粒度が細かいのである。これは我々が慣れ親しんできた領域分割法に代表される並列計算の世界とは大きく異なっている。

具体的な例を見ていこう。構造格子上で偏微分方程式を離散化することによって得られる連立方程式を解く方法にADI法やSLOR法といったものがある。これらの解法のコア部分は図表2に示すように格子線に沿って左から右、ついで右から左へと逐次的に解いていく過程である。格子線どうしは独立に計算できるため、格子線単位でCPUに割り振っていけば個々の格子線の計算は逐次でも複数の格子線を並列に計算できるのである。CPUが少ないうちは1個のCPUが多数の格子線の計算を担当するが、CPUが増えるにつれて1個のCPUが担当する格子線の数は減少していき、格子線の数よりも増えればあぶれるCPUもでてくる。GPUの場合、数百個の演算コアを持つためこの問題は避けて通れない。すべての演算コアを休み無く働かせるためには格子線の中の計算も並列に実行する工夫が必要である。逐次的に計算すると断っておきながら、後で並列に計算するというのは詭弁のように聞こえるかもしれないが、一見すると逐次的に見えるアルゴリズムの中にも詳細に検討すると並列化できるものが存在することがある。この例ではサイクリック・リダクション法と呼ばれる手法で格子線の中の計算も並列化できる。GPUを活用するためにはより深い並列性を引き出す必要があるのである。自明な並列性から、アルゴリズムの中の隠れた並列性に注目する。GPUコンピューティングでは並列計算に関するより深い理解が不可欠なのである。

図表2 ADI法やSLOR法の計算順序

図表1 ADI法やSLOR法の計算順序

3.GPUコンピューティングの事例

当社は現在、東京工業大学の青木研究室とGPUの利用技術に関する共同研究を実施している。マルチグリッド法という手法を用いて大規模連立方程式を高速に解くことが目的である。既出の流体解析や構造解析は連立方程式を解く部分に全計算時間の半分以上を費やしており、これを高速化するメリットは計り知れない。マルチグリッド法をGPUに実装する場合も並列化の問題は発生する。マルチグリッド法のコア部分はILU法やガウス・ザイデル法などの緩和法であるが、これらの手法は逐次的である。これらを並列化するためにはマルチカラー法と呼ばれる方法が使われる。マルチCPUでは、マルチカラー法以外にも多くの並列化手法が利用されてきたが、GPUでは今のところマルチカラー法が唯一の方法だと思われる。格子点単位で並列性を抽出できる手法は、マルチカラー法しか知られていないからである。また、マルチグリッド法特有の問題として粗格子の計算効率が低いといった問題もある。先の例で言えば格子線の数が少なくなって演算コアが遊んでしまうのである。複数GPUを使って並列計算を行う場合の通信遅延も大きな壁である。共同研究では、これらの問題の解決を目指している。

具体的な計算事例を見ていこう。図表3と図表4は、GPUを使って気液二相流の計算を行った例である。解析プログラムは青木研究室で開発されたもので、大規模連立方程式を解く部分に共同研究の成果が取り入れられている。図表3はダム崩壊と呼ばれる問題で、水槽の片側に仕切り板で水を貯めておき、仕切り板を瞬時に取り除くと水は水槽のもう片側に雪崩を打って崩れ落ちていく。図はこの状況をシミュレーションし、計算結果を可視化したものである。この例では計算領域を576×96×288の格子に分割し、水が完全に水槽の反対側に移動する0.5秒まで計算している。移動する水面の先端で砕波が起きている様子がよく捕らえられている。また図表4はミルククラウンのシミュレーション例である。薄く張ったミルクの膜の上にミルク滴を垂らすと跳ねたミルクが王冠のように見えることからこう呼ばれる。格子数は448×448×224で、王冠ができる6ミリ秒まで計算している。ミルククラウンが形成される条件は厳しく、空間分解能や表面張力のモデリングなど精緻なシミュレーションでなければ再現することができない。本シミュレーションはGeForceGTX285というGPUを8個並列に動作させて実施している。このような大規模な流体解析もGPUを使うとCPUだけを使った場合に比べ10倍から30倍といった速度で計算できる。多くのシミュレーションを繰り返し実行する研究開発の最前線ではこの差は実に大きい。

図表3 ダム崩壊の計算結果(東京工業大学青木研究室ご提供)

図表3 ダム崩壊の計算結果(東京工業大学青木研究室ご提供)

図表4 ミルククラウンの計算結果(東京工業大学青木研究室ご提供)

図表4 ミルククラウンの計算結果(東京工業大学青木研究室ご提供)

4.まだ迷っている人に

GPUはHPCの中で確固とした地位を築けるのであろうか、それとも一時的な流行で終わるのだろうか。GPUを利用するかどうかは、この答えが出るまで待って決めようと考えている人も多いであろう。GPUの将来がどうなるかは誰にも分からないが、一つだけ明らかなことがある。それは、単体CPU(コア)の性能が一時の停滞を脱して急速に伸び始めるということは期待できないし、必然的に1チップ内の演算コアの数は増え続けるということである。このようなハードウェアで走るプログラムがCUDAやOpenCLで書き続けられるかどうかは分からないが、そこで記述される並列アルゴリズムは不変である。苦労して並列化することによって得たノウハウは開発言語が変っても生き続ける。GPUコンピューティングに関する開発環境も随分整備されてきた。個人的には躊躇する理由は何も無いように感じるが如何であろうか。フリーランチは終わった。しかし、有償だが美味しいランチは貴方のすぐそばにある。

謝辞

図表3、図表4のシミュレーション結果は東京工業大学青木研究室の杉原健太氏にご提供頂いた。また、研究を進める上で青木尊之教授、杉原氏には多くの貴重なご意見を頂いた。深く感謝する次第である。

  1. *GeForce、CUDAはNVIDIA社の登録商標です。Open CLはApple社の登録商標で、クロノスグループのライセンスの下で使用されています。その他の会社名、製品名は各社の登録商標または商標です。
  • 本レポートは当部の取引先配布資料として作成しております。本稿におけるありうる誤りはすべて筆者個人に属します。
  • レポートに掲載されているあらゆる内容の無断転載・複製を禁じます。全ての内容は日本の著作権法及び国際条約により保護されています。

広報室
03-5281-7548

メールマガジンお申し込み

みずほ情報総研メールマガジン、「ケミマガ」化学物質管理関連サイト新着情報メールマガジンを無料配信

RSS配信コンテンツ

ニュースリリース、ソリューション、コラムなどの最新情報をRSSで配信

グループ会社

ブランド戦略

ページの先頭へ
ページの先頭へ