所以我们试图在Ubuntu 14.04 LTS上编译VASP 5.4.1。遵循此处描述的类似安装步骤: How to compile VASP 5.4.1 for Linux Debian using the GNU compiler。但是,在测试vasp可执行文件(vasp_std等)时,程序会以分段错误终止 - 无效的内存引用错误。
我们目前拥有的makefile.include是:
# Precompiler options
CPP_OPTIONS= -DMPI -DHOST=\"IFC91_ompi\" -DIFC \
-DCACHE_SIZE=4000 \
-DMPI_BLOCK=8000 -DscaLAPACK -Duse_collective \
-DnoAugXCmeta -Duse_bse_te \
-Duse_shmem -Dtbdyn
CPP = gcc -E -P -C $*$(FUFFIX) >$*$(SUFFIX) $(CPP_OPTIONS)
FC = mpif90
FCL = mpif90
FREE = -ffree-form -ffree-line-length-none
FFLAGS =
OFLAG = -O2
OFLAG_IN = $(OFLAG)
DEBUG = -O0
LIBDIR = /usr/lib/x86_64-linux-gnu
BLAS = -L$(LIBDIR) -lblas
LAPACK = -L$(LIBDIR) -llapack
BLACS = -L$(LIBDIR) -lblacs-openmpi -lblacsCinit-openmpi
SCALAPACK = -L$(LIBDIR) -lscalapack-openmpi $(BLACS)
OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o \
/usr/lib/x86_64-linux-gnu/libfftw3.a
INCS =-I/usr/include
LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS)
OBJECTS_O1 += fft3dfurth.o fftw3d.o fftmpi.o fftmpiw.o chi.o
OBJECTS_O2 += fft3dlib.o
# For what used to be vasp.5.lib
CPP_LIB = $(CPP)
FC_LIB = $(FC)
CC_LIB = gcc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB = $(FREE)
OBJECTS_LIB= linpack_double.o getshmem.o
# Normally no need to change this
SRCDIR = ../../src
BINDIR = ../../bin
跑完后:
mpirun -np 8 /home/<user>/VASP/vasp.5.4.1/bin/vasp_std
程序运行一段时间然后终止了一些分段错误消息(我最后一次运行它给了8个!):
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:
#0 0x7F62EE595777
#1 0x7F62EE595D7E
#2 0x7F62EDA95CAF
#3 0x4DE3EA in __nonl_MOD_spher
#4 0x637E84 in __msphpro_MOD_sphpro
#5 0xC1E013 in MAIN__ at main.f90:?
任何见解都将受到赞赏。