東京大学物性研の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.gzgunzip pimd.2.4.0.tar.gztar xvf pimd.2.4.0.tarmkdir compilecd compilecp ../source/* .vi makefilemakefileの中身を変えてください。
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/qewget https://github.com/QEF/q-e/archive/qe-6.2.1.zipunzip qe-6.2.1.zippatch -p0 < qe-6.2.1_to_pimdlib.patch##QEのコンパイル
cd q-e-qe-6.2.1MPIF90=mpiifort DFLAGS='-D__OPENMP -D__FFTW3 -D__MPI -D__SCALAPACK' SCALAPACK_LIBS='-lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64' ./configure --enable-openmpmake.incが生成する。生成されたmake.incを手動で編集します。
vi make.incIFLAGS = -I$(TOPDIR)/include -I$(TOPDIR)/FoX/finclude -I../include/ -I/opt/intel/oneapi/mkl/2023.0.0/include -I$(MKLROOT)/include/fftw -I../../../compileMPIF90 = mpiifort F90 = ifort CC = icc F77 = ifortCFLAGS = -O3 $(DFLAGS) $(IFLAGS) F90FLAGS = $(FFLAGS) -nomodule -qopenmp -fpp $(FDFLAGS) $(IFLAGS) $(MODFLAGS) FFLAGS = -O2 -assume byterecl -g -traceback -qopenmpFFLAGS_NOMAIN = -nofor_mainLD = 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.bz2tar jxvf aenet-2.0.3.tar.bz2cd aenet-2.0.3patch -u -p1 -d src < ../src.patchcd libvi MakefileMakefileの中身を変更
FC = ifort -c FCFLAGS = -O2 SHRLD = gcc SHRFLAGS = -fPIC SHARED = -shared SHRLIB = -lm -lgfortran TAR = tar AR = ar ARFLAGS = -crusv:wq保存する。コンパイルを実行します。
makecd ../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完成!
lspimd.mpi.x pimd.x この二つのファイルができたかを確認してください。