[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002429] NArray + MPI の使い道



吉川です。

ところで,吉川さんは Ruby で MPI を使われているのですね.NArray
を使うということは並列計算でしょうか.よろしければ,どんなことを
されているのか,この ML 宛てに流して頂けないでしょうか.

 はい、そのとうり、並列計算をしようとしています。

 で、その並列計算を何に使うのかというと、電子顕微鏡の写真からモーター 蛋白分子の3次元構造を再構成するのに使っています。モーター蛋白分子の3 次元構造をみることで、どのように化学エネルギー(ATP)を、動きという物理 的なエネルギーに変えているのかを調べています。そのあたりの詳しいことは
http://wwwsoc.nii.ac.jp/jps/jps/butsuri/butsuri2003.html
の「構造から探る生物分子モーター・キネシンのしくみ」あたりをみてくださ るのがよいかと思います。(メールをいただければ pdf をお送りします。)


その中で、NArray + MPI は、電子顕微鏡の写真の解析に使われています。 電子顕微鏡で撮った蛋白分子の写真は、とてもノイズの多い写真なので、たく さんの蛋白分子の投影写真を重ね合わせて S/N をあげなくてはいけません。 さらに、重ね合わせの前に、その蛋白分子をすべて同じ場所に alignment す る必要があります。たとえば、数千から数十万の蛋白分子の像を、FFTを使っ てあるreferenceと同じ場所に来るようにalignment しています。この部分は Ruby-FFT3を使わせて頂いています。あ、そうそう、rb-gslもよく使っていま す。(http://rubyforge.org/projects/rb-gsl/)

 5年くらい前までは、そうした比較->alignmentは C や Fortran のプログラ ムを使って行っていましたが、使用可能なメモリ量が増えたことで、Ruby + NArrayを使って書いても遜色ないスピード実行できるようになりました。 Rubyの書きやすさと、NArrayの強力なメソッド群のお陰で、プログラムの開発 効率は 5-10倍あがったというのが実感です。

 それでも、データ量が増えると比較->alignmentの部分は数時間から1日く らいかかることが多くなってきました。そこで、Linux clusterを使ってスピ ードアップできないかと思い、NArray + MPI を試しているところです。MPIは http://mpiruby.sourceforge.net/ を使いました。Master + Slaveという形 で、比較のjobを複数の CPU に振り分けて実行スピードをあげています。うま く動いているようですし、それぞれのjobは完全に独立なので、CPUの数だけス ピードアップできそうです。

 スピードアップの方法としては、他に vectorize ( Altivec or SSE3 )、既 存の matrix ライブラリの NArrayへの組み込みなどを試したいのですが、時 間とスキルが無いので dennou-rubyのソフト資源から何かお借りできないか と、メーリングリストをのぞいています。


ではでは


-- ------------------------------------------------- Masahide Kikkawa, M.D., Ph. D. Assistant Professor, Department of Cell Biology University of Texas, Southwestern Medical Center 5323 Harry Hines Blvd. Dallas, Texas, 75390-9039 tel 214-648-6333 Room J2.118 fax 214-648-8694 Lab phone 214-648-6340 -------------------------------------------------