| 24小時(shí)熱門(mén)版塊排行榜 |
| 13 | 1/1 | 返回列表 |
| 查看: 2804 | 回復(fù): 12 | |||
| 【獎(jiǎng)勵(lì)】 本帖被評(píng)價(jià)9次,作者guohuazhong增加金幣 8 個(gè) | |||
guohuazhong至尊木蟲(chóng) (職業(yè)作家)
|
[資源]
【原創(chuàng)】用pgi10.0編譯vasp5.2
|
||
|
五一這兩天閑著沒(méi)事,擺弄了一下vasp5.2編譯,經(jīng)測(cè)試,并行編譯獲得成功,現(xiàn)把我的編譯過(guò)程與大家分享。 1.安裝linux系統(tǒng),我現(xiàn)在用的系統(tǒng)是fedora 12。 2.配置并行環(huán)境 a.配置ssh環(huán)境 修改/etc/hosts文件 在127.0.0.1 local.......... 下面加入 127.0.0.1 node0!左邊一串?dāng)?shù)字是機(jī)子的ip,右邊是取的hostname,由于我是單機(jī)多核環(huán)境,所以ip地址都是一樣的。 127.0.0.1 node2 可以通過(guò)ping hostname 或ssh hostname測(cè)試設(shè)置是否成功 b.實(shí)現(xiàn)無(wú)密碼遠(yuǎn)程訪問(wèn) 打開(kāi)一個(gè)終端 #ssh-keygen -d 回車(chē) 回車(chē) 在~/.ssh下生成id_dsa (存放私人密匙)和id_dsa_pub(存放公用密匙) #cp id_dsa_pub authorized_keys #ssh hostname(無(wú)需輸入密碼) 安裝好后,可以庸ping命令和ssh查看node0,node1等等。 3.安裝pgi10.0, 按照提示安裝即可,只不過(guò)在安裝過(guò)程中要選擇mpich,選用ssh,這樣就把mpich安裝到默認(rèn)目錄/opt/pgi/linux86/2010 /mpi/mpich了,其中編譯過(guò)程中要用到的數(shù)學(xué)庫(kù)被安裝到/opt/pgi/linux86/2010/mpi/mpich/lib中,比如并行編譯中經(jīng)常用到的libscalapack.a ,blacsF77init_MPI-LINUX-0.a,blacs_MPI-LINUX-0.a,blacsF77init_MPI-LINUX- 0.a等等。 安裝完畢后,配置環(huán)境變量。 如: gedit ~/.bashrc,在這個(gè)文件中加入如下內(nèi)容: PGI=/opt/pgi; export PGI MANPATH=$MANPATH:$PGI/linux86/10.0/man export MANPATH LM_LICENSE_FILE=$PGI/license.dat export LM_LICENSE_FILE PATH=$PGI/linux86/10.0/bin:$PATH source /opt/pgi/linux86/10.0/mpi.sh export PATH 其中, source /opt/pgi/linux86/10.0/mpi.sh配置mpi環(huán)境。 4. 編譯vasp5.2 a.編譯程序自帶的數(shù)學(xué)庫(kù)。進(jìn)入數(shù)學(xué)庫(kù)所在的目錄 ~/vasp.5.lib。在終端中敲如命令 cp makefile.linux_pgi_opt makefile make 我的makefile文件如下: .SUFFIXES: .inc .f .F #----------------------------------------------------------------------- # Makefile for Portland Group F90/HPF compiler # the makefile was tested only under Linux on Intel platforms # however it might work on other platforms as well # # this release of vasp.4.lib contains lapack v2.0 # this can be compiled with pgf90 compiler if the option -O1 is used # # Mind: one user reported that he had to copy preclib.F diolib.F # dlexlib.F and drdatab.F to the directory vasp.4.4, compile the files # there and link them directly into vasp # for no obvious reason these files could not be linked from the library # #----------------------------------------------------------------------- # C-preprocessor CPP = mpicc -E -P -C $*.F >$*.f FC=mpif90 -Mx,119,0x200000 CFLAGS = -O FFLAGS = -O0 FREE = -Mfree DOBJ = preclib.o timing_.o derrf_.o dclock_.o diolib.o dlexlib.o drdatab.o #----------------------------------------------------------------------- # general rules #----------------------------------------------------------------------- libdmy.a: $(DOBJ) lapack_double.o linpack_double.o lapack_atlas.o -rm libdmy.a ar vq libdmy.a $(DOBJ) # files which do not require autodouble lapack_double.o: lapack_double.f $(FC) $(FFLAGS) $(NOFREE) -c lapack_double.f lapack_single.o: lapack_single.f $(FC) $(FFLAGS) $(NOFREE) -c lapack_single.f lapack_atlas.o: lapack_atlas.f $(FC) $(FFLAGS) $(NOFREE) -c lapack_atlas.f linpack_double.o: linpack_double.f $(FC) $(FFLAGS) $(NOFREE) -c linpack_double.f linpack_single.o: linpack_single.f $(FC) $(FFLAGS) $(NOFREE) -c linpack_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 這一步是整個(gè)編譯成功的關(guān)鍵,主要的問(wèn)題是庫(kù)文件的調(diào)用,CPP參數(shù)的選擇...... 下面貼出我的makefile文件: .SUFFIXES: .inc .f .f90 .F #----------------------------------------------------------------------- # all CPP processed fortran files have the extension .f SUFFIX=.f #----------------------------------------------------------------------- # fortran compiler and linker #----------------------------------------------------------------------- FC=mpif90 # fortran linker 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) # options for linking (none required) 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 #----------------------------------------------------------------------- # libraries for mpi #----------------------------------------------------------------------- FFT3D = fftmpi.o fftmpi_map.o fft3dfurth.o fft3dlib.o #----------------------------------------------------------------------- # general rules and compile lines #----------------------------------------------------------------------- BASIC= symmetry.o symlib.o lattlib.o random.o SOURCE= base.o mpi.o smart_allocate.o xml.o \ constant.o jacobi.o main_mpi.o scala.o \ asa.o lattice.o poscar.o ini.o xclib.o xclib_grad.o \ radial.o pseudo.o mgrid.o gridq.o ebs.o \ mkpoints.o wave.o wave_mpi.o wave_high.o \ $(BASIC) nonl.o nonlr.o nonl_high.o dfast.o choleski2.o \ mix.o hamil.o xcgrad.o xcspin.o potex1.o potex2.o \ metagga.o constrmag.o cl_shift.o relativistic.o LDApU.o \ paw_base.o egrad.o pawsym.o pawfock.o pawlhf.o paw.o \ mkpoints_full.o charge.o dipol.o pot.o \ dos.o elf.o tet.o tetweight.o hamil_rot.o \ steep.o chain.o dyna.o sphpro.o us.o core_rel.o \ aedens.o wavpre.o wavpre_noio.o broyden.o \ dynbr.o rmm-diis.o reader.o writer.o tutor.o xml_writer.o \ brent.o stufak.o fileio.o opergrid.o stepver.o \ chgloc.o fast_aug.o fock.o mkpoints_change.o sym_grad.o \ mymath.o internals.o dimer_heyden.o dvvtrajectory.o vdwforcefield.o \ hamil_high.o nmr.o force.o \ pead.o subrot.o subrot_scf.o pwlhf.o gw_model.o optreal.o davidson.o \ electron.o rot.o electron_all.o shm.o pardens.o paircorrection.o \ optics.o constr_cell_relax.o stm.o finite_diff.o elpol.o \ hamil_lr.o rmm-diis_lr.o subrot_cluster.o subrot_lr.o \ lr_helper.o hamil_lrf.o elinear_response.o ilinear_response.o \ linear_optics.o linear_response.o \ setlocalpp.o wannier.o electron_OEP.o electron_lhf.o twoelectron4o.o \ ratpol.o screened_2e.o wave_cacher.o chi_base.o wpot.o local_field.o \ ump2.o bse.o acfdt.o chi.o sydmat.o INC= vasp: $(SOURCE) $(FFT3D) $(INC) main.o rm -f vasp $(FCL) -o vasp main.o $(SOURCE) $(FFT3D) $(LIB) $(LINK) makeparam: $(SOURCE) $(FFT3D) makeparam.o main.F $(INC) $(FCL) -o makeparam $(LINK) makeparam.o $(SOURCE) $(FFT3D) $(LIB) zgemmtest: zgemmtest.o base.o random.o $(INC) $(FCL) -o zgemmtest $(LINK) zgemmtest.o random.o base.o $(LIB) dgemmtest: dgemmtest.o base.o random.o $(INC) $(FCL) -o dgemmtest $(LINK) dgemmtest.o random.o base.o $(LIB) ffttest: base.o smart_allocate.o mpi.o mgrid.o random.o ffttest.o $(FFT3D) $(INC) $(FCL) -o ffttest $(LINK) ffttest.o mpi.o mgrid.o random.o smart_allocate.o base.o $(FFT3D) $(LIB) kpoints: $(SOURCE) $(FFT3D) makekpoints.o main.F $(INC) $(FCL) -o kpoints $(LINK) makekpoints.o $(SOURCE) $(FFT3D) $(LIB) clean: -rm -f *.g *.f *.o *.L *.mod ; touch *.F main.o: main$(SUFFIX) $(FC) $(FFLAGS)$(DEBUG) $(INCS) -c main$(SUFFIX) xcgrad.o: xcgrad$(SUFFIX) $(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcgrad$(SUFFIX) xcspin.o: xcspin$(SUFFIX) $(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcspin$(SUFFIX) makeparam.o: makeparam$(SUFFIX) $(FC) $(FFLAGS)$(DEBUG) $(INCS) -c makeparam$(SUFFIX) makeparam$(SUFFIX): makeparam.F main.F # # MIND: I do not have a full dependency list for the include # and MODULES: here are only the minimal basic dependencies # if one strucuture is changed then touch_dep must be called # with the corresponding name of the structure # base.o: base.inc base.F mgrid.o: mgrid.inc mgrid.F constant.o: constant.inc constant.F lattice.o: lattice.inc lattice.F setex.o: setexm.inc setex.F pseudo.o: pseudo.inc pseudo.F poscar.o: poscar.inc poscar.F mkpoints.o: mkpoints.inc mkpoints.F wave.o: wave.inc wave.F nonl.o: nonl.inc nonl.F nonlr.o: nonlr.inc nonlr.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) 現(xiàn)說(shuō)明一下makefile中參數(shù)的選擇 編譯中用到下列數(shù)學(xué)庫(kù): 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自帶的庫(kù),而blas用到pgi自帶的庫(kù),用于并行編譯的庫(kù)分別是scalapack和blacs,這兩個(gè)數(shù)學(xué)庫(kù)是pgi自帶的。 cpp參數(shù)如下: 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 \在編譯過(guò)程中被注釋掉,原因是我發(fā)現(xiàn)用上這兩個(gè)參數(shù)后,計(jì)算會(huì)提示內(nèi)存不夠,而同一計(jì)算任務(wù)不用這兩個(gè)參數(shù)編譯,就不出現(xiàn)內(nèi)存不夠的提示。 |
計(jì)算科學(xué)經(jīng)驗(yàn)總結(jié) |
金蟲(chóng) (正式寫(xiě)手)
|
強(qiáng)烈支持原創(chuàng)!學(xué)習(xí)了! 樓主能不能給我發(fā)一個(gè)vasp5.2,我只有4.6的。郵箱kgdu198801@126.com 先謝謝了。 |
鐵桿木蟲(chóng) (正式寫(xiě)手)
木蟲(chóng) (著名寫(xiě)手)
至尊木蟲(chóng) (職業(yè)作家)
銅蟲(chóng) (小有名氣)
木蟲(chóng) (小有名氣)


| 13 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 311求調(diào)劑 +9 | 冬十三 2026-03-15 | 10/500 |
|
|---|---|---|---|---|
|
[考研] 085601材料工程專(zhuān)碩求調(diào)劑 +5 | 慕寒mio 2026-03-16 | 5/250 |
|
|
[考研] 341求調(diào)劑 +5 | 搗蛋豬豬 2026-03-11 | 7/350 |
|
|
[考研] 293求調(diào)劑 +6 | 世界首富 2026-03-11 | 6/300 |
|
|
[考研] 有沒(méi)有道鐵/土木的想調(diào)劑南林,給自己招師弟中~ +3 | TqlXswl 2026-03-16 | 7/350 |
|
|
[考研] 工科材料085601 279求調(diào)劑 +3 | 困于星晨 2026-03-17 | 3/150 |
|
|
[考研] 材料工程專(zhuān)碩274一志愿211求調(diào)劑 +6 | 薛云鵬 2026-03-15 | 6/300 |
|
|
[考研] 304求調(diào)劑 +4 | ahbd 2026-03-14 | 4/200 |
|
|
[考研] 070303一志愿西北大學(xué)學(xué)碩310找調(diào)劑 +5 | d如愿上岸 2026-03-12 | 8/400 |
|
|
[考研] 材料與化工一志愿南昌大學(xué)327求調(diào)劑推薦 +7 | Ncdx123456 2026-03-13 | 8/400 |
|
|
[考研] 0856求調(diào)劑 +3 | 劉夢(mèng)微 2026-03-15 | 3/150 |
|
|
[考研] 085601材料工程315分求調(diào)劑 +3 | yang_0104 2026-03-15 | 3/150 |
|
|
[考研] 255求調(diào)劑 +3 | 李嘉慧, 2026-03-12 | 4/200 |
|
|
[考研] 求調(diào)劑(材料與化工327) +4 | 愛(ài)吃香菜啦 2026-03-11 | 4/200 |
|
|
[考研] 求材料調(diào)劑 +5 | 隔壁陳先生 2026-03-12 | 5/250 |
|
|
[考研] (081700)化學(xué)工程與技術(shù)-298分求調(diào)劑 +12 | 11啦啦啦 2026-03-11 | 35/1750 |
|
|
[考研] 311求調(diào)劑 +3 | 冬十三 2026-03-13 | 3/150 |
|
|
[論文投稿]
投稿問(wèn)題
5+4
|
星光燦爛xt 2026-03-12 | 6/300 |
|
|
[考研] 289求調(diào)劑 +3 | 李政瑩 2026-03-12 | 3/150 |
|
|
[考研] 270求調(diào)劑 085600材料與化工專(zhuān)碩 +3 | YXCT 2026-03-11 | 3/150 |
|