2006/11/26 (日)
◆ [Internet] ネットの本質は発信できることではなく連携できることにある - 22:33:22
ARTIFACT@ハテナ系経由でCNETの佐々木氏の記事(1),(2)を知りました。
こういう件を見て思うのはやはりネットに順応できた人とできていない人との断絶というのもありますが、ネットによって可能になった不特定多数対不特定多数の遠隔・非時間固定的コミュニケーションが、個々の人々にまで「相違と総意」を漠然と認識できるようにしたことの方が大きいのかもしれません。件の議論では具体策ではバラバラだったものの、編集部案では絶対にダメという総意があった(たぶん)のを編集部は無能であるために捕捉できなかったor捕捉していたけど無視したわけです。かつてなら、「総意」なるものを知ることができるのはとりまとめ役(マスコミor政治家)だけでした。しかし、現在は誰でも参加でき誰でも(参加してない人も)それぞれの総意をイメージしている。とりまとめ役の主張する総意と、それぞれのイメージする総意がどれだけ乖離しているのか、誰もが捕捉可能になっている。
ARTIFACTの記事からもリンクされているアンカテでも触れられていますが、閣僚がタウンミーティングでやらせをしていたとかいう話題、あれもまさに旧時代のやり方で、これからは通用しなくなっていくでしょう(なって欲しい)。というのも、タウンミーティングにおける総意が、どれだけ本当の総意から乖離しているのかまで明らかになるわけですから。お年寄り向けにタウンミーティングも必要でしょうけど、そろそろインターネットミーティングもやってもらえませんかね。いずれ、政治がいかに「結論を予め自分で出しておきながら意見を募って無視してこれが多数でしたと言っているか」が人々により強く意識されるようになっていくのではないでしょうか。しばらくは投票率なども低下していくでしょうけど、そのうちブチ切れて仕方ないから自分で変えようとする動きが出てくることを期待します。
あ、タイトルがおかしいとかいうツッコミは却下ね(笑)。発信できるから連携できるんやろとか。
◆ [Science|Software] Compiling Parallelized MrBayes by Visual C++ Toolkit 2003 - 14:25:18
まずはDeinoMPIをインストール。サービス起動(自動的に起動する)。スタートメニューからDeinoMPIを起動する。「Crudential Storeタブ→enable create store optionsにチェック→PasswordをNo passwordに→Encryptionをno encryptionに→LocationをRegistryに→Create Credential」の順でCredentialを作成。詳しくはマニュアルを参照。
VCToolkitのインストール先にあるvcvars32.batの環境変数を編集し、PATH・INCLUDE・LIBにDeinoMPIのbin・include・libを追加。MrBayesのソースディレクトリに以下の内容のファイルmakeMPIを作成。
CC = cl
CFLAGS = /O2 /Ox /TC /MT /DMPI_ENABLED /DWIN_VERSION
all: mrbayes.exe
mrbayes.exe: mb.obj bayes.obj command.obj mbmath.obj \
mcmc.obj model.obj plot.obj sump.obj sumt.obj
link /OPT:REF /OUT:mrbayes.exe *.obj mpi.lib
VCToolkitのコマンドプロンプトを起動し、ソースディレクトリへ移動し、
nmake -f makeMPI
でコンパイル。
実行はVCToolkitのコマンドプロンプトで
mpiexec -localonly プロセス数 実行ファイル名
以上、クラスタを組むわけではない場合。クラスタを組む場合はCredentialの作成と実行の仕方が異なる(コンパイルは同じ)。一応スレッドセーフな方が良いかということでマルチスレッド版のライブラリにリンクしているが、MPIではシングルスレッド版ライブラリでもいいような気はする。あと、起動・終了時に「lastError = 6」と出るが意味不明。bayes.cにそれらしきコードはあるんですが。これで正常に動作するかどうかも不明ですが、動作すればWindows上のMrBayesでもマルチコアCPUを限界までぶんまわせるはず。たぶん。
追記 - 14:41:30
シングルCPUマシンで動作させるとダメでした。1プロセスでも2プロセスでもAddTreeSamples error。
追記 - 14:52:33
シングルスレッド版ライブラリにリンクさせてみましたが変化無し。/DWIN_VERSIONと/DMPI_ENABLEDは同時指定を考慮していないのかもしれません。/UWIN_VERSIONを指定しても何故か効いていないようです。SFUを入れてgcc -DUNIX_VERSION -DMPI_ENABLEDでコンパイルすればいけるんじゃないかと思いますが、もうSFUアンインストールしてしまった。Cygwinでやってみるか。
追記 - 19:36:00
はっ、しまった、気絶していた(笑)。で、Cygwinでコンパイルした結果ですが、やっぱり同様でしたので-DUNIX_VERSION -DMPI_ENABLEDでもダメだということです。DeinoMPIの方が怪しいという結果だと考えていいんじゃないでしょうか。MPICH2にすると良いのかもしれません。
追記 - 21:04:01
MPICH2でも同様でした。
◆ [Hardware|Software] Athlon XPのSSEは遅い? - 10:18:25
前々から思っていたんですが387を使うバイナリの方が高速な気がする。これはMSVCに限った話ではなくてGCCでも同様の傾向を感じることがしばしばある。K8はそんなことはないんですけどねぇ・・・。
◆ [Science|Software] Compiling MrBayes by Visual C++ Toolkit 2003 - 07:50:08
昔ダウンロードしたような気がするなーということで捜索したところ、ファイルサーバの中から配布ファイルが見つかった。ということでコンパイルしてみた。
コンパイルするには、まずVCToolkitのインストール先にあるvcvars32.batの環境変数を編集し、PATH・INCLUDE・LIBにPlatform SDKのBin・Include・Libを追加する。その後、スタートメニューからVCToolkitのコマンドプロンプトを起動し、ソースのあるディレクトリへ移動する。そのディレクトリに以下の内容のファイルを作成する。
CC = cl
CFLAGS = /O2 /Ox /TC /ML /DWIN_VERSION
all: mrbayes.exe
mrbayes.exe: mb.obj bayes.obj command.obj mbmath.obj \
mcmc.obj model.obj plot.obj sump.obj sumt.obj
link /OPT:REF /OUT:mrbayes.exe *.obj
用意できたら
nmake -f ファイル名
でコンパイル。Pentium Pro以降のP6系CPU向けなら/G6をCFLAGSに追加。Pentium4・Athlon以降なら/G7。その上でSSEが使えるならCFLAGSには/arch:SSEを追加。SSE2も使えるなら/arch:SSE2。
で、実行速度は、最速です。まぁ、当たり前ですわな。ICC使えばもっと速くなるのかもしれませんけど、Cygwinの-mno-cygwinでコンパイルしたものの2倍弱です。配布に問題無ければ後で第五次元のバイナリをこれに差し替えよう。
◆ [Science|Software] Compiling MrBayes by Visual C++ 2005 Express - 05:24:16
Windows上で使うにはこれが一番速いだろうということでVC2005 + Platform SDKを入れてやってみた。確かにCygwinで-mno-cygwinでコンパイルしたバイナリよりは速いんだが、SFU上でガンガン最適化をかけて標準のGCC-3.3でコンパイルしたバイナリより若干遅い。そんなぁー。VC2003の方が最適化機能は良いという話もあるんですが、無償配布されていたVC2003ToolkitはVC2005Expressの無償公開恒久化と同時に公開終了となってしまって現在入手不能。うーん。
◆ [Life] 祝!? 老化度+1 - 00:56:08
本日で26歳になりました。なんかひたひたとみそじという言葉が迫ってくる感があります。