VASP的编译和配置记录(Intel编译器)

VASP的编译和配置记录(Intel编译器)

记录Ubuntu下VASP的安装及配置过程。
环境:Ubunut 16.04(用ros kinetic必须装Ubuntu 16.04)
遇到的问题:gcc版本问题,权限问题,编译问题

Intel parallel studio XE

大家都说可以在官网用edu邮箱申请序列号和license文件,但我被拒绝了。。

没有了最新的有gui的安装器,只好单独装l_ccompxe_2011.6.233l_fcompxe_2011.6.233两个包,其中包括C++ CompilerFortran Compiler等内容。

解压后,进入文件夹内执行./install.sh,,选择使用license文件激活,安装在/opt/下,这个地方出现了不可忽略的缺失32位库的问题,和可忽略的几个问题。

1
2
3
4
5
6
7
8
9
32-bit libraries not found on this system.
This product release requires the presence of 32-bit compatibility libraries
when running on Intel(R) 64 architecture systems. One or more of these libraries
could not be found:
libstdc++ (including libstdc++6)
glibc
libgcc
Without these libraries, the compiler will not function properly. Please refer
to Release Notes for more information.

关于Centos系统下,有很多关于32位库缺失问题的解决办法,Ubuntu下较少参考,经尝试可以通过apt install lib32stdc++6解决。

之后将以下内容添加到.bashrc文件中:

1
2
3
4
source /opt/intel/composerxe/bin/compilervars.sh intel64
export PATH=/opt/intel/composerxe/bin:$PATH
export LD_LIBRARY_PATH=/opt/intel/composerxe/mkl/lib/intel64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/intel/lib/intel64:$LD_LIBRARY_PATH

可以通过which icc icpc ifort来验证,如果输出三行/opt/intel/下的目录,则三个编译器的环境设置成功。

如果有Intel官方新版的,可以用其中的openmpi及fftw直接编译vasp,但我没有,所以还需要安装这两个包。

openmpi

Open MPI可以在其release界面可以下载到,解压后进入文件夹,配置编译文件并编译安装:

1
2
3
4
5
6
wget https://download.open-mpi.org/release/open-mpi/v1.6/openmpi-1.6.5.tar.gz
tar zxvf openmpi-1.6.5.tar.gz
cd openmpi-1.6.5/
./configure --prefix=/opt/openmpi CC=icc CXX=icpc F77=ifort FC=ifort
make -j4
make install

尝试了三个版本的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
2
3
4
5
6
sudo ln -sf /usr/bin/gcc-4.7        /usr/bin/gcc
sudo ln -sf /usr/bin/gcc-ar-4.7 /usr/bin/gcc-ar
sudo ln -sf /usr/bin/gcc-nm-4.7 /usr/bin/gcc-nm
sudo ln -sf /usr/bin/gcc-ranlib-4.7 /usr/bin/gcc-ranlib
sudo ln -sf /usr/bin/gcov-4.7 /usr/bin/gcov
sudo ln -sf g++-4.7 /usr/bin/g++

之后gcc -v检查gcc版本,g++ -v检查g++版本,无误后重新编译。其中每次编译失败都make clean清理编译文件,否则可能出错。

然后将下面的内容添加到.bashrc文件中:

1
2
3
export PATH=/opt/openmpi/bin:$PATH
export LD_LIBRARY_PATH=/opt/openmpi/lib:$LD_LIBRARY_PATH
export MANPATH=/opt/openmpi/share/man:$MANPATH

之后which mpif90检查路径是否为设置的/opt/openmpi下,如果仍然为/usr/下,则说明没有成功。还可以编译和运行openmpi自带的example来验证是否编译成功。

1
2
3
cd examples/
make
mpirun -np 2 hello_c # 即使用双核运行文件hello_c

显示下面内容则说明编译器正常:

1
2
Hello, world, I am 0 of 2
Hello, world, I am 1 of 2

这里还有个小插曲,终于编译通过之后,我使用了make install,发现无权限写入/opt/目录,想当然就使用了sudo make install,发现竟然报错icc命令不存在,所以特别要注意权限问题。可以切换至root后,source相应用户目录下的.bashrc文件后,再make install就不会出错了。当然你也可以明智地一开始就用root用户编译。

fftw

FFTW是一个C子程序库,用于计算离散傅里叶变换。下载压缩包并解压后,执行:

1
2
3
./configure --prefix=/opt/fftw-3.3.8 --enable-mpi
make
make install

之后将下面内容添加至.bashrc文件中。

1
2
export PATH=/opt/fftw-3.3.8/bin:$PATH
export LD_LIBRARY_PATH=/opt/fftw-3.3.8/lib:$LD_LIBRARY_PATH

VASP

在同一文件夹内解压vasp.5.4.1.tar.gzvasp.5.lib_.tar_2.gz,得到vasp.5.4.1vasp.5.lib两个文件夹。

1
2
cd vasp.5.4.1/
cp arch/makefile.include.linux_intel makefile.include

增加一行MKLROOT = /opt/intel/mkl
修改OBJECTSINCS中的路径为正确的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

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×