次に、「京」で並列プログラムを高速動作させるための技術と「京」という大規模システムを効率良く運用するための技術について解説する。

 「京」の計算ノードのOSはLinuxだ。TOP500リストにエントリーしているシステムの90%でLinuxが動作しており、これら既存のスーパーコンピュータで動作しているアプリケーションを容易に「京」に移植できる。

 「京」のようなスーパーコンピュータでは、天気予報や航空機のシミュレーションといった、大規模な計算を行うアプリケーションを高速に動作させる必要がある。そのため、多数の計算ノードで処理を分担し、計算ノード間で通信して計算結果を共有するモデルを使う方式が一般的に採用されている。

 「京」でも、計算ノード内でCPUコア数に応じた複数のスレッドやプロセスを生成して並列計算を実行し、計算ノード間ではMPI(Message Passing Interface)と呼ばれる標準の通信ライブラリを利用して高速に計算結果を転送する。このようにして多数の計算ノードを使って並列プログラムを実行できる。

 こうしたアプリケーションの実行基盤として「京」は、「プログラム開発~実行~デバッグ」を効率的に行うためのOSと基本ミドルウエア(コンパイラ/ライブラリ/運用管理ソフトウエア)を用意している(図9)。

図9 「京」のソフトウエアの構成
図9 「京」のソフトウエアの構成
OSでは、Linuxカーネルのアーキテクチャー依存部を実装するとともに、「京」のハードウエアを利用するためのドライバを追加して、上位のミドルウエアから利用可能にしている。
[画像のクリックで拡大表示]

 OSは一般的なLinuxカーネルの構成と同様、プロセス管理、メモリー管理、IO管理(デバイスドライバ)、ファイルシステム、ネットワークの機能を備える。カーネルのアーキテクチャー依存部分は、SPARC64 VIIIfxのハードウエア仕様に対応させて移植している。CPUやインターコネクトの拡張機能は、デバイスドライバを追加することでアプリケーションから利用可能になっている。

高速プログラム実行技術

 ここで、「京」に適用している高速プログラムの実行技術についてミドルウエアを含めて解説する。その中でLinuxの機能をどのように利用・拡張しているかを見ていこう。

 多数のCPUコア・ノードを利用して高速に並列プログラムを実行するためには、1ノード内の実行性能を向上させる技術と複数ノードを効率的に動作させる技術の両方が重要だ。PCクラスターなどで動作する並列プログラムでは、ノード内においてもプロセス並列のモデルを採用するものが多い(図10左)。このモデルでは、並列プログラムが使用するCPUコア数の増加に応じて、動作する並列プロセス数が増加する。プロセス間通信に使うバッファーメモリーの使用量や必要な通信回数は、通信相手=並列プロセス数に応じて増大する。つまりCPUコア数が増えるほど、ネットワーク通信量が増え、プログラムで使用可能なメモリー量が少なくなる。

図10 並列プログラミングモデルの比較
図10 並列プログラミングモデルの比較
[画像のクリックで拡大表示]

 この点、「京」ではノード内ではスレッド並列を、ノード間ではMPIによるプロセス並列を用いるハイブリッド型のプログラミングモデルを採用することにより、並列プロセス数の増加を抑え、大容量のメモリーを利用できるようにしている。