« アイオワ日本食情報2 | メイン | Linux HPCクラスターの構築(その2) »

2007年09月08日

Linux HPCクラスターの構築(その1)

最近,このブログに対する,全世界のファンからのトラックバックが急増しています. なにやら文面が似たようなものばかりなのが気になりますが,ありがたく・・・ねぇよ!Movable Type のSPAM排除機構もいまいちのようで,Captcha(ねじれた文字を認識させることで,botによる自動送信を排除する) とか導入したほうがいいんでしょうけども...あとでしらべとこ.

さてさて,ひさびさのblog更新ですが,しばらく,ほとんど自分のためのメモですが, 分からない人(ほとんど)を置いてゆく,マニアックなお話をしたいと存じ奉り候.

* ぼくたちには計算力が足りない

ワタクシ,こちらにきてから,仕事上,遺伝統計学パッケージを日常的につかっているのですが, モノに依っては計算力不足を如実に感じるようになってきました.最近一番よく使うのはAssociation Study用の プログラムUNPHASEDです.

UNPHASEDは,確定しないハプロタイプの情報も捨てずに使うため,ハプロタイプ相関分析に力を発揮します. allwindow(10マーカーなら,連続した[スライディング]マーカーを含むウインドゥサイズを1から10までに変化させる)や, allcombination(全体から,1~10マーカーを選ぶすべての組み合わせ)をためすことで, 効果的に原因遺伝子の候補領域をせばめることができる...とワタシは理解しています.

ただですね.「組み合わせ」という言葉で想像されるように,マーカーの数が増えると, 指数関数的に計算量が増えるのが問題です.「ハプロタイプ」がそもそも組み合わせですし, ウインドウも組み合わせ.20マーカーのallwindow/allcombinationのウインドゥの数なんて 2^20-1=100万以上ですよ奥さん!こんなものをWindows上では動かせないし(3日で落ちた). Pentium4 3.6GHzのLinux (Debian) boxだって,1か月じゃすみません.

* コンピュータークラスター

こういった計算をやらせるのは,コンピュータークラスターに限る!と目をつけて勉強をはじめましたが, ここでまず「クラスター」ということばに複数の概念が混ざっていることで,当初混乱してしまったのです. 「Linuxクラスター」 ってのはLinuxベースの複数のマシンを組み合わせて,何らかの目的に使うということですね. で,その種類は「HAクラスター(高可用性クラスター,別名ノンストップクラスター)」 「負荷分散クラスター(webサーバーなどの負荷分散,Googleのサーバーとか)」などがあり, これは僕が今回必要なものとはちょっと違う. 最後が「HPC (High Performance Computing)クラスター(いわゆるスーパーコンピューターの類)」です. これが本稿で扱うクラスター.この辺の分類の理解ができるまで,Google様に翻弄されていたワタシなのでした.

* Linux HPCクラスター

いまスタンダードなのはLinuxをベースにしたHPCクラスターシステムです. これには大きく2つの方法がある(と理解してます).

まずSSI (Single Server Image)クラスター.具体的には openMosixOpenSSIKerrighed なんかが代表的なソフトウェアパッケージです. SSIはユーザーからみると大きなな一つのSMPマシン(複数のプロセッサをもつマシン)に見えるのが 特徴です.openMosixしか知らないので,これがSSI一般なのかわからないのですが, とにかく,プログラムを走らせて,一定時間経過すると,OSが勝手に負荷の軽いシンにプロセスをmigrate(移住?)させて くれます.結果は何事もなかったように最初のマシンに戻ってきます.クラスターの各ノードは平等で, どのノードから実行しても,うまくやってくれる・・・ようです.

次がいわゆるBeowulf型クラスター.「普通の」クラスターはこっちを差します. 基本的にはFrontend(マスターノード)からジョブを投入して,専用のノード間通信ライブラリ(MPIなど)を 使って書かれたプログラム(並列プログラム)を使い,各ノードで分散計算をさせます. 並列プログラムは必須というわけではないようです(後述).パッケージとしては OSCAR, 国産のSCore (すごい名前で有名なライブCD-Linux 巫女ぐにょLinux も採用). Rocks Clusters などがあります.

*さてクラスターはいずこ

と,ここまで勉強して,University of Iowa内で使えるクラスターはないかいな?と 検索していますと,ITS Reserach Serviceというところに「Linuxクラスターがあるよん」という 情報がありました.これ幸いと,問い合わせのメールを書くと,テクニカルディレクターの助教授の先生が 会ってお話しましょう,とのこと.早速,お話に行ってきました・・・・・が,そこには驚愕の事実が!待て次号!


追記・訂正です.

ドキュメントを読んでみたら,SCoreはSSI環境なんですね.同時にMPIもサポートしていると.そうすると,SSIかBeowulfか,などという分類は不適切ですね.

クラスター関連については,種々の用語・概念の階層というか,どれとどれが対応するレイヤーなのか,ということを,たぶんワタシは誤解しまくっているような気がします.ある用語が,概念(設計)なのか,パッケージなのか,単独のソフトウェアのことなのか,などなども混乱しています.

まあ,教科書を書いているわけではないので,まちがっていてもメモということでご容赦ください.できればコメント欄にツッコミをいれていただけるとありがたいです.

たぶん,一度,腰をすえて教科書を読んでみるべきなんでしょう.英語いやですけど.

投稿者 hmishima : 2007年09月08日 07:55