计算化学公社

标题: vasp.6.1.0 更新介绍/安装/测试 [打印本页]

作者
Author:
啦啦黑还黑    时间: 2020-2-1 11:48
标题: vasp.6.1.0 更新介绍/安装/测试
本帖最后由 啦啦黑还黑 于 2020-2-1 11:48 编辑

未经作者授权禁止转载
============================vasp6.1.0 更新介绍===================================
2020年1月29号,vasp.at 官网终于正式发布vasp6.1.0版本。并没有从6.0开始
(, 下载次数 Times of downloads: 305)

如果直接维也纳原厂购买的已经可以下载了,从代理处(materials design账号)购买的可能还需要再等几天才能下载。

先来看一下vasp6值得期待的功能,从vasp开发者那里得知vasp6中更新的最强功能是,机器学习分子动力学和三阶GW计算。

更新的VASP6版本有一些重大更新:
(1)支持OpenMP和MPI混编。这有利于提高内存使用效率,而且对于大规模并行加速明显。VASP5一般使用200核并行效率就很难继续提高了。但是用OpenMP和MPI混编的方式可以进行更大规模的并行计算。
(2)支持libxc,这样可以选择的泛函就非常多了。VASP5只有有限的一些泛函可以用。
(3)新方法机器学习力场,这个功能也是最值得期待的,(Machine Learned Force Fields),具体使用的方法是On-the-fly machine learning force field generation using Bayesian linear regression.
(4)电声耦合计算(Electron-phonon interactions)
(5)X-ray absorption near-edge spectroscopy (XANES)计算,目前支持Super-cell core-hole (SCH) method计算方法。
(6)constrained Random Phase Approximation(CRPA)
(7)支持OpenACC的GPU加速计算,可以使用Adaptively compressed exchange使得杂化泛函计算速度提高2-3倍。

具体更新项目见:https://www.vasp.at/wiki/index.php/Category:VASP6

另外国外一些提前拿到源码的人已经经行了一些测试:
推荐一篇文章:On the use of OpenMP in VASP: threading and SIMD,文中详细介绍了openmp+mpi混编加速的优势,以及avx2,avx512对计算的加速。
摘要如下:
VASP is a widely used electronic structure code that originally exploits process-level parallelism through the Message Passing Interface (MPI) for work distribution within and across compute nodes. Architectural changes of modern parallel processors, however, urge programmers to address thread-level and data-level parallelism as well to benefit most from the available compute resources within a node. We describe for the VASP code how to approach for an MPI + OpenMP parallelization including SingleInstruction Multiple-Data (SIMD) parallelism through OpenMP SIMD constructs together with a generic high-level vector coding scheme. As a result of our adaptations, we can demonstrate an improved scalability of VASP and more than 20% gain over the MPI-only version. We found the multiple-endpoint MPI feature be key to performance for (collective) operations on large messages from within multi-threaded contexts: we see about 2x reduced execution times for MPI collectives. With our high-level vector coding scheme applied to VASP’s general gradient approximation routine, we achieve  about 3x and up to about 9x performance gain on AVX2 and AVX512 platforms, respectively, with the Intel 18 (update 1) compiler, and a 2x-3x performance gain across AVX2 and AVX512 platforms with the GNU 7.2 compiler. Our adaptations are generic and can serve as a reference for the modernization of other (MPI-only) codes.

混编测试方法:https://www.vasp.at/wiki/index.php/Hybrid_openMPI/openMP_parallelization


Intel 也对新版vasp做了测试:
(, 下载次数 Times of downloads: 176)
可见拥有avx512指令集的gold 6149(18核,2.3GHz-3.7GHz) 比 avx2指令集的2697v4(18核,2.3GHz-3.6GHz) 快了1.58倍
============================vasp6.1.0 更新介绍 END===================================


============================vasp6.1.0 安装===================================
MPI-only版的编译过程和vasp544是一样的。

第一步:编译intel编译器,这个有好多贴子都讲过了。编译完成后,加载intel fortran编译器和intel mpi:
  1. source /opt/intel/parallel_studio_xe_2018.1.038/bin/psxevars.sh
复制代码

  1. source /opt/intel/compilers_and_libraries_2018.1.163/linux/bin/compilervars.sh intel64
  2. source /opt/intel/compilers_and_libraries_2018.1.163/linux/mpi/bin64/mpivars.sh intel64
复制代码


第二步:准备makefile.include文件,在./arch文件里有一些离子文件,其默认参数不用修改即可直接编译。
  1. cp arch/makefile.include.linux_intel ./makefile.include
复制代码
  1. make all
  2. (等待编译,大约20分钟)
  3. make test
复制代码
vasp6 新增了make test 功能,在编译之后可以运行make test测试编辑好的二进制文件是否能用。测试各个功能的例子文件,这一步时间较长。

建议用的makefile.include文件是:
makefile.include.linux_intel (intel编译器,mpi-only版)
或 makefile.include.linux_intel_omp(intel编译器,mpi和openmp混编版)
如果是单节点机器,建议用mpi-only版就行了,
如果是想大规模多节点并行,用mpi和openmp混编版,此时如果在提交任务的时候用-x OMP_NUM_THREADS=1和mpi-only版效果是一样的。(这里我并不确定,请大家指正)

注意:https://www.vasp.at/wiki/index.php/Installing_VASP网站上的编译参数还是针对vasp544的,如果要修改编译参数建议直接阅读README.md文件

以下是默认的makefile.include.linux_intel 文件,值得注意的是CPP_OPTIONS里有-Dfock_dblbuf选项,这个是加速计算杂化泛函用的。
FFLAGS = -assume byterecl -w -xHOST 里vasp6已经默认加上xHOST可以适用于当前编译节点所支持的最高指令集。(vasp544是没有默认添加的,注意:如果计算节点和编辑节点CPU不一样需要手动指定指令集)
也可以修改 OFLAG = -O3 -xHOST 进一步优化编译。
  1. # Precompiler options
  2. CPP_OPTIONS= -DHOST="LinuxIFC"\
  3.              -DMPI -DMPI_BLOCK=8000 -Duse_collective \
  4.              -DscaLAPACK \
  5.              -DCACHE_SIZE=4000 \
  6.              -Davoidalloc \
  7.              -Dvasp6 \
  8.              -Duse_bse_te \
  9.              -Dtbdyn \
  10.              -Dfock_dblbuf

  11. CPP        = fpp -f_com=no -free -w0  $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)

  12. FC         = mpiifort
  13. FCL        = mpiifort -mkl=sequential

  14. FREE       = -free -names lowercase

  15. <span style="background-color: yellow;">FFLAGS     = -assume byterecl -w -xHOST
  16. OFLAG      = -O2</span>
  17. OFLAG_IN   = $(OFLAG)
  18. DEBUG      = -O0

  19. MKL_PATH   = $(MKLROOT)/lib/intel64
  20. BLAS       =
  21. LAPACK     =
  22. BLACS      = -lmkl_blacs_intelmpi_lp64
  23. SCALAPACK  = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS)

  24. OBJECTS    = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o

  25. INCS       =-I$(MKLROOT)/include/fftw

  26. LLIBS      = $(SCALAPACK) $(LAPACK) $(BLAS)


  27. OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o
  28. OBJECTS_O2 += fft3dlib.o

  29. # For what used to be vasp.5.lib
  30. CPP_LIB    = $(CPP)
  31. FC_LIB     = $(FC)
  32. CC_LIB     = icc
  33. CFLAGS_LIB = -O
  34. FFLAGS_LIB = -O1
  35. FREE_LIB   = $(FREE)

  36. OBJECTS_LIB= linpack_double.o getshmem.o

  37. # For the parser library
  38. CXX_PARS   = icpc
  39. LLIBS      += -lstdc++

  40. # Normally no need to change this
  41. SRCDIR     = ../../src
  42. BINDIR     = ../../bin
复制代码

第三步:准备提交脚本测试如果用的mpi-only版
  1. mpirun -np 24 ~/opt/vasp.6.1.0/bin/vasp_gam  > LOG
复制代码

如果用mpi和openmp混编版
  1. mpirun -np 24 ~/opt/vasp.6.1.0-openmp/bin/vasp_gam -x OMP_NUM_THREADS=1  > LOG
复制代码
OMP_NUM_THREADS=1 的数值需要测试,当前我测试的单节点计算用OMP_NUM_THREADS=1用最快,和mpi-only版速度一样。
估计只有当节点数多了混编策略才有用。 (这里我并不确定,请大家指正)
============================vasp6.1.0 安装 END===================================


============================vasp6.1.0 测试===================================
这部分以后慢慢补充,目前的结果看vasp6同样用-O2 -xHOST 和 -O3 -xHOST 速度基本差不多。如果把-xHOST参数去掉,速度会掉不少。
对于GGA-PBE计算,vasp544(-O3 -xHOST)和vasp6(-O3 -xHOST)速度几乎一样,CPU用的Intel(R) Xeon(R) Gold 6126 CPU @ 2.60GHz,双路24核
============================vasp6.1.0 测试 END===================================

作者
Author:
get-it    时间: 2020-2-1 13:16
一直对vasp的MLFF有些疑虑。按照他们的算法,MLFF的轨迹是DFT和力场轨迹的混合,不是用同一个哈密顿量跑出来的,统计结果和纯DFT会差多少?对于原子位置、晶格常数的模拟结果不错(他们的钙钛矿文章),如果是更复杂的统计分析,如VACF,不知道效果怎么样。
作者
Author:
hellojwx    时间: 2020-2-1 13:17
求测试GPU版本。RTX系列游戏卡可用吗?
作者
Author:
啦啦黑还黑    时间: 2020-2-1 13:36
get-it 发表于 2020-2-1 13:16
一直对vasp的MLFF有些疑虑。按照他们的算法,MLFF的轨迹是DFT和力场轨迹的混合,不是用同一个哈密顿量跑出 ...

统计性质有误差是肯定的,就看误差范围能不能接受了,正准备测一下,官网上给了个Si的例子,https://www.vasp.at/wiki/index.php/Liquid_Si_-_MLFF#Task
作者
Author:
abin    时间: 2020-2-1 17:37
openMP + MPI 版本,
设计目的应该是,节点内采用 openMP, 节点之间采用 MPI 通讯。
试试单个节点内,export OMP_NUM_THREADS=#core 看看运行效率如何。

没有具体测试过,以上仅仅是个人瞎猜测,不代表实际情况。
作者
Author:
binarec    时间: 2020-2-6 18:10
同意楼上,最理想的情况应该是mpi用于节点间并行,而omp用于节点内的并行,甚至可能利用intel cpu的超线程,即OMP_NUM_THREADS设置为单节点cpu的线程数
作者
Author:
nitro123    时间: 2020-4-15 23:04
https://www.lcrc.anl.gov/for-use ... use-vasp6-on-bebop/

这个可以参考
作者
Author:
ak949    时间: 2020-4-16 01:42
以我的经验,OMP_NUM_THREADS=1时应该等效于纯MPI模式,每个核心对应一个MPI进程。增大OMP_NUM_THREADS可以让几个核心绑定一个MPI进程,如此单个MPI进程的可用内存会倍数增大,有时一些大体系可以这样跑起来。
作者
Author:
kaypu    时间: 2020-5-6 16:37
想请问一下,6.1版本的vasp用intel编译器哪个版本编译最好?之前编译5.44版本,我这边只有2015版本的intel编译器和intelmpi编译出来的vasp计算没有毛病,19版本的编译出来经常会出现莫名其妙的问题,算了几个电子步后自己挂了,只有15版本的没有这种问题
作者
Author:
dingniu2    时间: 2020-5-29 16:42
你好,用vasp6.1.0文件夹中arch/makefile.include.linux_intel编译vasp6.1.0最后出现fortran.c(68): catastrophic error: cannot open source file "cuda_runtime.h"是否没编译成功?
作者
Author:
啦啦黑还黑    时间: 2020-5-29 19:42
dingniu2 发表于 2020-5-29 16:42
你好,用vasp6.1.0文件夹中arch/makefile.include.linux_intel编译vasp6.1.0最后出现fortran.c(68): catast ...

这个和cuda有关系吧,如果没有GPU和cuda就把makefile最后那些gpu编译的东西注释掉就行了
作者
Author:
zblxyrz    时间: 2020-5-29 20:52
dingniu2 发表于 2020-5-29 16:42
你好,用vasp6.1.0文件夹中arch/makefile.include.linux_intel编译vasp6.1.0最后出现fortran.c(68): catast ...

我也最后提示错误了,但是bin文件夹里面还是出现了那三个文件,实测也能正常使用
作者
Author:
Quantum198907    时间: 2020-5-29 21:06
dingniu2 发表于 2020-5-29 16:42
你好,用vasp6.1.0文件夹中arch/makefile.include.linux_intel编译vasp6.1.0最后出现fortran.c(68): catast ...

可以用分别用make gam/make std/make ncl 命令逐个编译,(强迫症)就看不到错误啦¥%¥#%哈哈,也就是说这个错误提示与GPU有关~~~~~~make test能通过就好了
作者
Author:
dingniu2    时间: 2020-5-29 21:47
多谢各位解答,的确出现了这个错误bin中还是能产生vasp_gam  vasp_ncl  vasp_std这三个文件,没敢改makefile.include中的参数,怕改错了生成的这三个文件有问题,既然大家都说出现这个错误仍然不影响vasp的使用,就这么用吧。
作者
Author:
zalman    时间: 2020-5-31 10:36
openmp对内存的大需求是很棒啊,就是不知道GW、HSE这种支持不
作者
Author:
缠绕指    时间: 2020-6-11 14:33
请问现在vasp 6.1可以用VTST吗?我这现在还没买VASP 6.1,如果可以用VTST的话,我就忽悠老板升级了
作者
Author:
冰山    时间: 2020-6-18 12:38
本帖最后由 冰山 于 2020-6-18 15:00 编辑

使用avx512加速的话,需要打开什么编译选项么? vasp的makefile.include.linux_intel已经默认加入了 -xhost 也就是不用加 -xCORE-AVX512?
测试结果也是5.4(intel2015编译),6.1(intel2018.4编译)速度上没有差异。
作者
Author:
风飞    时间: 2020-7-1 15:30
本帖最后由 风飞 于 2020-7-1 15:31 编辑

老师,您好,     我之前按照 http://bbs.keinsci.com/thread-11812-10-1.html    编译VASP6.1,结果在编译过程中出现如下错误:请问怎么解决呢?
是否可以不编译GPU呢?因为我的电脑没有装GPU, 我的系统是Centos7.8

作者
Author:
planet5460    时间: 2020-7-21 10:38
想请教一下,vasp6.1支持vaspsol插件吗?我尝试用以前的编译方法编译了下,不成功。
作者
Author:
壹零壹室掃地僧    时间: 2020-8-20 20:21
老师,请问GPU版本编译失败,显示nvcc fatal   : Unsupported gpu architecture 'compute_30'怎么解决?是不是我的显卡不行?我的GPU是两个RTX2080-S,CUDA安装的是11.0版的
作者
Author:
搞理论的    时间: 2020-9-24 22:49
文章好像说反了,OPENMP是用于节点内并行的,所以单节点计算的话,应该用OPENMP编译更好。
作者
Author:
啦啦黑还黑    时间: 2020-9-25 14:05
搞理论的 发表于 2020-9-24 22:49
文章好像说反了,OPENMP是用于节点内并行的,所以单节点计算的话,应该用OPENMP编译更好。

用openmp或者 mpi + openmp混编的方法都不如直接用 intelmpi速度快。。除非并行的核数非常的多混编可能会快一点
作者
Author:
Tanya    时间: 2021-3-17 15:19
今天也尝试着编译了一下,开始在gpu处出错,后来用make std进行编译,一瞬间就编译好了。貌似也能用。这么快正常吗么?
作者
Author:
scottwu    时间: 2021-4-1 14:08
planet5460 发表于 2020-7-21 10:38
想请教一下,vasp6.1支持vaspsol插件吗?我尝试用以前的编译方法编译了下,不成功。

https://mp.weixin.qq.com/s/pWLNZknUvLcYKw5IAlSaZg
可以尝试下这个
作者
Author:
abin    时间: 2021-4-18 09:58
搞理论的 发表于 2020-9-24 22:49
文章好像说反了,OPENMP是用于节点内并行的,所以单节点计算的话,应该用OPENMP编译更好。

openMP 更加适合用于intel Phi这类芯片, 比如KNL.
对于纯CPU核心, intelMPI会快一些.
AMD的处理器核心, 另说.
作者
Author:
大公子扶苏    时间: 2021-5-30 20:03
哪能得到vasp安装包呀
作者
Author:
abin    时间: 2021-5-30 21:37
大公子扶苏 发表于 2021-5-30 20:03
哪能得到vasp安装包呀

买。

如果是练习用,
那么换一个工具,
比如 duckduckgo。

如果中间三行,没有看懂,
就当我没说。

另,材料人有 vasp从头编译演示,可免费随便看。
作者
Author:
大公子扶苏    时间: 2021-5-31 09:18
abin 发表于 2021-5-30 21:37
买。

如果是练习用,

谢谢指教
作者
Author:
quantumzesu    时间: 2021-9-4 03:25
Quantum198907 发表于 2020-5-29 21:06
可以用分别用make gam/make std/make ncl 命令逐个编译,(强迫症)就看不到错误啦¥%¥#%哈哈,也就是说 ...

确实分开 make gam/make std/make ncl, make test能过没有报错
作者
Author:
quantumzesu    时间: 2021-9-4 03:28
Quantum198907 发表于 2020-5-29 21:06
可以用分别用make gam/make std/make ncl 命令逐个编译,(强迫症)就看不到错误啦¥%¥#%哈哈,也就是说 ...

感谢,这个方法可行,分开编译,没有报错。Make test也过了
作者
Author:
PoorChaos    时间: 2021-11-4 09:23
昨天编译6.1 6.2 都出现问题中断,今晚试试你这个方法
作者
Author:
PoorChaos    时间: 2021-11-4 10:29
你好,因为Intel Parallel Studio XE 2019 Update 1不支持centos8 stream,所以不能按sob老师编译VASP 5.4的那个方法, 我是安装 Intel® oneAPI Base Toolkit 和 Intel® oneAPI HPC来替代,运行ifort -V,可以编译器的版本,但是在vasp里make all 进行一半,提示错误如下图,我不清楚bashrc里要怎么设置,试了很多次,可否请教一下怎么设置,是哪里出错了
(, 下载次数 Times of downloads: 80)
作者
Author:
dansor1    时间: 2022-2-24 18:22
请问编译完后运行失败,提示forrtl: severe (168): Program Exception - illegal instruction是什么原因
作者
Author:
Persona    时间: 2024-3-21 14:09
想问一下,我用vasp5.4.4优化的结果能用来跑vtst编译后的vasp6.4.1的neb计算吗





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