東京大学物性研のohtakaでpimd+qe+aenetのコンパイル方法を紹介する。
まず、ohtakaのhomeにはいてください。windowsの場合は、Tera Termで登録してください。
cd ~
mkdir PIMD
cd PIMD
mkdir src
cd src
##PIMDのダウンロード
- ~/PIMD/src以下でPIMD 2.4.0用ディレクトリを作成します。~/PIMD/src/pimd-2.4.0で以下を実行しpimd-2.4.0のソースコードをダウンロード、解凍します。
wget https://ccse.jaea.go.jp/software/PIMD/download/pimd.2.4.0.tar.gz
gunzip pimd.2.4.0.tar.gz
tar xvf pimd.2.4.0.tar
mkdir compile
cd compile
cp ../source/* .
vi makefile
makefileの中身を変えてください。
FCMP = mpiifort
# MAC OSX: OPTS = -O2 -g -traceback -w \ -static-intel -qopenmp \ -I${MKLROOT}/include/fftw
# compile PIMD with QE QE = -Dqe # compile PIMD without QE #QE =
LIBQE = -L../lib/qe/q-e-qe-6.2.1/qelib -lqe -L. LIBMKL = -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 \ -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core
# compile PIMD with AENET AENET = -Daenet # compile PIMD without AENET #AENET =
LIBAENET = -I../lib/aenet/aenet-2.0.3/src \ ../lib/aenet/aenet-2.0.3/src/libaenet.a \ ../lib/aenet/aenet-2.0.3/lib/liblbfgsb.a
保存
:wq
##モジュールの準備
compileディレクトリで以下を実行します。make common_variables.o
##QEのダウンロード
compileからライブラリ用ディレクトリに移動します。cd ../lib/qe
wget https://github.com/QEF/q-e/archive/qe-6.2.1.zip
unzip qe-6.2.1.zip
patch -p0 < qe-6.2.1_to_pimdlib.patch
##QEのコンパイル
cd q-e-qe-6.2.1
MPIF90=mpiifort DFLAGS='-D__OPENMP -D__FFTW3 -D__MPI -D__SCALAPACK' SCALAPACK_LIBS='-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64' ./configure --enable-openmp
make.incが生成する。生成されたmake.incを手動で編集します。
vi make.inc
IFLAGS = -I$(TOPDIR)/include -I$(TOPDIR)/FoX/finclude -I../include/ -I/opt/intel/oneapi/mkl/2023.0.0/include -I$(MKLROOT)/include/fftw -I../../../compile
MPIF90 = mpiifort F90 = ifort CC = icc F77 = ifort
CFLAGS = -O3 $(DFLAGS) $(IFLAGS) F90FLAGS = $(FFLAGS) -nomodule -qopenmp -fpp $(FDFLAGS) $(IFLAGS) $(MODFLAGS) FFLAGS = -O2 -assume byterecl -g -traceback -qopenmp
FFLAGS_NOMAIN = -nofor_main
LD = mpiifort LDFLAGS = -qopenmp LD_LIBS =
BLAS_LIBS = -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core BLAS_LIBS_SWITCH = external
:wq
保存。これで準備ができましたのでpw.x(libqepw.a)をビルドします。
make pw
##AENETのダウンロード
cd ../../aenet/
wget http://ann.atomistic.net/files/aenet-2.0.3.tar.bz2
tar jxvf aenet-2.0.3.tar.bz2
cd aenet-2.0.3
patch -u -p1 -d src < ../src.patch
cd lib
vi Makefile
Makefileの中身を変更
FC = ifort -c FCFLAGS = -O2 SHRLD = gcc SHRFLAGS = -fPIC SHARED = -shared SHRLIB = -lm -lgfortran TAR = tar AR = ar ARFLAGS = -crusv
:wq
保存する。コンパイルを実行します。
make
cd ../src/makefiles/
vi Makefile.ifort_intelmpi
以下の部分が違いましたら、編集してください。
SUFFIX = ifort_intelmpi FC = mpiifort -c LD = mpiifort DEBUG = FCFLAGS = -DPARALLEL -O2 $(DEBUG) LDFLAGS = -static-intel $(DEBUG) NUMLIB = -Wl,--start-group \ $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \ $(MKLROOT)/lib/intel64/libmkl_core.a \ $(MKLROOT)/lib/intel64/libmkl_sequential.a \ -Wl,--end-group -lpthread -lm CC = gcc -c CCFLAGS =
:wq
保存する。makeを実行します。
cd ..
make -f makefiles/Makefile.ifort_intelmpi lib
##PIMDのコンパイル
cd ../../../qe/q-e-qe-6.2.1/PW/src/
libqepw.aというファイルが出ていることを確認する。
cd ../../../../../compile/
make
完成!
ls
pimd.mpi.x pimd.x この二つのファイルができたかを確認してください。