中尾昌
広
![]() |
安価で高速な並列計算機システムである PC クラスタを、 Debian を使ってセットアップする方法について説明し ます。
クラスタ (cluster) とは英語で「ブドウの房、 同じものが群らがっている様」 みたいな意味です。 つまり、 PC クラスタとは、 複数台の PC をブドウのように(LAN ケーブルで) 相互接続して、 それらを協調動作させるシステムのこと です。
高速な計算機環境が欲しいけど、 スーパーコンピュータみたいな高価な専用並列計算機はとても買えない。 そこで、 普通の 電気屋で売っているような PC をクラスタ化して、 安価に並列計算環境を作ろう、 ということが考えられま した。
PC クラスタには大きく分けて、 HA (High Availability) クラスタと HPC (High Performance Computing) クラスタが あります。 HA クラスタとは、 高可用性を持つシステム、 つまりサービスを止まりにくくすることを目的としたクラスタシステ ムです。 最近は Web 系のサーバでこのシステムがよく用いられています。 HPC クラスタとは、 科学計算分野などでおい て、 ものすごく時間のかかる処理を、 複数台の PC に分散させて、 高速に結果を得ることを目的としたクラ スタシステムです。 企業のメーカでも、 車体や航空機を設計する際のシミュレーションなどに用いられてい ます。
本資料とプレゼンでは基本的に HPC クラスタについての話ですが、 HA クラスタに共通している点も多いはず です。
並列計算ができるまでを目標として、 PC クラスタシステムをセットアップする手順を説明します。
# aptitude install mpich-bin libmpich1.0-dev gcc g77 g++
|
インストール後に並列計算に用いるホスト名(もしくは IP アドレス) を/etc/mpich/machines.LINUX 記述 する
# aptitude install rsh-server rsh-client
|
インストール後に rsh を許可するホスト名(もしくは IP アドレス) を/etc/hosts.equiv に記述する
# aptitude install nfs-kernel-server
|
そして、 nfs-kernel-server をインストールした PC の/etc/exports に、 どの PC に NFS のサービスを許可するかの情報 を記述する。
【/etc/exports の例】
/home 192.168.1.0/255.255.255.0(rw,async,no_subtree_check) |
/etc/exports の変更後に NFS のサービスを再起動させる
# /etc/init.d/nfs-kernel-server restart
|
そして、 nfs-kernel-server をインストールした PC 以外は、 mount コマンドを用いて NFS サーバにマウントする
# mount -t nfs (NFS サーバ) :/home /home
|
以上で、 PC クラスタの完成です。 簡単です。 意外かもしれませんが、 並列計算ライブラリ以外は特殊なソフトウェアを 用いていません。 このように既存のソフトウェアを有効活用できる所が、 PC クラスタの大きな特徴 です。
$ mpicc cpi.c -o pi 【コンパイル】
$ mpirun -np 5 pi 【実行】 |
cpi.c は π の値を計算するプログラムです。 mpicc というコマンドで C 言語で書かれた並列計算プログラムのコンパイル が行えます。 Fortran の場合は mpif77、 C++ の場合は mpicxx などを用います。
そして、 mpirun というコマンドで、 並列計算プログラムの実行が行えます。 引数の-np 以降はプロセス数を指定してい ます。 また、 並列計算に使用したいマシンを指定する際は、 -machinefile というオプションを利用し ます。
$ mpirun -np 5 -machinefile hoge.txt pi
|
この場合、 hoge.txt に並列計算に使用したいホスト名を書くと、 その PC で並列計算が行われます。
Ganglia という各ノードの負荷、 生死を Web ブラウザから確認できるソフトウェア。 日、 週、 月、 年といった単位でクラスタ 全体のロードアベレージの傾向も見ることができます。
駆け足でクラスタの概要とセットアップ手順について説明しました。 Debian でクラスタを作るのは簡単だというのが伝われば 幸いです。
第
10 回関西 Debian 勉強会 2008 年 2 月
____________________________________________________________________________________________