RI
STニュースNo．
６４（２０１８）

GPUの気象・気候・海洋モデルへの適用とその最適化を目指した取り組み
Ac
t
i
vi
t
i
e
st
o
war
dsanappl
i
c
at
i
o
no
fGPU t
onume
r
i
c
al
we
at
he
r
/
c
l
i
mat
e
/
o
c
e
anmo
de
landi
t
so
pt
i
mi
z
at
i
o
n
高度情報科学技術研究機構
山岸 孝輝
次世代のエクサスケール・スーパーコンピュータでは、性能及び電力効率の高さが求められる。
その両方を備えたシステムとして、演算性能とメモリ転送性能に特化した、アクセラレータを用いたヘテロジニアスなシステムが広がりを見せている。演算性能、電力効率の世界ランキングの両方においてアクセラレータを用いたシステムが多数上位に入っており、その性能に対する期待は大きい。その一方、アクセラレータは数値計算に特化したプロセッサであることに加え、CPUとの複合システムであることから、ユーザの開発及び最適化の負担が大きい事が問題となっている。本稿では、これらのアクセラレータの内、最も普及しているNVI
DI
A社のGPUを取り上げ、現在及び今後のスーパーコンピューティングにおけるGPU適用の背景、基礎並びに今後の課題について概説し、併せて我々が行っている気象・気候・海洋モデルへのGPUの適用とその最適化について紹介する。
えると、空間スケールは地球１周４万km、大１．はじめに地球温暖化を初めとする気候変動の予測、

気拡散の運動は数mmである。季節の移り変極端現象・異常気象による災害の予防と即時

わりは数ヶ月、気候変動となると数十年、風対応の手段として、またそれらの基礎となるの流れは数時間から数分である。つまり、時

物理プロセスを理解する手段として、気象、

間・空間スケールの幅は非常に大きい。関連

気候及び海洋の数値シミュレーションの重要する物理現象も、大気放射、エアロゾル（大度は高まる一方である。それ故、気象・気候・

気中の塵）、大規模凝結、積雲対流、降水に地

海洋モデルの高度化の需要は大きい。本稿で表面過程など多岐にわたり、これらが相互作

は、気象・気候・海洋モデルの有効な高度化

用しながら、いわゆる気象システムを形成し手段の一つとして、アクセラレータ（NVIDI
Aている。気象の数値モデルは、これらの現象

GPU）への対応についてその背景、基礎並びの相互作用を時間・空間的に広いスケールでに今後の課題について概説し、併せて我々の扱う、高度な数値モデルといえる。

研究成果を紹介する。

より良い精度の予報並びに予測とそのプロ
セスの理解には、モデルをより高解像度で実２．気象・気候・海洋モデルの特徴と開発の行することが求められる。加えて、防災とい背景

う観点からは予報の即時性が求められるた

気象・気候・海洋モデルでは、複雑かつ多め、予報が得られるまでの経過時間の減少もくの種類の現象をまとめて扱う事が特徴であ

重要な要素である。また、統計的手法によりる。例えば、気象の数値モデルで扱う大気現予報の精度を上げるためには十分なアンサン

象をスケール（代表的な大きさ）の違いで考ブル数の確保が必要であり、経過時間の減少

－29－

RI
STニュースNo．
６４（２０１８）は重要である。数値モデルはその名の通り、機への移行を経て京コンピュータでの大規模

実際の自然現象を近似して数値化しているの実行を可能とする開発と実行など、革新的かであるが、より詳しく現実を再現・理解する

つ多大な努力が多方面から払われてきた。こためにはなるべく近似を行なわず、より多くの開発の流れに今後さらに影響を与えるものの力学・物理過程を直接表現すること、つまに、電力効率改善の要求がある。その要求にりモデルの精微化が必要となる。

対応するため、次世代のエクサスケール・ス

以上に挙げた高度な気象・気候・海洋モデーパーコンピュータでは、これまでの超並列ルへの要求事項（高解像度化、高速化、精微化の流れに加えて、アーキテクチャやシステ化）に対する制約の一つは、計算機の能力とム構成の変更をも伴う大きな転換を求められ実効性能である。例えば、メッシュサイズにている。

依って数値モデルに含む要素やモデル化の手

電力効率を上げる方法として、プロセッサ法も決まり、その結果、研究の対象にも制約の動作周波数を下げると共にコア数を増やしが生じる。計算機の能力・実効性能と研究対（半導体プロセスの集積度の増加分をコア数

象の関係は線形では無く、ある閾値を境に質増加に転換させて）、電力消費量を抑えたま的な変化をも含む。これは同じ計算機の能力までチップあたりの演算性能は向上させる方

でも、高度化の内容次第で研究の質ががらり法と、目的に特化した設計として無駄を省くと変わりうるということである。

方法がある。ベクトル計算機からマルチコア

気象・気候・海洋モデルは社会的な重要度を搭載した超並列なスカラ計算機への移行にが大きくかつ影響を与える分野が広いため、

おいては、前者の方法が主に取られてきた。

利用者の数も使い方も自ずと増える。直接開今後の流れでは、さらに後者の方法も重要と発に携わらない人や専門的な領域のみ詳しいされている。超並列化及び構造の特化で無駄人が占める割合が増える事に加え、数値モデを省く方法の両方を採用するプロセッサとしルを実行する環境も多様化する。それ故、なて近年広がりを見せているのは、従来のCPUるべく汎用性が高くて実行環境を選ばないこと組み合わせて用いるアクセラレータであと、簡単に開発・高度化できること、コードる。CPUとアクセラレータの組み合わせをの理解に誰もが簡単に取り組めること等が重採用したヘテロジニアスな構成となるスーパ要となる。

コンピュータ（以下スパコン）は、演算性能

これまでに挙げた課題を計算科学の言葉で

（TOP
５
０
０）
、電力効率（Green５００）の世界ラ

言い換えると、気象・気候・海洋モデルの高ンキングの両方において多数上位に入ってお度化は、弱いスケーリング（高解像度化）と

り、TOP
５
０
０での最新の１位はGPUを搭載し強いスケーリング（高速化）の両方が求めらた米国のSummitである。日本では産業技術れていて、そのコードはさらなる複雑化を求総合研究所のABCI（５位）、東京工業大学のめられ、生産性（容易な開発）やポータビリ

TSUBAME
３．
０（１９位）などがランク入りしティ（多様な実行環境に対応）も求められるている。

という、実に挑戦的な取り組みといえる。

アクセラレータの広まりと同時に課題としこれらの課題に対してどのように対応してて上がってきたのは、プロセッサの超並列化

きたかについて、これまでの日本での気象・とスパコンシステムのヘテロ構成化（CPU＋

気候・海洋モデル開発の歴史を振り返ってみアクセラレータの組み合わせ）がアプリ制作

ると、ベクトル計算機の並列クラスタである側の負担となることである。これは、気象・地球シミュレータから、超並列なスカラ計算

気候・海洋モデルのみが抱える問題では無い。

－30－

RI
STニュースNo．
６４（２０１８）

本稿では、特に気象・気候・海洋モデルがこ論演算性能で劣るCPUよりも実効性能が出れから迎える超並列化の時代に抱えるであろない事が殆どである。これは、多くのユーザ

う課題とその対応について、関連する背景やが抱える問題ではあるが、筆者は、単純であ基礎を紹介しつつ纏めていく。後述するが、るが故の利点、例えば、使いやすさもあると気象モデルで扱うカーネルは構造格子でメモ考える。構造が単純である場合、ハードの機

リアクセスも系統的である故に他のアプリに能に依る余計なレイテンシが発生する機会がも適用可能な高度化のノウハウを含むもので少なくなり（例えばGPUのL１キャッシュはあり、他の事例にも適用可能と考えている。

コヒーレンシを取らない）、加えてモデルのまた、近年最も広まっているアクセラレータ

振る舞いを把握しやすく、書き手が操作しやはNVI
DI
A社のHPC向けグラフィックカー

すくなる。モデルの最適化では、性能の阻害

ド（GPU）を採用したものであり、本稿では要因を特定し、その原因を調査した上で、コ

全てNVI
DI
A社のGPUを前提とする。

ードを修正していく。複雑な構造の場合、原因を特定するためのコストが大きくなり、加３．GPUとは

えて書き手の狙い通りに修正することが難本章では、GPUの基礎について、気象・気

しい。

候・海洋モデルに関係が深い部分を中心にまこの欠点と利点のどちらが大きいかはアプ

とめる。さらなる解説等はNVI
DI
Aの公開文

リの特性や書き手のGPUに対する習熟度に書［１，２］を参照されたい。

よるが、筆者らは、気象・気候・海洋モデル

元来はグラフィック用のプロセッサをについては、先行研究や筆者らの事例では良HPC向けに利用したもので、HPCで主に使い結果が出ていることから、利点が上回るとわれる上位機種では、グラフィック処理では考える立場である。

さほど必要としない倍精度演算が強化されてここで、GPUの実行モデルについて要点

おり、浮動小数点の表現ではI
EEE
７
５４－２
０
０
８

を纏める。デバイスであるGPUはホストでに準拠し、デバイスメモリにはECCが搭載さあるCPUから独立しており、GPUメモリのれているなど、科学技術計算において求めら

確保と転送はCPUから行う。GPU上のメモれる機能を備えている。コンパイラやライブ

リをCPUから確保した上で、CPUメモリか

ラリ、プロファイラ等のソフトウェアも提供

らGPUメモリにデータを転送する（ホストデされ、ハード・ソフトの両面で十分な機能をバイス転送）。GPUカーネルは、転送されて備えている。

きたデータを更新した後、CPUメモリに転送

これまでの一般的なCPUに比べて、数値計

してGPUでの処理を終える。GPUカーネル

算に特化したことで性能に対する電力の効率での処理は、CPUではデータが連続する方向が高いことが特徴である。しかしながら、特にループを回転させることで多数のデータを化したが故にCPUとは異なる並列化手法が連続して処理していくが、GPUは１つのデ求められ、プログラミングにおいていくつかータを１つのスレッドに割り当て、CPUでのの制約が発生する。

ループの回転をスレッドの割り当てに置き換

数値計算に特化して構造を単純化させたこえる。このように多数のスレッドをGPUがとは、使いにくさと使いやすさの両方につな持つ数千の演算コアに、データ並列性を活かがる。GPUは基本的なやり方を守って実装

すように割り当てていくことで、多数のデー

しないと十分な性能を出すことができず、理タの処理を行う（図１）
。

－31－

RI
STニュースNo．
６４（２０１８）

ス転送は避けられない。これらに対しては、
GPUDi
r
e
c
tRDMA通信、ストリームを用いた非同期処理などの手法でコストの増加を抑える事が可能である（手法の詳細は［３］を参照）。現状の実装例の殆どでは、気象・気候・海洋モデルのメインループが回転してい
図１

る間は、MPI通信やファイル入出力処理以外

GPUの実行モデル

ではCPUはアイドル状態にあり、見方を変え
科学技術計算にてオーバヘッドまたはメモるとCPU資源の無駄が生じているといえる。

リの読み込みなど「待ち」が発生することはアプリケーションをGPU対応させる方針

大 き な 問 題 で あ る が、CPUは こ の 問 題 をとして、３つ挙げられる。GPU対応ライブ

キャッシュとその他の機能（例：SI
MD処理、

ラリへの置き換え、指示行挿入またはCUDA

プリフェッチ、分岐予測）で対応する。一方、による直接的な記述である。

GPUは多数のスレッドを立て、「待ち」の発ライブラリの利用では、通常のCPUコード

生時にはスレッドを切り替えることで対応すで既存のライブラリを利用する場合とほぼ同る。GPUは処理の粒度を極力細かくした大様に利用できる。この場合、ライブラリのコ量のデータを扱うことを前提しており、あるール時にホストデバイス間の転送を伴うたスレッドが「待ち」の時は実行の準備が完了

め、その転送コストとGPUによる高速化のした他のスレッドに切り替えて先に実行させどちらの効果が大きいのか正しく評価する必てしまう。その実行の裏で「待ち」の処理を要がある。

させて、次のスレッドの切り替えに備えさせ

指示行挿入によるものでは、仕様の更新・る。裏を返すと、GPUは高いデータ並列性

改良の頻度が高く、最も広く使われているが無いと「待ち」のレイテンシを隠蔽するこものにOpenACCがある［４］。OpenACCはとができず、無駄なコストの増加につながる。

OpenMPと同じく、並列化のオープンな規格

このように、GPUとCPUは実行モデルがであり、複数のメーカによってそれを実装し全く違うものである。シリアル処理が多い問

たコンパイラがリリースされている。機能豊題に対しては、CPUが得意とする。それに対富でライブラリ利用よりも実装での自由度がし、データ並列性が高い処理を含む問題に対高い。利用方法はOpenMPと同様、並列化す

しては、GPUが得意とする。

るループの前後に指示行を挿入することで、GPU実装で問題となるのは、CPUとGPU

そのループをGPUでの並列化に対応させる。

の複合システムであるが故に、物理メモリがOpe
nACC対応コンパイラのオプションに２つ存在し、その間で転送が必要なことであて、指示行の有効・無効を指定できる。これる。転送を記述することでプログラミングがにより、CPU用・GPU用の実行形式を同一の煩雑になり、レイテンシを含む転送コストはソースコードから作成することができるた

パ フ ォ ー マ ン ス に 直 接 影 響 す る。現 状、め、コードの可搬性が高い実装方法といえGPUに対応する気象・気候・海洋モデルは、る。後述するCUDAに比べて容易に実装可

初期処理をCPUで行い、メインループ内の演能であり、開発・メンテナンスのコストを削

算処理は全てGPUで実施している。また、

減できる。

MPI
通信やファイル入出力処理は本質的にしかしながら、オープンな規格故にNVI
DI
A

CPUのみでしかできないため、ホストデバイ

GPUに特化した機能を含んでおらず、ハー

－32－

RI
STニュースNo．
６４（２０１８）ドが持つ全ての機能を活用できない。例え

モデルが増加しており、本稿で紹介する気象

ば、シェアードメモリの活用など、後述するモデルは全て格子点法を用いている。格子点

CUDAにてその有効性が示されている手段

法を用いて力学過程を構成する方程式を離散を取れないという問題点がある。

化するにあたり、高次の離散スキームを取る

最も自由度が高い実装方法に、CUDAを用ことは少なく、隣接する格子点との間で離散いた記述がある。CUDAはNVI
DI
AGPU向

化されるスキームとなることが殆どである。

けの言語拡張で、現在主なものではC言語向

構造格子かつ系統的なメモリアクセスではあ

け とFo
r
t
r
an向 け が リ リ ー ス さ れ て い る。

るものの隣接格子への３次元方向での参照がGPUのスレッドを陽に扱う事ができるため、多く、加えて物理過程に比べて複雑な演算を柔軟なコーディングが可能となり、より深い

含まないことから、メモリバンド幅ネックに最適化が可能になる。しかしながら、CPU版

なりやすい。物理過程は、各格子で計算が閉のコードからポーティングする場合、コード

じるか、鉛直方向のみで依存するものが大半の大半を書き換えることが必要となるため、である。力学過程に比べて処理が複雑とな

CPU・GPU間でのコードの互換性を保つこと

り、加えて特殊関数を多く含むなど処理の中は難しい。

で演算が占める割合が多く、演算ネックにな

このように、実装の容易さと性能の出しやりやすい。以上から、気象・気候・海洋モデ

すさは相反するものとなっている。これら３ルは、計算特性が異なるものを含む、計算科

つの実装方法はそれぞれ異なる特徴を持つ学の視点からも複雑な数値モデルといえる。

が、実装において排他的では無く、併用した自然現象全てを微細なプロセスまで全て計実装が可能である。アプリに応じて選択し、算しているわけでは無く、より大きなスケー

適切に当てはめていくことが求められる。

ルの変数から経験的に微細なプロセスの役割を見積もる、いわゆるパラメタリゼーション

４．気象・気候・海洋モデルの基礎化がなされている。例えば、積雲が発生する

４．
１ モデルの構造とモデル化

水平の空間スケールは数百メートルであるた

気象・気候・海洋モデルの基本的な構成、め、数十キロの格子間隔の気象モデルでは表モデル化の方法、数値解法などの基礎のう

現することができない。その場合、その数十

ち、GPU向け実装に関係が深い部分を中心

キロの格子を代表する物理量のうち積雲の発にまとめる。気象・気候・海洋モデルは大き生と関係が深いものから、物理的・経験的な

く分けて力学過程と物理過程の２つから成手法によって、その格子にて発生する積雲のる。気象モデルの場合、力学過程は、流体の平均的な値を見積もることで、小さいスケー

運動方程式を基本として、連続の式、熱力学

ル（積雲）が大きいスケール（数十キロの格の式、水蒸気の式などで構成される。物理過子の状態）に与える影響を評価している。こ程は、力学以外の要素の総称で、気象モデルの手法は積雲パラメタリゼーション化と呼ばの場合、大規模凝結、積雲対流、大気放射計

れている。

算、エアロゾルや地表面過程などが含まれパラメタリゼーション化の存在は予報にある。以上から、気象・気候・海洋モデルは、る程度の不確定性を与え得るため、解決策と非常に複雑な非線形数値モデルといえる。

して、計算の空間解像度を上げて直接計算を

力学過程は水平方向の差分化でスペクトル

行い、パラメタリゼーションを外してしまう

法と格子点法に分類されるが、隣接ノード間ことが挙げられる。水平解像度を細かくしでの通信が主となる格子点法を採用する気象て、積雲の発生を直接計算する全球非静力学

－33－

RI
STニュースNo．
６４（２０１８）気象モデルの開発も行われてきた［５］。直接あった。メインの時間ループに含まれる処理

計算するか否かでモデルの結果には質的な違

全 て をGPU上 で 初 め て 実 行 し た の は、いが生じ、それまで表現できなかった物理を

CUDACによるGPU実装を行った気象モデ

捉えることも多く、計算能力の向上・効率化

ルASUCAのTSUBAME
２．
０で の 大 規 模 実 行がもたらす気象・気候・海洋モデルの精微化の事例である［６］。GPU単体での性能改善に対する需要は大きい。

やマルチGPUでの通信の隠蔽等により、高気象・気候・海洋モデルは、以上に挙げた

い実効効率の元での大規模実行を達成した。

全ての要素が相互作用しながら時間発展して

CUDACは最適化の自由度が高く、高い性能

いく非線形問題である。初期データ（予報変を引き出すことができたが、CPU版コードと数の初期値、境界条件）を読み込んだ後は、の互換性は保たれておらず、開発・メンテナ

全ての要素を含んだ時間ループを何度も繰りンスにおける効率が良いものでは無かった。

返していく。しかしながら、全ての要素に適

文献［６］で示した事例を含む初期の事例

切な予報変数を設定し、それらの連立方程式

では、CUDAを用いたGPU実装で高い性能を解くのは計算量が膨大となってしまう。実を示したものの、研究室または研究室間での際のモデル実装では、いくつかの仮定の下で試みにとどまり、気象予報等での実運用を前近似が行われ、時間スケールや処理の性質に提とした開発ではなかった。近年の開発で応じて分割された上で計算される。例えば、は、コードのポータビリティ、開発・メンテ

力学過程（風速、地表面気圧、雲水など）をナンスの工数削減の必要性から、CUDAでの計算する際、物理過程（大気放射、エアロゾ

開発から指示行挿入によるOpenACCを中心ル、積雲対流、降水や地表面過程など）は更とした開発が主流となってきた。また、大新せずに一定としている。そして、更新した学・研究機関・企業での共同体制が多くのプ

力学の場を元に、物理過程のそれぞれの要素

ロジェクトで確立されている。これは、気象を逐次に更新する。

モデルのGPU対応に十分な意義があること

各要素の更新の順番、組み合わせ、更新のの現れといえる。

頻度をどのように設定するかは、気象・気候・

OpenACCを用いて、大規模システムで多海洋モデルにとって不確定要素の１つといえ数ノードまで性能をスケールさせた例としてる。それは、予報の精度並びに現象の解釈には、TSUBAME
２．
５で のNICAM力 学 コ ア の影響を与えるのみならず、モデルの実行速度

Ope
nACC実装［７］の他、スイス連邦工科にも関係している。それ故、気象学・計算科

大学・スイス気象庁によるプロジェクト［８］学の両方の視点から、気象・気候・海洋モデ

にて、気象モデルCOSMOを、OpenACCでのルの構成を検討する必要がある。

実装に加えDSLやライブラリとの併用で、力学過程・物理過程全てをGPUに実装し、数千

４．
２ 気象・気候・海洋モデルへのGPU適用

GPUまで性能がスケールすることを示した

事例［９］。またスイス気象庁ではGPUスパコン

求められる即時性という社会的な重要性

であるPi
zKe
s
c
h上でGPUを用いた初の気と、構造格子でメモリアクセスが系統的とい

象予報が行われており、GPUが気象予報のう 数 値 モ デ ル と し て の 性 質 の 良 さ か ら、

実運用に耐えうることが初めて示された。こGPUに対応させる取り組みは早くから行わの他、NCAR等の米国の研究機関が中心とれてきた。しかし、初期の事例では、CUDA

なって開発してきた領域気象モデルWRFやによる部分的なポーティングに留まるもので

全球気象モデルMPASでは、NVI
DI
Aを含む

－34－

RI
STニュースNo．
６４（２０１８）

民間企業も参加した国際的なプロジェクトと存在しないことが特徴である。全球スペクト

して、OpenACCを軸としたGPUへの対応が

ル気象モデルの性能分析例では、最もコスト進められている［１０］。

が集中したサブルーチンは、全体の数％程度のコストでしか無く、大半のサブルーチンは

５．計算科学としての気象・気候・海洋モデ

１％未満のコストしか占めなかった。

ルの課題と今後

モデルの開発コストに関しては、その行数

ここまでは、気象・気候・海洋モデルのが非常に多いこと、複数の研究者による共同

GPUへの適用と高度化について、その背景での開発であること並びにCPUでの開発がや基礎を概説した。本章では、それらを踏ま基本であることが特徴である。複数の要素かえて、課題と今後の対応についてまとめる。

ら構成されるため、必然的にコードの分量は気象・気候・海洋モデルでは、特に力学過大きくなる。また、構成要素（例えば、積雲程においてメモリアクセスがカーネルの性能

対流など）それぞれを担当する研究者が、独を律速する要因となることが多い。一般に自の方針でCPUにて数値モデルを作成・検証

GPUではメモリ転送性能の演算性能に対すし、持ち寄ったモデルを結合したものを１つる割合がCPUに比べて低いため（メモリ転送の気象・気候・海洋モデルとして共有してい性能の絶対値ではCPUよりも優れているもる。それ故、開発者全てが、モデルの高度化のの）、演算の実行効率という視点からは問に詳しいとは限らない。

題となり得る。また、CPU・GPU共に、近年

気象・気候・海洋モデルのGPUでの高度化のスーパーコンピューティングでは、メモリ

は複数の課題を抱えており、その課題を解決

転送性能の演算性能に対する割合が低くなる

するには、計算科学の専門家のみでは不可能

傾向にあり、
気象モデルのこの性質は性能を向で、地球科学を専門とする側との協力がいろ上させる上で大きな問題の一つとなっている。

いろなレベルで必要となる。そのためには、

また、カーネル内に一時変数を持つことも理解しやすく、実装に時間がかからないプロ

多く、レジスタ消費量も多い。特に物理過程

グラミング手法が必須といえる。

に含まれる経験則に基づく式は、複数のパラ

ここまで、コードの特性からのGPU向け

メータを含む事が多く、レジスタ使用量が多最適化の困難さ、気象モデルコミュニティ故くなりがちである。レジスタ消費量が大きいの開発に対する問題点の二つを述べたが、後と、同時に実行状態となるスレッドの数が減者についてはOpenACCが唯一の解である。

少し、データ並列性を確保できない、また、nACCでの指示行挿入での実際、昨今はOpe

レジスタスピルが発生してキャッシュ等への開発がほぼ全ての気象・気候・海洋モデルで変数の一時退避が発生するなど、性能を阻害

行われている。しかしながら、第２章で挙げする要因となる。

た「高解像度化」、「高速化」、「精微化」全てノード間通信は毎時間ステップにおいて複に対応するには機能面の制約から限界がある

数回発生し、通常のMPIで通信する場合はそと言わざるを得ない。また、OpenACCの元の都度GPU上のメモリからCPU上のメモリ

でGPUでの実行を優先して最適化すると、に転送する必要があり、CPU単独での実行にCPU実行での性能が低下しかねない。

比べて、余計なコストとなり得る。

今後の取り組みとしてまず筆者が重要と考モデルの実行コスト分布に関しては、コーえることは、OpenACCとCUDAを併用した

ド全体で共通して使われるような処理が少な実装である。加えて将来的な案として、先述

いため、計算コストが集中するような箇所がした気象モデルの複合的な性質を元に、気象

－35－

RI
STニュースNo．
６４（２０１８）システムを構成する要素の並列化による高速

く、キャッシュの活用でレイテンシが大きい化を紹介する。

問題に対応可能な構造であるCPUと、多数のOpenACCで の 高 度 化 が 難 し い 箇 所 はコアによる多数の並列計算を可能にする

CUDAまたはGPU対応ライブラリを用いる。

GPUという、異なる性格を併せ持つシステ

その際、CPU版コードと併存させることにな

ムは、気象モデルのような複雑な要素を多くり、プリプロセッサなどの指定でコンパイル含むモデルには本質的に相性が良いといえる。

時に切り替えることが良いと考える。その部

今後必要となるOpenACCとCUDAを併用分については２種類のコードが存在すること

nACCはCPUコードした実装であるが、Opeになり、メンテナンスのコストは２倍とな内のループをCUDAで記述されたGPUカー

る。気象・気候・海洋モデルは大量のコード

ネルに置き換えるものであるため、CUDA実を含むが、長い間更新されない、いわゆるレ装の理解はCUDAでの実装部分のみならず、

ガシー化された部分もあり、そのような部分

OpenACCで の 最 適 化 に も 役 立 つ も の で あはCUDA版とCPU版のコードを併用して運る。そこで、次章では非静力学海洋モデルを用しやすい。性能計測を行いコスト上位から

CUDAを用いてGPU実装並びに高速化した

Ope
nACCとCUDAを併用していくやり方も筆者らの研究を紹介する。

あるが、コードの更新頻度も併用する部分を選択する指標の一つとなる。先述の通り、

６．CUDAによる非静力学海洋モデルkinaco

CUDAは最適化のスイートスポットが小さのGPU実装と高速化

いが、幸い気候・気象・海洋モデルは構造格

非 静 力 学 海 洋 モ デ ルkinacoのCUDAを 用子でかつ系統的なメモリアクセスであるた

いたGPU実装と高速化の事例を紹介する。

め、最適化の方針は立てやすい。CUDAを用

ki
anc
o
の基本方程式等は［１１］を参照された

いた先行研究で高い実効効率を出したことがい。計算のメイン部分は、前処理としてマルそれを示している。

チグリッド法を用いたCG法でPo
i
s
s
o
n方程

Ope
nACCとCUDAを併用した実装の優先式を解く部分である。高度化のさらなる詳細度が高いが、将来的な案として、気象システ

については、参考文献［１２，１
３，
１
４］を参照

ムを構成する要素の並列化による高速化の案

されたい。

を紹介する。先述したとおり、気象モデルは

２］
CG法前処理への混合精度の適用［１

自然現象の内、実際は同時に行われる要素

気象モデルに含まれる浮動小数点演算は倍（例えば雲の凝結と大気の放射計算など）をモ精度に設定されることが多い。GPUは、単デル化の段階で逐次処理に設定している。こ

精度演算のユニットと倍精度演算のユニットの場合、GPUまたはCPUで逐次に更新しては別のハードで構成されていて、チップ当たいくことになる。複数の要素を、並列に処理りの演算性能は単精度演算の方が優れていする様にモデル化することも、その要素の性る。メモリ転送性能も、単精度は倍精度に比質によっては不可能では無い。これに基づべて実質２倍の性能に相当する。高速に処理

き、CPU向けの処理とGPU向けの処理を並する上で、倍精度から単精度への移行を検討

行処理できるようなモデル化を検討する。空することは十分な意味がある。精度が落ちていているリソース（この場合はCPU）を活用

しまうため、計算結果への影響は評価する必することに加え、CPU向けの処理はCPUで要があり、適用は慎重に行うべきである。こ高速に処理させることができれば、モデル全

こでは、運動方程式のソルバである前処理付体の高速化につながる。コアの単体性能が高きCG法の前処理のみに単精度での処理を適

－36－

RI
STニュースNo．
６４（２０１８）用し、ソルバ本体であるCG法は倍精度のまードし、レジスタに保存する。シャッフル関まで実行した。その結果、収束回数は前処理数を用いて、他スレッドのレジスタに保存さ含めて全て倍精度に設定時と同じ回数となれた値を自スレッドにロードして足し込み、り、計算結果の精度も、結果の解釈に影響を

粗い格子を作成した。

及ぼさなかった。
コアレスアクセスの促進［１２］
Po
i
s
s
o
n方程式に今回含まれる行列ベクト
ル積では、各格子とその周囲６点の参照を係
数行列によって表現している。合わせて７点の係数は、各格子固有の値をとる。オリジナ
ルのCPUコードでは、各コア（スレッド）が逐次にメモリをアクセスしていくが、その際に係数７つがキャッシュライン上に連続して並ぶため、キャッシュラインを有効に活用できる。しかしながら、複数のスレッドが同時にアクセスするGPUでは、ストライド幅が７つのアクセスとなってしまう
（図２）
。そこ

図３

で、配列要素の次元を並び替え、コアレスア

粗い格子を作成するアルゴリズム

クセスとすることで、メモリへのアクセス効

ループ融合とレジスタの活用によるデータ並率を向上させた。

列性の確保［１３］
物理過程に含まれるカーネルにおいて、
CPUコードではある３次元の物理量を計算し、それに対して連続にアクセスさせて別の物理量を計算していた。この計算方法は、最初に計算した３次元の物理量をキャッシュを介して次の連続アクセスで再利用することが目的であったが、GPUの場合はレジスタを活用することで、キャッシュよりもより高速

図２にデータを再利用できる（図４）。前述の２つコアレスアクセスの促進

シャッフル関数の活用［１４］CG法の前処理に用いたマルチグリッド法
では、格子を粗くする・細かくする操作が複数回実施される。GPUでのこの操作は、各スレッドによる細かい格子からのロードが非
コアレスアクセスとなってしまう（図３）。
キャッシュの活用により、２回目以降のアクセスでは最適化されるものの、本件ではさら図４ ループ融合とレジスタの活用によるデータ
並列性の確保なる高速化を目指し、ウォープシャッフル関数を活用した。まず、コアレスアクセスでロ

－37－

RI
STニュースNo．
６４（２０１８）の処理を融合し、レジスタを介して計算を各（－１：n
１＋２，－１：n２＋２，－１：n
３＋２）

スレッドで閉じる。同時にループ間の暗黙のとしてメモリを確保している。モデルの仕様

同期が削除されるため、２次元スレッドが独

上、n
１らは２の階乗となる場合が殆どであ立に動き、データ並列性を活用できる。

り、その場合、メモリへのアクセスでアライ
メントが適切なものにならず、どの次元におブロック形状変更によるキャッシュブロック

いてもトランザクションが最低で一つ無駄に化の促進［１４］なる。筆者らは、オリジナルのCPUコードで

ki
nac
o
の格子形状の仕様から、Po
i
s
s
o
n方

はMPI
通信時のオーバヘッド回避のために、

程式の係数が鉛直方向にてほぼ一様（海面付

転送データ（袖領域）を別途用意した１次元

近、海底付近を除く）という特性がある。

配列に詰め替えた後に通信を行っていること

CPUコードでは、同一の値となる係数は、同に着目し、この１次元配列をGPUカーネル

じメモリアドレスに格納してキャッシュの利から直接参照させて予報変数には袖領域を用

用効率を上げる最適化がなされていた（図意しないことにした（図６）。これにより、メ

５）。この最適化はGPUのL
１キャッシュでもモリアクセスで無駄なトランザクション無く有効であるが、キャッシュヒット率を上げるなることに加え、受信した１次元配列から予ために、ブロックの形状を鉛直方向の要素数

報変数への詰め替えのコストも削減出来た。

が大きくなるように確保した。同じブロックが処理を終了するまでストリーミングマルチ
プロセッサから解放されない特性を活用している。評価例を挙げると、
［３
２，８，
１］のブ
ロック形状に対して、
［３
２，１，
１
６］はおよそ２
倍高速である。
図６

袖領域を持たない隣接通信コストが小さいカーネルの融合［１４］
マルチグリッド法を用いた前処理では、粗い格子（例えば、
［８，
８］
［４，
，
４］程度）での演算が複数回実施される。その中に含まれる行列ベクトル積のカーネルは、代表的なコストは経過時間にして数マイクロ秒程度であるが、カーネルの起動に伴うオーバヘッドは
２０マイクロ秒程度と、カーネル本体の計算に

図５ ブロック形状変更によるキャッシュブ
ロック化の促進比べて無視できない大きさである。反復法であるが故に、呼び出し回数はモデル本体のス

メモリアライメント調整（ノード間通信用袖

テップ数の１００倍以上と、非常に大きい。そ領域の削除）［１４］

こで、カーネルを融合することで、起動に伴各ノードでの予報変数は、A（１：n
１，
１：
＊

＊

うオーバヘッドを削減した
（図７）
。オリジナ

n
２，
１：n
３）としてn１n２n３個の要素を有す

ルのCPUコードでは、隣接間通信の前後に複る場合、袖領域は各次元で２個、つまりA数のカーネルが組まれていたが、通信以外の

－38－

RI
STニュースNo．
６４（２０１８）カーネルを全て融合した。余計なロードスト

我 々 は、kinacoに含まれる袖通信を全てアが減ったことと、カーネル終了時にグリッ

GPUDi
r
e
c
t
にて実装することで、CPUで通ド全体でとられていた同期が、ブロック内で信した場合とほぼ同等の通信速度となる事をの同期となったことによるコスト減少の効果確認した。

も含まれる。
７．まとめ
気象・気候・海洋モデルのGPU対応について、GPU並びに気象・気候・海洋モデルの基礎を含めて今後の課題をまとめた。気象・気候・海洋モデルのコード特性並びに開発者・利用者の背景から、今後の気象・気候・海洋
モデルの開発は、OpenACCとCUDAを併用
図７

コストが小さいカーネルの融合

した実装が最適と判断した。将来の並列化案
として、気象システム内の要素を並列化させ粒子追跡［１３］

る事も検討していく。OpenACCとCUDAの算出した流速分布から海中の粒子（栄養塩併用で、気象・気候・海洋モデルに求められや放射性物質など）分布を決める粒子追跡計る条件（「高解像度化」
、
「高速化」
、
「精微化」）

算にて、CPU版は粒子のデータ構造に連結リを満たすにはCUDAの知識と経験が必須でストを使用していた。連結リストでは粒子のある。我々は、これまで行ったCUDAによる追加や消滅などを表現する際の扱いが容易と

非静力学海洋モデルのGPU実装をさらに推いう利点はあるが、時間が経過するにつれてし進め、気象・気候・海洋モデルを始めとす近傍の粒子がメモリアドレス上で散逸している数値モデルのGPU実装と高度化に役立つ

き、GPUで求められるコアレスアクセスに知見を蓄積し、次世代のエクサスケール・ス

比べて効率が低くなる。そこで、連結リスト

ーパーコンピュータにて成果を出していくこから通常の配列に移行した。前後の粒子を指とを目指している。

し示すポインタを排除し、粒子位置に応じて粒子を配列内でソートすることで、粒子をコ

参考文献

アレスにアクセスさせるようにした。ソート

１．CUDACPr
o
gr
ammi
ngGui
de
,NVI
DI
A

のコストは生じるものの、メモリアクセス最

２．CUDACBe
s
tPr
ac
t
i
c
eGui
de
,NVI
DI
A

適化による高速化及び連結リストでのポイン

３．Jo
hn Cheng, Max Grossman, Ty

タの計算が不要になった効果の方が大きい。

Mc
Ke
r
c
he
r
,
CUDACプロフェッショナル

GPUDir
ectRDMA［１４］プログラミング，インプレス

異なるノード間にてGPU同士で通信する

４．Ope
nACC,ht
t
ps
:
/
/
www.
o
pe
nac
c
.
o
r
g/

場合、GPUDirectを用いることで、ネットワ

５．Sat
o
h,M.
,e
t al
.(
2014)
.The Non-ークのチップをGPUから直接経由させて、

hydr
o
s
t
at
i
cI
c
o
s
ahedr
al At
mo
s
phe
r
i
c

途中CPUにデータが達すること無く、受信す

Mo
de
l
:de
s
c
r
i
pt
i
o
n and de
ve
l
o
pme
nt
.

るGPUがネットワークのチップからデータ

Pr
o
gr
e
s
s i
n Ear
t
h and Pl
ane
t
ar
y

を直接受け取る事ができる。この直接通信は

Sc
i
e
nc
e1(
1)
:18.

ソフト・ハード共に仕様の要求要件があるの

６．Shi
mo
kawabe
,T.
,e
tal
.(
2010)
.An80

で、詳細は［１，２］等を参照して欲しい。

Fo
l
d Spe
e
dup,15.
0 TFl
o
psFul
lGPU

－39－

RI
STニュースNo．
６４（２０１８）

Ac
c
e
l
e
r
at
i
o
n o
f No
nHydr
o
s
t
at
i
c

１
１．Mat
s
umur
a,Y.andHas
umi
,H (
2008)
.

We
at
he
r Mo
de
l ASUCA Pr
o
duc
t
i
o
n

A no
nhydr
o
s
t
at
i
co
c
e
anmo
de
lwi
t
ha

Co
de
. Pr
o
c
e
e
di
ngs o
ft
he 2010

t
i
gr
i
d Po
i
s
s
o
n s
o
l
ve
r
.
s
c
al
abl
e mul

ACM/
I
EEE I
nt
e
r
nat
i
o
nalCo
nf
e
r
e
nc
e

Oc
e
anMo
de
l
l
i
ng24(
12)
:1528.

gh Pe
r
f
o
r
manc
e Co
mput
i
ng,
f
o
r Hi

１
２．Yamagishi, T. and Mat
s
umur
a, Y.

Ne
t
wo
r
ki
ng, Stor
age and Anal
ys
i
s
,

(
2016)
,GPU Ac
c
e
l
e
r
at
i
o
no
fa No
n-

I
EEECo
mput
e
rSo
c
i
e
t
y:111.

hydr
o
s
t
at
i
c Oc
e
an Mo
de
l wi
t
h a

７．Yas
hi
r
oe
tal
.(
2015)
,A Si
mul
at
i
o
no
f

Mul
t
i
gr
i
d Po
i
s
s
o
n/
He
l
mho
l
t
z So
l
ve
r
,

Gl
o
balAt
mo
s
phe
r
eMo
de
lNI
CAM o
n

Pr
o
c
e
di
aCo
mput
e
rSc
i
e
nc
e
,80,1658-

TSUBAME2.
5 Us
ing OpenACC,GTC

1669.
１
３．Yamagishi, T. and Mat
s
umur
a, Y.

2015,SanJo
s
e
.
８．Co
ns
o
r
t
i
um f
o
rSmal
l
s
c
al
eMo
de
l
i
ng,

(
2016)
.GPU Ac
c
e
l
e
r
at
i
o
no
fa No
nHydr
o
s
t
at
i
c Oc
e
an Mo
de
l wi
t
h

ht
t
p:
/
/
www.
c
o
s
mo
mo
de
l
.
o
r
g/
９．Fuhr
e
r
,O.
,e
tal
.(
2018)
.Ne
ar
gl
o
bal

Lagr
angi
an Par
t
i
c
l
e Tr
ac
ki
ng.

c
l
i
mat
es
i
mul
at
i
o
n at1km r
e
s
o
l
ut
i
o
n:

Supe
r
c
o
mput
i
ngCo
nf
e
r
e
nc
e2016.

e
s
t
abl
i
s
hi
ng a pe
r
f
o
r
manc
e bas
e
l
i
ne

１
４．Yamagi
s
hi
,T.
,e
tal
.(
2018)
,An MPI-on 4888GPUs wit
h COSMO 5.
0.

CUDA Ac
c
e
l
e
r
at
i
o
n f
o
r a No
n-

Ge
o
s
c
i
.Mo
de
lDe
v.11(
4)
:16651681.

t
h
Hydr
o
s
t
at
i
c Oc
e
an Mo
de
l wi

１
０．Po
s
e
y S.and Adi
e J.(
2019)
,SunnyGPUDirect RDMA Tr
ans
f
e
r
s
, GTC
Japan2018.

Ski
e
s Ahe
ad! Versioning GPU
c
e
l
e
r
at
e
d WRF to3.
7.
1,GTC 2019,
ac
SanJo
s
e
.

－40－