VASP 5.4.1 多插件编译实战:VTST/BEEF/Wannier90 3插件集成与 Intel 编译器配置
VASP 5.4.1 多插件编译实战:VTST/BEEF/Wannier90 3插件集成与 Intel 编译器配置
1. 编译环境准备与基础配置
在开始多插件集成编译前,需要确保系统环境满足以下要求:
- Intel编译器套件:包括ifort、icc和mpiifort
- MKL数学库:提供BLAS、LAPACK和FFTW等基础数学运算支持
- 开发工具链:make、sed等基础编译工具
环境变量配置示例(添加到~/.bashrc或~/.bash_profile):
source /opt/intel/compilers_and_libraries/linux/bin/compilervars.sh intel64 export MKLROOT=/opt/intel/mkl export PATH=$MKLROOT/bin:$PATH关键检查命令:
which ifort # 检查Fortran编译器 which mpiifort # 检查MPI编译器 echo $MKLROOT # 检查MKL库路径2. 基础VASP编译验证
首先进行纯净版VASP编译验证:
- 解压源代码并准备编译配置:
tar -zxvf vasp.5.4.1.05Feb16.tar.gz cd vasp.5.4.1 cp arch/makefile.include.linux_intel makefile.include- 关键makefile.include参数解析:
CPP_OPTIONS = -DMPI -DHOST=\"LinuxIFC\" -DIFC \ -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc \ -DMPI_BLOCK=8000 -DscaLAPACK -Duse_collective \ -DnoAugXCmeta -Duse_bse_te \ -Duse_shmem -Dtbdyn OFLAG = -O2 -xHost # 启用CPU特定优化- 执行编译测试:
make std > build.log 2>&1 # 标准版本测试编译3. VTST插件集成编译
过渡态工具(VTST)的集成需要修改源代码和编译配置:
- 获取并部署VTST代码:
wget http://theory.cm.utexas.edu/vtsttools/download/vtstcode-170.tgz tar -zxvf vtstcode-170.tgz cp vtstcode-170/* src/- 关键文件修改点:
- src/main.F修改:
! 原始内容 CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, & TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6) ! 替换为 IF (LCHAIN) CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, & TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)- src/.objects修改:
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 \ # 新增行 chain.o \ # 保持原有- 编译验证:
make veryclean make std4. BEEF-vdW泛函集成
Bayesian误差估计泛函的集成需要分步操作:
- 编译libbeef库:
svn co svn://suncatls1.slac.stanford.edu/beef/trunk beef cd beef ./configure CC=icc --prefix=$HOME/opt/beef make && make install- makefile.include关键修改:
CPP_OPTIONS += -Dlibbeef # 添加到CPP选项 # 添加BEEF库路径 BEEF = -L$(HOME)/opt/beef/lib -lbeef LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS) $(BEEF)- 使用配置示例(INCAR):
GGA = BF LUSE_VDW = .TRUE. Zab_VDW = -1.88675. Wannier90接口集成
Wannier90 1.2版本接口配置流程:
- 编译Wannier90库:
tar -zxvf wannier90-1.2.tar.gz cd wannier90-1.2 cp config/make.sys.ifort make.sys修改make.sys关键参数:
LIBDIR = $(MKLROOT)/lib/intel64 LIBS = -L$(LIBDIR) -mkl -lpthread编译测试:
make wannier lib- VASP端集成配置:
makefile.include修改:
CPP_OPTIONS += -DVASP2WANNIER90 # 启用接口 WANNIER90 = /path/to/wannier90-1.2/libwannier.a LLIBS = $(WANNIER90) $(SCALAPACK) $(LAPACK) $(BLAS)6. 多插件联合编译实战
完成各插件单独配置后,最终整合配置示例:
# 复合CPP选项 CPP_OPTIONS = -DMPI -DHOST=\"LinuxIFC\" -DIFC \ -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc \ -DMPI_BLOCK=8000 -DscaLAPACK -Duse_collective \ -DnoAugXCmeta -Duse_bse_te \ -Duse_shmem -Dtbdyn \ -DVASP2WANNIER90 -Dlibbeef # 库路径配置 BEEF = -L$(HOME)/opt/beef/lib -lbeef WANNIER90 = $(HOME)/opt/wannier90-1.2/libwannier.a LLIBS = $(WANNIER90) $(BEEF) $(SCALAPACK) $(LAPACK) $(BLAS)完整编译流程:
make veryclean # 清除历史编译 make std # 标准版本 make ncl # 非共线版本7. 超算环境适配建议
针对不同超算平台的配置调整:
- 深圳超算环境示例:
module load intel/2016 export MKLROOT=/opt/intel/2016/mkl- 编译节点注意事项:
# 典型作业提交脚本 #!/bin/bash #SBATCH -N 2 #SBATCH --ntasks-per-node=24 #SBATCH -p compute module load intel/2016 mkl/2016 mpirun -np 48 vasp_std8. 验证与性能测试
各插件功能验证方法:
- VTST验证:
# 运行NEB计算检查力收敛 grep 'NEB: forces' OUTCAR- BEEF验证:
# 检查输出中的BEEF相关项 grep BEEF OUTCAR- Wannier90验证:
# 检查Wannier90接口初始化 grep VASP2WANNIER OUTCAR性能优化建议:
- 调整
KPAR和NCORE参数匹配计算节点配置 - 对于大体系,可启用
ADDGRID=.TRUE.提升精度 - VTST计算建议使用
ICHAIN=0和LCLIMB=.TRUE.
9. 常见问题解决方案
编译错误1:未找到beef符号
undefined reference to `beef_ensemble_'解决方案:检查libbeef.a路径是否正确,确认-lbeef在链接器参数末尾
运行错误2:Wannier90版本不兼容
VASP2WANNIER90: version mismatch解决方案:严格使用Wannier90 1.2版本,禁用更高版本
性能问题3:VTST计算不收敛
NEB: energy and forces not converged调优方案:
- 调整
SPRING参数(通常-5到-10) - 启用
LNEBCELL=.FALSE.固定晶胞 - 使用
IMAGES合理设置中间点数量
10. 维护与升级建议
多插件环境维护策略:
- 版本控制建议:
# 保存各版本编译配置 git init git add makefile.include src/main.F src/.objects git commit -m "v5.4.1+vtst170+beef+wannier90 config"- 增量更新流程:
# 更新单个插件示例(以VTST为例) wget http://theory.cm.utexas.edu/vtsttools/download/vtstcode-180.tgz make veryclean # 重复第3节配置步骤- 性能监控命令:
# 记录各任务资源使用情况 grep 'LOOP+' OUTCAR | tail -n 1 grep 'Total CPU' OUTCAR