2021年11月のGreen500で、39.38GFlops/Wというスコアを出し、プリファードネットワークス(Preferred Networks:PFN)は業界を驚かせた。
次の表はGreen500の上位10システムをリストしたもので、1位はPFNのMN-3スパコンで電力効率は39.38GFlops/Wである。そして、2位はSamsungのSSC-21 Scalable Moduleで33.98GFlops/Wである。2位以下のシステムが2.5GFlops/W未満の僅差で並んでいるところで、1位と2位がその2倍の5.0GFlops/Wの差は驚異的である。
また、MN-3は前回のGreen500の時と同じハードウェアでありながら、ソフトウェアだけの改善で29.7GFlops/Wから39.38GFlops/Wまでエネルギー効率を改善したのも驚異的である。
ということで、今回もMN-3スパコンがGreen500も首位として表彰された。
なぜPFNのスパコンは電力効率が高いのか?
なぜ、PFNのMN-3スパコンとその計算エンジンであるMN-Coreの電力効率が高いのかを、PFNの土井執行役のGreen500 1位受賞記念講演から探ってみたい。
PFNであるが、東京大学の卒業生によって2014年3月に創立されたベンチャー企業である。最近、東大を退官された平木先生がPFNに入社され、MN-3の開発に協力しておられるが、PFNのCEOの西川氏は平木先生の教え子でもある。
MN-3スパコンはPFNの自社開発のマシンラーニングスパコンである。そしてそのアクセラレータであるMN-Coreは自社開発のアクセラレータである。MN-3ノードはMN-Coreボード4枚とXeon 8260M CPU×2(48コア)に384GB DDR4メモリを持つ。それに3TBのIntel Optane DCストレージクラスメモリを付けている。ノード間はMN-Core DirectConnectという112Gbps×2のネットワークで接続している。さらにノード間にはMellanoxのConnextX-6(100GbE)×2とオンボードの10GbE×2の接続を持っている。
なお、MN-3スパコンは、1993年から稼働している初代地球シミュレータを設置するために作られた海洋開発研究機構のコンピュータルームの一部を借りて設置されている。MN-3スパコンの電力効率は高いが、センターとしては設計が古く、PUEはあまり良くないとのことである。
MN-3はマシンラーニングのために作られたアクセラレータスパコンであるが、PFNは、HPLを使ってGreen500の実行効率の改善を行った。次の図に書いたように、
- 2020年6月:21.11GFlops/W
- 2020年11月:26.04GFlops/W
- 2021年6月:29.70GFlops/W
- 2021年11月:39.28GFlops/W
と実行効率を改善して来た。2年前から見ると2倍に近いエネルギー効率の改善を行っている。
MN-Coreはすべての演算器が並列に並んで同じ命令を実行する巨大なSIMD構造になっている。MN-Coreはキャッシュのようなヒットすればメモリが速く読めるというような構造は持っておらず、命令のフェッチや実行は完全に確定的に常に同じ時間を掛けて実行される。すべての演算器が同じ命令を実行するSIMDであるので、命令のフェッチ機能は1つあれば良い。
FP64で65GFlops/Wの電力効率が得られるのは、MN-Core部分だけの消費電力の場合で、MN-3全体ではメモリやその他の回路の消費電力が含まれるので、 40GFlops/W程度の効率になってしまう。
オンチップのネットワークで階層的にSIMD演算器が接続されており、BroadcastやAggregationも行うことができるようになっている。
MN-Coreの思想は計算に必須の機能だけをハード搭載し、完全にソフトウェアでその機能の使用をコントロールする。これにより、最小のハードウェアで演算を実行でき、電力効率を高めることができるという物である。これは神戸大学の牧野先生の考え方である。
MN-3の電力測定環境は、当初はGreen500のレベル2であったが、2回目の測定から、より精度の高いレベル3にアップグレードした。次の写真はその時の様子を写したものである。
2021年6月の測定はレベル3にアップグレードするので、すべてのサーバなどの機器の電力を実測するようにPDUへの接続などを追加している。
測定を自動化し、測定ごとにIDとタイムスタンプを付けた。そして、電力の測定値はSlackを通してポストし、電力測定の結果を全員で共有した。これは改善の結果を全員が理解するのに役立った。
MN-CoreでのHPL実行は、
- 2020年6月:21.11GFlops/W、効率41%
- 2020年11月:26.04GFlops/W、効率53%(GEMM実行のスケジューリングを最適化)
- 2021年6月:29.70GFlops/W、効率58%(さらに効率改善)
- 2021年11月:39.38GFlops/W、効率64%(インタコネクトの改善、ソフトレベルクロックゲートの改善)
58%→64%への改善については、
- +2%はDGEMMカーネルの改善、DGEMMと通信のオーバラップの改善
- +3%はインタコネクトのバンド幅の改善と通信と計算のオーバラップの増加
- +1%は他の部分でのソフトウェアの改善
29.70GFlops/W→39.38GFlops/Wへの改善については、
- +3.4GFlops/W(実行効率の改善効果)
- +4.4GFlop/W(エネルギー効率の高い命令を生成、使用してない演算ユニットの停止、SRAMに替えてScratchpad FFを使用、データコピーのエネルギーを低減)
- +1.9GFlops/W(コア電源電圧を低減、その他)
MN-Coreの計算フレームワークは他のコンピュータとは異なる。実行は確定的でソフトウェアで完全にコントロールされる。MN-Coreの計算のやり方は独特であるが、チューニングを行うのにHPLを使うのは非常に有効であった。