太湖之光を使った非線形地震シミュレーション

Haohuan Fu教授

非線形の地震シミュレーションの論文「Enabling Nonlinear Earthquake Simulation for 18-Hz and 8-Meter Scenarios」を発表するHaohuan Fu教授

2番目の発表は、「Enabling Nonlinear Earthquake Simulation for 18-Hz and 8-Meter Scenarios」と題する地震シミュレーションの論文で、発表者は清華大学のHaohuan Fu教授である。Fu教授は、最初に発表されたCAMの論文でも最後の著者として名を連ねており、指導教官であると思われる。

地震には、発生する日時、場所、マグニチュードの情報があり、これら3つを正確に予測するのが理想であるが、それは非常に難しい。しかし、3つの内の2つ予測ができたら、それでも大きな意味がある。

ということで、1996年のCray T3Dを使った8GFlopsの計算から、地球シミュレータによる5TFlopsの計算など地震シミュレーションプログラムの性能は改善され続けてきた。

  • 地震シミュレーションの歴史

    地震シミュレーションの歴史

典型的な地震シミュレーションでは300km×300km×50kmの領域を20mのグリッドで計算する。そうするとグリッドの総数は562.5Bとなり、これを1msステップで100秒間シミュレーションするには、150TBのメモリと100ExaFlopの計算が必要になる。

なお、論文のタイトルの8-Meterとなると、20-Meterの場合と比べると、グリッド数は15.6倍となる。また、10-Hzから18-Hzとなると計算ステップ数は1.8倍になると思われる。

  • 典型的な地震シミュレーションのセットアップ

    典型的な地震シミュレーションのセットアップ。150TBのメモリ容量と100ExaFlopの計算を必要とする

地震シミュレーションのフレームワークは、地震を発生させるDynamic Rupture Source Generatorと地震波を伝搬させるSeismic Wave Propagationとその他のユーティリティから構成される。

  • 地震シミュレーションのフレームワーク

    地震シミュレーションのフレームワーク。地震を発生させるDynamic Rupture Source Generatorと地震波を伝搬させるSeismic Wave Propagationモジュールとその他のユーティリティからなる

前の論文で述べられたように、CPEには64KBのLDMしかないので、MPEに付けられた大容量のDRAMメモリとLDMの間で、DMAを使ってデータの出し入れを行う必要がある。

このため、高い性能を得るためには、DMAと計算をオーバラップさせる注意深い設計が必要となる。

  • 各CPEが持つLDMは64KBしかないので、DMAを使ってDRAMとの間でデータの出し入れを行う

    各CPEが持つLDMは64KBしかないので、DMAを使ってDRAMとの間でデータの出し入れを行う。計算とDMAをオーバラップさせるよう、注意深い設計が必要である

次の図にみられるように、アレイを一まとめにしてデータ転送を行うアレイフュージョン、袖領域のデータの交換は、SW26010アーキテクチャの特徴である隣接CPE間でのレジスタ間転送を利用して行い、解析的に求めた最適なブロッキングを行うという方法で性能を向上させた。

  • ここに画像の説明が入ります

    性能を向上させる工夫として、アレイフュージョン、レジスタ間通信を使った袖領域データの転送、ブロック化の構成の最適化を行った

まとめであるが、Dynamic Rupture Source GeneratorとSeismic Wave Propagationの両方を備えた地震波のシミュレーションソフトウェアを開発した。このソフトウェアはメモリの制約を回避する工夫を凝らしており、結果として15.2PFlopsの性能を達成した。

また、オンラインでデータの圧縮を行う機能を組み込み、性能を18.9PFlopsまで引き上げた。

  • ここに画像の説明が入ります

    メモリの制約を回避するため、工夫を凝らした。その結果、15.2PFlopsの性能を実現した。また、データ圧縮を組み込み、これを使うと18.9PFlopsの性能が得られた

LDMとDRAMのメインメモリの間で頻繁にデータの転送を必要とするアーキテクチャのマシンで、15.2(非圧縮)PFlops、18.9(圧縮)PFlopsの性能を出しているのは立派である。しかし、DMA転送を計算とオーバラップさせて、データ転送時間を隠すプログラミングは人海戦術で、かなり大変だったようである。

(次回は12月20日に掲載します)