（様式 20）成果報告書

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

不均質地球構造における地震波・津波伝播シミュレーション
Simulation of seismic/tsunami wave propagation in the heterogeneous earth
古村孝志
Takashi Furumura
東京大学地震研究所
Earthquake Research Institute, the University of TokyoURL
邦文抄録（300 字程度）
差分法による並列地震動シミュレーションコード SEISM3D に対し，OpenACC を⽤いた GPU 計算を実現し，その性能評価と⾼度化を⾏った．OpenACC を⽤いることで， CUDA を⽤いたコードの⼤幅な書き直しをせずに⾼性能計算が可能である．データ出⼒については，単独 GPU 上ではデータ出⼒に伴う GPU-CPU 間の通信の隠蔽に成功したものの，本システム上では MPI による集合通信に時間がかかり，⼤規模並列計算を困難にしていることが課題として残された．
英文抄録（100 words 程度）
We
implementedOpenACC-basedGPUcomputinginSEISM3D,
aparallelized
finite-difference-method simulation software of seismic wave propagation. We implemented concealed
data communication between GPU and CPU for snapshot data output, however, the collective datacommunication among CPUs still takes time，that makes large-scale computation difficult.

Keywords: 地震動, 波動伝播, 差分法, OpenACC

背景と目的だ計算能⼒は⼗分とは⾔えず，継続的な⼤規模並列

地震学・固体地球物理学においては地震波形記録

地震動シミュレーション⼿法ならびにコードの⾼精が地球内部構造ならびに震源での断層破壊過程を知度化に向けた継続的な⾼度化が求められている．

るための基礎的なデータである．⽇本国内には 1000

本課題で主として取り扱う地震動シミュレーショ

点を越す稠密な基盤的連続観測網が敷かれ，⽇々地ンソフトウェアは隣接ノード通信を伴う等間隔格⼦震動記録を蓄積している．さらに観測網は海域に向の差分法コード（Maeda and Furumura, 2013）であかって拡⼤を続けており，海底における巨⼤な地り，地球シミュレータ（Furumura and Chen, 2005）震・津波観測網も構築されつつある．⼤型計算機にや京コンピュータ（Maeda et al., 2013）をはじめとよる地震動シミュレーションは，これら観測量を解した種々のプラットホーム上での動作実績を持つ．

析・説明するための基礎的なツールであり，観測波本質的に多変数である地球内部不均質構造や，テン形と計算波形との⽐較や同化によって，より詳細なソルならびにベクトル量である地震動と応⼒状態を地球内部構造や震源の破壊過程像が得られるように3 次元的に維持する必要から，本コードは多量のメなると期待されている．さらに，地震波動は不均質モリ容量を要し，かつ計算量に⽐してメモリアクセ媒質中における波動伝播の物理学の重要な⼀フィース量の多いものである．そのため，コードの性能はルドでもあり，不均質な地球内部構造中における地主としてメモリバンド幅によって律速される（井震波動伝播過程そのものも重要な研究対象である．

上・他, 2012）．

しかし，観測網の充実に⽐して，⽇本列島スケール

⻑い間⽤いられてきた CPU を中⼼とした機構にの空間規模において，観測される地震動の主たる周加え， GPU でも地震動を計算できる可能性がこれ波数帯域（0−15 Hz 程度まで）をカバーするにはままでに⽰されてきた．本課題で扱う計算コードは，

（様式 20）成果報告書研究の進展に応じて頻繁に改変や改良が⾮常に頻繁に施されるものである．そのため，アーキテクチャ間で共通のコード構造を維持しつつ，都度最適な計算資源を利⽤できることが実⽤上きわめて重要である．その⽬的に対し，OpenACC はコードのポータビリティを維持しつつ GPU の⽐較的豊富なメモリバンド幅を活⽤できるという点で優れており，地震動シミュレーションや，それと⾮常に近いアルゴリズムで解かれる津波のシミュレーションの⾼度化と活⽤に⼤きく貢献する可能性がある．
これまでの予備研究から，既存コードにOpenACC の指⽰⼦を追加することで，GPU で CPUより⾼い性能を出し得ることが⽰されてきた．しかし，性能評価からはデータ出⼒や隣接ノード間通信が計算を律速しており，この部分を改善することで複数 GPU ボードを⽤いた実⽤的な⼤規模計算が可

図 1. データ出⼒あり（⾚）となし（⻘）の場
合の計算実⾏時間の⽐較（平成 26 年度報告書より再掲）

能になると期待される．

向に対して⾏う．GPU 計算においては，OpenACC

概要の指⽰⼦により通信に必要な部分のデータを CPU

本課題で⽤いる地震動シミュレーションコードに送信，その後 MPI で通信を⾏い，受信を完了した

SEISM3D (after Furumura and Chen, 2005)は，地球時点でふたたび OpenACC 指⽰⼦により GPU にデ内部構造を粘弾性体近似のもとに差分法で解く並列ータを戻していた．CPU のみでの計算に⽐べ，CPUコードである．解くべき運動⽅程式はたとえば𝑥⽅と GPU の間の通信が必要となる分通信時間が増え，向について

また CPU 間の通信の間 GPU は待ち状態になる問題𝜌𝜕𝑣% 𝒙, 𝑡
𝜕𝜎%% 𝜕𝜎%, 𝜕𝜎%.
=++𝜕𝑡
𝜕𝑥
𝜕𝑦𝜕𝑧があった．

(1)

データの出⼒は，地震計の出⼒を摸した地表⾯のと表される．ここで𝑣% は弾性体変位速度，𝜌は密度，特定の点における 3 成分の変位速度波形と変位波形

𝜎45 は応⼒テンソルの成分であり，3 次元媒質では独記録と，波動場全体を評価するための時空間スナッ

⽴な成分は 6 つある．右辺は均等に配置した⾷い違プショットの⼆つについて⾏われる．このうち前者

い格⼦上の値を差分法によって評価する．これと応は負荷が無視できるほど⼩さいことがわかっている

⼒についての構成⽅程式の時間微分ならびにその表ため，評価から除外した．後者のスナップショット

現に必要なメモリ変数の時間発展⽅程式

は，事前に指定した xy, xz, xy の 3 つの平⾯と海表⾯

𝜕𝜎%, 𝒙, 𝑡
𝜕𝑣% 𝜕𝑣,= 2𝜇8∗++𝜕𝑡𝜕𝑦𝜕𝑥E𝜏D;

𝜕𝑟%,; 𝒙, 𝑡𝜇8=1−𝜕𝑡𝑁; 𝜏B;
𝜏B;<=𝑟%,; 𝑡(2)𝜕𝑣% 𝜕𝑣,+𝜕𝑦𝜕𝑥(3);>?

ならびに海底⾯の，合計 5 つの 2 次元断⾯における地震波およびその空間微分を出⼒するものである．
ポストプロセッシングの単純化のため，各ノードのデータを単⼀ノードに集約し，断⾯あたり⼀つのバを交互に時間積分することで問題を解く．運動⽅程イナリファイルとして出⼒する．GPU 計算において式と構成⽅程式の積分を⾏うたびに，MPI により袖は，隣接ノード間通信と同様に，GPU 各ノード上で領域の情報を隣接ノード間通信により交換し，媒質出⼒する変数をバッファリングし，GPU から CPUの連続性を担保する．本コードでは 3 次元空間を⽔に送信，それをさらに CPU 間で集約通信を⾏い，

平 2 次元に分割するため，隣接ノード通信は計 4 ⽅

IO を担当するノードからファイルを出⼒する．（様式 20）成果報告書

図 2. スナップショット出⼒の GPU-CPU 通信の隠蔽の効果．(a)チューニング前，(b)チューニング後のデータ出⼒を含む計算 1 時間サイクル分の NVIDIA Visual Profiler の出⼒．それぞれ網掛部分が出⼒データのバッファリングと CPU への通信ならびに出⼒部分に該当する．

TSUBAME においては，平成 26 年度の検討においも考えながら，CPU レベルでの集合⼊出⼒（MPI-IO）て，特にこのデータ出⼒の負荷がノード数増⼤に伴やそれを⽤いたライブラリの利⽤を検討する必要がい増⼤し，⼤規模な計算を困難にしていることがわある．

かっている（図 1）．

⼀⽅，上記検討とは独⽴に，今後の GPU 利⽤に向けたデータ出⼒のための GPU-CPU 間通信の最結果および考察適化についても検討した．従来コードは(1)式の評価

まず，TSUBAME 上においてデータ出⼒の時間増

後に出⼒データのバッファリングからファイル出⼒の原因を探るため，16 ノード 48GPU を⽤いた計算までをまとめて⾏っていた．これを，(1)の評価の直において⽐較を⾏った．まず，スナップショットを後には GPU 上でのバッファリングと CPU への送信全て出⼒する⾼負荷の状況において，オリジナルコ(A1)だけを⾏い，その後に(2), (3)の応⼒評価(B)とードの計算時間を測定したところ，62.3 秒であった．

それに付随する境界条件処理(C)を⾏い，その後にMPI 通信の影響を抽出するため，単⼀ノードへの集バッファされたデータの出⼒(A2)を⾏うようにコ合通信をやめて，各ノードから分割ファイルを出⼒ードを改良した．加えて，OpenACC の async 節とするように変更すると，計算時間は 55.4 秒に短縮さその引数を⽤いて．(A1), (B), (C)の処理が⾮同期に，れた．これは出⼒なしにした場合の計算時間（図 1）かつ(A1)の処理終了後に(A2)が順番に，それぞれ実と同程度であり，したがって TSUBAME における⾏されるようにした．また，複数の出⼒種別のバッ計算時間の増⼤は集合通信(mpi_reduce)の影響が⽀ファリングも⾮同期に⾏われるよう設定した．この配的であることが確認された．そのため，データ出ことにより，バッファリングされたデータの CPU⼒の⽅式を⼤幅に変える以外には現⾏のへの送信と応⼒評価が違いにオーバーラップして実TSUBAME システムで⼤容量出⼒をともなう⼤規⾏されるようになり（図 2），単独 GPU においては模シミュレーションを実⾏するのは困難であること処理時間の⼤幅な短縮が確認された．また，内部領がわかった．今後，他のアーキテクチャとの可搬性域と吸収境界条件の計算についても多少ではあるが（様式 20）成果報告書⾮同期実⾏が⾏われ，適切な async 節の利⽤が計算時間の短縮に寄与することが確認された．
今後，CPU からファイル出⼒の部分が改善される，あるいは次期システム等で集約通信に時間のかかる問題が軽減されれば，本最適化によってさらなる⾼性能が獲得できると期待される．

まとめ、今後の課題
地 震 動 シ ミ ュ レ ー シ ョ ン コ ー ド SEISM3D のOpenACC を⽤いた GPU 版について，特にデータ出⼒の⾼度化のための検討を⾏った．OpenACC を⽤いたことで，少量のコード書き換えで，CPU 計算との互換性をほぼ維持しつつ計算の⾼速化を達成したが，⼀⽅本アーキテクチャにおいては集合通信に時間がかかることがわかった．⼤量のデータ出⼒を含む実⽤計算は，データ出⼒の分散化を含む⼤幅な書き換えを⾏わない限り困難であると考えられる．
⼀⽅，単独 GPU における検討からは，データ出⼒のためのバッファリング結果を CPU に送信する時間を，計算とのオーバーラップによって⾮常に効果的に隠蔽できる可能性が⽰された．今後のデータ出⼒部分の改善もしくはアーキテクチャの変更により，ポータビリティを維持したままに GPU を活⽤した⼤規模計算が可能になると期待される．