2010年12月11日土曜日

ICCとか諸々

現在PeggyのOSをまた変更中。
理由は64bit SUSEがPeggyマシン上では安定しないため。

MacにBootcampで入れたのはかなり安定してるのにね・・・・何じゃろ。

今度はDebianを入れる。前に入れようとしたときには色々と面倒で敬遠してしまったのを再チャレンジである。Linuxは手軽にディストロが交換できるのが利点の一つですよね。


ディストロを変えるにあたって注目したのはICCの導入である。

Debianでは64bitでもICC自体は素直に導入することができたが、前々から躓いていたOpenMPIをICCでビルドするのは相変わらずできない。

自分が持っているのはCCコンパイラだけなので、ifortとかも必要なのが原因の一つであると予想している。というか吐き出されるエラーメッセージを見てもこのくらいしか解らん。余裕があるときにでもICCパッケージを揃えたいものだ。OpenMPIをICCでビルドできれば更に計算速度の短縮が期待できると思われる。

ICCに拘るのは系統解析の速度が格段に上昇するからである。RAxMLとかではそこまで目立った効果は見られなかったが、MrBayesでは効果覿面。特にMPI版で。

具体的には、100taxa弱の1遺伝子アミノ酸解析(4~500aa)のデータセットで比較した場合。同じ64bit環境で、GCCでビルドしたmbを8コアで走らせる場合と、ICCでビルドしたmbを5,6コアで走らせる解析が同じくらいの速さ。


なんだそんだけか、と思うかもしれないが、この効果は使えるコア数が上昇することで驚くべき違いになる。

系統解析ソフトウェアの開発では、個人的にはハードウェア的な問題よりもソフトウェア的な問題がより重大であると考えている。すなわち、より高性能なプロセッサを作ったりとかいうよりは、より高速な言語でより効率的なアルゴリズムを採択した最適なソースを書き、それをより高性能なコンパイラでコード生成を行うことを優先課題とする。ここら辺は系統解析のプログラムが「誰でも簡単に使えること」もある程度考慮していることにも起因している。しかしながら、これらの功績というのは、例えばクラスタを使ったりとかハード的にも豊富なリソースを確保することでより昇華されるだろう。

特にこれからPhylogenomicで大規模データセット解析をバンバンやるような時代になるだろうから、それを踏まえて新たなプログラムを開発することは必ず需要のあることだろう。僕もそういうようなことをしていきたいと考えている。



現状ではPhylogenomicに適したプログラムとは「複雑なモデルを使うことが出来、かつそれを使った計算を並列処理などにより高速に実現できる」ものであろうが、現存する最尤法、ベイズ法はそれに対して各々問題を抱えている。

ベイズ法は複雑なモデルを実装することには適しているが、現行のMrBayesなどのプログラムはMCMCを採択するため、並列処理の際プロセス間で同期をとる必要があり、これが高速化に対する足枷となる。
また、最尤法は各プロセスを同期させる必要はないため高速化には向いているが、ベイズ法のような複雑なモデリングができないのである。

ベイズ法であれ、最尤法であれ、これらの問題をどう解決するかが次世代のソフトウェアに求められることである。

話は変わるが、樹形探索については遺伝的アルゴリズムを採択するのが高速なプログラム開発には向いているらしいが、大規模データセットを解析する際に遺伝的アルゴリズムが「最適化問題に対するアプローチとして最も効率的であるか」は解らない。

聞いた話では、系統樹構築のような最適化問題には遺伝的アルゴリズムよりはタブー探索の方が樹形空間の探索効率という面で考えればより適切であるとのことであるが・・・例えば最初はタブー探索によって広域に探索を行い、ある尤度の山が他の尤度の山よりは高いだろうという予測が「ある程度」立つならば、その後その山の頂上を目指す際には遺伝的アルゴリズムに切り替えるとか、そういうのは可能なのだろうか・・・?


話が脱線してきたからここでやめとく。
そういやPhyloBayes,nh-PhyloBayesもICCでコンパイルできなかったのだった。これは日曜日にでもチャレンジしてみるか。

0 件のコメント: