记录Ubuntu下VASP的安装及配置过程。
环境:Ubunut 16.04
遇到的问题:gcc版本问题,权限问题,编译问题
Intel parallel studio XE
大家都说可以在官网用edu邮箱申请序列号和license文件,但我被拒绝了(注意,当时我校还没有被列入实体清单)。。
没有了最新的有gui的安装器,只好单独装l_ccompxe_2011.6.233和l_fcompxe_2011.6.233两个包,其中包括C++ Compiler和Fortran Compiler等内容。
解压后,进入文件夹内执行./install.sh,,选择使用license文件激活,安装在/opt/下,这个地方出现了不可忽略的缺失32位库的问题,和可忽略的几个问题。
1 | 32-bit libraries not found on this system. |
关于Centos系统下,有很多关于32位库缺失问题的解决办法,Ubuntu下较少参考,经尝试可以通过apt install lib32stdc++6解决。
之后将以下内容添加到.bashrc文件中:
1 | source /opt/intel/composerxe/bin/compilervars.sh intel64 |
可以通过which icc icpc ifort来验证,如果输出三行/opt/intel/下的目录,则三个编译器的环境设置成功。
如果有Intel官方新版的,可以用其中的openmpi及fftw直接编译vasp,但我没有,所以还需要安装这两个包。
openmpi
Open MPI可以在其release界面可以下载到,解压后进入文件夹,配置编译文件并编译安装:
1 | wget https://download.open-mpi.org/release/open-mpi/v1.6/openmpi-1.6.5.tar.gz |
尝试了三个版本的openmpi,均有问题,主要问题是指定用intel的编译器编译时会报错,但尝试不指定使用icc icpc ifort中的一个或全部,发现最后编译vasp仍然会报错,所以老老实实解决intel编译器编译openmpi的问题。
查阅资料后发现可能是gcc和icc版本相差过大的问题。icc没办法升级,所以尝试了降级gcc到4.7版本:
安装gcc-4.7和g++-4.7:sudo apt install gcc-4.7 gcc-4.7-multilib g++-4.7 g++-4.7-multilib
重新创建gcc和g++软链接:
1 | sudo ln -sf /usr/bin/gcc-4.7 /usr/bin/gcc |
之后gcc -v检查gcc版本,g++ -v检查g++版本,无误后重新编译。其中每次编译失败都make clean清理编译文件,否则可能出错。
然后将下面的内容添加到.bashrc文件中:
1 | export PATH=/opt/openmpi/bin:$PATH |
之后which mpif90检查路径是否为设置的/opt/openmpi下,如果仍然为/usr/下,则说明没有成功。还可以编译和运行openmpi自带的example来验证是否编译成功。
1 | cd examples/ |
显示下面内容则说明编译器正常:
1 | Hello, world, I am 0 of 2 |
这里还有个小插曲,终于编译通过之后,我使用了make install,发现无权限写入/opt/目录,想当然就使用了sudo make install,发现竟然报错icc命令不存在,所以特别要注意权限问题。可以切换至root后,source相应用户目录下的.bashrc文件后,再make install就不会出错了。当然你也可以明智地一开始就用root用户编译。
fftw
FFTW是一个C子程序库,用于计算离散傅里叶变换。下载压缩包并解压后,执行:
1 | ./configure --prefix=/opt/fftw-3.3.8 --enable-mpi |
之后将下面内容添加至.bashrc文件中。
1 | export PATH=/opt/fftw-3.3.8/bin:$PATH |
VASP
在同一文件夹内解压vasp.5.4.1.tar.gz和vasp.5.lib_.tar_2.gz,得到vasp.5.4.1和vasp.5.lib两个文件夹。
1 | cd vasp.5.4.1/ |
增加一行MKLROOT = /opt/intel/mkl
修改OBJECTS和INCS中的路径为正确的fftw路径
之后即可执行make all进行编译,编译失败必须执行make veryclean清理build文件后重新编译。
完成编译后会在bin文件夹生成三个可执行文件:vasp_gam:gamma版本;vasp_std:标准版本;vasp_ncl:非线性版本,至此vasp的编译工作全部完成。
Reference: http://sobereva.com/455
Reference: http://bbs.keinsci.com/thread-4267-1-2.html
Reference: https://blog.csdn.net/qq_35548961/article/details/87943407

