VASP 编译
VASP 编译
介绍
VASP 中的可执行命令无
-h
等帮助选项官方安装教程:
安装参考资料:
- 【计算材料学-从算法原理到代码实现】视频教程 - 4.1_VASP安装教程_哔哩哔哩_bilibili
- 【计算材料学-从算法原理到代码实现】视频教程 - 4.1_VASP的Intel_OneAPI安装教程_哔哩哔哩_bilibili
- intel oneAPI以及vasp5.4.4安装
- Ubuntu18.04编译VASP5.4.4的详细步骤 - 哔哩哔哩
- VASP最简单的安装方法(含全程视频演示) - 思想家公社的门口:量子化学·分子模拟·二次元
- VASP6 编译(含 GPU 版本):编译版本6的VASP
- VASP6.5.0+Intel CPU编译并添加module环境 - 第一性原理 (First Principle) - 计算化学公社
- VASP - 上海交大超算平台用户手册 Documentation
- Instaling VASP - CodiMD
含 VASP 版本更新内容简要介绍:
- VASP 6.5.0(新特性:电声耦合)和 6.4.3: Changelog - VASP Wiki
- VASP - NSC
VASP固定基矢优化结构 - Misaraty:对于二维材料,固定 z 方向晶胞参数不变(固定 z 轴),优化 x、y 晶胞参数
VASP 编译
编译前须知
编译条件
- 编译器:Fortran、C、C++
- 数值计算库:FFTW、BLAS、LAPACK、ScaLAPACK(高扩展的 LAPACK,主要用于分布式内存体系结构)
- MPI 实现:Intel MPI 或 Open MPI
课题组服务器 VASP 安装包路径:Master:
/opt/software
;将其拷贝到自己的用户目录下,传输至超算平台make -jN
并行编译的特性只有 VASP.6.X.X 才支持,VASP.5.X.X 不支持makefile.include 不同架构的含义:makefile.include - VASP Wiki
make.include 文件选择
- VASP.5.4.4 只支持 Intel Classic 编译器
- VASP.6.X.X 支持 Intel Classic 和 Intel oneAPI 编译器
1 | # Intel Composer suite and oneAPI Base + HPC toolkits for CPUs |
自定义功能:Customize - makefile.include - VASP Wiki
- HDF5
- Wannier90
- Libxc
- …
VASP.5.4.4 源代码目录结构
1 | vasp.X.X.X (root directory) |
- VASP.6.X.X 源代码目录结构
1 | vasp.x.x.x (root directory) |
三种版本可分开进行编译:
make std
,make gam
,make ncl
bin
目录若出现vasp_std
,vasp_gam
,vasp_ncl
可执行文件,则表示编译成功编译得到的三个版本
1 | vasp_std # standard 标准版本 |
在
makefile.include
中的 OFLAG 参数里加入-xhost
,会使得编译出的程序能够利用当前机器 CPU 能支持的最高可用的指令集以加速计算
CPU 版本 + Intel oneAPI 套件
- 安装步骤
1 | # 超算平台编译步骤;Master 可忽略此步骤 |
- VASP.5.4.4 编译最后可能会出现的 remark(无影响)
1 | ifort: command line remark #10412: option '-mkl=sequential' is deprecated and will be removed in a future release. Please use the replacement option '-qmkl=sequential' |
- 对于 2024 及更新的的 Intel oneAPI,不再包含 C++ Compiler Classic(即无 icc、icpc),需对
makefile.include
文件内容进行修改
1 | # 修改前 |
- AMD CPU 使用 Intel oneAPI 套件编译出现的报错:VASP编译偶遇“Function return parameter requires SSE register while SSE is disabled”
1 | # AMD CPU 直接使用 makefile.include.intel |
- Master 上选择 intel_omp 编译,运行
mpirun -n 2 vasp_std
命令会报错;选择 Intel 编译正常
CPU 版本 + GNU 套件
Mac M1:VASP M1 Mac Compilation Guide · GitHub
- gnu_omp 架构编译 VASP6 + HDF5(耗时 32 min 左右)
Linux
1 | # lib 路径 |
NVIDIA GPU 版本
参考
不建议编译 VASP 5.4.4 的 GPU 版本,建议编译 VASP 6.X.X 的 GPU 版本
VASP GPU 版本不支持
-j
并行编译?VASP GPU 版本在小体系下,计算速度与 CPU 版本差不多;大体系下会有加速效果 (400 个原子以上?)
VASP GPU 版本占用显存较多,可达 GPU 的显存容量
NVIDIA HPC-SDK 相关环境变量
1 | export NVIDIA_HPC_SDK_ROOT=/opt/nvidia/hpc_sdk/Linux_x86_64/XX.X |
修改 makefile.include 文件内容
- 修改
CC
、FC
、FCL
中的 ccXX(计算能力与显卡型号匹配) 和 CUDA 版本(安装的 CUDA toolkit 版本) - Intel oneAPI MKL 有 SCALAPACK,可将 SCALAPACK_ROOT 所在的 2 行注释掉
- 修改
安装步骤
1 | # 设置 NVIDIA HPC-SDK 相关环境变量(使用 GPU 版本进行计算时也需要设置) |
VASP GPU 版本性能
VASP GPU 版本速度测试(粗略)
1 | # BCC Nb 4x4x4 128 个原子,KSPACING=0.15,静态计算 |
目前 openacc 版本的 VASP 用了 nccl,只能用一个 CPU 核带一块 GPU,因而 CPU 单核性能会对计算结果有影响
游戏显卡,跑经典 MD 非常有优势,跑第一性原理无明显优势?
1 | # 只有 1 块 GPU,使用多个 CPU 核会报错 |
AMD GPU 版本
相对复杂,不建议尝试
使用 AOCC + AOCL 安装(安装相对复杂)
1 |
- 相关报错
1 | # 使用 makefile.include.gnu_ompi_aocl_omp;只安装 aocl-linux-gcc |
HDF5
- 安装步骤
1 | wget https://hdf-wordpress-1.s3.amazonaws.com/wp-content/uploads/manual/HDF5/HDF5_1_14_3/src/hdf5-1.14.3.tar.gz |
- 未添加
--enable-parallel
参数会出现以下报错:
1 | configure: error: --enable-cxx and --enable-parallel flags are incompatible. Use --enable-unsupported to override this error. |
- 使用
- HDF5 Preview 插件:只能打开.hdf5 格式,无法打开.h5 格式
- Pandas 的
read_hdf()
不太好用 - vaspout.h5 - VASP Wiki
- h5py 暂不能很好地解析 vaspout.h5 文件中的数据
1 | h5ls data.h5 # 显示 Group 列表 |
VASP + HDF5
安装步骤
1 | # 超算平台编译步骤 |
- 可能会出现以下报错
1 | error while loading shared libraries: libhdf5_fortran.so.102: cannot open shared object file: No such file or directory |
VASP + VTST
在 VASP 添加过渡态计算功能
参考:
安装步骤:
下载 VTST Code 和 VTST Scripts:Download — Transition State Tools for VASP
修改
src/main.F
源码:
1 | # 替换前 第 3519 行附近 |
- 备份
src/chain.F
;复制 vtstcode-XXX 中对应 VASP 版本(如 vtstcode5、vtstcode6.3;vtstcode6.3 中多了ml_pyamff.F
文件和pyamff_fortran/
目录)的目录下的所有文件到src/
:
1 | cp src/chain.F src/chain.F-org |
- 修改
src/.objects
源码,在chain.o
所在行前添加:
1 | # vtstcode5 和 vtstcode6.1 |
- 使用 vtstcode6.3,还需修改
src/makefile
源码:
1 | # 替换前 |
- 编译:同 VASP 编译步骤
- VASP.6.3.0 + VTST 出现报错:VTST 源码代码有问题
- VASP6.3.2 + vtstcode6.3编译出错 - 第一性原理 (First Principle) - 计算化学公社
- 过渡态神器VTST为什么在VASP6.3编译不成功?因为源代码有问题!
- 解决方法:在 chain.F 第 202 行后添加
ENDIF
1 | mpiifort -free -names lowercase -assume byterecl -w -xHOST -O2 -I/opt/software/intel/oneapi/mkl/2022.1.0/include/fftw -c chain.f90 |