次世代スーパーコンピュータ(スパコン)のOSはLinuxベースと発表された。SPARCプロセサを使用する富士通のサーバはSolaris OSを使っているが、この次世代スパコンではLinuxベースのOSを新規開発している。国産技術という理化学研究所(理研)の開発方針からすれば、Sun Microsystemsが権利を持つSolarisよりも、Linuxの方が方針に沿っているということであろうか。
ファイルシステムは、巨大スパコンでは一般的な、グローバルファイルからローカルファイルにステージングする方式と発表されたが、グローバルファイルシステムとしてはLustreなどのオープンファイルシステムを使うのか、富士通のファイルシステムを使うかについては言及されなかった。
今回のフォーラムでは富士通でコンパイラの開発を担当する堀田氏と理研でアプリケーションのチューニングを担当する南氏が発表を行ったこともあり、プログラム開発環境とどうやってアプリケーションの性能を出すかという技術発表が中心であった。
超並列システムのプログラム開発環境
同システムは8コア×8万+ノードの超並列システムであり、超並列のプログラミングが必要となる。並列度が大きくなると通信オーバヘッドなどが増えてくるので、スレッド並列とプロセス並列を組み合わせたハイブリッド並列が有効であるという。しかし、ユーザが両方の並列法を使うプログラムを書くのは負担が大きい、また、性能を出すにはスレッド並列のオーバヘッドを減らす必要があるという。
次世代スパコンでのプログラム開発環境としては、FortranとC、C++のコンパイラが提供され、また、次のスライドではノード間向け並列言語と書かれているXPFortranがサポートされていた。それらのコンパイラと、巨大システム内のノード間通信を行うMPIライブラリとCPUのHPC-ACEを有効利用する数学ライブラリが提供される。また、超並列システム用のデバッグツールや性能チューニングツールが提供されるという。
そして、これらのコンパイラやツールはフロントエンドサーバ上で動作し、コンパイラで作成されたバイナリプログラムが計算ノード群に送られて実行される。
コンパイラは、1チップ内のコア間の自動並列化を行ってプログラマの負担を減らし、かつ、HPC-ACEの機能を有効に利用して最適化を行って性能を上げるという方針で開発を行ったという。
SPARC64 VIIIfxプロセサは、コア間の同期を取るハードウェアバリア機構を装備しており、さらに8コア共有のL2キャッシュを持っているので、L2キャッシュコアごとに分離されているプロセサと比べるとコア間のデータ転送速度が速いという設計になっており、8コアのスレッド並列実行の効率が高いハードウェアである。コンパイラはこれを利用して長いループを分割して8コアに分担させる自動並列化を行う。富士通は、このハード機構とコンパイラの自動並列化機能を纏めてVISIMPACT(ビズ インパクト)と呼んでいる。
上記のグラフの3本の線は2.52GHzクロックのSPARC64 VIIを2チップ使ったケース、2.93GHzクロックのNehalemを2チップ使ったケースと2GHzクロックのSPARC64 VIIIfxの比較で、すべて8コアでのDAXPYという計算カーネルを実行した場合の性能比較である。そしてグラフの横軸はループ回数である。ループ回数が少ない部分ではクロックの高いSPARC64 VIIが一番性能が高く、続いてVIIIfxで、クロックは一番高いものの共有キャッシュの効果が弱いNehalemは最下位となっている。また、SPARC64 VIIに比べてVIIIfxはスケーラビリティが高く、1000ループ以上では性能が逆転している。
そして、Fortran、C、C++ではDouble-Doubleの4倍精度浮動小数点演算とIEEE754-2008の4倍精度浮動小数点演算がサポートされる。しかし、SPARC64 VIIIfxプロセサのハード仕様としてはIEEE754-2008の4倍精度浮動小数点演算のサポートは入っていないので、Double-Doubleと同様にソフトウェアでのサポートとなると思われる。
超並列システムのプログラミングとしてはノード間のMPI通信ライブラリが提供されるのに加えて、XPFortranがサポートされる。XPFortranはディレクティブを書くことによりノード間の処理分散を指定することができる言語である。富士通は、このXPFortranで書かれたソースプログラムをMPIを使用するソースプログラムに書き換えるトランスレータを開発している。このトランスレータで変換されたプログラムはMPIプログラムとなり、MPIを使用する他のモジュールと組み合わせてプログラムを作ることができるようになっている。しかし、XPFortranは日本国内ではある程度使用されているが、欧米では死滅した言語である。このXPFしか並列化言語がサポートされていないのは淋しく、また、衰退するXPFでこれから開発する超並列プログラムを蓄積するのも時代遅れで、米国の状況を見るとUnified Parallel CやCo-Array Fortranなどはサポートして欲しいところである。