VASP 5.4.4编译

之前根据sobereva老师的视频写过名为 VASP 5.4.4极简安装方法 的随笔,笔者亲自实践过,编译的也没问题,测试作业也正常,但是后来发现这样编译的vasp仍有问题,运行内存会不断增长,大概半小时后,mem到达了最大值,然后使用swap继续增长,mem和swap全用光了之后,作业直接断掉。于是乎笔者使用较新的编译器(parallel_studio_xe_2020_update4_cluster_edition)试了一下,并参考了 VASP安装与运行 的makefile.include 以及使用了fftw,这样编译出来的vasp目前没出现问题。

parallel_studio_xe的安装同 VASP 5.4.4极简安装方法 ,然后将

. /opt/intel/parallel_studio_xe_2020.4.912/psxevars.sh

加入 /etc/profile 后重启终端,出现了

Intel(R) Parallel Studio XE 2020 Update 4 for Linux*
Copyright 2009-2020 Intel Corporation.

然后

which icc ifort icpc mpiifort

发现都能找的到,开始编译fftw,此处为 fftw-3.3.9

./configure -prefix=/opt/fftw339 CC=icc F77=ifort MPICC=mpiicc -enable-mpi
make
make install

最后进行vasp编译,在此列出我的makefile.include供参考

# Precompiler options
CPP_OPTIONS= -DHOST=\"LinuxIFC\"\
             -DMPI -DMPI_BLOCK=8000 \
             -Duse_collective \
             -DscaLAPACK \
             -DCACHE_SIZE=4000 \
             -Davoidalloc \
             -Duse_bse_te \
             -Dtbdyn \
             -Duse_shmem\
             -Dlibbeef
CPP        = fpp -f_com=no -free -w0  $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)

FC         = mpiifort
FCL        = mpiifort -mkl

FREE       = -free -names lowercase

FFLAGS     = -assume byterecl -w  -heap-arrays 64
OFLAG      = -O2 -xhost
OFLAG_IN   = $(OFLAG)
DEBUG      = -O0

MKL_PATH   = /opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/
BLAS       =-L$(MKL_PATH) -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64
LAPACK     =
BLACS      = 
SCALAPACK  =

OBJECTS    = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o /opt/fftw339/lib/libfftw3_mpi.a

INCS       =-I/opt/fftw339/include

BEEF       = -L/home/zhu/software/beef/lib -lbeef

LLIBS      = $(SCALAPACK) $(LAPACK) $(BLAS) $(BEEF)


OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o
OBJECTS_O2 += fft3dlib.o

# For what used to be vasp.5.lib
CPP_LIB    = $(CPP)
FC_LIB     = $(FC)
CC_LIB     = icc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB   = $(FREE)

OBJECTS_LIB= linpack_double.o getshmem.o

# For the parser library
CXX_PARS   = icpc

LIBS       += parser
LLIBS      += -Lparser -lparser -lstdc++

# Normally no need to change this
SRCDIR     = ../../src
BINDIR     = ../../bin

#================================================
# GPU Stuff

CPP_GPU    = -DCUDA_GPU -DRPROMU_CPROJ_OVERLAP -DUSE_PINNED_MEMORY -DCUFFT_MIN=28 -UscaLAPACK

OBJECTS_GPU = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d_gpu.o fftmpiw_gpu.o

CC         = icc
CXX        = icpc
CFLAGS     = -fPIC -DADD_ -Wall -openmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DGPUSHMEM=300 -DHAVE_CUBLAS

CUDA_ROOT  ?= /usr/local/cuda/
NVCC       := $(CUDA_ROOT)/bin/nvcc -ccbin=icc
CUDA_LIB   := -L$(CUDA_ROOT)/lib64 -lnvToolsExt -lcudart -lcuda -lcufft -lcublas

GENCODE_ARCH    := -gencode=arch=compute_30,code=\"sm_30,compute_30\" \
                   -gencode=arch=compute_35,code=\"sm_35,compute_35\" \
                   -gencode=arch=compute_60,code=\"sm_60,compute_60\"

MPI_INC    = $(I_MPI_ROOT)/include64/

 PS:笔者控制变量,将PSXE2020换成PSXE2019,还是会出现之前的问题,并没有测试使用fftw与否的影响。

posted @ 2021-01-13 15:35  BangBro  阅读(2296)  评论(0编辑  收藏  举报