计算化学公社

标题: VASP5.4.4 编译总结 [打印本页]

作者
Author:
五十八    时间: 2017-5-2 14:38
标题: VASP5.4.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)


作者
Author:
obaica    时间: 2017-5-2 18:39
SCAN 测试结果如何,如何计算?

编译过程写的不够详细,至少也应该上传一份makefile.include
作者
Author:
五十八    时间: 2017-5-2 19:16
obaica 发表于 2017-5-2 18:39
SCAN 测试结果如何,如何计算?

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

多谢您提醒,提交上去了,因为组里面别的同学提前拿到过源码 我们这次只比对了结果和速度,其实我就是用arch文件夹内的那个makefile.include 然后改了下嘿嘿
作者
Author:
haizhiwuyu    时间: 2017-5-3 10:14
请问, 速度测试结果如何?
作者
Author:
一颗赛艇    时间: 2017-5-5 17:56
还是分享一下源码吧?
作者
Author:
hakuna    时间: 2017-5-21 16:30
感谢!学习了
作者
Author:
plus    时间: 2017-5-22 09:27
辛苦
作者
Author:
lindlar    时间: 2017-7-7 21:32
学习啦,谢谢啦
作者
Author:
diaok    时间: 2017-7-31 16:41
请教下
编译器的编译有没有什么套路?
在不同电脑上的环境变量、设定不同,经常一台能用一台用不了

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

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

作者
Author:
mizuchi    时间: 2017-7-31 18:26
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*
作者
Author:
legendyao    时间: 2017-8-2 13:52
diaok 发表于 2017-7-31 16:41
请教下
编译器的编译有没有什么套路?
在不同电脑上的环境变量、设定不同,经常一台能用一台用不了

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

大师你不是编译成功了么

作者
Author:
lukewithyou    时间: 2017-8-18 12:24
路过,问问楼主大大,请问在编译滴时候(正常版本不是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
烦请大神指点。。
作者
Author:
xiehua    时间: 2017-8-25 10:02
很好!参考科大VASP 5.4.1+VTST编译安装方法,只要配置好编译器和库,都不用该makefile文件,直接就编译成功了,之前用intelcompiler2013,并行版编译报错,用2015就没有问题了。请问楼主5.4.4能+VTST麽?
作者
Author:
huiji2003    时间: 2017-9-8 08:22
本帖最后由 huiji2003 于 2017-9-8 08:59 编辑
mizuchi 发表于 2017-7-31 18:26
I don't trust in Intel Compilers, so here is a way to obtain VASP 5.4.4 binaries via gcc-fortran, op ...

10楼高手,我也用了你的环境,只不系统是centos7,openmpi 1.10.7 gcc 4.8 (也试过7.1.0) intel xe 2015. 用了你的makefile.include.编译成功,但运行时,只能单核算,多核并行时出错。能给提示一下是什么问题吗?
openmpi 运行它自已的examples是没问题的。

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  #0  0x7FA809CD1467
#1  0x7FA809CD1AAE
#2  0x7FA80859C24F
#3  0x7FA7EB4AF6EA
0x7FDEC60B6467
#1  0x7FDEC60B6AAE
#2  0x7FDEC498124F
#3  0x7FDEA78D66EA
--------------------------------------------------------------------------
mpirun noticed that process rank 4 with PID 43407 on node localhost exited on signal 11 (Segmentation fault).
--------------------------------------------------------------------------

作者
Author:
legendyao    时间: 2017-9-8 11:15
huiji2003 发表于 2017-9-8 08:22
10楼高手,我也用了你的环境,只不系统是centos7,openmpi 1.10.7 gcc 4.8 (也试过7.1.0) intel xe 2015.  ...

环境里添加 ulimit -s unlimited 试试
作者
Author:
mizuchi    时间: 2017-9-8 14:24
huiji2003 发表于 2017-9-8 08:22
10楼高手,我也用了你的环境,只不系统是centos7,openmpi 1.10.7 gcc 4.8 (也试过7.1.0) intel xe 2015.  ...

Well, could you post the output of ldd vasp_gpu (or vasp_std)? It looks like a linker error.

And if you'd like me to understand properly, use English because Google Translate is still far from perfect :)
作者
Author:
amani73986    时间: 2018-3-27 11:15
没有百度网盘的密码啊..
作者
Author:
五十八    时间: 2018-3-28 16:00
amani73986 发表于 2018-3-27 11:15
没有百度网盘的密码啊..

那个黑块 选中就知道了
作者
Author:
Ado    时间: 2018-4-5 20:55
学习了!
作者
Author:
shellrazer    时间: 2018-5-25 09:21
请教楼主parser是什么?
我用intel compiler 2015,openmpi 2.1.3, cuda 8.0,fftw 3.3.7,vasp 5.4.1,可以正常编译vasp-std,附件为makefile.include,但是在编译vasp-gpu时出现如下错误:请教楼主是否有解决的建议。多谢!

ld: CUDA/lib/libCudaUtils_x86_64.a(fock.cu.o): undefined reference to symbol '_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3'
//usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line
makefile:145: recipe for target 'vasp' failed
make[2]: *** [vasp] Error 1
make[2]: Leaving directory '/usr/vasp/vasp.5.4.1/build/gpu'
cp: cannot stat 'vasp': No such file or directory
makefile:142: recipe for target 'all' failed
make[1]: *** [all] Error 1
make[1]: Leaving directory '/usr/vasp/vasp.5.4.1/build/gpu'
makefile:10: recipe for target 'gpu' failed
make: *** [gpu] Error 2
root@nie:/usr/vasp/vasp.5.4.1#

作者
Author:
shellrazer    时间: 2018-5-25 09:25
mizuchi 发表于 2017-9-8 14:24
Well, could you post the output of ldd vasp_gpu (or vasp_std)? It looks like a linker error.

An ...

what's parser lib in your makefile.include?
how do you solve the conflict between cuda 8.0 and high version of gcc?
I use your makefile.include to compile vasp-gpu, but give me error I can't fix. Please help... find details above.
作者
Author:
五十八    时间: 2018-5-25 22:22
shellrazer 发表于 2018-5-25 09:21
请教楼主parser是什么?
我用intel compiler 2015,openmpi 2.1.3, cuda 8.0,fftw 3.3.7,vasp 5.4.1, ...

您好 我看您把icc 的-static-libstdc++去掉了
此外parser是指src中的parser文件夹下的文件们
-L 或者-l 表达连接 您可以试一下icc -help link 看一下
作者
Author:
mizuchi    时间: 2018-5-26 19:32
shellrazer 发表于 2018-5-25 09:25
what's parser lib in your makefile.include?
how do you solve the conflict between cuda 8.0 and hi ...

The error can be fixed easily: just comment out the LLIBS variable to add -lstdc++ to linker flags.
作者
Author:
nk9999    时间: 2018-6-10 13:37
huiji2003 发表于 2017-9-8 08:22
10楼高手,我也用了你的环境,只不系统是centos7,openmpi 1.10.7 gcc 4.8 (也试过7.1.0) intel xe 2015.  ...

你可以考虑试一下OFLAG里面,把O2改成O1看看。
作者
Author:
fengliu    时间: 2018-6-10 22:03
感谢分享!
作者
Author:
NEFU    时间: 2018-8-18 13:29
请问楼主GPU版的vasp5.4.4是否能成功添加编译vtst,我试了一下报错如下:
作者
Author:
abin    时间: 2018-8-18 21:50
NEFU 发表于 2018-8-18 13:29
请问楼主GPU版的vasp5.4.4是否能成功添加编译vtst,我试了一下报错如下:

我试了 没有问题。

CentOS intel2015 vasp544
作者
Author:
abin    时间: 2018-8-18 21:52
Warm_Cloud 发表于 2017-8-6 21:20
可以挑战一下在ubuntu下编译

http://cms.mpi.univie.ac.at/wiki ... nstallation_of_VASP
仔细读一下, 然后再加上google 就搞定了。
作者
Author:
NEFU    时间: 2018-8-18 22:24
abin 发表于 2018-8-18 21:50
我试了 没有问题。

CentOS intel2015 vasp544

您好,我是在超算集群上编译的,intel2017和cuda9.2,正常编译VASP_GPU,显卡型号p100,可以正常运行,但是加入vtst后再编译就会编译错误,报错信息如上条消息,我的makefile如下,请问方便把您的make贴出来看一下吗?我主要计算过渡态,没vtst很不方便 ,....卡我很久了......


# 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  = /gpfs/home/xlwang/programs/cuda9.2
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_60,code=\"sm_60,compute_60\"

MPI_INC    = $(I_MPI_ROOT)/include64/

作者
Author:
abin    时间: 2018-8-19 11:44
NEFU 发表于 2018-8-18 22:24
您好,我是在超算集群上编译的,intel2017和cuda9.2,正常编译VASP_GPU,显卡型号p100,可以正常运行,但 ...

没有什么特殊的。
就是按照这里的提示操作。

http://theory.cm.utexas.edu/vasp/installation.html
http://cms.mpi.univie.ac.at/wiki ... de.linux_intel_cuda

我没有GPU设备, 无法测试GPU部分是否工作正常。
作者
Author:
zugehaomeng    时间: 2018-8-30 20:54
您好,我看了您的VASP 5.4.4 编译总结。在这里有些问题,5.4.4里面的README说先复制makefile.include.intel到makefile,编辑修改后make all。然后复制makefile.include.linux_intel_cuda 到makefile.include,再进行make gpu。但是现在VASP5.4.4版里的makefile.include.intel中GPU也包含在内,而且arch文件夹下也没有那个后缀为cuda的文件了请问您对GPU那块儿是怎么处理的呢?是将makefile修改完后,先make all再直接make gpu吗?
作者
Author:
caixinzhang    时间: 2018-9-1 14:17
NEFU 发表于 2018-8-18 13:29
请问楼主GPU版的vasp5.4.4是否能成功添加编译vtst,我试了一下报错如下:

请问你现在编译VTST成功了吗?我碰到的情况和你一样
作者
Author:
五十八    时间: 2018-9-3 21:57
zugehaomeng 发表于 2018-8-30 20:54
您好,我看了您的VASP 5.4.4 编译总结。在这里有些问题,5.4.4里面的README说先复制makefile.include.intel ...

VASP 544中 makefile 最后一部分就是GPU的部分 541中是分开的
作者
Author:
yxf    时间: 2018-11-6 20:13
感谢!学习了
作者
Author:
心辉    时间: 2018-12-1 09:43
作者有赝势库么?
或者说 您能告诉我,赝势库在vasp安装好的哪里么?
作者
Author:
Libesi    时间: 2019-3-23 11:41
本帖最后由 Libesi 于 2019-3-23 11:43 编辑

您好,请问
CPP_OPTIONS= -DHOST=\"LinuxIFC\"\
             -DMPI -DMPI_BLOCK=16000 \
             -Duse_collective \
             -DscaLAPACK \
             -DCACHE_SIZE=16000 \
             -Davoidalloc \
             -Duse_bse_te \
             -Dtbdyn \
             -Duse_shmem
中,原make.include文件中  -DMPI -DMPI_BLOCK=8000 \
                                               -DCACHE_SIZE=4000\
这从8000改到16000;4000改到16000;改变的数字是什么意思呢?改了以后有什么影响么?谢谢~

作者
Author:
afeng    时间: 2019-4-16 22:18
各种新的开始,小白新上路
作者
Author:
灰飞的旋律    时间: 2019-8-23 10:25
本帖最后由 灰飞的旋律 于 2019-8-23 10:35 编辑


这么说的话,那买机器同样主频和核心数的还是V4的更划算些,那点UPI速度的提升不明显吧。金牌支持AVX512, V4不支持。但是金牌支持6通道内存,以单节点双核来说,12通道比8通道计算速度会有多大提升。不过我测试过8通道比四通道能提升40%左右。另外,这个提升不明显会不会和其他硬件的而配置还有关系??
INTEL官网有个测试对比,不知道靠不靠谱

附上2697V4和6148的参数

觉得不靠谱这对比。6148主频高而且核心数还多。

作者
Author:
搞理论的    时间: 2020-1-4 15:57
请教一下:
-xCORE-AVX2
-xCORE-AVX512  
加到哪个参数后面?
作者
Author:
澄海霸王龙    时间: 2022-6-14 16:22
lukewithyou 发表于 2017-8-18 12:24
路过,问问楼主大大,请问在编译滴时候(正常版本不是gpu计算)出现了这个问题(我是在学校集群编译,之前 ...

你好,请问解决了嘛





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