エクサスケールスパコンのコデザイン

一般にコデザインというと、ハードとソフトを並行して設計し、両者の間を最適化するような設計法を思い浮かべるが、エクサスケールスパコンのコデザインは、少し異なる。

エクサのレベル性能でも、ノード数を増やせば性能をだすことは可能であるが、消費電力と費用がノード数を増やす上で障害となる。従って、各ノードの性能/電力とコストのトレードオフは規模が異なっても同様に重要である。そして、システムの設計はアプリケーションの特性を考慮して行う必要がある。

これらの諸点は、最近、どのHPCシステムでも考慮されてきている。このトレードオフをハード、ソフトで最適化するのは、重要なコデザインである。

また、日本に1台のフラグシップスパコンであるから、限定された狭い範囲のアプリケーションだけで性能が高いということでは困る。広い範囲の多数のアプリケーションが恩恵を受けるスパコンでなければならない。このような観点で、ハードウェアを広い範囲のアプリケーションで役立つようにコデザインしなければならない。

  • 富岳

    図11 HPC分野でのコデザイン。広い範囲のアプリケーションが恩恵を受けられるハードウェアとすることが重要

コデザインを行うターゲットアプリケーションとして、図12の表に書いた9つのアプリケーションを選択した。アプリケーションの名前と簡単な記述、どのような計算を行うかの次の欄は京コンピュータからの性能向上の目標、その右の部分はコデザインを行うポイントを示している。

GENESISは分子動力学の計算を行うアプリケーションで、京コンピュータの125倍の性能の達成を目標とする。Genomonは遺伝子解析のアプリケーションで、性能向上レベルは8倍である。GAMERAは地震シミュレーションのアプリケーションで、目標とする性能向上は45倍である。

NICAM+LETKFはデータ同化を含む天気予報システムで、京コンピュータの120倍の性能がターゲットである。NTChemは分子の電子状態を高精度に計算するプログラムで、性能目標は京コンピュータの40倍である。FFBは大規模な渦のシミュレーションを行うアプリケーションであり、京コンピュータの35倍の性能を目指す。

RSDFTは第1原理計算で電子構造を計算するプログラムで、30倍の性能を目指す。ADVENTUREは構造計算を行うプログラムで、非構造グリッドのFEM計算を行う。京コンピュータからの性能向上は25倍を目指す。LQCDは量子色力学の計算を行うプログラムで、京コンピュータの25倍の性能が目標である。

  • 富岳

    図12 コデザインを行うターゲットアプリケーション(9分野)

富岳の性能ターゲットはいくつかのアプリケーションで京コンピュータの100倍の性能を達成することとそれを30~40MWの消費電力で実現することである。

しかし、富岳のピーク演算性能は京コンピュータの50倍程度であり、アプリケーションでの100倍の性能向上はアルゴリズムなどで2倍以上の性能向上を必要とし、容易ではない。それでも次の2つのターゲットアプリケーションでは100倍以上の性能を実現できるという見込みを得たという。健康、長寿分野のGENESYSは125倍以上の性能向上が見込まれ、災害防御、環境分野のNICAM+LETKFは120倍以上の性能向上が見込まれる。

  • 富岳

    図13 ターゲットアプリケーションの性能見込み。GENESYSとNICAMで京コンピュータの100倍以上の性能を達成できる見込み

このようなコデザインを行うために使用したのは、性能の推定ツールと、富士通のシミュレータである。性能推定ツールは、富士通のFX100スパコンでプログラムの実行プロフィールを取得し、それにアーキテクチャパラメタを加えて実行時間を求めるツールである。

また、論理設計の確認のためのハードウェアエミュレータも利用した。そして、性能チューニングなどのために理研で開発されたGem5シミュレータも利用した。

  • 富岳

    図14 コデザインのためのツール

富士通のFX100スパコンは京コンピュータと同じSPARCアーキテクチャのCPUを使っているが、富岳はArmv8a SVEアーキテクチャの新CPUを使うので、プログラムの動きが異なる。このため、FX100の動きから、まだ存在しない富岳スパコンでのA64FX CPUの動きを推定し、性能を見積もるツールを開発した。

A64FXはマルチコアのCPUであるので、それらのコアでどのように並列処理ができるかを推定する必要がある。次の図15の左端の棒グラフが経過時間で色でどの動作の時間かがわかるようになっているが、この図では読み取れない。2番目の棒グラフはメモリがビジーの時間で3番目はメモリがReadでビジー、4番目はメモリがWriteでビジーの時間、5番目はL1キャッシュがビジーの時間を示している。

そして、並列に動作できる部分はオーバラップして動作できるものとして、一方のコンポーネントのビジー時間は隠れるとみなして全体の実行時間を計算する。このやり方では、考慮していない条件で実際には並列に実行できない場合があると、実行時間を過少に見積もる恐れはあるが、主要なコンポーネントが考慮されていれば、まあ、良い推定ができると思われる。

  • 富岳

    図15 性能推定ツール。マルチスレッドで並列実行を行うので,並列実行できる部分は1つの実行時間だけを考慮して実行時間に積算していく

(次回に続く)