（様式 20）成果報告書

TSUBAME 共同利用 平成 25 年度 学術利用 成果報告書

利用課題名 GPU を用いた全球高解像度気象モデル力学コアの開発
英文：Development of GPU-based dynamical core for high-resolution GCM simulation
富田浩文
Hirofumi Tomita（独）理化学研究所 計算科学研究機構
RIKEN Advanced Institute for Computational Science
http://www.aics.riken.jp/
邦文抄録
本課題は、大規模かつ複雑化した気象・気候アプリケーション（気象モデル）の演算加速機構（アクセラレータ）最適化を進め、大規模並列計算を達成することを目的としている。全球高解像度モデル
NICAM に OpenACC を適用することにより、最小限のコード追加・変更で力学コア全体を GPU 上で計算することが可能になった。演算性能はメモリバンド幅に見合うものであり、高レベル言語である
OpenACC が演算性能と生産性の両面で有用であることが実証された。
英文抄録（100 words 程度）
Simulation using a large number of accelerators is a big problem for weather / climate application.
Thescale of application codes is large and complicated; it costs in rewriting using a low-level language. We
applied GPU optimization to global high-resolution atmospheric model, NICAM, by using OpenACC.
The whole part of dynamical core of NICAM was calculated on the hundreds of GPGPUs with reasonable
performance efficiency. The result demonstrates that OpenACC is promising tool in both performanceand productivity.
Keywords: Global Circulation Model, Memory-bound application, OpenACC, GPGPU
背景と目的の利用は有効であると考えられる。しかし、気象モデル

台風の発生過程解明や気候システムの諸要素の研のソースコード規模は非常に大きく（例えば、NICAM究に代表される学術的な側面だけでなく、天気予報やは数 10 万行）、またモデル自体が大気力学、雲微物理

気候変動予測のような人間社会と密接に関わる要件に学、接地微気象学、陸水学、大気放射学などの様々なおいても、気象・気候の数値シミュレーションは大きな分野で研究開発されている小モデルの集合体である。

役割を果たしている。大気の小さなスケール(数ｍ)からそのためソースコードのメンテナンスや大規模な書き換全球スケールの現象までを統合的に扱い、スケール間えには大きな困難を伴う。の相互作用をよりよく表現するには、現在よりもさらに近年、ディレクティブベースでのアクセラレータ利用を細かい空間解像度でのシミュレーションを実現すること可能にするプログラミング規格として、OpenACC が登が求められている。これはさらに強力なスーパーコンピ場した。これにより、CUDA C/Fortran などを用いたソーューターを活用する必要があるということである。一方、スコードの大幅な書き換えを行うことなく、既存のソース近年のスーパーコンピューターの演算性能は GPGPU

コードにディレクティブを追加することによって CPU-アクやメニーコアコプロセッサのようなアクセラレータに依るセラレータ間のデータ転送とアクセラレータ上での演算部分が多く、その比率は増加の一途を辿っている。この実行が実現する。本課題は、既に計算科学の第一線でような背景から、気象モデルも積極的にアクセラレータ活用され、大規模化・複雑化した気象モデル に対しを利用することが求められている。気象モデルは要求OpenACC を適用することによって、コードのポータビリする Byte/FLOP 比が一般的に高く、アーキテクチャのティや可読性を失うこと無く、アクセラレータを利用しそ演算性能よりもメモリバンド幅に律速される。この点での性能を引き出すことが可能であるかを評価することをも、CPU より高いメモリ転送性能をもつアクセラレータ目的とする。

（様式 20）成果報告書
概要

配列は、必ずセットアップ部分でメモリ確保を行い、実アプリケーションとして全球雲解像モデル
NICAM[1][2] の流体力学ソルバー部分（力学コア）を中演算部分から排除する。
・

更新されない配列はすべて GPU 上に常駐させる：

心にパ ッケージ ン グさ れ た NICAM-DC を用 い て、上記の配列は時間発展しないので、セットアップ時OpenACC を用いた GPU 最適化の実施と演算性能、スに present_or_copyin 節を用いて転送を行う。

ケーリング性能の評価を行った。NICAM は正２０面体

・カーネルの非同期実行：各ループに対しカーネル格子配置と有限体積法を採用した、主に全球大気シミ節を適用する際に、袖通信のタイミングやデータ依ュレーションのためのモデルである。NICAM はその高存性のある部分を明確にし、極力 async 節を付加し並列性と演算性能によって高解像度化を達成し、雲シた実行を行う。

ステムや積乱雲ひとつひとつを直接表現する「雲解像・袖通信の最適化：NICAM の格子配置は正２０面モデル」としてこれまでに多くの科学的成果を上げてい体を用いており、隣接通信の相手や格子位置は複る。プロセス並列には MPI を用い、OpenMP を用いたス雑である。そのため、袖通信の際に送るデータはレッド並列は行っていない。

必ず pack/unpack を行っている．この作業を GPU

本課題では、主要演算部分に OpenACC ディレクティ上で行い、ネットワーク通信に必要なデータのみをブを適用し、GPU で高い性能を出すために必要なコードの変更とそのポータビリティについて調査を行った。

Host 側に転送し，再受け取りを行う。
・

特異点格子の計算：マスターノードで行われる特異

加えて、TSUBAME2.5 の CPU、GPU を用いた際の演点格子の計算は演算量が少ないため GPU には転算性能やスケーラビリティ、電力性能についての評価を送せず、CPU で行う。CUDA 等を用いた場合、通行った。NICAM-DC は CPU、GPU での実行において、常の格子と特異点の計算カーネルをサブルーチンそれぞれメモリバンド幅に見合う演算性能を発揮し、単位で分離することになり、メンテナンスが困難に

GPU の高いメモリ転送性能と電力性能を十分に活用出なることが予想されるが、OpenACC の場合は同じ来ることが示された。スケーラビリティについても良好なソースコードに共存することが出来る。

ウィークスケーリング性能を示した。ストロングスケーリ

・

ヒストリ出力の扱い：気象モデルでは解析に用いる

ングについては、問題サイズの減少に伴い、GPU を利２次元・３次元変数の時系列を取得するため、途中用した際に急速に高速化率が頭打ちになることがわかの値をファイルに出力することが一般的である。こった。これはネットワーク通信にかかる時間に加え、のヒストリ出力のための鉛直内挿、時間方向の平GPU-Host 間のデータ転送にかかる時間の割合が、演均化や診断値の計算はすべて GPU 上で行い、数算時間に比べて増大することが大きな要因となってい十〜数百ステップごとのファイル出力のタイミングる。

で Host 側に転送し、書き出しを行った。

結果および考察<OpenACC の適用とソースコードの変更点>
OpenACC ディレクティブの適用と最適化は NVIDIA 社の技術者の全面的なサポートを受けて行われた。基本的な最適化の指針は以下の通りである。
・

メモリアロケーションと演算部分の分離の徹底：
GPU 上で計算するために必要なメトリクス項などの（様式 20）成果報告書
NICAM のデータ構造は(ij,k,l)=(水平格子,鉛直格子,領域分割単位)であり、多くの場合で水平格子が最もサイズが大きい。GPU 上での実行に際し、このデータ構造を変更する必要はなかった。ただし、いくつかのステンシル演算カーネルではスカラー機用のキャッシュラインチューニングとして、小さいサイズの配列次元を最内に変更した箇所があったため、OpenACC 適用時に再度変更された。これは、アーキテクチャによってデータ順序の異なる AoS 版と SoA 版の２バージョンを使い分ける必要があることを示唆している。しかし、切り替えるコードの分量としてはそれほど大きくないため、メンテナンス性の観点から見ても十分に対応可能であると判断がサービスとして提供するノード単位の電力消費情報される。以上のことをふまえ、挿入されたディレクティブのためのツールを利用した。性能評価に用いた際の問行および元コードに変更が施された行は 2000 行程度で題サイズは水平解像度 56km、鉛直 160 層（格子数あった。これは総コード行数 58000 行の５％に満たない2600 万）であった。セットアップを除くメインループの１ス量であり、十分なポータビリティとメンテナンス性を保持

テップあたり総演算量は 420GFLOP/step であり、メモリしたまま、GPU への対応が完了したといえる。

転送量は 2.3TB/step であった。GPU は５ノード 10MPI<演算性能>

プロセス、CPU は５ノード 40MPI プロセスで計測を行っ

TSUBAME ２ ． ５た。演算性能評価のためのテストケースにはを用いて、CPU のJablonowski and Williamson（2006）[3]の傾圧不安定波みでの実行と実験(ただし 60 ステップ)を用い、結果取得のためのファGPU を 利 用 し た

イル出力も行った。結果を図２に示す。図より、実行を行い、演算OpenACC を通して GPU を利用した際の実行時間は性能の評価を行CPU のみを利用した時よりも、およそ８倍高速に実行さった。CPU と GPUれた。これは図１に示した構成での、メモリ転送性能のの性能比較の方差とおおむね一致している。CPU、GPU 実行において法についてはいく

どちらもピークメモリ転送性能の約 50%を利用できておつか方法がある

り、ディレクティブによるプログラミングスタイルをとる

が 、 NICAM は メ

OpenACC が十分に性能の高い実行コードを生成出来モリ律速のアプリケーションであるため、図１に示すノーていることを示している。一方、演算ピーク性能比というド単位での比較を行った。このとき、CPU のみの実行で観点では、より Byte/FLOP 比の小さい GPU でピーク性は AoS 版のカーネルを用い、 MPI プロセス分割数を 4能比が悪い結果となった。NICAM-DC の主要部分であ倍 に 増 や し て 行 っ た 。 GPU を 用 い た 実 行 で はる力学コアは NICAM の中でも要求 B/F 比が高い部分

TSUBAME2.5 のノードに 3 枚搭載されている GPU カーであり、強くメモリ転送性能に律速される。GPU の演算ドのうち、2 枚を用いている。ノードあたりのプロセス数、性能はまだまだ活用出来る余地が残っており、シミュレGPU 利用数が限られているのは、NICAM の MPI 分割ーション結果の物理的な性能や演算量を評価しながら、n数に制限があり、10x4 の公約数しかとれないためであ

力学コアのスキーム・アルゴリズムの変更や実数演算る。計測にあたり、演算量およびメモリ転送量をあらか精度の見直しを行うことが今後必要であると考える。消じめ取得しておき、実行時にはタイマー計測で実行時

費電力あたりの演算性能では、実行時間とおおむね同間を取得した。電力消費量については、TSUBAME2.5じ程度の差が得られた。

（様式 20）成果報告書<スケーリング性能>

ストロングスケーリングでは水平解像度 56km のまま、図３にウィークスケーリング性能の計測結果を示す。ウ５ノードから 320 ノードまで増加させた。このときプロセィークスケーリングではモデルの水平解像度を 56km かスあたりの水平格子数は 16900grid から 100grid まで減少している。図より、CPU のみの実行と比較して、GPU実行の場合はノード数の増加に伴って急速にスケーリング性能が低下していることがわかる。これはGPU-Host 間のデータ転送時間の割合が増大することに加えて、水平格子数の減少に伴い GPU 上で実行されるスレッド数が減少し、十分な演算効率を発揮出来なくなったためである。特にデータ転送に関しては、１回の袖通信のために行う一連の動作に含まれる種々のレイテンシが無視出来ないため、通信量よりも通信回数を減らすことが効果的であることがわかった。また、
課題実施時点の TSUBAME2.5 ではサポートされていら 7km まで変化させることで、ノードあたりの問題サイなかった pinned memory 機能の活用も、GPU-Host 間のズを固定して 5 ノード 10MPI プロセスから 320 ノード転送時間削減に有効であると考えられる。ストロングス

640MPI プロセスまで増加させた。図よりわかるように、ケール性能は十年〜百年(106-107 ステップ)にわたる気CPU、GPU 実験共に良好なスケーリング性能が得られ候実験を行う際に重要であり、今後重点的に改良を進ている。１ステップあたりの実行時間でみても、5 ノードめる必要があると考える。

実験に対し 320 ノード実験で 30%程度所要時間が伸びまとめ、今後の課題るのに留まっている。所要時間が増加する主な要因は、OpenACC を用いて、全球高解像大気モデルの力学

CPU 実行の場合は主にネットワーク通信時間の増加でコア全体を GPU 上で計算し、メモリ転送性能に見合うあるのに対し、GPU 実行の場合はヒストリ出力であった。

実行性能を得ることに成功した。ソースコードの変更量

CPU の場合はフラット MPI で実行しているために、ネッはモデル全体の行数と比較して５％以下であり、高いトワーク通信の輻輳が MPI プロセス数の少ない GPUポータビリティを同時に達成した。スケーリングについ実行時より起こりやすいと推察される。一方、GPU ではては、ウィークスケーリングで良好な結果を得た一方、ファイル出力を行う変数の３次元配列全体を GPU から

ストロングスケーリングでは GPU-Host 間の転送時間がホストに転送する必要があり、袖通信のためのデータより律速することがわかった。本課題の結果は、転送と比べても転送量が圧倒的に多く、律速となってい

OpenACC を用いることで、ソースコード規模が大きく複ることがわかった。時系列データは多くの場合倍精度で雑なアプリケーションコードを容易にアクセラレータ上である必要がないので、今後は GPU 上で出来るだけ単動作さ せら れる ことを 実証 するもの で ある。 今 後は精度化して転送するよう改良する予定である。

OpenACC の適用をさらに物理諸過程の各コンポーネ

図４にストロングスケーリング性能の評価結果を示す。

ントに拡張し、フルパッケージの GPU 対応を進める。力学コアの更なる高速化に向けて、時間発展スキームの変更や計算結果の精度を考慮した単精度・倍精度計算の混合を検討する必要が考えられる。ストロングスケーリング性能の向上については、通信回数の削減を目指したアルゴリズムの見直しを行うことが重要である。
参考文献[1]Satoh, M., T. Matsuno, H. Tomita, H. Miura, T. Nasuno and（様式 20）成果報告書
S. Iga (2008) : Nonhydrostatic Icosahedral Atmospheric Model(NICAM) for global cloud resolving simulations. J. Comp.
Phys., the special issue on Predicting Weather, Climate andExtreme events, 227, 3486-3514.
[2]Tomita, H. and Satoh, M. (2004) : A new dynamicalframeworkof nonhydrostatic

globalmodel

using

theicosahedral grid. Fluid Dyn. Res., 34, 357-400.
[3] Jablonowski C, Williamson DL. A baroclinic instabilitiy test
case for atmospheric model dynamical cores. Quart. J. Roy.
Meteor. Soc. 2006; 132(621C):2943–2975.