Gordon Bell氏は、今は無きDEC社の開発担当の副社長で、PDPシリーズのコンピュータの開発をけん引した。1934年の生まれであるので、83歳であるがお元気で、現在もMicrosoftの研究所で研究を続けておられる。
また、歴史的なコンピュータを大量に収蔵するComputer History Museumは、Gordon Bell氏の個人コレクションの寄贈をベースに作られた博物館である。
このようなGordon Bell氏のコンピュータの発展に関する貢献を称えて、コンピュータの学会であるAdvanced Computing Machinery(ACM)が創設したのがGordon Bell賞である。Gordon Bell賞はHPC分野における、アプリケーションの実行性能と計算科学の成果に対して授与される賞である。したがって、アプリケーションの実行におけるGFlopsの多寡と超並列処理の工夫などが評価ポイントになる。
Gordon Bell賞を狙う論文の応募を集め、その中から候補論文を選び、SCで候補論文の発表を行い、評価委員の評点で受賞論文を決める。例年は、5~6件の候補論文があるのであるが、今年は3件しか候補論文が無かった。
太湖之光での大気モデルの再設計
3件のうち、最初に発表されたのは、中国の太湖之光スパコンを使った「Redesigning CAM-SE for Petascale Climate Modeling Performance on Sunway TaihuLight」という論文である。CAMはCommunity Atmospheric Modelで、オープンソースの気象計算アプリケーションWRFの大気圏のシミュレーションを行うモジュールである。
WRFという気象シミュレーションプログラムは、大洋モデル、海氷モデル、大気モデル、地表モデルで構成される。この論文は、大気モデルを超並列の太湖之光で高性能に動作させるために必要となった多くの改良について述べている。
CAMモデルは非常に複雑で、INIT部は約75万行のコードがある。そしてシミュレーションを行う部分には304個の処理カーネルが存在する。しかも、ここを速くすれば大きく性能があがるというようなホットスポットのカーネルはないというコードである。
そして、CAMは複雑な並列処理プログラムである。全体では数百万行と膨大であるので、OpenACCコンパイラを利用して並列化を行った。
しかし、64KBのローカルデータメモリ(LDM)しか持っていないCPEの構造と合わないコードは大幅な書き換えが必要になった。また、大気モデルと並列プログラミングの知識や経験を持つ人間の不足が問題であったという。
太湖之光スパコンは4万960個のShenwei 26010 CPUを使っている。CPUチップには4個のコアグループが集積されており、各コアグループには1個のMPEと64個のCPEが含まれている。MPEはOSを動かすことができる高性能コアで、CPEは計算用のスループット重視のコアである。
太湖之光スパコン全体では1064万9600コアを持ち、ピーク演算性能は125PFlopsに達する。
コアグループ内の64個のCPEはメッシュネットワークで接続され、相互にDMAでデータ転送ができるが、CPEが直接アクセスできるのは64KBのLDMだけであるという構造になっている。LDMはGPUのデバイスメモリの位置づけであるが、64KBという非常に小さな容量しかないことがプログラムの移植上、問題になっている。
OpenACCで変換されたプログラムの性能を改善するため、ループの構造を組み替えるツールを開発した。主要な変換は多重のループのボディをまとめる変換と、ループボディが大きすぎて64KBのLDMに入らない場合に、ボディを分割する変換である。
また、1つの要素の処理を1つのCPEに割り当てるというOpenACCの変換では十分な並列性が得られない場合には、1つの要素をサブ要素に分割して並列性を増し、LDMの容量も減らす細粒度のAthreadによる並列化を行った。
次のグラフは、Xeon E5-2680 v3での処理性能を1.0としてSW2610の処理性能を表した図で、3本の棒グラフは左から順に、MPEで処理した場合、CPEを使いOpenACCで並列化した場合、Athreadを使って並列化を行った場合の性能を示している。そして、この比較を6個のカーネルに対して行っている。MPEはXeonに比べて0.1~0.5倍の性能であり、OpenACCによる並列化でCPEを使った場合も0.3~2.6倍であるが、Athreadを使うと6.8~43.1倍に性能が向上している。
この並列化を実現するため、CAMのINITIAL部では約75万行のコードのうち、15万行を変更し、5万7709行を追加した。DYN部とPHY部は304個のカーネルがあるが、実行時間の80%を占める185個のカーネルの最適化を行った。
次の図は、2005年に米国を襲ったハリケーン カトリーナをシミュレートした結果で、黒線が実際の観測値で、赤線が本ソフトでのシミュレーション結果である。右側のグラフに示したシミュレーションでの風速は、前半の期間の風速は少し低めであるが、8月29日以降の風速はよく一致している。また、左の図のハリケーンの軌跡はよく一致している。
次のグラフは、太湖之光でのウイークスケーリング(ハードウェア規模に比例して問題サイズを大きくするスケーリング)を示すものである。ただし、横軸のProcは512、2048、8192の部分は4倍になっているが、その次の131072と32768は逆転していると思われる。
そして、1007万5000コアを使ったシミュレーションでは並列化効率98.55%で3.3PFlopsを達成している。しかし、これはピーク性能の125PFlopsの2.64%の性能であり、メモリリミットになっていると思われる。
また、これはDYNと書かれたDynamic Coreの部分だけの結果で、物理過程のシミュレーションを行うPHYの結果は報告されていない。
(次回は12月19日に掲載します)