从0到1教你如何在Linux系统部署vasp,亲测有效

VASP全称(Vienna Ab-initio Simulation Package),是维也纳大学Hafner小组开发的进行电子结构计算和量子力学-分子动力学模拟软件包。

vasp是目前主流的第一性原理计算软件,它使用赝势和平面波基函数,可以计算周期性结构材料的结构参数、力学性质、电子结构、光学磁学性质等,也可以对体系进行从头算分子动力学模拟等计算。近半年VASP论文引用量800+。

目前大多数科研机构和学校都是通过购买线上超算资源来使用vasp计算,但如何部署使用软件,对于很多常用Windows系统的初学者来说不太友好。

本教程将详细介绍VASP软件在Linux系统下基本部署方法。接下来一段时间,小编会持续更新系列计算软件相关教程,以及Linux系统系统下使用科学计算软件的常用方法,希望有感兴趣、有意愿学习的朋友多关注公众号《集群计算技术》后续更新内容

安装编译环境Intel oneAPI

进入intel官网

https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/toolkits.html选择需要安装的工具包,需要安装:Base Toolkit和HPC Toolkit两部分

点击进入下载页面后,选择对应的系统的版本

执行安装脚本 :

sh ./l_BaseKit_p_2024.1.0.596_offline.shsh ./l_HPCKit_p_2024.1.0.560_offline.sh

建议先安装Base toolkit再安装HPC toolkit,如果不需要改配置,就一路默认选项

安装完成:默认安装路径在/opt/intel/oneapi/xxx

source /path/oneapi/setvars.sh

检查所需要的编译环境

安装部署VASP

加载编译依赖环境:

source /path/oneapi/setvars.sh

解压VASP源码包

tar -xvf vasp.6.xx.tgz

进入主目录

cd vasp.6.xx

为当前环境准备makefile.include (通过修改对应的编译配置文件选择适应系统以及编译可选功能)

cp -r arch/makefile.include.intel_omp ./makefile.include

编译选项参考修改

使用intel-oneAPI编译器+MKL数学库+intelmpi实现MPI+openmp支持多线程,主要注意注释部分的内容

# Default    precompiler optionsCPP_OPTIONS    = -DHOST=\"LinuxIFC\" \-DMPI -DMPI_BLOCK=8000    -Duse_collective \-DscaLAPACK \-DCACHE_SIZE=4000 \-Davoidalloc \-Dvasp6 \-Duse_bse_te \-Dtbdyn \-Dfock_dblbuf-D_OPENMP #vasp-6.3.2使用intelmpi-2021.3版本不支持多线程,可以根据实际加载环境版本调整。CPP= fpp -f_com=no -free -w0  $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)FC= mpiifort -qopenmpFCL= mpiifortFREE= -free -names lowercaseFFLAGS= -assume byterecl -wOFLAG= -O2OFLAG_IN= $(OFLAG)DEBUG= -O0OBJECTS= fftmpiw.o fftmpi_map.o fftw3d.o    fft3dlib.oOBJECTS_O1    += fftw3d.o fftmpi.o fftmpiw.oOBJECTS_O2    += fft3dlib.o# For what    used to be vasp.5.libCPP_LIB= $(CPP)FC_LIB= $(FC)CC_LIB= iccCFLAGS_LIB= -OFFLAGS_LIB= -O1FREE_LIB= $(FREE)OBJECTS_LIB    = linpack_double.o# For the    parser libraryCXX_PARS= icpcLLIBS= -lstdc++####    Customize as of this point! Of course you may change the preceding## part of    this file as well if you like, but it should rarely be##    necessary ...### When    compiling on the target machine itself, change this to the# relevant    target when cross-compiling for another architecture#VASP_TARGET_CPU ?= -xHOST#FFLAGS+= $(VASP_TARGET_CPU)  ##amd平台不支持-xHOST,需要注释掉# Intel MKL    (FFTW, BLAS, LAPACK, and scaLAPACK)# (Note:    for Intel Parallel Studio's MKL use -mkl instead of -qmkl)FCL+= -mklMKLROOT?= path/compilers_and_libraries_2020.1.217/mkl    ## 修改为echo $MKLROOT的路径LLIBS+= -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64    -lmkl_blacs_intelmpi_lp64INCS=-I$(MKLROOT)/include/fftw#    HDF5-support (optional but strongly recommended)#CPP_OPTIONS+=    -DVASP_HDF5#HDF5_ROOT?= /path/to/your/hdf5/installation#LLIBS+= -L$(HDF5_ROOT)/lib -lhdf5_fortran#INCS+= -I$(HDF5_ROOT)/include# For the    VASP-2-Wannier90 interface (optional)#CPP_OPTIONS+= -DVASP2WANNIER90#WANNIER90_ROOT    ?= /path/to/your/wannier90/installation#LLIBS+= -L$(WANNIER90_ROOT)/lib -lwannier# For the    fftlib library (hardly any benefit in combination with MKL's FFTs)#FCL= mpiifort fftlib.o -qmkl#CXX_FFTLIB= icpc -qopenmp -std=c++11 -DFFTLIB_USE_MKL    -DFFTLIB_THREADSAFE#INCS_FFTLIB    = -I./include -I$(MKLROOT)/include/fftw#LIBS+= fftlib
make DEPS=1 -j24 all

并行编译gam,std,ncl三个版本。

非Intel平台的优化和注意事项

  • AMD平台不支持-xHOST;-xHOST是Intel 编译器针对Intel处理器增加的编译优化选项.

    perf top  查看指令集使用情况

    图中显示调用了AVX2指令集

  • intelmpi-2021.3不支持编译多线程版本的vasp。报错信息如下。如需编译多线程版本,需要更换intelmpi版本。

  • VASP使用MKL库完成其中的数学运算,但该库会通过内部函数检测是否为Intel处理器,在Intel处理器上MKL库的加速效果更好。分析显示MKL使用函数mkl_serv_intel_cpu_true来检测它是否在处理真正的Intel CPU。

    在intel mkl 2020版本之前可以通过使用环境变量MKL_DEBUG_CPU_TYPE=5可以使numpy运算速度再加快一些,但后续版本移除了这个变量。我们可以用自己的函数来代替它:

intmkl_serv_intel_cpu_true() {return 1;}

并向其编译为共享库:

$ gcc -shared -fPIC -o libisintel.so isintel.

libisintel.so是识别cpu处理器型号的函数,AMD平台上可以加载这个库,替换掉MKL中自带的函数,把AMD识别为Intel,以更好发挥MKL数学库的计算能力。

export LD_PRELOAD=/PATH/libisintel.so

编译结果

可执行文件生成目录:

cd vasp-6.x.x/bin

参考引用:

1.      https://www.vasp.at/wiki/index.php/The_VASP_Manual

2.      https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/toolkits.html

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值