ソフトウェアの整備
スーパーコンピュータ「富岳」の開発にあたって最重要視された「汎用性」。その実現のためには、「様々なソフトウェアが簡単に、効率よく動く」ことが欠かせません。
ここでは、「富岳」で使えるソフトウェアを増やすための取り組みを紹介します。
スーパーコンピュータ向けのソフトウェア
スーパーコンピュータと普通のパソコンとの大きな違いはふたつあります。
- 計算速度
- 並列処理
スーパーコンピュータで一般的に行われるのは、「科学技術計算」という、精度の高い計算です。高精度の計算を合理的な時間で行うためには、スピードと効率の良さが求められます。スーパーコンピュータ向けのソフトウェアは、精度の高い計算を速く、効率よくできるよう最適化されている必要があります。
また、「並列処理」もスーパーコンピュータを特徴づけるものです。スーパーコンピュータは普通のパソコンが何万台も並んだような状態で、それらに役割を振り分けながら効率的に計算させるには工夫が必要です。
スーパーコンピュータでソフトウェアを動かすときには、これらの特徴にあわせて、プログラムを最適化する必要があるのです。
世界初、Armプロセッサを搭載したスーパーコンピュータ
スーパーコンピュータ用のソフトウェアなら「富岳」でそのまま動くかというとそうではなく、工夫が必要になります。
「富岳」に使われているチップには、Armプロセッサの命令セットが採用されています。このチップは、「富岳」のために世界で初めて開発された、HPC(ハイパフォーマンス・コンピューティング)向けArmプロセッサです。Armプロセッサを採用することで、従来のスーパーコンピュータに比べて圧倒的な高性能・省電力を達成することができました。
しかしながら、「世界で初めて」であるゆえに、ソフトウェアの整備にあたっても世界で初めての対応が求められることになります。

HPC分野にArmエコシステムを
「エコシステム」とは生態系を意味する言葉で、IT分野におけるエコシステムには、ソフトウェア・ハードウェアにおける開発者・ユーザー・販売者、通信などのインフラ等々、様々な要素が含まれます。これらは互いに影響しあっており、あるハードウェアで使用できるソフトウェアが豊富にあることでそのハードウェアが消費者に選ばれ、多くの人がそのハードウェアを使うのでますますソフトウェアの数や質が充実する、というような循環が生まれます。
Armプロセッサは、スマートフォンや自動車などへの組み込み機器の領域では非常に豊かなエコシステムを有しています。
一方、HPCの分野では、多くのスーパーコンピュータがIntelやNVIDIA製のプロセッサを使っていることもあり、これらのマシンのためのエコシステムは充実しています。

「富岳」の開発者およびユーザーは、プログラム開発やチューニング(最適化)をとおして、HPC分野におけるArmエコシステムの形成に取り組みます。
たとえば、HPC向けパッケージ管理ツール(※1)であるSpackをArmプロセッサスパコンでも使えるよう開発に協力しています。Spackが使えるようになれば、Armプロセッサスパコンで既存のソフトウェアを動かしたり、新しいソフトウェアを開発したりするのが非常に楽になります。
Armプロセッサには、前述のとおりもともと豊かなエコシステムが存在します。この領域をHPC分野に広げることで、多様なArmプロセッサ向けのソフトウェアをスーパーコンピュータで動かすことが可能になります。
ソフトウェアの充実を図ることで利便性が向上すれば、世界のベンダーがArmプロセッサを自社のスーパーコンピュータに採用するかもしれません(※2)。世界中にArmプロセッサスパコンが広がることで、エコシステムはますます豊かになっていき、それはHPCの可能性そのものをも広げることになるでしょう。
- パッケージ管理ツール:
ソフトウェアに関わるファイル群(設定ファイルやドキュメント、プログラム本体、プログラムが動くために必要なライブラリ等。これらを「パッケージ」という)の管理を自動で行うツール。ソフトウェアのインストール・アンインストールや、パッケージ同士の依存関係の解決などを自動で行う。 - ベンダーによるArmプロセッサの採用:
2019年11月、スーパーコンピュータの世界的なベンダーであるCray社(Hewlett Packard Enterprise Co. 傘下)が「富岳」と同じA64FX CPU搭載の商用機を開発すると発表した。
富士通とCray、スーパーコンピュータにおけるパートナーシップ契約を締結(富士通ウェブサイト)

参考
- 「富岳」上で動くソフトウェアについては、HPCIポータルサイトで確認できます。
「富岳」で利用可能なソフトウェアの検索(HPCIポータルサイト)
- 計算科学研究センター(R-CCS)が開発したソフトウェアについては、理研R-CCSソフトウェアセンターウェブサイト
をご覧ください。