訂正::例の大関は、実は仮病だったっぽいですね。うーん、どうだったんか。
編集::2007/08/02//13:36
かなりバッシングが強いらしい。朝青龍に対して。うーん、嘘だったっていうんだったら、その判断を下した病院名と医師の名を公開すべきだよ。診断書に嘘を書いた人間の権威を奪うべきだと思う。だって、今後どんな形で偽証されるか分からないし、少なくとも警視庁はぜひ知るべきだと思う。ネットで調べれば誰でも分かることなのかもしれないけどさ。なぜその医師を叩かないで朝青龍だけなのかって所が疑問ですよ。
2007年7月31日火曜日
事情があって
事情がありまして、現在徹夜中です。
いやはや、終電って大事ですよ。
時間は覚えておかないといけません。
しかぁし、ちょっと面白いブログを見つけました。
その写真の綺麗な事!
青空が最高!
飯がうまそう!!
猫かわいい!!!
PCすげぇ!!!!
「お気楽」と「怪談」でgoogle検索して見ました。
それくらい気分を変えてほしかったんです。
sobadoujyou.blog.ocn.ne.jp/daiku/
癒されましたね〜本当に写真が綺麗です。
構図も綺麗だし、色合い、コントラスト、
美的センスがあるなあと、おもったら絵も描く人らしいです。
僕とは別の側にいる人(僕は絵を書くのも歌うのもダメダメな芸術センス0)
なので、非常に癒されました。ときどき訪れたいサイトです。
いやはや、終電って大事ですよ。
時間は覚えておかないといけません。
しかぁし、ちょっと面白いブログを見つけました。
その写真の綺麗な事!
青空が最高!
飯がうまそう!!
猫かわいい!!!
PCすげぇ!!!!
「お気楽」と「怪談」でgoogle検索して見ました。
それくらい気分を変えてほしかったんです。
sobadoujyou.blog.ocn.ne.jp/daiku/
癒されましたね〜本当に写真が綺麗です。
構図も綺麗だし、色合い、コントラスト、
美的センスがあるなあと、おもったら絵も描く人らしいです。
僕とは別の側にいる人(僕は絵を書くのも歌うのもダメダメな芸術センス0)
なので、非常に癒されました。ときどき訪れたいサイトです。
2007年7月30日月曜日
サイドバーに最近のコメントを
bloggerというのはまだベータ版らしいですね。サイドバーにコメント一覧をgooでは出していて結構重宝していたのですが、bloggerにもあるという事で付けてみました。
ブログの表示自体は軽いと思います?
余計なスクリプトや広告を入れないようにしています。僕は他人のブログを見るときに表示が遅いのは極力避けることにしてるから。
まだgromacsに未練が^^;
4cpu限定でなにか仕事させてみたいと思います。
あるいはコードを見て原因を探ってみたいなと。
最近吃驚(びっくり)したこと1。
朝青龍の故障が本当で、「レントゲン検査上、今でも手術をしなくてはいけないほどの状態」だったようです。その体でモンゴルまで行ってサッカーって、すげぇ体力だな。そういう人はなんか動けるから無理しちゃうんでしょうかね?これにはビックリした。まぁ、自分の故郷にかえってのんびりしたい気持ちは分かるので、ちゃんと事情を話して帰れば問題なかったのにね。
最近吃驚したこと2。
auがgoogleと提携したそうです。携帯から直接gmailを操作出来て、トップページにgoogleが組み込まれるそうです。が!!!これって意味あるの???通信料気にしなければhotmailでも携帯からWEBメール使えるらしいしね。通信料が無料ってなら話が分かるのだが。
ブログの表示自体は軽いと思います?
余計なスクリプトや広告を入れないようにしています。僕は他人のブログを見るときに表示が遅いのは極力避けることにしてるから。
まだgromacsに未練が^^;
4cpu限定でなにか仕事させてみたいと思います。
あるいはコードを見て原因を探ってみたいなと。
最近吃驚(びっくり)したこと1。
朝青龍の故障が本当で、「レントゲン検査上、今でも手術をしなくてはいけないほどの状態」だったようです。その体でモンゴルまで行ってサッカーって、すげぇ体力だな。そういう人はなんか動けるから無理しちゃうんでしょうかね?これにはビックリした。まぁ、自分の故郷にかえってのんびりしたい気持ちは分かるので、ちゃんと事情を話して帰れば問題なかったのにね。
最近吃驚したこと2。
auがgoogleと提携したそうです。携帯から直接gmailを操作出来て、トップページにgoogleが組み込まれるそうです。が!!!これって意味あるの???通信料気にしなければhotmailでも携帯からWEBメール使えるらしいしね。通信料が無料ってなら話が分かるのだが。
本格的にストップ
MPICH-1.2シリーズの利点は各ホストマシンでデーモンを立ち上げなくてよいこと、すなわち管理の手間がそれだけ省けるという事だ。
MPICH-2やOPENMPI,LAM/MPIはデーモンを立ち上げなくてはいけない。MPICH-1.2シリーズで運営していたクラスターに、適応するには非常に面倒な事になる。
…たぶん入れてもよいだろうが、やはり後継のMPICH-2が希望されると思うが、pythonをアップデートする必要がある…。
GROMACSの使用方法や、オプションなどの変更方法などを追求するのはここでストップした方が良いようです。かといってNAMDを使いたいとは思わない。GROMACSの良い所は、アプリケーションが融合していない、インタラクティブなスクリプトが無い(tclやpythonなどを使った特殊言語)ところと、マニュアルがしっかりしているところと、面倒な温度制御(多段階制御)がちゃんと理路整然と入っている所と、マルチメディア命令を使ってループ計算をfortranや通常のCより早く処理できるようにソースファイルレベルで最適化されている事。
今後使えるようならNAMDかGROMACSを使ってみたいので、改良方法などを考えておく
事とするかな。fortranでも良いのだが、フリーではないんだよね。
pythonで面倒くさいインプット入力をさせて、fortranに渡して、
fortranでMPIプログラムを作る事も可能だ。
計算速度はここの言語のコンパイラオプションやループの作り方とかにも依存するんだけど、やはり系が大きくなると、通信速度や処理方法が問題となる。その点MPICH2が今のところベストな選択であるようだ。
GAMESSについてくるDDI(というのか?)の通信プログラムはMPICHより良いのじゃないかと思う。それでMD書くかな…。
MPICH-2やOPENMPI,LAM/MPIはデーモンを立ち上げなくてはいけない。MPICH-1.2シリーズで運営していたクラスターに、適応するには非常に面倒な事になる。
…たぶん入れてもよいだろうが、やはり後継のMPICH-2が希望されると思うが、pythonをアップデートする必要がある…。
GROMACSの使用方法や、オプションなどの変更方法などを追求するのはここでストップした方が良いようです。かといってNAMDを使いたいとは思わない。GROMACSの良い所は、アプリケーションが融合していない、インタラクティブなスクリプトが無い(tclやpythonなどを使った特殊言語)ところと、マニュアルがしっかりしているところと、面倒な温度制御(多段階制御)がちゃんと理路整然と入っている所と、マルチメディア命令を使ってループ計算をfortranや通常のCより早く処理できるようにソースファイルレベルで最適化されている事。
今後使えるようならNAMDかGROMACSを使ってみたいので、改良方法などを考えておく
事とするかな。fortranでも良いのだが、フリーではないんだよね。
pythonで面倒くさいインプット入力をさせて、fortranに渡して、
fortranでMPIプログラムを作る事も可能だ。
計算速度はここの言語のコンパイラオプションやループの作り方とかにも依存するんだけど、やはり系が大きくなると、通信速度や処理方法が問題となる。その点MPICH2が今のところベストな選択であるようだ。
GAMESSについてくるDDI(というのか?)の通信プログラムはMPICHより良いのじゃないかと思う。それでMD書くかな…。
2007年7月28日土曜日
動きません。
GROMACSの方ですが、mpich-1.2.7にバージョンを上げてみました。
そうするとSSE2がちゃんとうごいているよというメッセージを最後にハングしました。
mpich2は大規模にシステムを変えなければいけないのでOPENMPIを選択して
現在コンパイル中です。
http://www.open-mpi.org/
LAM/MPIの次期バージョンということで、これから使うならこっちの方がよいかなと。
しかし静的リンクを行うのを推奨していないので、微妙ですが。
---openmpi-ダメですね。rsh通信が出来ないようです。
staticリンクが出来なかったのでライブラリ関係が心配でしたがそれはクリア
していたようです。しかし…本家サイトにあるようにhostを指定しても
hostfileをperlで用意しても、無駄。(TT)
なんか無駄な事してたなぁ…。
4cpuで五万原子でPMEで一日あたり0.3nsec計算できるようです。
うーんと、やっぱ4cpuで使うかな?
脱力感が抜けません。
やっと夏らしくなったので、ここで怪談ページのリンクを張っておきますかね。
稲生物怪録をば。
http://ww22.tiki.ne.jp/~ballet/mononoke/index.html
この怪談は実話だと言われている説もあるようです。
注意して読んでいくと次の点に気がつきます。
目を瞠る程の怪異が起こるのは一人の時だけで、話を聞いた近在の人間がいるときは畳が動いたり家鳴りがするだけ。あとは主人公と非常に親しい人物が一緒の時や、主人公だけの時、とんでもない化け物が出てくる。
主人公は友人がたくさんいるタイプだったようなので、そいつらが集まれば、家鳴りや畳を動かしたりとかできますね。それとか下男に噂を言い触らさせたりするような事も容易だし。事のきっかけとなった相撲取り(おそらく計画犯)が亡くなったりしたのも、実はただ失踪しただけかもしれない(身持ちが悪く方々を転々としていたらしい)。失踪ではないのならば、すべてのストーリーはこの相撲取りを毒殺する為に、健康なのに急死したという事実を隠蔽する為に作られた物なのか?(その相撲取りから怪異を聞いて尋ねてきた人は居ない)しかしメリットのあるような人物は出てこない。すべての怪異がトリックだとしたら…こんな風に邪推すると結構おもしろいですね。
そうするとSSE2がちゃんとうごいているよというメッセージを最後にハングしました。
mpich2は大規模にシステムを変えなければいけないのでOPENMPIを選択して
現在コンパイル中です。
http://www.open-mpi.org/
LAM/MPIの次期バージョンということで、これから使うならこっちの方がよいかなと。
しかし静的リンクを行うのを推奨していないので、微妙ですが。
---openmpi-ダメですね。rsh通信が出来ないようです。
staticリンクが出来なかったのでライブラリ関係が心配でしたがそれはクリア
していたようです。しかし…本家サイトにあるようにhostを指定しても
hostfileをperlで用意しても、無駄。(TT)
なんか無駄な事してたなぁ…。
4cpuで五万原子でPMEで一日あたり0.3nsec計算できるようです。
うーんと、やっぱ4cpuで使うかな?
脱力感が抜けません。
やっと夏らしくなったので、ここで怪談ページのリンクを張っておきますかね。
稲生物怪録をば。
http://ww22.tiki.ne.jp/~ballet/mononoke/index.html
この怪談は実話だと言われている説もあるようです。
注意して読んでいくと次の点に気がつきます。
目を瞠る程の怪異が起こるのは一人の時だけで、話を聞いた近在の人間がいるときは畳が動いたり家鳴りがするだけ。あとは主人公と非常に親しい人物が一緒の時や、主人公だけの時、とんでもない化け物が出てくる。
主人公は友人がたくさんいるタイプだったようなので、そいつらが集まれば、家鳴りや畳を動かしたりとかできますね。それとか下男に噂を言い触らさせたりするような事も容易だし。事のきっかけとなった相撲取り(おそらく計画犯)が亡くなったりしたのも、実はただ失踪しただけかもしれない(身持ちが悪く方々を転々としていたらしい)。失踪ではないのならば、すべてのストーリーはこの相撲取りを毒殺する為に、健康なのに急死したという事実を隠蔽する為に作られた物なのか?(その相撲取りから怪異を聞いて尋ねてきた人は居ない)しかしメリットのあるような人物は出てこない。すべての怪異がトリックだとしたら…こんな風に邪推すると結構おもしろいですね。
2007年7月27日金曜日
ショックだ。。。
Gromacsネタ
えっと、僕は並列計算が可能なように二種類程コンパイルしました。
MPICH1.2.5とMKLを使うバージョン
MPICH1.2.5とfftw-3.1を使うバージョン
そして、CPUが4を越えると、動かなくなる(hung up)状態になるんです。
コンパイルの仕方が悪かったのかと考えつつメーリングリストをみると、
MPICH.1.2.*では4以上だとhungする。MPICH2.1.*ならいけると
報告している人がいた!2006年だから、ちょうどgromacs-3.3.1で
同じバージョンだ!!
つまりmpich.2.1以前は対応していないんだよね、GROMACS…。
動かなくなるという現象はPMEやPPPMを使った時に生じます。
particle mech ewald, particle-particle Particle-Mesh ,の略です。
静電相互作用の計算方法です。
で、いれるしかないよね?こうなったら…。MPICH2.1を!!
えっと、僕は並列計算が可能なように二種類程コンパイルしました。
MPICH1.2.5とMKLを使うバージョン
MPICH1.2.5とfftw-3.1を使うバージョン
そして、CPUが4を越えると、動かなくなる(hung up)状態になるんです。
コンパイルの仕方が悪かったのかと考えつつメーリングリストをみると、
MPICH.1.2.*では4以上だとhungする。MPICH2.1.*ならいけると
報告している人がいた!2006年だから、ちょうどgromacs-3.3.1で
同じバージョンだ!!
つまりmpich.2.1以前は対応していないんだよね、GROMACS…。
動かなくなるという現象はPMEやPPPMを使った時に生じます。
particle mech ewald, particle-particle Particle-Mesh ,の略です。
静電相互作用の計算方法です。
で、いれるしかないよね?こうなったら…。MPICH2.1を!!
2007年7月26日木曜日
息抜き
にゃっちもさっちも
今日は別件で忙しかったのでGromacsをいじることが出来ませんでした。いつもはortran77のみ(perlあるいはpython)で処理するので、C言語のstructやtypedefに非常に戸惑いを感じています。昨日の夜やっていたのが、苦Cです。
http://homepage3.nifty.com/mmgames/c_guide/
一応最後まで読み切りました(これまでにもちょっとずつ読んでいた。)commonに相当する事やallocateとかも出来るようです。
一応一通りはC言語のプログラムで書いてあることは分かるはず^^;printfとかfgetsとか、関数、ではなくて、書式とかという意味で。(標準関数は覚えなくとも後付けで必要なのが分かってくる)
しかーし。structの内部データにアクセスするときに、structのあるデータのポインタを渡している(メモリ上のアドレスで、これが分かれば値を取りにいける)部分が一杯出てきています。で、どこでそのstructを定義しているの?というのが分からず。
小さい解析用のプログラムでも見て練習したほうがよいようです。
hotmail vs gmail
とある友人からのネタで、gmailのフェッチ機能をhotmailに適応出来きるかどうか調べてよと、言われて、僕は調べてみたんです。
なんと、hotmailはPOP3サーバー持っていなかったんですね!昔からのhotmailユーザーだったので、結構ショックでした。何時OEで受け取れなくなったんだろうかというと、2004年ということ。元々hotmail使っていてもOEでは受け取っていませんでした。(OE::Outlook Express) それはあまりにも勧誘メールがひつこかったからというのが大きかったんですね。そして次第に使わなくなっていって、アカウントは消失してしまいました。最近になって新たにアカウントをhotmailで取ったのですが、同時期にgoogleでも取ってみていたんです。しばらくどちらをメインでということでも悩んだのですが、googleにはigoogleというサービスがあって、自分の好きなアイテムを登録できるというのが気に入って、すべてのオンラインで利用しているサービスをgoogleに集約させる事にしました。hotmailはこれから使えなくなるのでしょうか?windows live hotmailが次期hotmailという事らしいですが、テキスト送信が出来ないということを聞くとアレルギーが^^;昔のhotmailだってテキスト送信できたのに。
どちらにしろ、gmailはhotmailをfetch出来ないという事には代わりが無いようです。一方で、hotmailではないけれども、windows liveというソフトであらゆるweb mailが受け取れる事で対応出来るようですね。
googleならば、文書などを共有できるというのが良いですね。共同でプログラムコードも作れたりして!
今日は別件で忙しかったのでGromacsをいじることが出来ませんでした。いつもはortran77のみ(perlあるいはpython)で処理するので、C言語のstructやtypedefに非常に戸惑いを感じています。昨日の夜やっていたのが、苦Cです。
http://homepage3.nifty.com/mmgames/c_guide/
一応最後まで読み切りました(これまでにもちょっとずつ読んでいた。)commonに相当する事やallocateとかも出来るようです。
一応一通りはC言語のプログラムで書いてあることは分かるはず^^;printfとかfgetsとか、関数、ではなくて、書式とかという意味で。(標準関数は覚えなくとも後付けで必要なのが分かってくる)
しかーし。structの内部データにアクセスするときに、structのあるデータのポインタを渡している(メモリ上のアドレスで、これが分かれば値を取りにいける)部分が一杯出てきています。で、どこでそのstructを定義しているの?というのが分からず。
小さい解析用のプログラムでも見て練習したほうがよいようです。
hotmail vs gmail
とある友人からのネタで、gmailのフェッチ機能をhotmailに適応出来きるかどうか調べてよと、言われて、僕は調べてみたんです。
なんと、hotmailはPOP3サーバー持っていなかったんですね!昔からのhotmailユーザーだったので、結構ショックでした。何時OEで受け取れなくなったんだろうかというと、2004年ということ。元々hotmail使っていてもOEでは受け取っていませんでした。(OE::Outlook Express) それはあまりにも勧誘メールがひつこかったからというのが大きかったんですね。そして次第に使わなくなっていって、アカウントは消失してしまいました。最近になって新たにアカウントをhotmailで取ったのですが、同時期にgoogleでも取ってみていたんです。しばらくどちらをメインでということでも悩んだのですが、googleにはigoogleというサービスがあって、自分の好きなアイテムを登録できるというのが気に入って、すべてのオンラインで利用しているサービスをgoogleに集約させる事にしました。hotmailはこれから使えなくなるのでしょうか?windows live hotmailが次期hotmailという事らしいですが、テキスト送信が出来ないということを聞くとアレルギーが^^;昔のhotmailだってテキスト送信できたのに。
どちらにしろ、gmailはhotmailをfetch出来ないという事には代わりが無いようです。一方で、hotmailではないけれども、windows liveというソフトであらゆるweb mailが受け取れる事で対応出来るようですね。
googleならば、文書などを共有できるというのが良いですね。共同でプログラムコードも作れたりして!
2007年7月25日水曜日
GROMACSの特殊な環境へのインストール
通常のPCでlinuxであれば、結構楽にインストールする事が出来ます。しかし、大型計算機で私的に使いたいという要望がある時は別の問題が発生します。システムレベルでリンクライブラリが定義されていないような物をリンクする必要が生じるからです。通常はそのような場合はstaticリンクを用いて回避します。しかしMKLはstaticリンクの方法を間違えると非常にややこしい事に陥ります。
通常は動的ライブラリとして-lmklというオプションをリンク時に与えればいいのですが、上のような状況でさらにMPICHで並列化処理をしたいとなると、どこかのノードでlibmkl.soなんてみつからないぞとエラーを言ってきます。さらにはiccの最新バージョンをやはり私的に使用していると同じような事になります。
dynamic linkできないという問題です。
元々のシステムのコンパイラを使えばよいっていっても最新の外注プログラムは動かないんですよ。新しくしないと。
そこで、mpichとicc,ifort,mklを/home/hoge/intel/内にインストールしている場合
どうするかを以下に書こうと思います。
というよりはスクリプトを作って対応しました。
----chconfig.csh----
#!/bin/csh
setenv INSTALLDIR /home/hoge/program/gromacs-3.3.1
setenv COMPDIR /home/hoge/intel
echo just installing mdrun_mpi $INSTALLDIR
echo making configure for MPICH MKL ICC static
setenv CC icc
setenv CXX icpc
setenv MPICC $COMPDIR/mpich/bin/mpicc
setenv F77 ifort
setenv MKLPATH $COMPDIR/mkl/8.0.2/lib/32
setenv MKLIPTH $COMPDIR/mkl/8.0.2/include
setenv ICCPATH $COMPDIR/cc/9.0/lib
setenv LD_LIBRARY_PATH /home/hoge/intel/mkl/8.0.2/lib/32:/home/hoge/intel/cc/9.0/lib
setenv LDFLAGS "$LDFLAGS -L$MKLPATH -lmkl_ia32 -lguide -lpthread "
setenv CPPFLAGS " -I$MKLIPTH"
setenv CXXFLAGS " -I$MKLIPTH"
sed "s/-lmkl /-lmkl_ia32 -lguide -lpthread /g" configure |cat > test
sed "s/LDFLAGS -all-static/LDFLAGS -static/g" test |cat > configure.int.static
rm test
echo "configure"
chmod +x configure.int.static
./configure.int.static --enable-double --enable-mpi --disable-nice --with-fft=mkl --program-suffix=_mpi --prefix=$INSTALLDIR --enable-all-static
echo "compile"
make mdrun
echo "install"
make install-mdrun
echo "all done"
ldd $INSTALLDIR/bin/mdrun_mpi
----------------------end of script-----------
この中核となるのが、configureのsedによる編集部分です。-lmklが自動的に設定されるので動的リンクが働いて --enable-all-staticのオプションが動作しませんでした。さらにiccでは-all-staticというオプションがないので、-staticに変えないとダメでした。
DFTのMKLのroutineを使う際にするオプション"-lmkl_ia32 -lguide -lpthread"はそのままstaticリンクを行います。これだけではiccの方が見失うのでやはり-staticは必要でした。
このスクリプトでmdrun_mpiという並列専用のMdアプリケーションを作成する事が出来ました。
今度は別で、どうやってキューイングシステムに入れて計算させるかという事が必要となります。mpirunをコントロールするスクリプトscriptAがあるシステムを使っている場合、
投入時のスクリプトの最後の方に
scriptA miprun mdrun_mpi -N 2 -s $TPR -o $TRR -g $LOG
と書けば、アーカイブ化されたインプット$TPRを用いて$LOGにログを出力し、$TRRに座標を出力するように出来ます。
で、なんとか計算させることが出来ました。
mdrun以外のアプリケーションを非並列で、倍精度の条件で、-enable-all-staticを使ってコンパイルするとdynamicリンクしているのがlddコマンドで分かります。なので、
上のスクリプトで--program-suffix=_statとして、make&make installに書き換えてやると…成功しました!!これだけで2時間はかかった。_statには意味がない。並列でもシングルでも動くライブラリ非依存のプログラムが完成しました。これで、同じ機械上ならば、動的ライブラリを参照する事無く使えます。
走らせてやると、2cpuで、並列効率98%、一日で4.89nsecほど(@6000原子程)。
かなり早いらしい…。
次はこのプログラムの中身を解読し、独自の関数を埋め込まなければいけません。
そのために孤立系を用意しなければ。
通常は動的ライブラリとして-lmklというオプションをリンク時に与えればいいのですが、上のような状況でさらにMPICHで並列化処理をしたいとなると、どこかのノードでlibmkl.soなんてみつからないぞとエラーを言ってきます。さらにはiccの最新バージョンをやはり私的に使用していると同じような事になります。
dynamic linkできないという問題です。
元々のシステムのコンパイラを使えばよいっていっても最新の外注プログラムは動かないんですよ。新しくしないと。
そこで、mpichとicc,ifort,mklを/home/hoge/intel/内にインストールしている場合
どうするかを以下に書こうと思います。
というよりはスクリプトを作って対応しました。
----chconfig.csh----
#!/bin/csh
setenv INSTALLDIR /home/hoge/program/gromacs-3.3.1
setenv COMPDIR /home/hoge/intel
echo just installing mdrun_mpi $INSTALLDIR
echo making configure for MPICH MKL ICC static
setenv CC icc
setenv CXX icpc
setenv MPICC $COMPDIR/mpich/bin/mpicc
setenv F77 ifort
setenv MKLPATH $COMPDIR/mkl/8.0.2/lib/32
setenv MKLIPTH $COMPDIR/mkl/8.0.2/include
setenv ICCPATH $COMPDIR/cc/9.0/lib
setenv LD_LIBRARY_PATH /home/hoge/intel/mkl/8.0.2/lib/32:/home/hoge/intel/cc/9.0/lib
setenv LDFLAGS "$LDFLAGS -L$MKLPATH -lmkl_ia32 -lguide -lpthread "
setenv CPPFLAGS " -I$MKLIPTH"
setenv CXXFLAGS " -I$MKLIPTH"
sed "s/-lmkl /-lmkl_ia32 -lguide -lpthread /g" configure |cat > test
sed "s/LDFLAGS -all-static/LDFLAGS -static/g" test |cat > configure.int.static
rm test
echo "configure"
chmod +x configure.int.static
./configure.int.static --enable-double --enable-mpi --disable-nice --with-fft=mkl --program-suffix=_mpi --prefix=$INSTALLDIR --enable-all-static
echo "compile"
make mdrun
echo "install"
make install-mdrun
echo "all done"
ldd $INSTALLDIR/bin/mdrun_mpi
----------------------end of script-----------
この中核となるのが、configureのsedによる編集部分です。-lmklが自動的に設定されるので動的リンクが働いて --enable-all-staticのオプションが動作しませんでした。さらにiccでは-all-staticというオプションがないので、-staticに変えないとダメでした。
DFTのMKLのroutineを使う際にするオプション"-lmkl_ia32 -lguide -lpthread"はそのままstaticリンクを行います。これだけではiccの方が見失うのでやはり-staticは必要でした。
このスクリプトでmdrun_mpiという並列専用のMdアプリケーションを作成する事が出来ました。
今度は別で、どうやってキューイングシステムに入れて計算させるかという事が必要となります。mpirunをコントロールするスクリプトscriptAがあるシステムを使っている場合、
投入時のスクリプトの最後の方に
scriptA miprun mdrun_mpi -N 2 -s $TPR -o $TRR -g $LOG
と書けば、アーカイブ化されたインプット$TPRを用いて$LOGにログを出力し、$TRRに座標を出力するように出来ます。
で、なんとか計算させることが出来ました。
mdrun以外のアプリケーションを非並列で、倍精度の条件で、-enable-all-staticを使ってコンパイルするとdynamicリンクしているのがlddコマンドで分かります。なので、
上のスクリプトで--program-suffix=_statとして、make&make installに書き換えてやると…成功しました!!これだけで2時間はかかった。_statには意味がない。並列でもシングルでも動くライブラリ非依存のプログラムが完成しました。これで、同じ機械上ならば、動的ライブラリを参照する事無く使えます。
走らせてやると、2cpuで、並列効率98%、一日で4.89nsecほど(@6000原子程)。
かなり早いらしい…。
次はこのプログラムの中身を解読し、独自の関数を埋め込まなければいけません。
そのために孤立系を用意しなければ。
2007年7月23日月曜日
demoをやってみた。
普通のlinuxの環境ならfortranが入っていないかもしれない。入っていなくてもintel fortran compilerとintel math kernel librallyを無償で入手する事が出来る(linux版のみ)
http://www.intel.com/cd/software/products/asmo-na/eng/340679.htm
最新版になっているんですね。とりあえず、math kernel librally以外は最初に入っているgccがあればなんとかいけそうです。
/usr/local/gromacs/share/tutor/gmxdemo/
というディレクトリの中にデモプログラムがあります。
このディレクトリを適当な場所にコピーして
./demo
と実行すると、インタラクティブにスクリプトが動いてMDを体験できます。そもそもMDってなんだ?という事をここではまったく説明していませんが^^;
そうすると、下の絵のように、小さいαhelixのタンパク質が周期境界条件下で動かせたという事になります。(別途VMDというフリーソフトでスナップショットを描画)

赤は酸素、白は水素、青は窒素、黄色は砒素を表しています。灰色は炭素です。真ん中の灰色のネジ見たいな物がタンパク質(ペプチド)で、周期境界条件なのでイメージングされたものが奥に見えます。実際に計算しているのは真ん中のペプチドと周囲の水だけです。
計算して分かったのが、demoの最後のMDのトラジェクトリをg_hbondで評価してやると
最初の構造から急に水素結合の数が増えます。これは最初の構造が空間が空いていたような
構造出会ったことを意味するのだろうと思います。demoのスクリプトをいじってやると
水のポテンシャルの形やタンパク質のポテンシャルの形、温度や圧力制御の方法などなど
を変えてみる事が出来ます。内容物を変えていくらでも考えることはいっぱいあるでしょうね。
GROMACSのソースコードを今読んでいます。一番の親となるコードを発見し、
fortranのように楽勝で読み取れるというわけではないのがわかりました。
C言語らしく、小さな関数の寄せ集めで、ルートをたどるのが面倒です。
http://www.intel.com/cd/software/products/asmo-na/eng/340679.htm
最新版になっているんですね。とりあえず、math kernel librally以外は最初に入っているgccがあればなんとかいけそうです。
/usr/local/gromacs/share/tutor/gmxdemo/
というディレクトリの中にデモプログラムがあります。
このディレクトリを適当な場所にコピーして
./demo
と実行すると、インタラクティブにスクリプトが動いてMDを体験できます。そもそもMDってなんだ?という事をここではまったく説明していませんが^^;
そうすると、下の絵のように、小さいαhelixのタンパク質が周期境界条件下で動かせたという事になります。(別途VMDというフリーソフトでスナップショットを描画)

赤は酸素、白は水素、青は窒素、黄色は砒素を表しています。灰色は炭素です。真ん中の灰色のネジ見たいな物がタンパク質(ペプチド)で、周期境界条件なのでイメージングされたものが奥に見えます。実際に計算しているのは真ん中のペプチドと周囲の水だけです。
計算して分かったのが、demoの最後のMDのトラジェクトリをg_hbondで評価してやると
最初の構造から急に水素結合の数が増えます。これは最初の構造が空間が空いていたような
構造出会ったことを意味するのだろうと思います。demoのスクリプトをいじってやると
水のポテンシャルの形やタンパク質のポテンシャルの形、温度や圧力制御の方法などなど
を変えてみる事が出来ます。内容物を変えていくらでも考えることはいっぱいあるでしょうね。
GROMACSのソースコードを今読んでいます。一番の親となるコードを発見し、
fortranのように楽勝で読み取れるというわけではないのがわかりました。
C言語らしく、小さな関数の寄せ集めで、ルートをたどるのが面倒です。
2007年7月22日日曜日
GROMACSを動かした見た感想
--enable-doubleで倍精度が出るようになりますが、速度としては遅くなるようです。
leap-flogは悪くないインテグレーター(積分する事)だと思うし、
温度制御もnose-hooverを使える。
興味があるのが周期境界条件が無い場合の近似的な計算で、
いわゆるCAPオプションが欲しい所。しかし、GROMACSにはありません。
一方でmdrunに渡されるオプションの中に
neighbor searching の箇所の
pdb=no
というスイッチがあります。これは境界を持たないというスイッチなので、
周期境界条件を無くす方法がこれに当たります。しかし、CAPオプションが
無いので境界にある分子を止めなければいけません。
分子を止める方法としてはmake_ndxというコマンドを使うと出来るようです。
これで残基を固定する事が出来ます。さらに細かく原子までも指定できます。
gromacsの僕の不足と感じる所::
umbrella samplingの反応座標を、距離や角度ではなく座標でしか取れない。
CAPオプションが無い。
この二点のみになりました。
leap-flogは悪くないインテグレーター(積分する事)だと思うし、
温度制御もnose-hooverを使える。
興味があるのが周期境界条件が無い場合の近似的な計算で、
いわゆるCAPオプションが欲しい所。しかし、GROMACSにはありません。
一方でmdrunに渡されるオプションの中に
neighbor searching の箇所の
pdb=no
というスイッチがあります。これは境界を持たないというスイッチなので、
周期境界条件を無くす方法がこれに当たります。しかし、CAPオプションが
無いので境界にある分子を止めなければいけません。
分子を止める方法としてはmake_ndxというコマンドを使うと出来るようです。
これで残基を固定する事が出来ます。さらに細かく原子までも指定できます。
gromacsの僕の不足と感じる所::
umbrella samplingの反応座標を、距離や角度ではなく座標でしか取れない。
CAPオプションが無い。
この二点のみになりました。
登録:
投稿 (Atom)