1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > linux 编译器 fpp 科学网—fpp编译vasp5.3+vtst - 穆跃文的博文

linux 编译器 fpp 科学网—fpp编译vasp5.3+vtst - 穆跃文的博文

时间:2022-09-29 10:00:39

相关推荐

linux 编译器 fpp 科学网—fpp编译vasp5.3+vtst - 穆跃文的博文

Redhat上采用Ifc编译器,MKL数据库 VASP5.3编译的过程

-----------------------------------------------------

创建用户:

adduser -g root mu

passwd mu

rocks sync users

rocks sync config

一 . 软件准备

VASP源代码(vasp.5.3.3.tar.gz和vasp.5.lib.tar.gz),ifc编译器(l_cprof_p_11.1.064.tgz)icc编译器(l_cproc_p_11.1.064.tgz ),openmpi 软件

#su root 进入root用户,

二.ICC编译器安装

先解压l_cproc_p_11.1.064.tgz 得到l_cproc_p_11.1.064文件夹

进入l_cproc_p_11.1.064文件夹找到install.sh文件

执行./install.sh开始安装icc,

-------------------------------------

注意选择: 2. Custom Install (For Advanced Users)

2. Custom Install - specify individual product components to install

在后面的安装选项中选择安装Intel(R) 64的,不安装IA-32 。安装过程中自带 Math Kernel Library 数学库。

并指定安装目录/share/apps/intel/icc

-------------------------------------

安装完毕 ,ICC安装完成

(卸载时 在目录外执行 安装目录/bin/intel64/uninstall_cproc.sh 进行卸载)

此时,mkl位置 /share/apps/intel/icc/mkl

三. Ifc编译器安装

先解压l_cprof_p_11.1.064.tgz 得到l_cprof_p_11.1.064文件夹

进入l_cprof_p_11.1.064文件夹找到install.sh文件

执行./install.sh开始安装ifc,

-------------------------------------

注意选择 2. Custom Install (For Advanced Users)

2. Custom Install - specify individual product components to install

在后面的安装选项中选择安装Intel(R) 64的,不安装IA-32 。不安装 Math Kernel Library 数学库。

并指定安装目录/share/apps/intel/ifc

-------------------------------------

安装完毕 ,ifc安装完成

(卸载时 在目录外执行 安装目录/bin/intel64/uninstall_cprof.sh 进行卸载,uninstall_debugger.sh也可以)

四.将icc和ifort命令加入环境变量

新建一个文件user.sh,加入

INTELROOT=/share/apps/intel/intel2

. $INTELROOT/ifc/bin/ifortvars.sh intel64

. \$INTELROOT/icc/bin/iccvars.sh intel64

然后 source user.sh

which icc 和which ifort 看看能否找到

验证ifort是否可以使用,

#which ifort

写一个简单的a.f90

program test

write(*,*) "iello"

pause

end

然后#ifort a.f90 -o test

#./test

五. mkl和fftw安装

1)mkl在安装icc时已安装,位置 /share/apps/intel/icc/mkl

2)fftw安装 (推荐) /

cd /share/apps/fftw-3.2.2

env CC=gcc F77=ifort ./configure --prefix=/share/apps/fftw --enable-mpi

make && make install

六、openmpi的安装

下载openmpi,并解压。进入openmpi目录执行:

./configure --prefix=/share/apps/openmpi/ CC=icc CXX=icpc F77=ifort FC=ifort

make

make install

加入环境变量,在user.sh中加入

. \$INTELROOT/icc/mkl/tools/environment/mklvarsem64t.sh

export LD_LIBRARY_PATH=/share/apps/openmpi/lib:\$LD_LIBRARY_PATH

export PATH=/share/apps/openmpi/bin:\$PATH

然后 source user.sh

七.vasp 安装

1)su root ,将 vasp.5.3.3.tar.gz,vasp.5.lib.tar.gz,vtstcode.tar.gz

(其中 vtstcode.tar.gz 来自:http://theory.cm.utexas.edu/vtsttools/index.php )

拷贝到 /share/apps/vasp 目录下,并将分别解压

2)进入vasp.5.lib所在目录

根据自己机子的情况选择合适的makefile

一般选择 makefile.linux_ifc_P4 (即 ifort编译器和intel的cpu)

编辑makfile

18行 CPP = gcc -E -P -C $*.F >$*.f 改为

CPP = icc -E -P -C $*.F >$*.f

19行的 FC=ifc 修改为 FC=ifort(也可以是绝对路径)

并添加 CC = icc

make

如果编译通过,说明前面安装的数学库和编译器等都是正确的

3)进入vasp.5.3所在目录

然后将 cp makefile.linux_ifc_P4 makefile.mpi ,打开 makefile.mpi

在98行和99行CPP前加上#注释掉(即将前面的串行配置去掉)

第108行 FFLAGS = -FR -lowercase -assume byterecl 改为

FFLAGS = -FR -names lowercase -assume byterecl -mssse3 -heap-arrays 64

(针对 ifort 10 以上)

第123行 OFLAG=-O2 -ip 改为 OFLAG=-O2 -ip -ftz

第138行 #MKL_PATH 的#去掉.

第141行 MKL_PATH 前加上#注释掉

第144行(空行)增加 IFC_LIB_PATH=/export/apps/intel/intel2/ifc/lib/intel64

第147行 # BLAS= -Wl,--start-group \$(MKL_PATH)/libmkl_intel_lp64.a \$(MKL_PATH)/libmkl_intel_thread.a \$(MKL_PATH)/libmkl_core.a -Wl,--end-group -lguide

改为 BLAS= -Wl,--start-group \$(MKL_PATH)/libmkl_intel_lp64.a \$(MKL_PATH)/libmkl_sequential.a \$(MKL_PATH)/libmkl_core.a \$(MKL_PATH)/libmkl_lapack95_lp64.a \$(IFC_LIB_PATH)/libiomp5.a \$(IFC_LIB_PATH)/libimf.a -Wl,--end-group -lpthread -lm

第149行BLAS 前加上#注释掉

(注意不换行)

第149行BLAS 前加上#注释掉

第158行 LAPACK 前加上#注释掉

第169行到171行 LIB 三行前加上#注释掉

将182行前FFT3D = fft3dfurth.o fft3dlib.o 前加#

将205行前#去掉,并改成 FC=/share/apps/intel/intel2/openmpi/bin/mpif90

将206行前#去掉,变为 FCL=$(FC)

将223行到226行 CPP = 前的#去掉,改成

CPP = \$(CPP_) -DMPI -DHOST=\"LinuxIFC\" -DIFC \

-DCACHE_SIZE=5000 -DPGF90 -Davoidalloc -DNGZhalf \

-DMPI_BLOCK=262144 -Duse_collective -DscaLAPACK \

-DRPROMU_DGEMV -DRACCMU_DGEMV

第234和235行BLACS和SCA前加#

将241-243行LIB 前#去掉

将253行 #FFT3D = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o /opt/libs/fftw-3.1.2/lib/libfftw3.a

改为 FFT3D = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o /data1/software/vasp/fftw-3.1.2/lib/libfftw3.a

第258行 #INCS 去掉#,改成 INCS = -I/data1/software/vasp/fftw-3.1.2/include

然后 make -f vasp.mpi 得到 vasp ,并 mv vasp vasp.mpi

make clean -f vasp.mpi

make makeparam -f vasp.mpi ,得到 makeparam

make clean -f vasp.mpi

八.vasp+vtst安装

cd vtstcode

sed -i "s/^..*#ifdef/#ifdef/g" *

sed -i "s/^..*#endif/#endif/g" *

将所有的文件中#if 和#endif前的空格去掉,因为fpp预编译要求#在第一个字符位.

然后并将vtstcode的内容复制到/share/apps/vasp/vasp.5.3下.

执行 perl mkbdrpro.pl bdr_changes,产生 bdrpro.F

cp makefile.mpi makefile.neb

后面加上Bader电荷计算和VTST代码等配置:

打开 makefile.neb

1) 找到有 sphpro.o的行(大约在240行)将

steep.o chain.o dyna.o sphpro.o us.o core_rel.o \

改为

steep.o chain.o dyna.o sphpro.o bdrpro.o us.o core_rel.o \

2) 大约仍在240行,在chain.o之前加入

bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \

fire.o lanczos.o neb.o qm.o opt.o\

注意: bbm.o 是vtst3.0新加的,vtst2.4没有.

3) 在main.F 中 将 CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &

LATT_CUR%A,LATT_CUR%B,IO%IU6)

替换为:

CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &

TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)

保存退出。

然后 make -f makefile.neb 得到 vasp ,并 mv vasp vasp.mpi.neb

make clean -f makefile.neb

九. 其它版本VASP的编译:

1)Gamma点版本:

cp makefile.mpi makefile.gamma

在makefile.gamma修改

CPP = \$(CPP_) -DMPI -DHOST=\"LinuxIFC\" -DIFC \

-DCACHE_SIZE=5000 -DPGF90 -Davoidalloc -DNGZhalf \

-DMPI_BLOCK=262144 -Duse_collective -DscaLAPACK \

-DRPROMU_DGEMV -DRACCMU_DGEMV

中 -DNGZhalf的后面加上 -DwNGZhalf

然后 make -f makefile.gamma 得到 vasp ,并 mv vasp vasp.mpi.gamma.neb

2)SOC版本:

cp makefile.mpi makefile.soc

在makefile.soc修改

CPP = \$(CPP_) -DMPI -DHOST="LinuxIFC" -DIFC

-DCACHE_SIZE=5000 -DPGF90 -Davoidalloc -DNGZhalf

-DMPI_BLOCK=262144 -Duse_collective -DscaLAPACK

-DRPROMU_DGEMV -DRACCMU_DGEMV

中去掉-DNGZhalf

然后 make -f makefile.soc 得到 vasp ,并 mv vasp vasp.mpi.soc.neb

注意:1)执行任务前先 source user.sh

2)基本sge提交脚本见另一篇博文《Vasp sge提交的基本脚本》。

搞定收工!!!!

===============

后记:

1)LAPACK 与BLAS库也可以使用其它的,如在Rocks集群上quantum-espresso(pwscf)安装中使用的LAPACK 与BLAS库,相应设置:

BLAS= -L/share/apps/lapack-3.3.0 -lblas

LAPACK= -llapack

或者 BLAS采用Kazushige Goto's BLAS,LAPACK采用lapack_double.o 的编译得到vasp,据说计算速度最快。

2)fftw库也可以使用VASP自带的或MKL自带的

cd /share/apps/intel/icc/mkl/interfaces/fftw3xf

make libem64t compiler=intel

得到 libfftw3xf_intel.a

注意: vasp5.2.x和vasp5.3.x 不推荐使用intel的fftw,有一个奇怪的问题,做并行时,若不设NPAR参数计算结果会有问题.

3)另一种并行库 :impi的安装及使用

1、 进入源文件所在的目录, ./install.sh 进行安装,

注意选择 1. Install cluster node software on an automounted shared file system

安装时注意选择安装目录 /share/apps/intel/impi

(卸载时目录外执行 相应目录下uninstall.sh 进行卸载)

2、增加环境变量

在user.sh 中加入

. /share/apps/intel/impi/bin64/mpivars.sh

注意:impi的的并行编译器为mpiifort。

2)mkl的直接安装:

在intel网站下载 l_mkl_p_10.2.3.029.tar.gz

tar –zxvf l_mkl_p_10.2.3.029.tar.gz

进入解压得到的目录 l_mkl_p_10.2.3.029

执行 ./install.sh,安装和卸载与icc等类似。

转载本文请联系原作者获取授权,同时请注明本文来自穆跃文科学网博客。

链接地址:/blog-588243-656034.html

上一篇:山西大学邮箱在android手机上收发设置

下一篇:BigDFT的安装

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。