计算化学公社

标题: Ubuntu 安装 VASP [打印本页]

作者
Author:
wxyhgk    时间: 2024-10-5 21:23
标题: Ubuntu 安装 VASP
本帖最后由 wxyhgk 于 2024-10-7 18:49 编辑


说明:
本文由 ChatGPT 和 Notion AI 辅助完成

系统: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,我个人认为非常值得推荐

(, 下载次数 Times of downloads: 4)


0.2 tmux 安装
为了我们后续的步骤不断连,以及避免各种关闭窗口的失误什么的,这里先安装 tmux
  1. sudo apt install tmux -y
复制代码

然后使用 tmux 命令建立一个后台窗口,防止断连
  1. tmux new -s vasp
复制代码


后续如果遇到断连,误操作关闭窗口等各种不小心的问题,可以 重新打开终端,然后运行
  1. tmux attach -t vasp
复制代码


1. 安装 gcc,gfortran
要安装gcc和gfortran,可以使用以下命令:
  1. sudo apt update
  2. sudo apt install build-essential gfortran mlocate -y
复制代码

安装完成后,可以通过以下命令检查版本:
  1. gcc --version
  2. gfortran --version
复制代码
(, 下载次数 Times of downloads: 0)




2. 安装 openmpi 并行
2.1 下载
  1. wget -c https://www.open-mpi.org/software/ompi/v4.1/downloads/openmpi-4.1.1.tar.gz
复制代码
上面的 openmpi 可以去官网下载(https://www-lb.open-mpi.org/software/ompi),然后上传到自己的服务器然后解压什么

2.2 解压
接着解压
  1. tar -xzf openmpi-4.1.1.tar.gz
复制代码
注意这里我安装的是 4.1.4 版本,如果是其他版本这里需要修改版本号.

2.3 建立 openmpi 安装文件夹
建立一个 openmpi 的文件夹
  1. mkdir -p $HOME/Software/openmpi411
复制代码


2.4 编译安装
进入刚刚解压的 openmpi 的文件夹,然后编译安装
  1. ./configure --prefix=$HOME/Software/openmpi411
复制代码

过程有些长,等待几分钟即可

完成后是类似下面的
(, 下载次数 Times of downloads: 2)



接着需要用,
  1. make -j `cat /proc/cpuinfo |grep 'processor'|sort -u|wc -l`
复制代码
这个命令用于编译 OpenMPI。-j 参数后面的部分是用来确定并行编译的线程数,它会统计 CPU 的处理器数量并使用所有可用的核心来加速编译过程。

过程较长,耐心等待

然后
  1. make install
复制代码

这个命令用于安装编译好的 OpenMPI。它会将编译好的文件复制到指定的安装目录中。

2.5 配置环境变量

  1. echo -e '\n#openmpi\nexport PATH=$PATH:$HOME/Software/openmpi411/bin' >> $HOME/.bashrc
复制代码

  1. echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/Software/openmpi411/lib' >> $HOME/.bahrc&&source $HOME/.bahrc
复制代码


  1. ompi_info
复制代码

(, 下载次数 Times of downloads: 0)



4. 安装 OpenBLAS ,Scalapack,FFTW 数学库
这些库是 VASP 所需的数学库,它们提供了线性代数运算和快速傅里叶变换功能,对 VASP 的性能很重要。

4.1 安装 OpenBLAS
  1. sudo apt-get install libopenblas-dev -y
复制代码
OpenBLAS 默认会被安装到 /usr/lib/x86_64-linux-gnu/ 下面
(, 下载次数 Times of downloads: 0)



4.2 安装 ScaLAPACK
  1. sudo apt-get install libscalapack-openmpi-dev -y
复制代码
默认安装路径和上面的 OpenBLAS 一样

4.3 安装 FFTW
  1. sudo apt-get install libfftw3-dev -y
复制代码

4.4 验证安装
安装完成后,可以通过以下命令验证安装:
  1. ldconfig -p | grep -E "openblas|scalapack|fftw"
复制代码


(, 下载次数 Times of downloads: 0)


如果安装成功,该命令将显示已安装的库文件。


5.编译 VASP
下载 VASP 安装包 (https://1drv.ms/f/s!AoA_cFXK2r9EnMMg2n9OoeCi6BNLfA?e=0flISg),然后上传到服务器上,这里我使用的是 VASP6.4.3 版本,所以下面的操作都是根据这个版本来的

这里假设你的 VASP 下载目录是在 DownLoads 文件夹,如果不是,可以和我一样上传到 DownLoads 文件夹


5.1 解压和重命名
  1. tar -xzf vasp.6.4.3.tgz
复制代码

  1. mv vasp.6.4.3 vasp643
复制代码


5.2 拷贝 makefile 文件
首先进入刚刚重命名的文件夹里面
  1. cd vasp643
复制代码
然后拷贝 arch 文件夹下面的 makefile 文件,我们在这里因为用了 openmpi 和 gnu 的编辑器,所以需要用 makefile.include.gnu_omp 这个文件

  1. cp arch/makefile.include.gnu_omp ./makefile.include
复制代码
(, 下载次数 Times of downloads: 0)



5.3 修改 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 的位置
  1. locate fftw3.h
复制代码
(, 下载次数 Times of downloads: 0)

这里显示在 /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




(, 下载次数 Times of downloads: 0)


5.4 编译 vasp
  1. make all
复制代码
时间较长慢慢等待(大概得几十分钟)即可,由于我们使用了 tmux ,所以不必担心断连问题,非常方便。

实际上这里采用并行编译时间更短,但是看到这段([http://bbs.keinsci.com/thread-37628-1-1.html#:~:text=vasp的部分源文件依赖其他源文件,所以在src文件夹里有个.object文件提供了一个编译源文件的顺序。直接make -j并行编译容易因为某个源文件的依赖没编译报错。](http://bbs.keinsci.com/thread-37 ... 5%E9%94%99%E3%80%82)),为了保险起见,就单线程编译了,虽然慢点。

编译完成后,使用

  1. ls bin/
复制代码

有三个文件
(, 下载次数 Times of downloads: 1)


6. 设置 VASP 环境变量
首先来测试下上面的编译是否成功
  1. ./bin/vasp_std
复制代码


(, 下载次数 Times of downloads: 0)

出现这些表明我们的编译是成功的


然后我们配置环境变量,把下面的代码,放入到 .bashrc 里面去

6.1 配置库文件查找路径
  1. # 设置系统默认库文件路径到 LD_LIBRARY_PATH 中,确保能找到系统库文件
  2. export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
  3. export LIBRARY_PATH=$LD_LIBRARY_PATH
复制代码
这个是必须加的,不然后续使用 mpirun 的时候就会报错
(, 下载次数 Times of downloads: 1)



6.2 添加 VASP 可执行文件路径
为了统一管理软件什么的,我在家目录下的 Software 目录下放了各种软件,这次也不例外,将 vasp643文件夹移动到 ~/Software/文件夹下面,因此这个时候我的 VASP 软件的目录为 $HOME/Software/vasp643/

  1. # 添加 VASP 可执行文件路径到 PATH 中
  2. export PATH=$PATH:$HOME/Software/vasp643/bin
复制代码

上面代码中的 $HOME/Software/vasp643 是我 VASP 的目录,注意自己修改

7. VASP 运行测试

在 VASP 中,输入文件没有文件扩展名,`POSCAR`、`INCAR`、`KPOINTS` 和 `POTCAR` 文件名**没有 .poscar、.incar、.kpoints 或 .potcar 这样的后缀。

所以运行的时候得先建立一个文件夹,例如 h20 文件夹,然后进入 h20 文件夹里面建立`POSCAR`、`INCAR`、`KPOINTS` 和 `POTCAR` 等文件

(, 下载次数 Times of downloads: 0)


首先建立任意一个文件夹,然后将下面的文件上传到服务器
到这里下载相关文件
- 123网盘:https://www.123865.com/s/U8JrVv-M1jEH
- OneDrive:[H_VASP_File.zip](https://1drv.ms/u/s!AoA_cFXK2r9EnMMvpNbi27ng9L6qyg?e=9nIStf)


接着进入文件夹运行
  1. mpirun -np 2 vasp_std
复制代码
(, 下载次数 Times of downloads: 0)




8. 参考资料
1. https://wxyhgk.com/article/ubuntu-orca
2. https://www.bilibili.com/video/BV1W24y1N7WK
3. http://bbs.keinsci.com/thread-37628-1-1.html
4. https://www.vasp.at/tutorials/latest/
5. https://www.bilibili.com/video/BV1vu4y1m7us



我博客这里 https://wxyhgk.com/article/ubuntu-install-vasp643 排版会更好



作者
Author:
万里云    时间: 2024-10-6 10:59
在windows下面还是推荐用自带的openssh+商店里的Windows Terminal登录服务器,或者原版的XShell(非某丁的代理版),再差是MobaXterm。

往ssh客户端里下毒的很多,开源的WindTerm有假冒的主页和安装包,闭源的*****Shell更是被爆出挖矿。所以不知名的ssh客户端还是谨慎为妙。
作者
Author:
wxyhgk    时间: 2024-10-6 12:24
本帖最后由 wxyhgk 于 2024-10-6 12:32 编辑
万里云 发表于 2024-10-6 10:59
在windows下面还是推荐用自带的openssh+商店里的Windows Terminal登录服务器,或者原版的XShell(非某丁的 ...

和你讲一下为什么用这个,而且我用这个用了有小一年了。

1. 有 mobaxterm 的大部分功能,当然没有宏功能什么的,这个问题不大
2. mac ,win,Linux 都有
3. 有 AI 功能,遇到自己忘记的,直接就能在软件上自动提示

市面上的我能搜到的 ssh 软件基本我都用过,大多数都不太舒服,,大部分软件都没有 ssh + sftp 在同一个页面,毕竟用 vim 相对而言比较麻烦,编辑其实也是小事,主要是很多时候得看分子结构,每次都要下载什么的非常麻烦,当然了有那种虚拟硬盘的软件,但是依旧没有在同一个界面里面方便,而且这个软件可以自动监控调用了那些核什么的,很清楚,无需再去搞什么 ssh 插件进行监控什么的。

其实我最喜欢用的是 MobaXterm 这个软件,可惜他没有 Mac 和 Linux 版本,我就只能选这个了

作者
Author:
万里云    时间: 2024-10-7 11:07
wxyhgk 发表于 2024-10-6 12:24
和你讲一下为什么用这个,而且我用这个用了有小一年了。

1. 有 mobaxterm 的大部分功能,当然没有宏功 ...

Linux系统的话,直接ssh -Y就能用图形界面了啊?
作者
Author:
wxyhgk    时间: 2024-10-7 14:01
本帖最后由 wxyhgk 于 2024-10-7 14:05 编辑
万里云 发表于 2024-10-7 11:07
Linux系统的话,直接ssh -Y就能用图形界面了啊?
这些都太麻烦,各种设置,我好几个机器要管理,各种小命令要存储。自己得用不用的设备,mac,Linux,win 都在用

这个软件还能同步上面的,储存自己定义的命令,也是同步,我设备比较多,还有 ai 提示,很是方便,自己用一下就知道了


作者
Author:
liu1216081301    时间: 2024-10-28 11:06
步骤很详细,谢谢博主。
作者
Author:
ljb874722957    时间: 2024-11-10 16:27
博主你好,乌班图系统支持MS了吗?
作者
Author:
wxyhgk    时间: 2024-11-11 08:50
ljb874722957 发表于 2024-11-10 16:27
博主你好,乌班图系统支持MS了吗?

不知道,没关注过 MS
作者
Author:
tjuphysfang    时间: 6 day ago
太棒了博主!感谢!
作者
Author:
1138711019    时间: 5 day ago
楼主有试过openmpi 5.X么
我用5.XX 编译的vasp和cp2k总是出现cpu调度有问题,换回4.XX就好了
作者
Author:
wxyhgk    时间: 5 day ago
1138711019 发表于 2024-11-18 09:35
楼主有试过openmpi 5.X么
我用5.XX 编译的vasp和cp2k总是出现cpu调度有问题,换回4.XX就好了

没有用过,不清楚
作者
Author:
ljb874722957    时间: 3 day ago
本帖最后由 ljb874722957 于 2024-11-20 22:39 编辑

你好博主,为什么我编译的vasp,把学校集群优化好的结构再次优化但无法收敛,且跑不出一个电子步,学校的是6.3.0,我的是6.4.2?听说对于新版的oneapi,对FTTW文件是否要重新编译一下,我没有编译这个文件。
作者
Author:
wxyhgk    时间: 前天 08:43
ljb874722957 发表于 2024-11-20 22:37
你好博主,为什么我编译的vasp,把学校集群优化好的结构再次优化但无法收敛,且跑不出一个电子步,学校的是 ...

说的太模糊了不知道什么情况。

得说明更加清晰,比如优化什么结构不收敛, oneapi 是 Intel 的我没试过,不清楚,建议用 openmpi,intel 的部分时候有玄学问题




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3