vasp52安装虫帖.docx
- 文档编号:23228776
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:8
- 大小:17.99KB
vasp52安装虫帖.docx
《vasp52安装虫帖.docx》由会员分享,可在线阅读,更多相关《vasp52安装虫帖.docx(8页珍藏版)》请在冰豆网上搜索。
vasp52安装虫帖
Vasp.5.2安装
五一这两天闲着没事,摆弄了一下vasp5.2编译,经测试,并行编译获得成功,现把我的编译过程与大家分享。
1.安装linux系统,我现在用的系统是fedora12。
2.配置并行环境
a.配置ssh环境
修改/etc/hosts文件
在127.0.0.1local..........
下面加入
127.0.0.1node0!
左边一串数字是机子的ip,右边是取的hostname,由于我是单机多核环境,所以ip地址都是一样的。
127.0.0.1node2
可以通过pinghostname或sshhostname测试设置是否成功
b.实现无密码远程访问
打开一个终端
#ssh-keygen-d
回车
回车
在~/.ssh下生成id_dsa(存放私人密匙)和id_dsa_pub(存放公用密匙)
#cpid_dsa_pubauthorized_keys
#sshhostname(无需输入密码)
安装好后,可以庸ping命令和ssh查看node0,node1等等。
3.安装pgi10.0,
按照提示安装即可,只不过在安装过程中要选择mpich,选用ssh,这样就把mpich安装到默认目录/opt/pgi/linux86/2010/mpi/mpich了,其中编译过程中要用到的数学库被安装到/opt/pgi/linux86/2010/mpi/mpich/lib中,比如并行编译中经常用到的libscalapack.a,blacsF77init_MPI-LINUX-0.a,blacs_MPI-LINUX-0.a,blacsF77init_MPI-LINUX-0.a等等。
安装完毕后,配置环境变量。
如:
gedit~/.bashrc,在这个文件中加入如下内容:
PGI=/opt/pgi;exportPGI
MANPATH=$MANPATH:
$PGI/linux86/10.0/man
exportMANPATH
LM_LICENSE_FILE=$PGI/license.dat
exportLM_LICENSE_FILE
PATH=$PGI/linux86/10.0/bin:
$PATH
source/opt/pgi/linux86/10.0/mpi.sh
exportPATH
其中,source/opt/pgi/linux86/10.0/mpi.sh配置mpi环境。
4.编译vasp5.2
a.编译程序自带的数学库。
进入数学库所在的目录~/vasp.5.lib。
在终端中敲如命令
cpmakefile.linux_pgi_optmakefile
make
我的makefile文件如下:
.SUFFIXES:
.inc.f.F
#-----------------------------------------------------------------------
#MakefileforPortlandGroupF90/HPFcompiler
#themakefilewastestedonlyunderLinuxonIntelplatforms
#howeveritmightworkonotherplatformsaswell
#
#thisreleaseofvasp.4.libcontainslapackv2.0
#thiscanbecompiledwithpgf90compileriftheoption-O1isused
#
#Mind:
oneuserreportedthathehadtocopypreclib.Fdiolib.F
#dlexlib.Fanddrdatab.Ftothedirectoryvasp.4.4,compilethefiles
#thereandlinkthemdirectlyintovasp
#fornoobviousreasonthesefilescouldnotbelinkedfromthelibrary
#
#-----------------------------------------------------------------------
#C-preprocessor
CPP=mpicc-E-P-C$*.F>$*.f
FC=mpif90-Mx,119,0x200000
CFLAGS=-O
FFLAGS=-O0
FREE=-Mfree
DOBJ=preclib.otiming_.oderrf_.odclock_.odiolib.odlexlib.odrdatab.o
#-----------------------------------------------------------------------
#generalrules
#-----------------------------------------------------------------------
libdmy.a:
$(DOBJ)lapack_double.olinpack_double.olapack_atlas.o
-rmlibdmy.a
arvqlibdmy.a$(DOBJ)
#fileswhichdonotrequireautodouble
lapack_double.o:
lapack_double.f
$(FC)$(FFLAGS)$(NOFREE)-clapack_double.f
lapack_single.o:
lapack_single.f
$(FC)$(FFLAGS)$(NOFREE)-clapack_single.f
lapack_atlas.o:
lapack_atlas.f
$(FC)$(FFLAGS)$(NOFREE)-clapack_atlas.f
linpack_double.o:
linpack_double.f
$(FC)$(FFLAGS)$(NOFREE)-clinpack_double.f
linpack_single.o:
linpack_single.f
$(FC)$(FFLAGS)$(NOFREE)-clinpack_single.f
.c.o:
$(CC)$(CFLAGS)-c$*.c
.F.o:
$(CPP)
$(FC)$(FFLAGS)$(FREE)$(INCS)-c$*.f
.F.f:
$(CPP)
.f.o:
$(FC)$(FFLAGS)$(FREE)$(INCS)-c$*.f
b.编译主程序vasp5.2
这一步是整个编译成功的关键,主要的问题是库文件的调用,CPP参数的选择......
下面贴出我的makefile文件:
.SUFFIXES:
.inc.f.f90.F
#-----------------------------------------------------------------------
#allCPPprocessedfortranfileshavetheextension.f
SUFFIX=.f
#-----------------------------------------------------------------------
#fortrancompilerandlinker
#-----------------------------------------------------------------------
FC=mpif90
#fortranlinker
FCL=$(FC)
CPP_=./preprocess<$*.F|/usr/bin/cpp-P-C-traditional>$*$(SUFFIX)
#-----------------------------------------------------------------------
CPP=$(CPP_)-DMPI-DHOST=\"LinuxIFC\"-DIFC\
-Dkind8-DCACHE_SIZE=12000-DPGF90-Davoidalloc\
-DMPI_BLOCK=500-DPROC_GROUP=8\
-DRPROMU_DGEMV-DRACCMU_DGEMV\
#-DNGZhalf
#-DwNGZhalf\
#-----------------------------------------------------------------------
FFLAGS=-O0-Mfree-g#-Mx,119,0x200000
#-----------------------------------------------------------------------
OFLAG=-O0
OFLAG_HIGH=$(OFLAG)
OBJ_HIGH=
OBJ_NOOPT=
DEBUG=-g-O0
INLINE=$(OFLAG)
#-----------------------------------------------------------------------
LAPACK=../vasp.5.lib/lapack_double.o
BLAS=-L/opt/pgi/linux86/10.0/lib-lblas
#-----------------------------------------------------------------------
LIB=-L../vasp.5.lib-ldmy\
../vasp.5.lib/linpack_double.o$(LAPACK)\
$(BLAS)
#optionsforlinking(nonerequired)
LINK=
#-----------------------------------------------------------------------
BLACS=/opt/pgi/linux86/2010/mpi/mpich/lib
SCA_=/opt/pgi/linux86/2010/mpi/mpich/lib
SCA=$(SCA_)/libscalapack.a\
$(BLACS)/blacsF77init_MPI-LINUX-0.a$(BLACS)/blacs_MPI-LINUX-0.a$(BLACS)/blacsF77init_MPI-LINUX-0.a
#-----------------------------------------------------------------------
#librariesformpi
#-----------------------------------------------------------------------
FFT3D=fftmpi.offtmpi_map.offt3dfurth.offt3dlib.o
#-----------------------------------------------------------------------
#generalrulesandcompilelines
#-----------------------------------------------------------------------
BASIC=symmetry.osymlib.olattlib.orandom.o
SOURCE=base.ompi.osmart_allocate.oxml.o\
constant.ojacobi.omain_mpi.oscala.o\
asa.olattice.oposcar.oini.oxclib.oxclib_grad.o\
radial.opseudo.omgrid.ogridq.oebs.o\
mkpoints.owave.owave_mpi.owave_high.o\
$(BASIC)nonl.ononlr.ononl_high.odfast.ocholeski2.o\
mix.ohamil.oxcgrad.oxcspin.opotex1.opotex2.o\
metagga.oconstrmag.ocl_shift.orelativistic.oLDApU.o\
paw_base.oegrad.opawsym.opawfock.opawlhf.opaw.o\
mkpoints_full.ocharge.odipol.opot.o\
dos.oelf.otet.otetweight.ohamil_rot.o\
steep.ochain.odyna.osphpro.ous.ocore_rel.o\
aedens.owavpre.owavpre_noio.obroyden.o\
dynbr.ormm-diis.oreader.owriter.otutor.oxml_writer.o\
brent.ostufak.ofileio.oopergrid.ostepver.o\
chgloc.ofast_aug.ofock.omkpoints_change.osym_grad.o\
mymath.ointernals.odimer_heyden.odvvtrajectory.ovdwforcefield.o\
hamil_high.onmr.oforce.o\
pead.osubrot.osubrot_scf.opwlhf.ogw_model.ooptreal.odavidson.o\
electron.orot.oelectron_all.oshm.opardens.opaircorrection.o\
optics.oconstr_cell_relax.ostm.ofinite_diff.oelpol.o\
hamil_lr.ormm-diis_lr.osubrot_cluster.osubrot_lr.o\
lr_helper.ohamil_lrf.oelinear_response.oilinear_response.o\
linear_optics.olinear_response.o\
setlocalpp.owannier.oelectron_OEP.oelectron_lhf.otwoelectron4o.o\
ratpol.oscreened_2e.owave_cacher.ochi_base.owpot.olocal_field.o\
ump2.obse.oacfdt.ochi.osydmat.o
INC=
vasp:
$(SOURCE)$(FFT3D)$(INC)main.o
rm-fvasp
$(FCL)-ovaspmain.o$(SOURCE)$(FFT3D)$(LIB)$(LINK)
makeparam:
$(SOURCE)$(FFT3D)makeparam.omain.F$(INC)
$(FCL)-omakeparam$(LINK)makeparam.o$(SOURCE)$(FFT3D)$(LIB)
zgemmtest:
zgemmtest.obase.orandom.o$(INC)
$(FCL)-ozgemmtest$(LINK)zgemmtest.orandom.obase.o$(LIB)
dgemmtest:
dgemmtest.obase.orandom.o$(INC)
$(FCL)-odgemmtest$(LINK)dgemmtest.orandom.obase.o$(LIB)
ffttest:
base.osmart_allocate.ompi.omgrid.orandom.offttest.o$(FFT3D)$(INC)
$(FCL)-offttest$(LINK)ffttest.ompi.omgrid.orandom.osmart_allocate.obase.o$(FFT3D)$(LIB)
kpoints:
$(SOURCE)$(FFT3D)makekpoints.omain.F$(INC)
$(FCL)-okpoints$(LINK)makekpoints.o$(SOURCE)$(FFT3D)$(LIB)
clean:
-rm-f*.g*.f*.o*.L*.mod;touch*.F
main.o:
main$(SUFFIX)
$(FC)$(FFLAGS)$(DEBUG)$(INCS)-cmain$(SUFFIX)
xcgrad.o:
xcgrad$(SUFFIX)
$(FC)$(FFLAGS)$(INLINE)$(INCS)-cxcgrad$(SUFFIX)
xcspin.o:
xcspin$(SUFFIX)
$(FC)$(FFLAGS)$(INLINE)$(INCS)-cxcspin$(SUFFIX)
makeparam.o:
makeparam$(SUFFIX)
$(FC)$(FFLAGS)$(DEBUG)$(INCS)-cmakeparam$(SUFFIX)
makeparam$(SUFFIX):
makeparam.Fmain.F
#
#MIND:
Idonothaveafulldependencylistfortheinclude
#andMODULES:
hereareonlytheminimalbasicdependencies
#ifonestrucutureischangedthentouch_depmustbecalled
#withthecorrespondingnameofthestructure
#
base.o:
base.incbase.F
mgrid.o:
mgrid.incmgrid.F
constant.o:
constant.incconstant.F
lattice.o:
lattice.inclattice.F
setex.o:
setexm.incsetex.F
pseudo.o:
pseudo.incpseudo.F
poscar.o:
poscar.incposcar.F
mkpoints.o:
mkpoints.incmkpoints.F
wave.o:
wave.incwave.F
nonl.o:
nonl.incnonl.F
nonlr.o:
nonlr.incnonlr.F
$(OBJ_HIGH):
$(CPP)
$(FC)$(FFLAGS)$(OFLAG_HIGH)$(INCS)-c$*$(SUFFIX)
$(OBJ_NOOPT):
$(CPP)
$(FC)$(FFLAGS)$(INCS)-c$*$(SUFFIX)
fft3dlib_f77.o:
fft3dlib_f77.F
$(CPP)
$(F77)$(FFLAGS_F77)-c$*$(SUFFIX)
.F.o:
$(CPP)
$(FC)$(FFLAGS)$(OFLAG)$(INCS)-c$*$(SUFFIX)
.F$(SUFFIX):
$(CPP)
$(SUFFIX).o:
$(FC)$(FFLAGS)$(OFLAG)$(INCS)-c$*$(SUFFIX)
现说明一下makefile中参数的选择
编译中用到下列数学库:
LAPACK=../vasp.5.lib/lapack_double.o
BLAS=-L/opt/pgi/linux86/10.0/lib-lblas
BLACS=/opt/pgi/linux86/2010/mpi/mpich/lib
SCA_=/opt/pgi/linux86/2010/mpi/mpich/lib
SCA=$(SCA_)/libscalapack.a\
$(BLACS)/blacsF77init_MPI-LINUX-0.a$(BLACS)/blacs_MPI-LINUX-0.a$(BLACS)/blacsF77init_MPI-LINUX-0.a
其中,lapack用到vasp自带的库,而blas用到pgi自带的库,用于并行编译的库分别是scalapack和blacs,这两个数学库是pgi自带的。
cpp参数如下:
CPP=$(CPP_)-DMPI-DHOST=\"LinuxIFC\"-DIFC\
-Dkind8-DCACHE_SIZE=12000-DPGF90-Davoidalloc\
-DMPI_BLOCK=500-DPROC_GROUP=8\
-DRPROMU_DGEMV-DRACCMU_DGEMV\
#-DNGZhalf
#-DwNGZhalf\
其中-DNGZhalf和-DwNGZhalf\在编译过程中被注释掉,原因是我发现用上这两个参数后,计算会提示内存不够,而同一计算任务不用这两个参数编译,就不出现内存不够的提示。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vasp52安装 虫帖 vasp52 安装