编译vasp 5.2

买了新机器:联想万全520 G7,虽然是1U机架却上了两个Xeon E5520 CPU;想着跟之前也是Intel CPU的机器差不多就把vasp 4.6的makefile改改拿来编译

FFLAGS = -I/export/intel/mkl/9.0/include/fftw -FR -lowercase -assume byterecl OFLAG=-O3 -xT -tpp7 OFLAG_HIGH = $(OFLAG) OBJ_HIGH = OBJ_NOOPT = DEBUG = -FR -O0 INLINE = $(OFLAG) BLAS=-L/export/intel/mkl/9.0/lib/em64t -lmkl_em64t -lguide -lpthread LAPACK=-L/export/intel/mkl/9.0/lib/em64t -lmkl_lapack FC=/usr/OFED/mpi/intel/mvapich-0.9.9/bin/mpif90 FCL=$(FC) CPP = $(CPP_) -DMPI -DHOST=/"LinuxIFC/" -DIFC / -Dkind8 -DNGZhalf -DCACHE_SIZE=12000 -DPGF90 -Davoidalloc / -DMPI_BLOCK=500 / -DRPROMU_DGEMV -DRACCMU_DGEMV FFT3D = fftmpi.o fftmpi_map.o fft3dfurth.o fft3dlib.o

编通之后随便拿两个氢原子run了一下发现似乎没啥问题,直到师兄要算一个较大玩意儿时候才发现一堆报错:

running /export/home/libo/dpool1/vasp4.6_amd_3 on 8 LINUX ch_p4 processors Created /export/home/libo/test/test_vasp_5/PI20064 running on 8 nodes distr: one band on 1 nodes, 8 groups vasp.4.6.31 08Feb07 complex POSCAR found : 5 types and 79 ions LDA part: xc-table for Pade appr. of Perdew POSCAR, INCAR and KPOINTS ok, starting setup WARNING: wrap around errors must be expected FFT: planning ... 1 reading WAVECAR entering main loop N E dE d eps ncg rms rms(c) RMM: 1 0.780450439085E+04 0.78045E+04 -0.20668E+05 5472 0.978E+02 RMM: 2 0.213871499255E+04 -0.56658E+04 -0.60955E+04 5472 0.293E+02 RMM: 3 0.526971562232E+03 -0.16117E+04 -0.15606E+04 5472 0.153E+02 RMM: 4 -0.975608094574E+02 -0.62453E+03 -0.45208E+03 5472 0.126E+02 p0_20274: p4_error: interrupt SIGx: 15 rm_l_4_20399: (1409.308594) net_send: could not write to fd=5, errno = 32 rm_l_2_20337: (1409.496094) net_send: could not write to fd=5, errno = 32 rm_l_6_20461: (1409.125000) net_send: could not write to fd=5, errno = 32 p4_20372: (1409.308594) net_send: could not write to fd=5, errno = 32 rm_l_3_20368: (1409.402344) net_send: could not write to fd=5, errno = 32 rm_l_7_20492: (1409.035156) net_send: could not write to fd=5, errno = 32 rm_l_5_20430: (1409.214844) net_send: could not write to fd=5, errno = 32 p7_20465: (1421.042969) net_send: could not write to fd=5, errno = 32 p6_20434: (1421.136719) net_send: could not write to fd=5, errno = 32

这个样子让我试图google也无任何头绪……纠结了两周左右终于鬼使神差的在vasp support site上看到了这个(我们的vasp 5.2还没买license:P),概略一下就是两种方法:

1.在编译参数里面加 -heap-arrays

2.

a) 自己加一个limit.c

cat > limit.c #include #include #include void stacksize_() { int res; struct rlimit rlim; getrlimit(RLIMIT_STACK, &rlim); printf("Before: cur=%d,hard=%d/n",(int)rlim.rlim_cur,(int)rlim.rlim_max); rlim.rlim_cur=RLIM_INFINITY; rlim.rlim_max=RLIM_INFINITY; res=setrlimit(RLIMIT_STACK, &rlim); getrlimit(RLIMIT_STACK, &rlim); printf("After: res=%d,cur=%d,hard=%d/n",res,(int)rlim.rlim_cur,(int)rlim.rlim_max); } In main.F add at the beginning CALL stacksize();

b) 在main.F的开头部分添加:

CALL stacksize();

c) makefile里面添加

limit.o: limit.c 
cc -c -Wall -O2 limit.c


你可能感兴趣的:(VASP)