富岳のシステムソフトウェア
富岳のシステムソフトウェアはRed Hat Enterprise Linux(RHEL)とオプションの軽量のMcKernelがベースにあり、その上にプロセスやスレッドの管理、低レベルの通信機能、ファイルI/Oの機能などが載っている。さらに、高級言語のXMPやMPI通信機能、ファイルI/O、仮想化やコンテナなどの機能が載っている。
その上に各種ツールやコンパイラ、数学ライブラリ、AIの各種フレームワークなどがある。
基本的に標準的なLinux環境であり、大部分のアプリケーションは普通にコンパイルすることで動作するようになる。
富岳のアプリケーションソフトウェアの標準的なプログラミングモデルは、OpenMPとMPIを使うというものである。MPIはOpenMPIとMPICHがサポートされている。そして、富士通のコンパイラではOpenMP 4.xがサポートされている。コンテナと仮想マシンもサポートされている。そして、AI関係はDL4Fugakuが用意されており、PytorchやTensorFlowで使うことができる。さらに、多くのオープンソースのソフトウェアがSpackを使って移植されている。
そして、理研のチームがジッタの無い軽量のカーネルであるMcKernelやPGAS言語のXcalableMP、FDPS、EigenExaライブラリなどを開発している。
図44は、パワーモードの評価結果を示すものである。左のグラフはstreamをスレッド数を変えて実行した場合のノーマルモード(青)とエコモード(赤)での消費電力を示したグラフである。折れ線は全部のstreamスレッドの合計のスループットを示している。
このグラフに見られるように、ノーマルモードとエコモードのstream性能はほとんど差はない。スループットや消費電力は24スレッドまでは増加するが、24スレッドで頭打ちとなる。この時のメモリバンド幅はピーク値の80%程度となっており、スレッド数を増やしても性能は頭打ちである。
そして、エコモードの消費電力はノーマルモードの消費電力より15%-25%少なくなっている。
右側のグラフは、ノーマルモードとブーストモードでDGEMMを実行した場合の電力とGFlops値を示したもので、GFlops性能は最大ではピーク演算能力の95%に達している。ブーストモードではノーマルモードよりも10%高い性能が得られた。この時、消費電力は13.7%増加しているので、結果として、ブーストモードでは電力効率は3.3%低下している。
結論であるが、富岳は最初に掲げた3つの鍵となる性能指標を達成することができたと考えられる。
- 電力効率については、エコモードでは2019年のGreen500で1位を獲得した。
- アプリケーションの性能についてはGENESISとNICAM+LETFという2つのアプリケーションで京コンピュータの100倍以上の性能を達成した。
- 使用の容易性の点ではOpenMPとMPIを使用すればアクセラレータ用のプログラミングを行うことなく、アプリケーションを移植することができるスパコンを作り上げた。
そして、富岳の開発を振り返ると、
- 開発の当初はAI/MLの処理は目標に入っていなかったが、SVEは半精度の浮動小数点演算をサポートしており、ほぼ対応できる。
- HBMの採用はメモリバンド幅確保の点では必須であるが、メモリ容量が小さくなってしまった。
- Armの新しい命令セットのプロセサであり、コンパイラの最適化が未成熟であったことから、Out-of-Order実行資源量の決定には困難があった。
- エクサの先のスパコンにはアクセラレータや専用ハードウェアなどの、従来の延長でないアーキテクチャが必要になると思われる。
しかし、実行しやすいコードの性能向上に重点を置くか、実行が難しいコードの性能向上に資源をつぎ込むかは容易に決着のつかない課題であると思われる。今回は、通常のレポートを大きく超える長文にお付き合い下さり、感謝申し上げます。