研究概要 |
近年、計算機の低価格が進み、多数の計算機を集めて、並列処理を行うクラスタ型並列計算機を用意に構築できるようになった。しかし、PCクラスタのような分散メモリ上での、並列プログラム作成には、ネットワークプログラミングや排他制御の知識が必要となる。そめため容易な並列プログラム開発を可能となるため、さまざまな分散共有メモリに関する研究が従来より行われている。 本研究では、従来のようにプログラム上必要となったデータをオンデマンドでデータを要求するのではなく、(a)高速な通信速度を持つネットワークを利用し、共有メモリ空間をクラスタ内で、常時転送状態とする(b)各計算機は、その時刻に保持している共有メモリ領域を用いて実行することが可能なタスクの実行を行う(c)必要な共有変数を得られず処理(参照、代入)を実行できないタスクは、一時キューに格納し実行可能時まで待つという3つの概念に基づく分散共有メモリを提案した。 提案手法では、大量のデータの移動を行うため、通信環境はGigaEthernetをリング状に結合した構造を用いた。本システムでは、まず共有変数全体を複数のセグメントに分割し、各計算機に分散配置した。その後、共有変数をセグメント単位で、各計算機関を巡回させる。共有変数へのアクセスは、計算機がその時点で保持しているセグメントに対してのみ許し、それ以外のセグメントへのアクセスは当該セグメントの到着を待って行う(遅延実行)。 提案手法の有効性を示すために、C++を用いたランタイムライブラリを作成するとともに、ギガリングクラスタを構築し性能評価を行った。実験環境はCPU : Pentium III x2 (1CPUは転送専用CPUとして用いた)、メモリ512MB、OS Solaris8、GigaEthernet NIC x2で構成される各ノードを2台、4台、8台用いたギガリングクラスタ環境を構築した。サンプルプログラムとして、並列性が高い行列積の計算と、大規模演算の代表例としてFDTD法を用いた電磁界シミュレーションプログラムを用いた。その結果、例えば2048x2048の行列積の計算では、逐次プログラムの実行時間より1.96,3.88.7.67倍(それぞれノード数が2,4,8)、またFDTD法では、1.79,3.06,4.03倍の速度向上が確認できた。またプログラム記述の際には、ほとんど排他制御などの記述が必要ないことも確認した。
|