• 東工大河村先生の分子動力学法プログラムをMac OS X用にコンパイルする.2005/12/12-13
  • 前書き
    • 以前Mac OS8-9の頃に河村先生のMXDORTO, MXDTRICLなどAbsoft社のFortranコンパイラを使って実行ファイルを作成して,日本化学プログラム交換機構で頒布してましたが,OS X登場前からその後の対応をさぼってました.OS XでもOS 9 Classicを起動して古い実行ファイルで計算することが可能でそうしてしばらく使ってましたが(またはAbsoftのWindows用コンパイラで作ったWindows版を使っていた),g77を使ってMac OS X上で動くように整備する必要にかられました.1つは授業で学生にデモンストレーションするためで,プレゼンテーションにMacを使っているので同じMac上でMDも動くと都合がいいのです.またたまに使っていたWindowsマシンのHDが壊れたこともあります.近いうちにIntel版Macが発売されることを考えると,商用のコンパイラを今買うのは得策ではないようです.そのためフリーで手に入るg77を使ってコンパイルすることにしました.terminalかX11上のxtermで動かす必要がありますが,全てフリーで開発環境が手に入るのがいいところです.
  • コンパイルする
    • g77のインストールは前の項を参照してください.
    • 河村研究室のダウンロードページからFortranプログラムのソースをダウンロードします.xtaldata.datも必要.
    • ダウンロードしたソースの改行形式を全てUnix形式に直します.miエディターとかjeditなどでできる.ソースに日本語でコメント書き込まない限りはエンコードはそのままでもいいが,Unixで使うならEUCに直したい.
    • mxdortho.fなどプログラムは1つのファイルに全てのサブルーチンが納められているため,makeを使う必要は特にない.ライブラリーも必要ない.
    • オリジナルではプログラム名はMXDORTO.FORなどとなってますが,以下私は小文字で拡張子も.fで*.fと言う風に書いてます.MXDORTO.FORはmxdortho.fとしてます.
    • さてとりあえず>g77 mxdinput.f -o mxdinputで初期構造データを作成するプログラムmxdinput.fをコンパイルしてみると,xtaldata.datのパス指定でエラーになる(FLNAME(18)の定義部分).ここを例えばmxdinput実行ファイルとxtaldata.datを同じdirectoryにするならFLNAME(18) = './xtaldata.dat'と変更すればよい.私の場合xtaldata.datと小文字にしているのでそれも変更してます.xtaldata.datを固定したdirectoryに置くならそこへのパスを指定する.これでmxdinputはコンパイルできた.>./mxdinputと実行してみる.問題なさそう.ところでmxdinputで温度入力は300.0のように小数点を付けないといけない.
    • mxdortho.fとmxdtricl.fは変更する部分は同じです.重要なのは時間取得部分でここは唯一システムに依存している部分なので,書き換える必要がありますが,多くのシステム用のサブルーチンは既に用意されてるので,実際にはサブルーチンを選ぶだけです.
    • まずFLNAME(3)を使用するシステムに応じて変更する.今回の場合g77を使うのでLINUX - g77を使えばよい.分かりやすくするためにFLNAME(3)をMac OS X -g77などとしてもいいが,それに応じてFLNAME(3)をif文で使っている2カ所も書き換える必要がある.1つは最後のサブルーチンKCLOCKのif文でサブルーチンg77を呼べるように書き換える必要がある.またg77のサブルーチンでcall文とその前の1つの文がコメントアウトされているので,それを直す.2つ目は2200行あたりにロゴを設定する部分.ここで例えばLOGO3のdata文で11番目を'Mac OS X PowerPC G4 -g77 Version 'に書き換えるとよい.またその少し後のif文を前と同様書き換える.上で11番を書き換えたなら,logo3(1) = logo3(11)としないといけない.こうしておくとfile06のMD,XDの大きなロゴの下にこれが書き込まれる.
    • mxdothro.fの場合はこれで,>g77 -O mxdortho.f -o mxdorthoとコンパイルして実行ファイルmxdorthoを作る.最初の-Oは最適化オプション.後の-oは実行ファイル名指定.mxdorthoについてはこれで問題なし.mxdinputで作った初期構造データ(file05,07,10)を使って計算してみる.なお実行させるときに同じディレクトリーにいる場合は>mxdorthoで実行させようとしてもファイルが見つからないと怒られる.>./mxdorthoと./を付けないといけない,安全のためMac OS Xを含め多くのUnixマシンは明示的にパスを指定しないといけないようにデフォルトでそうなっている.
    • mxdtricl.fはもう少し手間がかかった.まずmxdortho.fと同様に上記のように修正する.これでコンパイルすると2種のwarningが出る.たくさんwarningが出ているが,本当は2つだけ.どちらも本体やサブルーチン間で変数の定義が少し異なることが理由.最初の1つは直した.もう1つはちょっと考えないといけないようだ.warningは放っておいても計算自体は問題なくできる.
    • mxdtriclを実行すると Max(nsatom)= 244840と各ステップ毎に印刷されて,うっとおしい.Max(nsatom) が印刷される件はソースを眺めて,max_nsatomが初期化されていないためだと判明.mxdortho.fの同じところを見るとこちらでは前の方でmax_nsatom = 0となっている.なのでこの行をmxdtricl.fに追加する(これはEWALDSサブルーチンの中です).これでMax(nsatom)は印刷されなくなった(2005/12/13)
    • これで河村分子動力学プログラムの基本部分mxdinput, mxdortho, mxdtriclがとりあえず動くようになった.後はコンパイルオプションでさらにチューニングすることが残されている.
    • stishovite (SiO2)で原子数9000個でmxdorthoを走らせると大体9sec/stepくらい (PowerBook? G4 1.33MHz電源をつないだ状態で).似たクロック数のWindowsマシンと同じか少し遅い感じ.最適化を真面目にやってないのでこんなところか.
    • 河村研究室のダウンロードページにはmxdortho, mxdtricl, mxdinput以外のプログラムは置いてないですが,河村先生からプログラムを直接頂いた場合にはその他の解析用やデータ変換用のFortranプログラムもソースディレクトリーにあるはずです.または平尾・河村の本の付録のディスク内にも.これらはほとんど変更なしでコンパイルできます.ただmxdpowx.fについてはwarningがたくさんでました,これはCOMMONで定義しているXRAYSがサブルーチンと本文で少し異なるからです.無視しても実行ファイルはできますが,同じになるようにサブルーチンを書き換えるとwarningはなくなります.
    • 2005年12月後半からいくつか計算をやらしてますが,特に問題ないようです.
    • 圧力を変えて計算を連続して行うような場合には予めfile05.datを作っておいてそれをshell等を使って実行させることができます.正月休みにたくさん計算をさせるためにperlでちょっとしたプログラムを作ってみました.これはfile05.datの元ファイルを1つだけ作っておいて,それの圧力部分を変えていって圧力を変化させた一連の計算を行うスクリプトです.ある圧力での計算が終わるとファイルは新たに作ったdirectoryにコピーされ,file05.datの圧力を次の値に書き換えて,mxdorthoを起動します.なおperlはMac OS Xには標準で入っているのでそのまま使えます.汎用ではないのですが,一応動いて自動で計算をやってくれます.
  • その他
    • xtaldata.datの対称性部分を作成するプログラムをReal_Basic)で用意してあり,別項からダウンロードできます.こっちはcarbon用アプリケーション.
    • 表示用のプログラム等はWindows用Basicで書かれてるため(平尾・河村本の付録か直接頂いた場合),Mac用には別途移植する必要があります.温度,圧力等が時間とともにどう変化したかを示すmxd-histはReal_BasicでMac OS Xで動くようにした.これだけは以前から最も利用していたため,古いのを少し手直ししただけで何とか動くものができた.使っているといくつか不満な面もあるので,改良が必要.そのうちまとめてダウンロードできるようにします.
    • VICS-IIという結晶構造を表示するプログラムがfile07.datを読み込んで表示することができる.VICS-IIはMac OS X版も用意されているので.入力した構造または計算後の構造を眺めることができる.原子数が多すぎるとちょっと大変かも.
    • アプリケーション/ユーティリティ内にあるアクティビティモニタで観察すると特に何もしないとmxdorthoが大体CPUの90%くらいを使ってる.同時に別のアプリケーションを使ってもアプリケーションがそれほど遅くなることはない(もちろんその分mxdorthoのCPU時間が少なくなっている).ちなみにCore (2) Duoを使ったIntel MacだとCPUが2つあって,並列化してないので片方のCPUだけ100%近くなっているはずです.
    • terminalからGUIのアプリケーションを起動するには>open applicationとする.

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-15 (月) 10:56:14 (458d)