type
status
date
slug
summary
tags
category
icon
password
Property
Oct 5, 2024 02:56 PM
URL
说明:
系统:Ubuntu 22.04
CPU:AMD EPYC 7k62
VASP版本:6.4.3
openmpi版本:4.1.1
以下是安装 VASP 的步骤及其目的
步骤 | 目的 |
1. 安装tmux | 防止断连和避免关闭窗口的失误 |
2. 安装 gcc 和 gfortran | 提供编译 VASP 所需的 C 和 Fortran编译器 |
3. 安装 openmpi | 提供并行计算支持 |
4. 安装 OpenBLAS、Scalapack、FFTW | 提供VASP所需的数学库支持 |
5. 编译 VASP | 构建 VASP 可执行文件 |
6. 设置 VASP 环境变量 | 确保系统能够找到并正确运行 VASP |
0. 准备过程
0.1 ssh 终端工具
到 https://www.xterminal.cn/ 下载这个好用的 ssh 工具,有 ai 提示,系统监控,虽然有些小 bug,我个人认为非常值得推荐
0.2 tmux 安装
为了我们后续的步骤不断连,以及避免各种关闭窗口的失误什么的,这里先安装 tmux
然后使用 tmux 命令建立一个后台窗口,防止断连
后续如果遇到断连,误操作关闭窗口等各种不小心的问题,可以 重新打开终端,然后运行
可以进入到之前的安装部分
1. 安装 gcc,gfortran
要安装gcc和gfortran,可以使用以下命令:
安装完成后,可以通过以下命令检查版本:
2. 安装 openmpi 并行
2.1 下载
这篇文章Ubuntu 20.04 安装 orca 5.03 里面有关于 openmpi 安装部分
2.2 解压
接着解压
注意这里我安装的是 4.1.4 版本,如果是其他版本这里需要修改版本号.
2.3 建立 openmpi 安装文件夹
建立一个 openmpi 的文件夹
2.4 编译安装
进入刚刚解压的 openmpi 的文件夹,然后编译安装
过程有些长,等待几分钟即可
完成后是类似下面的
接着需要用,
这个命令用于编译 OpenMPI。-j
参数后面的部分是用来确定并行编译的线程数,它会统计 CPU 的处理器数量并使用所有可用的核心来加速编译过程。
过程较长,耐心等待
这个命令用于安装编译好的 OpenMPI。它会将编译好的文件复制到指定的安装目录中。
2.5 配置环境变量
4. 安装 OpenBLAS ,Scalapack,FFTW 数学库
这些库是 VASP 所需的数学库,它们提供了线性代数运算和快速傅里叶变换功能,对 VASP 的性能很重要。
4.1 安装 OpenBLAS
OpenBLAS 默认会被安装到
/usr/lib/x86_64-linux-gnu/
下面4.2 安装 ScaLAPACK
4.3 安装 FFTW
4.4 验证安装
安装完成后,可以通过以下命令验证安装:
如果安装成功,该命令将显示已安装的库文件。
5.编译 VASP
下载 VASP 安装包 (点我下载),然后上传到服务器上,这里我使用的是 VASP6.4.3 版本,所以下面的操作都是根据这个版本来的
这里假设你的 VASP 下载目录是在 DownLoads 文件夹,如果不是,可以和我一样上传到 DownLoads 文件夹
5.1 解压和重命名
5.2 拷贝 makefile 文件
首先进入刚刚重命名的文件夹里面
然后拷贝 arch 文件夹下面的 makefile 文件,我们在这里因为用了 openmpi 和 gnu 的编辑器,所以需要用
makefile.include.gnu_omp
这个文件5.3 修改 makefile.include 文件
makefile.include 文件内容如下
makefile.include 文件
# Default precompiler options
CPP_OPTIONS = -DHOST=\"LinuxGNU\" \
-DMPI -DMPI_BLOCK=8000 -Duse_collective \
-DscaLAPACK \
-DCACHE_SIZE=4000 \
-Davoidalloc \
-Dvasp6 \
-Duse_bse_te \
-Dtbdyn \
-Dfock_dblbuf \
-D_OPENMP
CPP = gcc -E -C -w $*$(FUFFIX) >$*$(SUFFIX) $(CPP_OPTIONS)
FC = mpif90 -fopenmp
FCL = mpif90 -fopenmp
FREE = -ffree-form -ffree-line-length-none
FFLAGS = -w -ffpe-summary=none
OFLAG = -O2
OFLAG_IN = $(OFLAG)
DEBUG = -O0
OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o
OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o
OBJECTS_O2 += fft3dlib.o
# For what used to be vasp.5.lib
CPP_LIB = $(CPP)
FC_LIB = $(FC)
CC_LIB = gcc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB = $(FREE)
OBJECTS_LIB = linpack_double.o
# For the parser library
CXX_PARS = g++
LLIBS = -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 ?= -march=native
FFLAGS += $(VASP_TARGET_CPU)
# For gcc-10 and higher (comment out for older versions)
FFLAGS += -fallow-argument-mismatch
# BLAS and LAPACK (mandatory)
OPENBLAS_ROOT ?= /path/to/your/openblas/installation
BLASPACK = -L$(OPENBLAS_ROOT)/lib -lopenblas
# scaLAPACK (mandatory)
SCALAPACK_ROOT ?= /path/to/your/scalapack/installation
SCALAPACK = -L$(SCALAPACK_ROOT)/lib -lscalapack
LLIBS += $(SCALAPACK) $(BLASPACK)
# FFTW (mandatory)
FFTW_ROOT ?= /path/to/your/fftw/installation
LLIBS += -L$(FFTW_ROOT)/lib -lfftw3 -lfftw3_omp
INCS += -I$(FFTW_ROOT)/include
# 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 (recommended)
#CPP_OPTIONS+= -Dsysv
#FCL += fftlib.o
#CXX_FFTLIB = g++ -fopenmp -std=c++11 -DFFTLIB_THREADSAFE
#INCS_FFTLIB = -I./include -I$(FFTW_ROOT)/include
#LIBS += fftlib
#LLIBS += -ldl
上列文本当中的 红色部分, 黄色部分,绿色部分 是需要修改的,实际上就是我们在步骤 4 里面的OpenBLAS ,Scalapack,FFTW 的安装路径,下面说明如何修改
红色部分修改
将
# BLAS and LAPACK (mandatory)
OPENBLAS_ROOT ?= /path/to/your/openblas/installation
BLASPACK = -L$(OPENBLAS_ROOT)/lib -lopenblas
修改成
# BLAS and LAPACK (mandatory)
OPENBLAS_ROOT = /usr/lib/x86_64-linux-gnu/
BLASPACK = -L$(OPENBLAS_ROOT) -lopenblas
黄色部分修改
将
# scaLAPACK (mandatory)
SCALAPACK_ROOT ?= /path/to/your/scalapack/installation
SCALAPACK = -L$(SCALAPACK_ROOT)/lib -lscalapack
修改成
# scaLAPACK (mandatory)
SCALAPACK_ROOT = /usr/lib/x86_64-linux-gnu/
SCALAPACK = -L$(SCALAPACK_ROOT)/lib -lscalapack-openmpi
绿色部分修改
保险起见,首先看看 fftw3.h 的位置
这里显示在
/usr/include/
这个地方然后将
# FFTW (mandatory)
FFTW_ROOT ?= /path/to/your/fftw/installation
LLIBS += -L$(FFTW_ROOT)/lib -lfftw3 -lfftw3_omp
INCS += -I$(FFTW_ROOT)/include
修改成
# FFTW (mandatory)
FFTW_ROOT ?= /path/to/your/fftw/installation
LLIBS += -L$(FFTW_ROOT)/lib -lfftw3 -lfftw3_omp
INCS += -I/usr/include
修改好后,
ctrl + s
保存就行了5.4 编译 vasp
时间较长慢慢等待(大概得几十分钟)即可,由于我们使用了 tmux ,所以不必担心断连问题,非常方便。
实际上这里采用并行编译时间更短,但是看到这段(http://bbs.keinsci.com/thread-37628-1-1.html#:~:text=vasp的部分源文件依赖其他源文件,所以在src文件夹里有个.object文件提供了一个编译源文件的顺序。直接make -j并行编译容易因为某个源文件的依赖没编译报错。),为了保险起见,就单线程编译了,虽然慢点。
编译完成后,使用
有三个文件
vasp_gam, vasp_ncl, vasp_std
6. 设置 VASP 环境变量
首先来测试下上面的编译是否成功
出现这些表明我们的编译是成功的
然后我们配置环境变量,把下面的代码,放入到
.bashrc
里面去6.1 配置库文件查找路径
这个是必须加的,不然后续使用 mpirun 的时候就会报错
6.2 添加 VASP 可执行文件路径
为了统一管理软件什么的,我在家目录下的 Software 目录下放了各种软件,这次也不例外,将
vasp643
文件夹移动到 ~/Software/
文件夹下面,因此这个时候我的 VASP 软件的目录为上面代码中的
$HOME/Software/vasp643
是我 VASP 的目录,注意自己修改 7. VASP 运行测试
在 VASP 中,输入文件没有文件扩展名,
POSCAR
、INCAR
、KPOINTS
和 POTCAR
文件名没有 .poscar、.incar、.kpoints 或 .potcar 这样的后缀。所以运行的时候得先建立一个文件夹,例如 h20 文件夹,然后进入 h20 文件夹里面建立
POSCAR
、INCAR
、KPOINTS
和 POTCAR
等文件首先建立任意一个文件夹,然后将下面的文件上传到服务器
到这里下载相关文件
OneDrive:H_VASP_File.zip
接着进入文件夹运行
8. 参考资料
- 作者:我心永恒
- 链接:https://wxyhgk.com/article/ubuntu-install-vasp643
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。