メイン

2008年06月06日

Linux HPCクラスターの構築(その3):論文でました

以前のエントリーに書きました,Linux HPCクラスターの構築ですが, その方法と効果をまとめた論文がBMC Bioinformaticsにpublishされました。

Application of the Linux cluster
for exhaustive window haplotype analysis
using the FBAT and Unphased programs

Hiroyuki Mishima, Andrew C. Lidral, and Jun Ni

BMC Bioinformatics 2008, 9(Suppl 6):S10

BMC Bioinformaticsはいま流行の open access journal なので以下より 閲覧・ダウンロードできます。

http://www.biomedcentral.com/1471-2105/9/S6/S10

要旨は,exhaustive haplotype analysis(任意の領域のSNP座位に対して, すべてのウインドウサイズや組み合わせで行う徹底的なハプロタイプ分析)では, むちゃくちゃ計算力がいる。かといって,大規模なコンピュータをつかうのは 試行錯誤できないし,使いたい,よく知られた十分に検証済みのソフトには, 並列化されたのがない。そこで,中古パソコンでつくったRocks Cluster/GridEngine ベースの,安価なHPCクラスタ上で,非並列ソフトのFBATとUniphasedに対して, 次々変化させたパラメーターを与えてやることで, 意外といい感じに高速化できましたよ,これなら結構お手軽にできるんじゃない? というお話。

というわけで,まずは,アイオワでの最初の論文がでました。 よかったよかった。

アイオワでの仕事に関しては,投稿準備中の論文がまだあるので (そのうちひとつは,今回のHPCクラスターを実際に応用した結果について) がんばらなくては……。

続きを読む "Linux HPCクラスターの構築(その3):論文でました" »

2007年09月09日

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

* え,ワタシが作るんですか?

で,件の助教授の先生のところに行き,やりたいことを説明してきました.ワタシのやりたいことを一般化すると,

非並列コードで書かれたコマンドに多数(数百から数百万,あるいはそれ以上)の異なるパラメーターを与えて実行したい.計算結果は互いに独立である.

ということになります.ワタシの説明がおわると,それならば,ということで,コンピュータールームにつれていってくれまして,PCの山を見せてくれました.ほほう,これ用のアカウントを発行してくれるのかと思っていると,

「ここに23台のPCがあるから,好きなクラスターをくみ上げていいよ.スイッチングハブとケーブルはちゃんとあるから」

といって,やおらパソコンを運び出しはじめるではないですか.いや話が早いのはいいのですが,当初の目論見ははずれ,自分でクラスターを組むことになってしまいました.

* openMosixでは力不足か?

今回のプロジェクトにあたり,図書館でオライリーの High Performance Linux Clusters with OSCAR, Rocks, OpenMosix, and MPI という本を借りてきまして,参考にいろいろ考えたのですが,使いたいプログラムは非並列コードなんで,SSI環境がやりやすいのかな?ということと,日本語ドキュメントの豊富さから,openMosixをまずためしてみることにしました.また,openMosixには,ライブCD-Linuxである ClusterKnoppixをつかうことにより簡単に試すことができるという大きな魅力もあります.

ClusterKnoppixのインストール,運用ですが,これはGoogle先生に聞けば,多くの日本語ページを見つけることができるので,そちらにゆずるとして(というかCDを台数分焼いて,立ち上げるだけ),とにかく8台ほどを試しにスイッチングハブにつなげて立ち上げてみました.

手動で,20やそこらのプロセスを立ち上げてみると,どうやらうまいことうごいてくれてそうです.しかし,これが100以上となると,どうもうまくいきません.単純に100プロセスがたちあがって,それを8つのマシンでのそのそ動かすことになってしまいます.

メーリングリストなどを検索すると,とりあえずシステムデフォルトのbatchコマンドでバッチキューに入れてみろ,とのことなので,やってみました.結果は,どうも,順調に割り振られているようにはみえません.atdデーモンのオプションもいじってみたのですが,次々とジョブが投入されるようにはなってくれません.また,致命的なのは,数百,数千のジョブの投入はbatchコマンドには荷が重すぎるということです.途中でハングアップしてしまうようです.

どうやら,ワタシのやりたい用途には,ちょっとopenMosixは最適とは言えないようです.また,openMosixの開発の終了がアナウンスされましたし,ClusterKnoppixの開発も事実上終了しているということで,どうやらopenMosiixは時代遅れになりつつあるのかもしれません.

そこで,より適したシステムはないかと探していると,ワタシと同じような境遇のヒトの質問をweb上でみつけました.その回答の要点は(1)必要なのは優れたジョブスケジューラー.たとえばGridEngine(後述),(2)GridEngineならRocks Clusterにはじめから入ってるよ,ということでした.

* Rocks Clustersの導入

Rocks Clustersは オープンソースのLinuxディトリビューションで(ここ重要,逆に言うと他のディストロと共存はできない),ベースはCentOS(RedHat Linux Enterprise Editionをフリーにしたもの,もちろんRedHatのサポートはない)になっています.現在も活発に開発が続いています,先日NSFのグラントが当たったとのニュースが流れましたので,さらに開発が加速するんではないかと思います.

Rocks ClustersにはGridEngineが含まれています.GridEngine(旧称Sun Grid Engine [SGE])と呼ばれる,Sun主導で開発されているフリーのジョブスケジューラーシステムです.Sunはこれと全く同機能のものに,いくつか独自の品質管理工程とサポートサービスを加え,あるいは各国語にローカライズして,N1 GridEngineとして商業化しています,N1 GridEndineとしては,すばらしいことに日本語ドキュメントも公開しています

Rocks Clustersについては,日本語のドキュメントが少ないような気がします.これは国産の SCoreの存在も大きいんではないかと思います. おそらくSCoreはワタシの要求にすべて答えてくれるんではないかと思います.またSCoreには巫女ぐにょLinuxというライブCDもありますんで,なおさら選択肢としては有力なのですが,ここはアメリカですんで,素直にRocks Clustersを採用することにしました.しかし,実際に巫女ぐにょをつかったら,説明がむずかしいだろうなあ(「コミックマーケットっていうコンベンションでリリースされるディストロでして」とか,うーんクール).

* Rocks Clustersインストールの注意点

インストールそのものは簡単・・・なのかもしれませんが,ハマりどころ満載です.詳しいところはドキュメントを参考にしていただくとして,以下に箇条書きに落とし穴について書いておきます.というか,今回長々と書き始めたのは,以下のにがーい経験を広く知らしめるためなのでした.

  • Frontend nodeには必ずNICが2枚さされていなくてはならない.eth0がクラスター内部,eth1が外部ネットワークとの接続に使われる.
  • Frontend nodeには必ずFQDN・静的IPアドレスが割り振られてなくてはならない.インストール時にDHCPに問い合わせに行くので,うまくいくかと思ったが,これだと再起動後に破綻する.たぶんDNSを入力する手間を省くためじゃないかと思われる.
  • (追記) 少なくともFrontend nodeには1GB以上のメモリを搭載している必要がある。また,Compute nodesは最低512MBのメモリが必要。さもなければ,インストール中にカーネルパニックを起こす。
  • Roll(追加パッケージ)は,何も言わずに全部入れる.一部インストール後の追加が不可能なものがある.Gangliaとか.なんでもいいけどRocksとRollって,Rock'n Rollって言いたいのか?
  • デュアルブートとか余計なことを考えない.デフォルトのパーティション設定に任せる.ディスクレスノードはサポートされてない.
  • ネットワーク関係のインストール後の手動再設定は困難を極める.そういうときは迷わず再インストールする.
  • ドキュメントは,やっぱりあまり親切じゃない印象をうける.が,メーリングリストがものすごく活発なので,メーリングリストの検索でかなりの部分の疑問が解決する.

次回は,Rolls Clusters導入後のいろいろについて書きたいと思います.

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クラスターがあるよん」という 情報がありました.これ幸いと,問い合わせのメールを書くと,テクニカルディレクターの助教授の先生が 会ってお話しましょう,とのこと.早速,お話に行ってきました・・・・・が,そこには驚愕の事実が!待て次号!

続きを読む "Linux HPCクラスターの構築(その1)" »

2006年06月10日

Science誌はやぶさ特集号

*Science誌はやぶさ特集号が配達されました!

Science 2 June 2006号は 日本の小惑星探査機はやぶさの特集号です.

表紙は,小惑星イトカワの写真(「ラッコのあたま」を下にしたもの)と"Hayabusa at Asteroid Itokawa"の文字.また,Introduction("The Falcon Has Landed")と,Perspective(解説)1編に加え,堂々の7本の論文が掲載されています.おそらく日本発の研究でScience誌で特集が組まれたのも最初でしょうし,日本人のpaperが7本同時に載るのも最初でしょう.すべて文句の付け所のないオリジナルな仕事です.これは,日本の宇宙科学というよりは,日本の自然科学にとっての快挙といっていいと思います.

ワタシは,おそらくはやぶさ関連のpaperはScienceに載るに違いないとよんで,しっかりと定期購読していたのでした.実際,地学・気象・海洋・宇宙惑星科学の分野はNatureよりScienceの方が得意なように思います.僕の思うに,Scienceはアメリカ科学振興協会(AAAS)という非営利団体の機関誌という側面もあるので,AAAS会員の好みを反映してるせいだと思います.僕の専門の人類遺伝学・発生生物学に関しては,Natureや,僕も定期購読してるNature Genetics(とNature Reviews Genetics)のほうが,当然ながら充実してますね.

さて,内容ですが,肝心のメインの論文はむずかしくってさっぱりわからないので,Perspectiveを読んでいるところです.おもしろいなあと思ったのは,やはぶさミッションの意義のひとつに,小惑星イトカワを含むnear-Earth objects(NEOs)の地球衝突への対処を挙げていることです.おそらく日本では,小惑星が地球に衝突するかもしれないので,それに対して対策をねらなければならないなどと言っても,SFじゃないんだからと一笑に付されそうですが,アメリカはどうやら本気なようです.

実際,破壊するにせよ,軌道をそらさせるにせよ,衝突時の被害をシミュレーションするにせよ,今回のはやぶさの観測結果は決定的な情報を提供しているはずです.そのときは,はやぶさの成果が人類を破滅から救うかもしれないのです.で,僕の想像するに,どうやらアメリカ人は,こういう「全人類を救う」ような仕事はアメリカ人がやるべきだと考えているようです.やっぱり,そういう野心的でスケールのでかい仕事を,極めて小規模な日本のプロジェクトがやってしまったことは少なからずショックのようです.

今回発表された論文の概要は, ISAS/JAXAの特集ページにて,わかりやすく,詳しく説明されています.小惑星イトカワがラッコに見える絵がなんかかわいいです.とにかく一読をおすすめします.

今回のはやぶさのイトカワ着陸に関するニュースには,ワタシが管理人(ほんとに管理だけ)をやっている,JSpace ( http://jspace.misshie.jp/ )という,日本の宇宙関連ニュースの共同英訳プロジェクトをとおして間接的ながら関わりました.アメリカ惑星協会のコーディネータの方からも評価していただいているようです.Scienceの特集を読んだ方もあらたに読みにきてくれているようで,今月はちょっとアクセスが上向きになっています.

はやぶさは,瀕死の重傷でありながら,なんと2台のイオンエンジンの起動試験に成功して,着々と地球帰還の準備をすすめています.まだまだ驚愕のストーリーが続きそうです.でも,(たしか,川口教授が言っていたと思いますが),これ,SFでも,ゲームでも,映画でもなく,我々がやっている現実のプロジェクトなんですよね!

2006年04月07日

英語の"style"

 前回のエントリに書いたように,ちょこちょこと英語作文をしている今日この頃です.未だ本番の「論文」を書き始めていないのが悲しいのですが,そこはそれ,準備期間ということで,ただいま「英語のstyle」について勉強中です.

 トラックバックを打たしていただきましたが,「アメ男の妻」さんのblogの「英語de論文」のカテゴリーにとてもよくまとめてあります.

 ワタシは感謝の意もこめて,リンク先のアフィリエイトリンクからamazon.comに注文して,"Communication in Science", "Style", "The Elements of Style Illustrated"を購入してみました.まだ読んでいる途中なのでなんともいえませんが,正しい綴りや,正しい文法で書くだけでなく,よりplainな英語で,明瞭に表現することも大事であると改めて認識いたしました.前回のエントリにてStylewriterという文法チェック&スタイルチェックソフトを紹介しましたが,これをつかいこなすためにもplain styleに対する理解が必要かなと思います.昔,paragraph writingの本(論理構造をまもって文を書けってことですね)を読んでかなり感心したのを覚えていますが,いやあ,勉強しなくちゃならないことが当然いっぱいあるんですね.

 「勉強しなくちゃいけない」ということがわかっただけでももうけものです.実際に勉強するかどーかは別として.

 最近は,日本の宇宙開発に関するニュースを共同英訳するプロジェクトであるJSpaceで,日本語の口語を英訳するのに四苦八苦したり,みごとな訳を見せてみらって感動したりしているのですが,逆に日本語の最適化文体ってのはどういうものなんでしょうか.plain Englishのカウンターパートになるもの.言語明瞭・意味明瞭になるような日本語での書き方の指針も勉強する必要がありそうですね.とりあえず,"plain English"を和訳したものはいい日本語になり得る気がします.

 とここまで書いて,自分の文章のデタラメさがいやになってきた.これを気にしているといつまで経っても更新できないんで,そこそこ直して結局駄文を公開してしまうワタシであったのでした.

2006年04月05日

この1ヶ月の研究関連健忘録

一ヶ月更新しないとエントリーが表示されないようなのであわてて更新します.

今回は,単なる健忘録ですので,わからないヒトは読み飛ばしてくださいませ.以下マニア以外は無視した文章がつづきます.

この一ヶ月は某グラントに申請すべく,英語でポチポチ文章を書いていました.で,こういう用途には黄金の組み合わせであるところのTeXEmacs (Meadow) + YaTeXを私もつかって仕事をすすめていたのですが,いろいろ細かなチューニングが必要でしたので,ここに書いておきます.さすれば,そのうちだれかがサーチエンジン経由で見つけて,誰かの訳に立つかもしれないじゃないですか.

(1)奥村晴彦さんの「LaTeX2e美文書作成入門・改訂第三版」の付属ツールの不具合
dvipdfmxでpngファイルをpdfに変換すると,pngファイルが薄くなってしまう不具合があります.具体的には透過ビットの処理の問題のようです.dvipdfmxを最新版に更新することで解決します.また,A4版以外を使用(たとえばレターサイズ)するときはdvipdfmxに"-p letter"などのオプションを渡す必要があります.jsarticleクラスファイルは優れもので,"english"オプションをつけると英文の場合も快適につかえます.

(2)MeadowはやっぱりMeadow3
Windows用emacsのひとつ,Meadowですが,つかうなら開発バージョンのMeadow3がおすすめ.Netinstallでfontをいれてやれば,かつてその面妖かつ複雑怪奇な設定で悪名高かったフォント設定が一発でできます.普通はwindowsフォントでいいのでしょうが,やっぱり"¥"じゃなくて"\"という私のようなひとはbdfフォントをどうぞ.

(3)MeadowとTeXと外部文法チェッカーを組み合わせる
ispellとかaspell(こっちをつかってます)といったスペルチェッカはとても優れているのですが,MS-Wordにあるような文法チェッカにこれぞというものがみつかりません.そこで,商品としてうられているStylewriterという文法チェック&スタイルチェック(受動態が多すぎるとかツッコンでくれる)ソフトを導入してみました.クリップボード経由で文書をわたせますので,Cygwinをインストールしてある環境の場合は,Meadowでリージョンを選択したのちに,M-|(縦棒)として,"detex | putclip"とすると,リージョンがdetexでTeXコマンドを取り除いたのちクリップボードに送られて便利です.

以上,ごく少数の役立つヒトには役立つ情報でした!