我需要在Cray XC MPP机器上编译VASP 5.3.5。系统提供Gnu、Intel和Cray编译环境。还可以选择用于BLAS、LAPACK、ScaLAPCK的英特尔MKL或克雷LibSci。
哪一个是最好的编译器,最好的数值库和Makefile选项?
发布于 2015-06-25 21:41:37
在ARCHER (http://www.archer.ac.uk)上的测试表明,在Cray XC30系统上使用英特尔编译器与英特尔MKL与FFTW可产生最佳性能和最稳定的VASP 5.3.5版本。
完整的编译说明可在以下位置找到:
http://www.archer.ac.uk/documentation/software/vasp/compiling_5-3-5-phase2.php
简而言之,该过程是:
module swap PrgEnv-cray PrgEnv-intel
module load fftw
module load cray-pe-hugepages2M
修改库makefile,使其具有以下选项:
CPP = gcc -E -P -C $*.F >$*.f
FC=ftn
CFLAGS = -O3
FFLAGS = -O3 -unroll -ip -no-prec-div -xAVX
FREE = -free
构建库(假设makefile名为"makefile.cray_xc_intel.lib"):
cd vasp.5.lib
make -f makefile.cray_xc_intel.lib
移至源码主目录:
cd ../vasp.5.3
在Makefile中设置预处理器选项(这适用于多K点版本):
CPP = $(CPP_) -DMPI -DHOST=\"CrayXC-Intel\" \
-DNGZhalf \
-DLONGCHAR \
-Dkind8 \
-DCACHE_SIZE=2000 \
-Davoidalloc \
-DRPROMU_DGEMV \
-DMPI_BLOCK=100000 \
-Duse_collective \
-Drandom_array \
-DscaLAPACK
设置makefile编译选项:
FC=ftn
FCL=$(FC)
CPP_ = ./preprocess <$*.F | cpp -P -C -traditional >$*$(SUFFIX)
FFLAGS = -free -march=corei7-avx -assume byterecl -m64
OFLAG = -O3 -ip -fno-alias -unroll-aggressive -opt-prefetch -use-intel-optimized-headers -no-prec-div
OFLAG_LOW = -O1 -g -ftz
OBJ_LOW = broydon.o
为英特尔MKL设置makefile线性代数库选项:
MKL_PATH = $(MKLROOT)/lib/intel64
BLAS=
LAPACK=
BLACS=
SCA=
LIB = ../vasp.5.lib/linpack_double.o -L../vasp.5.lib -ldmy \
${MKL_PATH}/libmkl_blas95_lp64.a ${MKL_PATH}/libmkl_lapack95_lp64.a \
${MKL_PATH}/libmkl_scalapack_lp64.a \
-Wl,--start-group ${MKL_PATH}/libmkl_intel_lp64.a \
${MKL_PATH}/libmkl_sequential.a ${MKL_PATH}/libmkl_core.a \
${MKL_PATH}/libmkl_blacs_intelmpi_lp64.a -Wl,--end-group -lpthread -lm
最后,设置makefile选项以链接FFTW:
FFT3D = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o
现在构建代码(假设makefile名为"makefile.cray_xc_intel"):
make -f makefile.cray_xc_intel
https://stackoverflow.com/questions/31051534
复制相似问题