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

计算化学公社

 找回密码
 现在注册!
查看: 3012|回复: 17

[VASP] VASP5.4.4 编译总结

[复制链接]

60

帖子

1

威望

400

eV
积分
480

Level 3 能力者

发表于 2017-5-2 14:38:41 | 显示全部楼层 |阅读模式
本帖最后由 五十八 于 2017-5-19 12:32 编辑

17th Apr发布了新版本的呢的VASP 5.4.4 加入了SCAN 于是决定试一试这个方法:
环境说明
CPU E5 2667 V4
GPU K80*2
MEM 128G
INTEL PARALLEL XE 2017
CUDA 8.0.44
因为之前一直在用Terachem 忘记把CUDA换回来了,就这么用吧,不过竟然也成功了,确实是做了适配。

一 编译器环境
source /path of intel parallel xe 2017/bin/psxevars.sh
接着最好把CUDA也加到env里面去
二 编译
然后把intel的那个arch cp成makefile.include 放到vasp makefile一起的目录下
然后make all 会直接出现std gam 和 ncl 三个版本在bin路径下,如果跟我一样的K80 记得comment掉sm_60的部分
然后make gpu的时候由于使用了2017版本的编译器 会出现cuda报错 说只支持2015、2016的ic编译器 这个时候找到这个文件 找到那一行 把1500改成1700 就妥了_(:з」∠)_
实际测试也没有问题
当然 这期间我也在FLAG中加入了-heap-arrays 64 来以防万一。
总结
VASP新的版本有了54pot文件,而且有了metaGGA和SCAN等等 同时从代码的规整程度看得出 要么是换了新的人整理过程序要么就是写程序的人换了星座(大雾)
其次,intel的版本最好大于2015 (我觉着2015就好都不用改了cuda7.5和8.0都支持)
以上
############################################################
对于arch=compute_60 因为我针对k80删减了CUDA 实在抱歉因为(CUDA7.5的用户请注意还是要去掉sm_60的部分):
sm_60 => Tesla P100
sm_61 => GTX 1080, GTX 1070
sm_62 =>?

REF:https://reviews.llvm.org/D22068
偶然想到这个用到的是OPENACC,神威也是OPENACC不知道移植的可能性
下面的是现在makefile.include 在本地台式机的GTX1070 SLI上测试成功
作为一款优秀的软件 VASP如今的makefile非常人性化稍加修改而且留给了大家很多余地
# Precompiler options
CPP_OPTIONS= -DHOST=\"LinuxIFC\"\
             -DMPI -DMPI_BLOCK=16000 \
             -Duse_collective \
             -DscaLAPACK \
             -DCACHE_SIZE=16000 \
             -Davoidalloc \
             -Duse_bse_te \
             -Dtbdyn \
             -Duse_shmem

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

FC         = mpiifort
FCL        = mpiifort -mkl=sequential -lstdc++

FREE       = -free -names lowercase -heap-arrays 64

FFLAGS     = -assume byterecl -w
OFLAG      = -O2
OFLAG_IN   = $(OFLAG)
DEBUG      = -O0

MKL_PATH   = $(MKLROOT)/lib/intel64
BLAS       =
LAPACK     =
BLACS      = -lmkl_blacs_intelmpi_lp64
SCALAPACK  = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS)

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

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

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


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     = icc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB   = $(FREE)

OBJECTS_LIB= linpack_double.o getshmem.o

# For the parser library
CXX_PARS   = icpc

LIBS       += parser
LLIBS      += -Lparser -lparser -lstdc++

# Normally no need to change this
SRCDIR     = ../../src
BINDIR     = ../../bin

#================================================
# GPU Stuff

CPP_GPU    = -DCUDA_GPU -DRPROMU_CPROJ_OVERLAP -DUSE_PINNED_MEMORY -DCUFFT_MIN=28 -UscaLAPACK

OBJECTS_GPU = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d_gpu.o fftmpiw_gpu.o

CC         = icc
CXX        = icpc
CFLAGS     = -fPIC -DADD_ -Wall -openmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DGPUSHMEM=300 -DHAVE_CUBLAS

CUDA_ROOT  = /usr/local/cuda
NVCC       := $(CUDA_ROOT)/bin/nvcc -ccbin=icc
CUDA_LIB   := -L$(CUDA_ROOT)/lib64 -lnvToolsExt -lcudart -lcuda -lcufft -lcublas

GENCODE_ARCH    := -gencode=arch=compute_30,code=\"sm_30,compute_30\" \
                   -gencode=arch=compute_35,code=\"sm_35,compute_35\"  \
                   -gencode=arch=compute_61,code=\"sm_61,compute_61\"

MPI_INC    = $(I_MPI_ROOT)/include64/

http://pan.baidu.com/s/1nv2rsu9
68r2





评分

参与人数 6eV +35 收起 理由
ca0yan9 + 5 赞!
lwk205 + 4
drkiwi + 5
元江1994 + 5
obaica + 6
sobereva + 10

查看全部评分

7

帖子

0

威望

536

eV
积分
543

Level 4 (黑子)

发表于 2017-5-2 18:39:30 | 显示全部楼层
SCAN 测试结果如何,如何计算?

编译过程写的不够详细,至少也应该上传一份makefile.include

60

帖子

1

威望

400

eV
积分
480

Level 3 能力者

 楼主| 发表于 2017-5-2 19:16:34 | 显示全部楼层
obaica 发表于 2017-5-2 18:39
SCAN 测试结果如何,如何计算?

编译过程写的不够详细,至少也应该上传一份makefile.include

多谢您提醒,提交上去了,因为组里面别的同学提前拿到过源码 我们这次只比对了结果和速度,其实我就是用arch文件夹内的那个makefile.include 然后改了下嘿嘿

35

帖子

1

威望

494

eV
积分
549

Level 4 (黑子)

发表于 2017-5-3 10:14:47 | 显示全部楼层
请问, 速度测试结果如何?

57

帖子

0

威望

368

eV
积分
425

Level 3 能力者

发表于 2017-5-5 17:56:16 | 显示全部楼层
还是分享一下源码吧?

116

帖子

0

威望

365

eV
积分
481

Level 3 能力者

发表于 2017-5-21 16:30:04 | 显示全部楼层
感谢!学习了

69

帖子

0

威望

706

eV
积分
775

Level 4 (黑子)

发表于 2017-5-22 09:27:02 | 显示全部楼层
辛苦

36

帖子

0

威望

300

eV
积分
336

Level 3 能力者

发表于 2017-7-7 21:32:39 | 显示全部楼层
学习啦,谢谢啦

72

帖子

0

威望

732

eV
积分
804

Level 4 (黑子)

发表于 2017-7-31 16:41:05 | 显示全部楼层
请教下
编译器的编译有没有什么套路?
在不同电脑上的环境变量、设定不同,经常一台能用一台用不了

系统自带一个低版本gcc
又安装了高版本的gcc和intel
许多软件又需要openmpi和fftw作为前置
这两个软件gcc和intel都能编译,编完又另外多出来mpi的编译器
1.最后编译软件时应该怎么选择?  
从依赖到软件都必须使用同一个编译器吗?
2.openmpi里的mpicc只是并行版的icc?
3.最终这个程序会用到编译过程中的所有库?需要这里所有的环境变量?

不好意思一下子这么多问题

20

帖子

0

威望

529

eV
积分
549

Level 4 (黑子)

发表于 2017-7-31 18:26:12 | 显示全部楼层
I don't trust in Intel Compilers, so here is a way to obtain VASP 5.4.4 binaries via gcc-fortran, openmpi, and Intel MKL:

Hardware:
2x Intel Xeon E5-2658v3@2.0GHz
64Gb RAM
2x NVIDIA GTX TITAN Black

Software:
Arch Linux
gcc 7.1.1
openmpi 1.10.6 with CUDA support
Intel MKL 11.3.3
CUDA 8.0.61
*see attachment*

makefile.include

2.2 KB, 下载次数: 39

评分

参与人数 1eV +4 收起 理由
wwmeng + 4

查看全部评分

14

帖子

0

威望

516

eV
积分
530

Level 4 (黑子)

发表于 2017-8-2 13:52:59 | 显示全部楼层
diaok 发表于 2017-7-31 16:41
请教下
编译器的编译有没有什么套路?
在不同电脑上的环境变量、设定不同,经常一台能用一台用不了

1. 高低版本的gcc并不影响编译,只要设置正确的编译环境(.bashrc)即可;
个人体验是 intel编译器+MKL 运行效率比较高 (MKL+FFTW+intelMPI 在2016版本后的intel编译器全部集成)
如果需要编译openmpi,fftw等,则最好全部使用同一个编译器
2. 可以这么认为
3. makefile.include指明了所有数学库的绝对路径即可,通常只需mpi和编译器注明环境变量

122

帖子

3

威望

698

eV
积分
880

Level 4 (黑子)

发表于 2017-8-6 21:20:35 | 显示全部楼层
可以挑战一下在ubuntu下编译

43

帖子

0

威望

468

eV
积分
511

Level 4 (黑子)

PIG

发表于 2017-8-6 22:02:41 | 显示全部楼层
Warm_Cloud 发表于 2017-8-6 21:20
可以挑战一下在ubuntu下编译

大师你不是编译成功了么

评分

参与人数 1eV +1 收起 理由
卡开发发 + 1 编译成功≠能用

查看全部评分

11

帖子

0

威望

33

eV
积分
44

Level 2 能力者

发表于 2017-8-18 12:24:41 | 显示全部楼层
路过,问问楼主大大,请问在编译滴时候(正常版本不是gpu计算)出现了这个问题(我是在学校集群编译,之前在实验室搭的服务器成了)
make[1]: Entering directory `/public/home/houxh5697/LUKE/vasp/vasp.5.4.1/build/std'
makefile:52: Extraneous text after `else' directivemakefile:59: Extraneous text after `else' directive
makefile:59: *** only one `else' per conditional.  Stop.
make[1]: Leaving directory `/public/home/houxh5697/LUKE/vasp/vasp.5.4.1/build/std'
make: *** [std] Error 2
烦请大神指点。。

5

帖子

0

威望

49

eV
积分
54

Level 2 能力者

发表于 2017-8-25 10:02:16 | 显示全部楼层
很好!参考科大VASP 5.4.1+VTST编译安装方法,只要配置好编译器和库,都不用该makefile文件,直接就编译成功了,之前用intelcompiler2013,并行版编译报错,用2015就没有问题了。请问楼主5.4.4能+VTST麽?
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

Archiver|手机版|小黑屋|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2017-11-22 03:32 , Processed in 0.931749 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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