ここでは,VASP 5.3.5に関連したことを記載する. VASP全般に関しては,VASPを参考のこと.
現在広く使われている一般的なLinuxマシンで,Intel Fortranコンパイラでコンパイル&インストールする. ここでは,vaspというディレクトリの中に,vasp.5.3.5とvasp.5.libというディレクトリが存在していると仮定して話を進める.
vasp541からはコンパイルのやり方が大幅に変更された.
vasp.5.lib
まずはvasp.5.libを最初にコンパイルしなければいけないらしい.
$ cd vasp.5.lib
$ cp makefile.????_???? makefile
ここで,makefile内のコンパイラ指定の部分を各々の環境にあったものに編集する. たとえば,
FC= ifort
そして
$ make
とすることで,コンパイルが始まり,libdmy.aというライブラリが作られる.
vasp.5.3.5
次に,vasp.5.3.5ディレクトリに移り,makefileを作る.
$ cp makefile.????_??? makefile
makefile内をいろいろと変更する必要があるらしい.
まず,MKL (Intel Math Kernel Library)を使用するための設定として,makefile内のMKLROOT
という変数を設定する.
MKL_PATH=$(MKLROOT)/lib/em64t
並列計算のために,
FC= mpiifort
BLAS= -lguide -mkl
LAPACK= $(MKL_PATH)/libmkl_intel_lp64.a
BLACS= -lmkl_blacs_intelmpi_lp64
SCA= $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS)
のように,BLASやLAPACK,SCALAPACKの設定をする.
上でコンパイルしたvasp.5.libをリンクする.
LIB = -L../vasp.5.lib -ldmy \
../vasp.5.lib/linpack_double.o \
$(SCA) $(LAPACK) $(BLAS)
FFT3Dの部分も
FFT3D = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o $(MKL_FFTW_PATH)/libfftw3xf_intel.a
INCS = -I$(MKLROOT)/include/fftw
のようにしておく.
さらに,CPPの並列計算用の部分をuncommentする.
CPP = $(CPP_) -DMPI -DHOST=\"LinuxIFC\" -DIFC \
-Dkind8 -DNGZhalf -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc \
-DMPI_BLOCK=500 \
-DRPROMU_DGEMV -DRACCMU_DGEMV
これで
$ make
とすれば,とりあえずコンパイルはできる.