(2/7)
2. SCoreの概要
SCoreソフトウエアのアーキテクチャを図1に示す。
図1: SCore ソフトウエアアーキテクチャ
2.1 PMv2通信ライブラリ
PMv2通信ライブラリは、クラスタコンピューティング用の低レベル通信ライブラリである。PMv2 API(Application Program Interface) は、クラスタにおける複数種類のネットワークや共有メモリに同一の方法でアクセスできるように設計されている。
- PM/Myrinet
Myricom社Myrinetネットワーク用のPM 通信レイヤである。PM/Myrinetは、Myrinet NIC上のプログラム、Linuxカーネルドライバ、ユーザレベルライブラリから構成されている。PM/Myrinetでは、ユーザレベル通信およびゼロコピー通信と呼ばれる手法を用いて、低遅延、高バンド幅ネットワーク通信を実現している。
- PM/Ethernet
PM/Ethernetは、Ethernet上におけるPM 通信プロトコルを実現している。Ethernetデバイスドライバの上に構築されたカーネル内プロトコル処理ルーチンとユーザレベルライブラリから構成される。PM/Ethernetは、TCP/IPと比べて軽量なプロトコル処理で済むように設計されている。
EthernetパケットタイプにPM/Ethernetタイプを追加し、PM/Ethernet用のパケットとTCP/IPのような従来の通信パケットも共存できるようにしている。すなわち、TCP/IPのアプリケーションとPM/Ethernetを使用したアプリケーションを同時に動かすことが可能である。
PM/Ethernetは、複数のEthernetリンクを束ねて通信バンド幅を向上させるネットワークトランキング機能を実現している。最近のPCサーバにはオンボードで2つのEthernetの口を持っていることが多い。Ethernetスイッチを追加するだけで性能があがる。
- PM/Shmem
PM/Shmemはオペレーティングシステムの共有メモリ機構を利用して実現されている。PM/Shmemにより同一コンピュータ内で複数のプロセスがPM 通信APIで通信が可能となる。
2.2 MPICH-SCore
MPICH-SCore は、MPI 通信ライブラリを実装したフリーソフトウエアであるMPICHを、PM通信ライブラリ上で稼動するようにしたソフトウエアである。MPICH-SCoreでは、単一プロセッサから構成されるクラスタだけでなく、共有メモリ型並列コンピュータから構成されるクラスタ上でも効率良く稼動するように工夫している。
2.3 PVM-SCore
米国Tennessee大学、Oak Ridge国立研究所、Emory大学が開発したPVM をSCore用に移植している。これをPVM-SCoreと呼んでいる。
PVMは異機種環境で並列環境を提供し、動的な計算ノードの追加が可能である。しかし、PVM-SCoreでは、SCore環境下の計算ノード上でしか実行できない。また、計算ノードの最大数は、PVM実行に必要なデーモンプロセス起動時に決まる。
2.4 SCore-D
SCore-D は、複数のユーザが同時にクラスタを利用するときに効率良くコンピュータ資源を管理する機能を提供するグローバルオペレーティングシステムである。SCore-Dは、カーネルを変更することなくデーモンプロセス群で実現されている。ギャングスケジューリングと呼ばれるスケジューリング手法を用いて、並列アプリケーションを時分割スケジューリングしている。今まで、ギャングスケジューリングは特殊なハードウエアがないと効率良く実現できないと言われてきた。SCore-D により専用ハードウエアがなくても効率良くギャングスケジューリングが実現できることを初めて実証した。さらにSCore-Dでは次のような機能を提供している。
- 実時間ロードモニタ
- デッドロック検出
- チェックポイント・リスタート機能
- 対話型デバッガ起動
2.5 Omni OpenMP on SCASH
SCASHは、カーネルを変更することなく、PM通信ライブラリを用いてユーザレベルで実現したソフトウエア分散共有メモリシステムである。分散共有メモリによりマルチスレッドプログラミングが可能となる。
Omni OpenMPはSCASHソフトウエア分散共有メモリシステムを使い、OpenMPのプログラムを変更しなくてもクラスタ上で動作する。OpenMPは、共有メモリシステム上でのマルチスレッドプログラミングを支援する仕様である。共有メモリを使ったマルチスレッドプログラミングでは、共有メモリ上でプロセッサによる複数の実行の流れを制御するプログラムを書く。OpenMPでは、この制御をコンパイラに対する指示文と実行時ライブラリで行なう。
商用OpenMPコンパイラで、クラスタ上で稼働するOpenMP として宣伝されている場合がある。この場合、計算ホスト内でのマルチスレッドプログラミングをOpenMPで記述し、計算ホスト間の通信をMPI などの通信ライブラリを使って記述する、と言ったハイブリッドなプログラミングをしなければクラスタ上では稼働しない。
2.6 MPC++
MPC++はオブジェクト指向言語C++ を基にした並列プログラミング言語である。MPC++には、言語機能を拡張せずにC++が持つclass、template機能を用いて並列処理記述プリミティブを提供している。
2.7 PBS
バッチシステム環境を提供しているPBS(Portable Batch System) をSCore環境に移植している。
2.8 TACO
トポロジと通信を抽象化したC++テンプレート機能としてTACOがある。