首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Cray XC上编译VASP 5.3.5?

如何在Cray XC上编译VASP 5.3.5?
EN

Stack Overflow用户
提问于 2015-06-25 21:18:52
回答 1查看 333关注 0票数 0

我需要在Cray XC MPP机器上编译VASP 5.3.5。系统提供Gnu、Intel和Cray编译环境。还可以选择用于BLAS、LAPACK、ScaLAPCK的英特尔MKL或克雷LibSci。

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

EN

回答 1

Stack Overflow用户

发布于 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

简而言之,该过程是:

代码语言:javascript
运行
复制
module swap PrgEnv-cray PrgEnv-intel
module load fftw
module load cray-pe-hugepages2M

修改库makefile,使其具有以下选项:

代码语言:javascript
运行
复制
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"):

代码语言:javascript
运行
复制
cd vasp.5.lib
make -f makefile.cray_xc_intel.lib

移至源码主目录:

代码语言:javascript
运行
复制
cd ../vasp.5.3

在Makefile中设置预处理器选项(这适用于多K点版本):

代码语言:javascript
运行
复制
CPP    = $(CPP_) -DMPI -DHOST=\"CrayXC-Intel\" \
         -DNGZhalf \
         -DLONGCHAR \
         -Dkind8 \
         -DCACHE_SIZE=2000 \
         -Davoidalloc \
         -DRPROMU_DGEMV  \
         -DMPI_BLOCK=100000 \
         -Duse_collective \
         -Drandom_array \
         -DscaLAPACK

设置makefile编译选项:

代码语言:javascript
运行
复制
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线性代数库选项:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
FFT3D   = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o

现在构建代码(假设makefile名为"makefile.cray_xc_intel"):

代码语言:javascript
运行
复制
make -f makefile.cray_xc_intel
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31051534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档