计算化学公社

 找回密码 Forget password
 注册 Register
Views: 58526|回复 Reply: 41
打印 Print 上一主题 Last thread 下一主题 Next thread

[VASP] VASP5.4.4 编译总结

  [复制链接 Copy URL]

101

帖子

1

威望

645

eV
积分
766

Level 4 (黑子)

本帖最后由 五十八 于 2018-3-28 18:38 编辑

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_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






>>>>>>>>>>>>>>
补充:
如果大家使用v4的cpu或者scale的cpu 请使用 AVX2/AVX512 来编译 如果在KNL上运行VASP 请务必使用SIMD/OMP来编译(此时采用-mkl=parallel)
添加AVX方法如下:
-xCORE-AVX2
-xCORE-AVX512  
此时候推荐使用(-mkl=cluster)

评分 Rate

参与人数
Participants 9
eV +46 收起 理由
Reason
hanshan + 1 同样是32核,avx512只快了6.7%
highlight + 5
wolfbing + 5 赞!
ca0yan9 + 5 赞!
lwk205 + 4
drkiwi + 5
元江1994 + 5
obaica + 6
sobereva + 10

查看全部评分 View all ratings

23

帖子

0

威望

1846

eV
积分
1869

Level 5 (御坂)

2#
发表于 Post on 2017-5-2 18:39:30 | 只看该作者 Only view this author
SCAN 测试结果如何,如何计算?

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

101

帖子

1

威望

645

eV
积分
766

Level 4 (黑子)

3#
 楼主 Author| 发表于 Post on 2017-5-2 19:16:34 | 只看该作者 Only view this author
obaica 发表于 2017-5-2 18:39
SCAN 测试结果如何,如何计算?

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

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

53

帖子

1

威望

1316

eV
积分
1389

Level 4 (黑子)

4#
发表于 Post on 2017-5-3 10:14:47 | 只看该作者 Only view this author
请问, 速度测试结果如何?

230

帖子

0

威望

2665

eV
积分
2895

Level 5 (御坂)

5#
发表于 Post on 2017-5-5 17:56:16 | 只看该作者 Only view this author
还是分享一下源码吧?

471

帖子

0

威望

1795

eV
积分
2266

Level 5 (御坂)

6#
发表于 Post on 2017-5-21 16:30:04 | 只看该作者 Only view this author
感谢!学习了

186

帖子

0

威望

4126

eV
积分
4312

Level 6 (一方通行)

7#
发表于 Post on 2017-5-22 09:27:02 | 只看该作者 Only view this author
辛苦

98

帖子

1

威望

2834

eV
积分
2952

Level 5 (御坂)

8#
发表于 Post on 2017-7-7 21:32:39 | 只看该作者 Only view this author
学习啦,谢谢啦

115

帖子

0

威望

3890

eV
积分
4005

Level 6 (一方通行)

9#
发表于 Post on 2017-7-31 16:41:05 | 只看该作者 Only view this author
请教下
编译器的编译有没有什么套路?
在不同电脑上的环境变量、设定不同,经常一台能用一台用不了

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

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

58

帖子

0

威望

1583

eV
积分
1641

Level 5 (御坂)

10#
发表于 Post on 2017-7-31 18:26:12 | 只看该作者 Only view this author
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, 下载次数 Times of downloads: 171

评分 Rate

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

查看全部评分 View all ratings

18

帖子

0

威望

1214

eV
积分
1232

Level 4 (黑子)

11#
发表于 Post on 2017-8-2 13:52:59 | 只看该作者 Only view this author
diaok 发表于 2017-7-31 16:41
请教下
编译器的编译有没有什么套路?
在不同电脑上的环境变量、设定不同,经常一台能用一台用不了

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

308

帖子

3

威望

6251

eV
积分
6619

Level 6 (一方通行)

12#
发表于 Post on 2017-8-6 21:20:35 | 只看该作者 Only view this author
可以挑战一下在ubuntu下编译
欢迎使用量子化学软件Amesp

99

帖子

0

威望

1388

eV
积分
1487

Level 4 (黑子)

PIG

13#
发表于 Post on 2017-8-6 22:02:41 | 只看该作者 Only view this author
Warm_Cloud 发表于 2017-8-6 21:20
可以挑战一下在ubuntu下编译

大师你不是编译成功了么

评分 Rate

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

查看全部评分 View all ratings

11

帖子

0

威望

33

eV
积分
44

Level 2 能力者

14#
发表于 Post on 2017-8-18 12:24:41 | 只看该作者 Only view this author
路过,问问楼主大大,请问在编译滴时候(正常版本不是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
烦请大神指点。。

9

帖子

0

威望

101

eV
积分
110

Level 2 能力者

15#
发表于 Post on 2017-8-25 10:02:16 | 只看该作者 Only view this author
很好!参考科大VASP 5.4.1+VTST编译安装方法,只要配置好编译器和库,都不用该makefile文件,直接就编译成功了,之前用intelcompiler2013,并行版编译报错,用2015就没有问题了。请问楼主5.4.4能+VTST麽?

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-12 20:06 , Processed in 0.173665 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list