跳转到内容

Intel平台VASP编译指南


  • Intel CPU: 推荐使用支持 AVX、AVX2 或 AVX-512 指令集的新型 CPU,以最大限度地发挥 Intel 编译器和 MKL 的性能。
  • Linux 系统: 推荐使用 CentOS/RHEL 或 Ubuntu/Debian 等主流发行版。

您必须安装并配置好以下 Intel 软件套件:

  1. Intel Fortran Compiler (ifort)
  2. Intel C Compiler (icc)
  3. Intel Math Kernel Library (MKL)
  4. Intel MPI Library (推荐,用于并行计算)

💡 配置环境

确保您已运行 Intel oneAPI 的环境设置脚本,以便系统能找到所有的编译器和库:

Terminal window
source /opt/intel/oneapi/setvars.sh

假设您已拥有 VASP 源代码(例如 vasp.x.x.x.tar.gz),并已解压到您的工作目录。

Terminal window
tar -zxvf vasp.x.x.x.tar.gz
cd vasp.x.x.x

VASP 的编译主要依赖于一个名为 makefile.include 的配置文件。

VASP 源码中通常提供了一个适用于 Intel 平台的模板文件。将其复制到主目录下并命名为 makefile.include。

Terminal window
cp arch/makefile.include.intel makefile.include

接下来,您需要使用文本编辑器(如 vimnano)编辑 makefile.include 文件。

Terminal window
vim makefile.include

以下是针对 Intel 平台的关键配置项。请根据您的 VASP 版本和编译器路径进行调整。

makefile.include
# Fortran 编译器:使用 Intel Fortran
FCL = mpif90
# 如果不使用 MPI,则使用:FCL = ifort
# C 编译器:使用 Intel C/C++ Compiler
CCL = mpiicc
# 如果不使用 MPI,则使用:CCL = icc

这是性能优化的核心。请根据您的 CPU 类型选择适当的优化级别和指令集。

makefile.include
# 推荐的 Intel 编译标志:
FFLAGS = -w -prec-sqrt -pad -ip -O3 -xHOST
# -xHOST: 告诉编译器针对当前机器的 CPU 架构进行最高级别优化(例如 AVX512)
# -O3: 开启最高级别的优化
# 如果在集群上编译,不确定目标机器架构时,使用通用指令集:
# FFLAGS = -w -prec-sqrt -pad -ip -O3 -xCORE-AVX2

正确链接 Intel MKL 库是 VASP 性能的关键。

makefile.include
# 假设 MKLROOT 变量已通过 setvars.sh 正确设置
MKL_LIB = $(MKLROOT)/lib/intel64
MKL_LIB_SEQ = -L$(MKL_LIB) -lmkl_intel_lp64 -lmkl_sequential -lmkl_core
MKL_LIB_PAR = -L$(MKL_LIB) -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm
# 链接行:选择并行或顺序版本
BLAS = $(MKL_LIB_PAR)

并行计算

如果您使用了 mpif90mpiicc,那么您应该在 BLAS 中使用 MKL_LIB_PAR,并确保 VASP 编译时开启了必要的 MPI 选项(通常是自动处理)。

完成 makefile.include 配置后,保存文件。然后使用 make 命令开始编译。

首先,清除任何旧的编译目标,然后执行标准版本(vasp_std)的编译。

Terminal window
make clean
make all

VASP 源代码允许您编译针对特定计算优化的不同版本,以获得更高的性能或支持特殊功能。

编译 Gamma 点专用版本。该版本针对仅使用 $\Gamma$ (Gamma) 点的计算进行了优化,速度通常比标准版更快:

Terminal window
make vasp_gamma

Powered by Namyki