0

我需要在 Cray XC MPP 机器上编译 VASP 5.3.5。该系统具有可用的 Gnu、Intel 和 Cray 编译环境。对于 BLAS、LAPACK、ScaLAPCK,还可以选择 Intel MKL 或 Cray LibSci。

哪个是最好的编译器,最好的数值库和 Makefile 选项?

4

1 回答 1

0

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

最后,设置链接 FFTW 的 makefile 选项:

FFT3D   = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o

现在构建代码(假设makefile被称为“makefile.cray_xc_intel”):

make -f makefile.cray_xc_intel
于 2015-06-25T13:41:36.613 回答