记录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