ABINIT

ABINITのインストール

ABINITとは、VASPと同様に固体結晶の電子状態を密度汎関数で計算するプログラムパッケージです。VASPとの最大の違いは、ABINITがフリー(無料)である点です。化学の世界で有名なソフトと比較するなら、バンド計算のGaussianがVASPで、GAMESSがABINITのような対応だと思います。もう一点、ABINITの利点を挙げるなら、多くの機種でバイナリー形式でプログラムを配布している点です。ちょっと計算してみようと思っても、ソースファイルをコンパイルすることに、かなりの労力を必要とするので、バイナリーのプログラムをダウンロードしてきて、すぐに実行できるというのは、非常に魅力的だと思います。

現在ABINITはversion5が整備されていますが、version4.6.5を用いましたので、その時の方法を紹介します。(version5ではインストール方法が大幅に変更されているので、全く参考にならないと思います。)

上記に書きましたが、まず、バイナリーのファイルをダウロードして実行してみました。ABINITのホームページからLinux-Intel-IFCやLinux-Intel-g95のsequential binaryをダウンロードし、*.tar.gzのファイルを
tar -xvzf ここにファイル名.tar.gz
とするだけで、ABINITのフォルダーが作られ、適当な入力ファイルで実行できます。この方法は単一CPUで実行するには非常に有効な方法なのですが、並列化するには、少々、大変さが伴います。同様にABINITのホームページよりparallel binaryをダウンロードしてMPICH2を用いて実行してみたのですが、どうも、うまく実行されませんでした。ホームページよりダウンロードできるバイナリープログラムが共有メモリーを前提とした同一マシンでの実行するためのバイナリーでPentiumDクラスタでは、うまく動かないことが判りました。やはり、マニアックなマシン構成では、自らコンパイルする必要がありそうです。ちなみにPentiumD1台のデュアルコア内での2CPUの並列でABINITを動かすのであれば、MPICH2のコンパイルするときのデバイスの設定でABINITのバイナリーをそのまま動かせると思います。

コンパイル方法
ABINIT4.6.5ではmakefile上から呼び出すファイルmakefile_macros内にマシンに依存した設定を書き込みます。
cp Machine_dept_files/Intel_P4/makefile_macros.IFCmkl_dummy ./makefile_macros
Machine_dept_filesディレクトリーの中から自分の環境に近いmakefile_macrosを探し、makefileと同じディレクトリーにコピーします。Pentium4のインテルコンパイラ(IFC)でインテルのマス・カーネル・ライブラリー(MKL)を使用したのが近いかなぁと思いコピーしました。次にこのコピーしたmakefile_macrosをエディタで修正していきます。
FC=mpif90
LIBS = -L/opt/intel/mkl/8.0.1/lib/em64t -lguide -lmkl_lapack -lmkl_p4n -lpthread -Vaxlib
FFLAGS_PAR= $(FFLAGS) -I /opt/mpich2/include/
MPI_A=-L/opt/mpich2/lib -lmpich -lfmpich -Vaxlib
コンパイラとMKLへのライブラリーのパスおよびMPIへのライブラリーのパスを修正します。あとは、
make allseq
と入力すれば、シリアルバージョンのすべてのプログラムがコンパイルされて(メインプログラムはabinis)、
make abinip
と入力すると、並列バージョンのプログラムabinipが生成されます。

実行方法
ABINITではチュートリアルがあるので、それを順番にこなしていくと、大まかな流れは判ると思いますので、お勧めします。Tutorialディレクトリのt1x.filesの中身を見ますと、
../t11.in  入力ファイル
t1x.out  出力ファイル
t1xi    中間ファイルの標識1
t1xo   中間ファイルの標識2(t1x.out以外の出力ファイルの標識)
t1x    中間ファイルの標識3
../../Psps_for_tests/01h.pspgth  擬ポテンシャルのファイル(1つめの元素)
となっています。入力ファイルとポテンシャルのファイルへのパスを正しく設定しておき、
/opt/abinit4.6.5/abinis < t1x.files >& log
などと入力すれば、シリアルバージョンが実行され、t1x.outのような出力ファイルとlogのログファイルが生成されます。並列計算においては
mpiexec -n 8 /opt/abinit4.6.5/abinip < t1x.files >& log
のような感じです。人間、「習うより慣れろ」ですので、いろいろ試してみて下さい。
 

back home next

inserted by FC2 system