構造解析ことはじめ/03 プログラムのインストール
CHARMMのインストール -- Vine 4.2
分子動力学シミュレーション(MD)で使用されるCHARMMをインストールします。
AMBERと同じく手元にあるのがc32b2と古いバージョンですが、Intel Compiler 11.0でコンパイルおよび動作確認しました。AMBER8に比べてインストールは簡単です。なお、最適化オプションが古いのでIntel Compiler 11用のパッチ(charmm-c32b2-ic11.patch)を作ってみました。パッチによる修正点は以下の通りです。
- install.com
- 最適化オプションの変更(-tpp7 -> -xsse2 -axsse4.2 -no-prec-div -ip)
Intel Compiler 10の場合やSSE4.2に対応していないプロセッサの場合はIntel Compiler/コンパイルオプションを参照して適宜変更して下さい。 - LAM-MPIリンクオプションに-lpthreadを追加
- 最適化オプションの変更(-tpp7 -> -xsse2 -axsse4.2 -no-prec-div -ip)
- build/UNX/Makefile_gnu
- 静的リンクをIntel Compilerのもののみに変更(-static -> -static-intel)
- -Vaxlibオプションを追加(効果はよくわかりませんが)
インストール手順
ビルドしたディレクトリが実行ファイルの出力先になるのでrootで実行します。ここでは/usr/local/c32b2をビルドディレクトリにしてますが、必要に応じて変更して下さい。なお、一般ユーザーのホームディレクトリ以下で構築して/usr/localにコピーしても動くと思います。
シングル版のビルド
MPI対応ではないスタンドアロン版をビルドします。
# cd /usr/local # tar zxvf c32b2.tar.gz # cd /usr/local/c32b2 # patch -p1 < charmm-c32b2-ic11.patch <-- パッチを当てる # source /opt/intel/Compiler/11.0/074/bin/iccvars.sh ia32 # source /opt/intel/Compiler/11.0/074/bin/ifortvars.sh ia32 # ./install.com gnu medium IFORT <-- medium版の場合(必要に応じて変更します) Tue Feb 17 13:58:25 JST 2009 install.com> Directory /usr/local/c32b2/build/gnu does not exist. Creating /usr/local/c32b2/build/gnu ... install.com> Phase 1 completed. install.com> Phase 2 completed. install.com> Processing CHARMM source on gnu...
しばらくするとc32b2/exec/gnu/charmmが作成されます。このファイルにパスを通せば使用可能です。
なお、環境変数MAKE_COMMANDでmake -j4などの並列コンパイルオプションを追加できますが、私の環境では並列コンパイルは失敗しました。
LAM-MPI版のビルド
MPI対応版をビルドします。
install.comの実行時オプションにMPIオプションが追加されます。
# ./install.com gnu medium IFORT M LAMMPI
なお、ここで使うLAM-MPIはIntel Compilerでビルドしたものである必要があります。インストール方法はAMBER/インストールを参照して下さい。install.comにパッチを当てない状態だと-lpthreadが不足しているのでリンクエラーになりますので注意して下さい。
undefined reference to `pthread_condattr_setpshared' undefined reference to `pthread_mutexattr_destroy' undefined reference to `pthread_mutexattr_init' undefined reference to `pthread_mutex_trylock'
こんなエラーが発生します。
テスト
実行テストを行います。ただ、結果の見方がよくわかりません
# cd /usr/local/c32b2/test # ./test.com gnu
これでテストスクリプトが流れるようです。
トラブル
Segmentation fault(コアダンプ)する
プログラムを実行しようとするとSegmentation faultでコアダンプしました。
% charmm Segmentation fault
このプログラムは実行時にホスト名を確認するため名前解決ができない環境ではSegmentation faultするようです。DNSによる名前引きが可能なら問題ありませんが、プライベートネットワークなどで名前引きができない環境の場合は/etc/hostsにホスト名を追加しておきます。
例えばdobuo.biokids.orgというホスト名なら、
- /etc/hosts
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 dobuo.biokids.org dobuo localhost.localdomain localhost
というようにホスト名を追加しておきます。