请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 2324|回复: 5

[VASP] vasp.6.1.0 更新介绍/安装/测试

[复制链接]

79

帖子

1

威望

803

eV
积分
902

Level 4 (黑子)

发表于 2020-2-1 11:48:25 | 显示全部楼层 |阅读模式
本帖最后由 啦啦黑还黑 于 2020-2-1 11:48 编辑

未经作者授权禁止转载
============================vasp6.1.0 更新介绍===================================
2020年1月29号,vasp.at 官网终于正式发布vasp6.1.0版本。并没有从6.0开始
微信截图_20200201103913.png

如果直接维也纳原厂购买的已经可以下载了,从代理处(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做了测试:
微信截图.png
可见拥有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===================================

评分

参与人数 9eV +37 收起 理由
阿锋001 + 3 赞!
wypkdhd + 4 谢谢
juanshenghuang + 5
fallleave + 5 赞!
obaica + 5
hellojwx + 4 谢谢分享
ABetaCarw + 3 谢谢分享
Soul + 4 谢谢分享
Shao + 4 赞!

查看全部评分

104

帖子

0

威望

2279

eV
积分
2383

Level 5 (御坂)

发表于 2020-2-1 13:16:30 | 显示全部楼层
一直对vasp的MLFF有些疑虑。按照他们的算法,MLFF的轨迹是DFT和力场轨迹的混合,不是用同一个哈密顿量跑出来的,统计结果和纯DFT会差多少?对于原子位置、晶格常数的模拟结果不错(他们的钙钛矿文章),如果是更复杂的统计分析,如VACF,不知道效果怎么样。

5

帖子

0

威望

107

eV
积分
112

Level 2 能力者

发表于 2020-2-1 13:17:33 | 显示全部楼层
求测试GPU版本。RTX系列游戏卡可用吗?

79

帖子

1

威望

803

eV
积分
902

Level 4 (黑子)

 楼主| 发表于 2020-2-1 13:36:33 | 显示全部楼层
get-it 发表于 2020-2-1 13:16
一直对vasp的MLFF有些疑虑。按照他们的算法,MLFF的轨迹是DFT和力场轨迹的混合,不是用同一个哈密顿量跑出 ...

统计性质有误差是肯定的,就看误差范围能不能接受了,正准备测一下,官网上给了个Si的例子,https://www.vasp.at/wiki/index.php/Liquid_Si_-_MLFF#Task

228

帖子

0

威望

1231

eV
积分
1459

Level 4 (黑子)

发表于 2020-2-1 17:37:59 | 显示全部楼层
openMP + MPI 版本,
设计目的应该是,节点内采用 openMP, 节点之间采用 MPI 通讯。
试试单个节点内,export OMP_NUM_THREADS=#core 看看运行效率如何。

没有具体测试过,以上仅仅是个人瞎猜测,不代表实际情况。
提供面向计算化学的平台搭建和使用相关的咨询和支持,
wechat联系 abbottcn
Configure, build, and customize the Linux cluster for your computational project.

11

帖子

0

威望

169

eV
积分
180

Level 3 能力者

发表于 2020-2-6 18:10:16 | 显示全部楼层
同意楼上,最理想的情况应该是mpi用于节点间并行,而omp用于节点内的并行,甚至可能利用intel cpu的超线程,即OMP_NUM_THREADS设置为单节点cpu的线程数
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2020-3-30 02:20 , Processed in 0.150492 second(s), 28 queries .

快速回复 返回顶部 返回列表