東京工業大学は3月24日、気象庁が開発を進めている次期気象予報向け次世代気象モデル「ASUCA」を同大のスーパーコンピュータ「TSUBAME 1.2」に搭載したGPUを活用して、そのすべてをGPUで処理することで従来演算方式に比べて演算速度の高速化を実現したことを明らかにした。

日本でGPUスパコンの道筋を切り開いてきたTSUBAME1.2

一般的な気象モデルは大気圧と重力のつりあいの兼ね合いから上下には風が吹かないことが前提となっているが、予測範囲の面積をメッシュ状に区分けし、それを細かくすればするほど、例えば台風などを例に取ると、平衡に力は働かなくなり、雲の上下運動なども含めた計算が必要となってくる3次元非静力学平衡モデルとなる。また、そうした雲の解像を気象予報に応用するためには台風のような2000kmにもおよぶ範囲のものから、2-3km程度の範囲で収まる竜巻や集中豪雨といったものまで包括したメソスケールの大気モデルが求められるようになっており、次世代の気象予測ではこうした計算モデルの確立が求められている。

次世代気象予測の概要

このような大気モデルの場合、雲が横に流れるさまを流体力学を用いて示す力学過程と、雨のような上下の運動を示す物理過程の2つに分けられるが、物理過程はその場での上下の演算であり、GPU化しやすいものの、力学過程は広大な面を領域とするので、GPU化しにくいという課題があった。

大気モデルは2つの過程で構成される

そのような中、気象予測モデルのGPU化は世界的にもプロジェクトが進んでいる。主なものとして米国大気研究所(NCAR)を中心に、世界標準となりつつある次世代大気モデル「WRF(Weather Research and Forecasting Model)」が挙げられる。WRFでは、コードの1%をGPUに対応させただけで20~30%程度の性能向上が見られたという。また、化学反応分野のみに限っては、実に41.1倍のパフォーマンス向上が見られたという報告がある。しかし、WRFは世界規模のプロジェクトで非常に多くの人員が参加しているオープンコミュニティであるため、すべてのコードをGPU化させるためには参加者間の調整など非常に労力が必要となり、相当な困難が付きまとうこととなる。

一方、ASUCAは、気象庁の現行の気象モデル「NHM」の進化版で、メソスケール・非静力学平衡モデルとなっており、WRFと内容はほぼ同じものとなっているという。

GPUを用いたASUCAの演算は2重ループ構造となっている。1つは音波などの早い現象を処理する短いループ。もう1つは風が吹くといったような長い処理のためのループ。この2つのループがGPUの中で処理される。処理方法としては、一部GPUとフルGPUがある。一部GPUは、処理の一部だけをGPUに行わせる方法で、CPUとGPUの間のデータのやりとりを毎ステップ行うため、通信部分の遅延がネックとなりそれほど性能向上が見込めないという課題がある。

ASUCAにおける計算の流れ(短いループと長いループの2重ループ構造になっている)

一方のフルGPUは、すべての処理をGPU内部で行わせるもので、CPUとのやりとりは基本的にない。ユーザーがデータを参照したくなったとき、もしくは指定したステップ時のみCPUとやりとりを行うため、通信部分の遅延の影響を受けずらいメリットがある。ただし、ここで問題なのは、すべてのプログラムコードをGPU上で動くように移植をしなければいけないということである。

東京工業大学 学術国際情報センター 教授の青木尊之氏

ASUCAのプログラムコードは雲物理を除いた状態で2~3万行。これを2009年5月から同大学術国際情報センターの青木尊之教授および下川辺隆史氏の2名ですべて並列処理に対応するように書き換え、その後、CUDAに対応させるという作業を行い、TSUBAME1.2に搭載されたNVIDIAのTeslaを活用して計算が行われた。

膨大な量のコード書き換えについて青木教授は、「一番は下川辺氏の頑張りがあったからだが、それもASUCAはWRFと異なり関与する人間は限られており、それが100%のGPU化という結果に結びついた」と説明する。

なお今回の実証では、単にASUCAのコードをCUDAに対応させただけでなく、いかにパフォーマンスを向上させるか、ということを目的にシェアードメモリやレジスタの活用技術などが盛り込まれている。

シェアードメモリ技術やレジスタなども活用することでVARMへのアクセスを減らし性能向上を図った

単一のGPU(Tesla S1070)を用いた際の性能は「単精度ではTSUBAMEに搭載されているOpteron比で最大で100倍を超すレベルを達成、平均でも44,3GFlopsを達成している。性能が落ちる倍精度でも15GFlops程度を達成しており、CPU比では相当高い値を実現した」(青木教授)と説明する。

1GPUでASUCAの計算を行った際の性能比較(倍精度で性能が落ちているのは転送レートと演算器性能がネックとなっているため。Fermiでは改善されることが予想されるとのこと)

また、TSUBAME1.2に搭載された680GPUのうち、120GPUを用いた実証実験では、元の領域を分割し、それぞれのGPUに計算領域として割り当てた。しかし、この場合ではGPU-GPU間をInfiniBandで接続しデータ転送が行われることとなるが、このGPU同士の通信機能はCUDAでサポートされておらず、そのため「一度CPUに用意したバッファメモリに転送用の領域を用意。計算領域で転送が必要な部分の端を袖領域として、そこだけをCPU同士で支援してGPUに送る方法を採用した」(同)とし、「早いように思われるPCI Expressの転送速度だが、GPU内部のデータ転送に比べればやはり遅い。そうした意味では、やり取りするデータ量はできるだけ少なくしたかった」という思惑を説明した。

複数GPUを用いた場合の計算領域の割り当て例

袖領域を先に計算させて、それ以外の計算と袖領域の通信を非同期で実行することで、通信時間の遅延を最小限に抑える工夫が施されている

計算は日本列島全域を含む範囲を2kmの格子間隔で3164×3028×48の計算格子で120GPUに分割、割り振って実施した。結果としての実行性能は、CPU(TSUBAME搭載のOpteron)比で約83倍となる3.2TFlopsを達成。所要時間は6時間分の天候が70分で終了したという。

120GPUを用いた際の計算時間の内訳

複数GPUを用いた場合の実行性能グラフ(TSUBAME1.2には最大680GPUが搭載されているが、120GPUで収まっているのは、それだけで日本全部をカバーできたことと、TSUBAME1.2すべてのGPUを活用できるスケジュールが確保できなかったためとのこと)

この結果について、青木教授は「GPUコンピューティングの科学技術計算への真の有用性を示せた」とGPUコンピューティングの実用性が実証されたことを強調するほか、「東工大としてはGPUコンピューティングを今後も推進していく。2010年10~11月ころの稼動が予定されているTSUBAME 2.0ではより性能の高いGPUが搭載できるはずで、より早い速度での計算結果の提示が可能となるはず」との期待を覗かせた。

実際に行われたASUCAによる台風の成長シミュレーション

なお、同研究成果の詳細は2010年3月25日につくば市で開催される「気候変動に関する次世代モデル」に関する国際会議で発表される予定である。

TSUBAME2.0へ向けたロードマップと世界トップクラスのスパコンとの性能比較