乐于分享
好东西不私藏

VASP 5.4.4 安装指南

VASP 5.4.4 安装指南

软件安装实战系列· 02

Ubuntu 22.04 + Intel oneAPI 2023.1 + Intel MPI + MKL

从离线安装 oneAPI、生成 MKL FFTW wrapper、配置 makefile.include 到三版本验收

适用系统

Ubuntu 22.04 LTS(服务器 工作站)

目标版本

VASP 5.4.4

编译路线

Intel oneAPI 2023.1 + Intel MPI + Intel MKL

文章定位

可复现教程 + 工程化部署与排错思路

云算科技

高性能计算|科研服务|软件支持

版本:20267

写在前面

VASP 的安装经常被概括成准备源码、改一份 makefile.include、执行 make”。真正进入服务器环境后,问题远不止这些:Intel 编译器、Intel MPI 和 MKL 是否来自同一套 oneAPIFFTW 接口库是否已经生成,旧版 VASP 对 Fortran 模块依赖是否允许并行编译,以及最终交付给普通用户时能否稳定调用,都会直接决定安装是否可靠。

这篇文章以 Ubuntu 22.04VASP 5.4.4 和 Intel oneAPI 2023.1 为例,完整拆解一条 CPU 并行编译路线。文章不只给命令,还会解释每一步为什么要做、应该看到什么结果,以及失败后应该从哪一层开始排查。

授权与版权说明

VASP 是商业授权软件。本文只讲安装方法,不转发 VASP 源码与赝势文件。

我们内部已经把环境检查、路径识别、makefile.include 生成、串行编译、日志记录和验收测试封装为一键安装脚本,也可通过远程方式完成部署。但一键脚本并不是跳过技术细节,而是把已经验证过的技术细节固化下来。本文仍以读者能够独立完成和判断为目标。

文章目录

1.先理解:VASP 安装时到底在组合哪些组件

2.部署目标、安装包与目录规划

3.安装系统依赖与 Intel oneAPI 离线套件

4.加载并检查 Intel 编译环境

5.生成 MKL FFTW3 Fortran wrapper

6.解压源码并定位真正的 VASP 根目录

7.配置 makefile.include:每一段在解决什么问题

8.依次编译 vasp_stdvasp_gam 与 vasp_ncl

9.配置用户环境:PATH 与 modulefile 两种方式

10.赝势库管理与第一个实际算例

11.Slurm 集群提交脚本

12.高频报错与排查顺序

13.一键安装脚本应该具备哪些能力

14.最终验收清单与服务说明

1. 先理解:VASP 安装时到底在组合哪些组件

一次可用的 VASP 构建,本质上是在把四层组件组合成一个稳定的运行环境:

层级

本文采用的组件

主要作用

编译器

Intel Fortran / Intel C/C++

 VASP 的 Fortran与解析器源码编译为目标文件

并行环境

Intel MPI

提供 mpiifortmpirun 及跨进程通信

数学库

Intel MKL

提供 BLASLAPACKScaLAPACKBLACS 与 FFT 接口

应用程序

VASP 5.4.4

生成 vasp_stdvasp_gam 与 vasp_ncl

本文选择 Intel oneAPI 路线的一个直接好处,是编译器、MPI 和数学库来自同一套工具链,不需要额外混入 OpenMPIMPICHOpenBLAS 或系统版 ScaLAPACK。这样可以显著降低编译时使用一套 MPI、运行时却加载另一套 MPI”的风险。

最常见的误区

看到 mpiifortmpirun 和 MKLROOT 都存在,并不代表环境一定正确。还要确认它们来自同一套 /opt/intel/oneapi 路径,并在实际链接与运行测试中验证。

2. 部署目标、安装包与目录规划

本文目标是在一台 Ubuntu 22.04 服务器上构建 VASP 5.4.4 的三个 CPU 可执行文件:

程序

典型用途

使用建议

vasp_std

结构优化、SCF、能带、DOS、绝大多数常规计算

默认优先使用

vasp_gam

只使用 Gamma 点的大超胞计算

确认 KPOINTS 确实是 Gamma-only

vasp_ncl

非共线磁性与自旋轨道耦合(SOC

SOC / noncollinear 任务使用

2.1 推荐目录

/opt/software/ 安装包统一存放目录/opt/vasp/ # VASP 安装根目录/opt/vasp/vasp.5.4.4/ 实际源码与编译目录(示例)/opt/vasp/potpaw/ 赝势库目录/opt/modulefiles/vasp/ 可选:Environment Modules 文件

2.2 需要准备的安装包

l_BaseKit_p_2023.1.0.46401_offline.shl_HPCKit_p_2023.1.0.46346_offline.shvasp.5.4.4.tar.gzpotpaw_PBE.54.tar.gz 可选:合法授权的赝势库

离线服务器要特别注意

BaseKit 和 HPCKit 应使用文件名带 _offline 的完整离线安装包。没有 _offline 的安装器通常会在执行时联网下载组件,内网或受限网络环境下会直接失败。

3. 安装系统依赖与 Intel oneAPI 离线套件

3.1 安装基础工具

sudo apt updatesudo apt install -y build-essential make gcc g++ gfortran perl csh vim wget curl tar gzip bzip2 xz-utils python3 python3-pipgcc --versiong++ --versiongfortran --versionmake --version

这里安装系统 GCC/GFortran 主要是为了提供通用构建工具和排错能力,VASP 的主编译仍走 Intel oneAPI。安装完成后不要把系统 OpenMPI 或其他 MPI 路径写进环境变量。

3.2 安装 BaseKit 与 HPCKit

cd /opt/softwarechmod +x l_BaseKit_p_2023.1.0.46401_offline.shchmod +x l_HPCKit_p_2023.1.0.46346_offline.shsudo ./l_BaseKit_p_2023.1.0.46401_offline.sh -a --silent --eula acceptsudo ./l_HPCKit_p_2023.1.0.46346_offline.sh -a --silent --eula accept

默认安装根目录通常为 /opt/intel/oneapiBaseKit 提供 MKL 等基础组件,HPCKit 提供 HPC 编译器和 Intel MPI。两者都装完后再继续。

3.3 遇到 Text file busy 怎么办

如果安装脚本刚通过 SFTPXftpWinSCP 或 MobaXterm 上传,文件可能仍被传输进程占用。先检查:

sudo fuser -v ./l_HPCKit_p_2023.1.0.46346_offline.sh

确认上传结束后,可以关闭上传客户端,或复制到 /tmp 再安装:

cp l_HPCKit_p_2023.1.0.46346_offline.sh /tmp/hpckit.shchmod +x /tmp/hpckit.shsudo sh /tmp/hpckit.sh -a --silent --eula accept

4. 加载并检查 Intel 编译环境

source /opt/intel/oneapi/setvars.shwhich ifortwhich mpiifortwhich mpiiccwhich mpiicpcwhich mpirunecho "$MKLROOT"

在本文指定的 oneAPI 2023.1 环境中,正常结果应指向 /opt/intel/oneapi 下的编译器、MPI 和 MKL 路径。例如 mpiifort 应来自 Intel MPIMKLROOT 应指向 oneAPI 的 MKL 目录。

停止条件

只要 mpiifortmpirun 或 MKLROOT 为空,就不要继续修改 VASP 源码。先解决 oneAPI 安装或环境加载问题,否则后续报错只会更难定位。

4.1 临时加载与长期加载

当前终端临时使用时,执行 source setvars.sh 即可。单用户工作站也可以写入 ~/.bashrc

echo 'source /opt/intel/oneapi/setvars.sh > /dev/null 2>&1' >> ~/.bashrcsource ~/.bashrc

多用户服务器更推荐使用 Environment Modules 或 Lmod 管理 oneAPI,避免把管理员环境永久写入每位用户的 shell。后文会给出 VASP modulefile 的思路。

5. 生成 MKL FFTW3 Fortran wrapper

VASP 5.4.4 的 Intel 配置通常会引用 MKL 提供的 FFTW3 Fortran 接口静态库:

$MKLROOT/interfaces/fftw3xf/libfftw3xf_intel.a

该文件在很多 oneAPI 安装中不会预先生成,因此需要在编译 VASP 前手动构建。

source /opt/intel/oneapi/setvars.shcd "$MKLROOT/interfaces/fftw3xf"make cleanmake libintel64 compiler=intells -lh "$MKLROOT/interfaces/fftw3xf/libfftw3xf_intel.a"

为什么这一步不能省

makefile.include 会把 libfftw3xf_intel.a 作为目标文件直接加入链接。如果文件不存在,VASP 还没进入真正的源码编译就会因 “No rule to make target” 失败。

6. 解压源码并定位真正的 VASP 根目录

sudo mkdir -p /opt/vaspcd /opt/vasptar -zxvf /opt/software/vasp.5.4.4.tar.gzfind /opt/vasp -maxdepth 4 -type f -name makefile

不同来源的压缩包可能只有一层目录,也可能出现 vasp.5.4.4/vasp.5.4.4 这样的双层目录。真正的源码根目录应同时包含 archbinbuildsrc 和 makefile

cd /opt/vasp/vasp.5.4.4 单层目录示例cd /opt/vasp/vasp.5.4.4/vasp.5.4.4 双层目录示例ls预期:arch bin build src makefile

不要凭目录名猜路径

后续 makefile.includebin/build/ 都依赖当前工作目录。自动安装脚本应通过查找顶层 makefile 和 arch/src 目录来识别真实根目录,而不是把路径写死。

7. 配置 makefile.include:每一段在解决什么问题

先复制 VASP 自带的 Intel 模板并保留备份:

cp arch/makefile.include.linux_intel makefile.includecp makefile.include makefile.include.bak

下面给出适用于本文环境的核心配置。实际部署时应先通过 which 与 echo 检查当前编译器和 MKLROOT,再根据机器路径调整。

7.1 预处理选项与 MPI / ScaLAPACK

CPP_OPTIONS = -DHOST="LinuxIFC" \-DMPI -DMPI_BLOCK=8000 -Duse_collective \-DscaLAPACK \-DCACHE_SIZE=4000 \-Davoidalloc \-Dtbdyn \-Dfock_dblbufCPP = fpp -f_com=no -free -w0 $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)

这里启用 MPI 和 ScaLAPACK,并保留 VASP 5.4.4 常见的内存与算法宏。不要在没有报错的情况下随意增加旧补丁宏,尤其是 LAPACK36

7.2 Intel Fortran 与优化选项

FC = mpiifortFCL = mpiifortFREE = -free -names lowercaseFFLAGS = -assume byterecl -wOFLAG = -O2OFLAG_IN = $(OFLAG)DEBUG = -O0VASP_TARGET_CPU ?= -xHOSTFFLAGS += $(VASP_TARGET_CPU)

-xHOST 会针对当前 CPU 指令集优化,适合同型号节点。如果编译节点和计算节点型号不同,或者二进制需要跨代 CPU 使用,应删除该参数或改成更保守的目标指令集,否则程序可能在其他节点出现 illegal instruction

7.3 内部库、共享内存对象与解析器

CPP_LIB = $(CPP)FC_LIB = $(FC)CC_LIB = iccCFLAGS_LIB = -OFFLAGS_LIB = -O1FREE_LIB = $(FREE)OBJECTS_LIB = linpack_double.o getshmem.oCXX_PARS = icpcLIBS += parserLLIBS += -Lparser -lparser -lstdc++

getshmem.o 用于提供旧版 VASP 所需的共享内存相关符号,可以避免链接阶段出现 detachshmem_C 未定义。

icc / icpc 不存在时

oneAPI 2023.1 通常仍可提供经典编译器。如果系统只有 icx / icpx,可把 CC_LIB 改为 icxCXX_PARS 改为 icpx。本文的 Fortran 主路线仍是 mpiifort;如果只剩 mpiifx,需要单独做 VASP 5.4.4 兼容性验证,不建议机械替换后直接用于生产计算。

7.4 MKLScaLAPACKBLACS 与 FFTW 接口

MKLROOT ?= /opt/intel/oneapi/mkl/2023.1.0FCL += -mkl=sequentialLLIBS += -L$(MKLROOT)/lib/intel64 \-lmkl_scalapack_lp64 \-lmkl_blacs_intelmpi_lp64OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o \$(MKLROOT)/interfaces/fftw3xf/libfftw3xf_intel.aINCS = -I$(MKLROOT)/include/fftwOBJECTS_O1 += fft3dfurth.o fftw3d.o fftmpi.o fftmpiw.oOBJECTS_O2 += fft3dlib.o

这里使用 sequential MKL 线程层,把并行主要交给 MPI,避免 MPI 进程与 MKL/OpenMP 线程无意叠加。运行时仍建议显式设置 OMP_NUM_THREADS=1ScaLAPACK 与 BLACS 必须使用 Intel MPI 对应的 blacs_intelmpi 版本。

7.5 暂时不要修改 src/symbol.inc

有些旧教程会一开始就在 CPP_OPTIONS 中加入 -DLAPACK36,并修改 src/symbol.inc。本文建议先保持源码原样,只有链接阶段明确出现 undefined reference to dgegv_ 时再处理:

在 CPP_OPTIONS 中增加:-DLAPACK36在 src/symbol.inc 中成对加入:#ifdef LAPACK36#define DGEGV DGGEV#endif

条件宏必须成对

如果 #ifdef 与 #endif 没有正确配对,预处理阶段会报 #if without #endif”。没有 dgegv_ 链接错误时,不要主动修改 symbol.inc

8. 依次编译 vasp_stdvasp_gam 与 vasp_ncl

VASP 5.4.4 的 Fortran 模块依赖对并行 make 比较敏感。prec.modmpimy.mod 等模块文件如果尚未生成就被其他源文件引用,编译会随机失败。因此本文采用串行构建。

cd /opt/vasp/vasp.5.4.4 请替换为真实源码根目录source /opt/intel/oneapi/setvars.shunset MAKEFLAGSmake verycleanrm -rf build/std build/gam build/nclmake stdmake gammake ncl

不要为了更快直接加 -j

不建议使用 make -j4 stdmake -j8 std 或 make -j all。旧版 VASP 的模块依赖不完整,并行编译造成的失败往往具有随机性,反而增加排查成本。

编译完成后检查三个文件:

ls -lh bin/file bin/vasp_std bin/vasp_gam bin/vasp_ncl

9. 配置用户环境:PATH 与 modulefile 两种方式

9.1 单用户工作站:写入 ~/.bashrc

echo 'source /opt/intel/oneapi/setvars.sh > /dev/null 2>&1' >> ~/.bashrcecho 'export PATH=/opt/vasp/vasp.5.4.4/bin:$PATH' >> ~/.bashrcecho 'export VASP_PP_PATH=/opt/vasp/potpaw' >> ~/.bashrcecho 'export OMP_NUM_THREADS=1' >> ~/.bashrcecho 'ulimit -s unlimited' >> ~/.bashrcsource ~/.bashrc

如果源码是双层目录,应把 PATH 改成实际 bin 所在位置。不要因为文档示例路径不同就盲目照抄。

9.2 多用户服务器:推荐 modulefile

服务器上更推荐把 Intel 编译环境先封装为 env/intel/oneapi,再创建 VASP 入口模块。这样用户只需 module load vasp/5.4.4-intel,不会在 ~/.bashrc 中长期堆积路径。

#%Module1.0proc ModulesHelp { } {puts stderr "VASP 5.4.4 built with Intel oneAPI 2023.1"}module-whatis "VASP 5.4.4 Intel oneAPI build"conflict vaspif { [module-info mode load] } {module load env/intel/oneapi}set root /opt/vasp/vasp.5.4.4prepend-path PATH $root/binsetenv VASP_HOME $rootsetenv VASP_PP_PATH /opt/vasp/potpawsetenv OMP_NUM_THREADS 1

modulefile 负责交付路径和运行变量,底层 Intel 编译器、MPI 与 MKL 由 env/intel/oneapi 统一管理。这样更利于后续并存 VASP 6GNU 版本或其他软件环境。

10. 赝势库管理与第一个实际算例

VASP 运行时读取的是当前计算目录中的 POTCAR,而不是自动从 VASP_PP_PATH 中挑选元素。VASP_PP_PATH 只是便于脚本或用户定位合法赝势库。

sudo mkdir -p /opt/vasp/potpawcd /opt/vasp/potpawsudo tar -zxvf /opt/software/potpaw_PBE.54.tar.gzsudo chmod -R a+rX /opt/vasp/potpaw

赝势同样受授权约束

不要把 POTCAR、完整 PAW 赝势库或由其拼接出的文件上传到公开仓库、网盘或公开文章附件。

10.1 构造一个最小 Si 测试目录

mkdir -p ~/vasp_test_sicd ~/vasp_test_sicat > INCAR <<'EOF'SYSTEM = Si installation testENCUT = 400EDIFF = 1E-6ISMEAR = 0SIGMA = 0.05IBRION = -1NSW = 0LREAL = .FALSE.EOFcat > POSCAR <<'EOF'Si5.4300.0 0.5 0.50.5 0.0 0.50.5 0.5 0.0Si2Direct0.00 0.00 0.000.25 0.25 0.25EOFcat > KPOINTS <<'EOF'Automatic mesh0Gamma4 4 40 0 0EOF

再从课题组合法赝势库中复制或拼接 Si 的 POTCAR。不同赝势包的目录层级可能不同,执行前先用 find 定位:

find "$VASP_PP_PATH" -type f -path '*/Si/POTCAR'确认目标后,例如:cp /opt/vasp/potpaw/potpaw_PBE.54/Si/POTCAR ./POTCAR

10.2 三级验收

·第一层 - 入口检查:which vasp_std / vasp_gam / vasp_ncl 与 which mpirun 均指向预期路径。

·第二层 - 链接检查:ldd bin/vasp_std 中的 Intel MPIMKL 与 Fortran runtime 没有 not found

·第三层 - 计算检查:使用完整 INCARPOSCARPOTCARKPOINTS 运行一个小算例,并确认正常进入电子迭代。

which vasp_stdwhich vasp_gamwhich vasp_nclwhich mpirunecho "$MKLROOT"ldd "$(which vasp_std)" | grep -E 'mpi|mkl|ifcore|not found' || truempirun -np 4 vasp_std > vasp.out 2>&1tail -n 50 vasp.out

输出中能够看到 running on 4 total coresVASP 版本信息以及 DAV: 或 RMM: 电子迭代,才说明程序不仅编译出了文件,而且可以在当前 MPI 环境中完成实际启动。

11. Slurm 集群提交脚本

 Slurm 集群上,应在作业脚本中显式加载 oneAPI 与 VASP 环境,不要依赖登录节点临时执行过的 source

#!/bin/bash#SBATCH -J vasp_test#SBATCH -N 1#SBATCH --ntasks-per-node=16#SBATCH -p compute#SBATCH -o vasp.out#SBATCH -e vasp.errsource /opt/intel/oneapi/setvars.sh > /dev/null 2>&1export PATH=/opt/vasp/vasp.5.4.4/bin:$PATHexport OMP_NUM_THREADS=1ulimit -s unlimitedmpirun -np "$SLURM_NTASKS" vasp_std

部分集群已经把 Intel MPI 与 Slurm PMI 集成,可由管理员规范使用 srun。选择 mpirun 还是 srun 应服从集群实际配置,不能只根据网上模板替换。提交与查看任务:

sbatch vasp.slurmsqueue -u "$USER"

12. 高频报错与排查顺序

12.1 Intel Graphics Compute Runtime for OpenCL not found

这是 oneAPI 安装器对 Intel GPU OpenCL 运行时的提示,不等于 VASP CPU 编译失败。只要 ifortmpiifortmpirun 和 MKLROOT 正常即可。

12.2 BaseKit 安装时报无法联网

通常是误用了在线安装器。确认文件名是否带 _offline,并检查安装包尺寸是否完整。

12.3 No rule to make target libfftw3xf_intel.a

说明 MKL FFTW wrapper 尚未生成,或者 makefile.include 中的 MKLROOT 与当前环境不一致。重新加载 oneAPI,并在 $MKLROOT/interfaces/fftw3xf 下执行 make libintel64 compiler=intel

12.4 undefined reference to detachshmem_C

检查 OBJECTS_LIB 是否包含 getshmem.o,然后 veryclean 后重新串行编译。

grep -n 'OBJECTS_LIB' makefile.include应包含:OBJECTS_LIB = linpack_double.o getshmem.o

12.5 prec.mod 或 mpimy.mod 找不到

大概率是使用了并行 make,导致 Fortran 模块生成顺序混乱。清理 build 目录并串行重编:

unset MAKEFLAGSmake verycleanrm -rf build/std build/gam build/nclmake std

12.6 #if without #endif

说明 src/symbol.inc 中的条件宏不成对。没有 dgegv_ 错误时,优先恢复备份,不要保留 LAPACK36 修改。

12.7 undefined reference to dgegv_

确认错误确实发生在最终链接阶段后,再启用 -DLAPACK36,并在 symbol.inc 中成对映射 DGEGV 到 DGGEV。修改后必须 veryclean

12.8 编译成功,运行却加载了错误的 MPI

先执行 which mpirunwhich mpiifort,再查看 ldd vasp_std。常见原因是 ~/.bashrc 中残留了 OpenMPI 路径,或者作业脚本没有加载 oneAPI。排错时应先 module purge 或开启干净 shell,再只加载 Intel 环境。

13. 一键安装脚本应该具备哪些能力

真正可靠的一键安装,不是把本文命令从上到下拼成一个 bash 文件。它至少应处理以下工程问题:

能力

脚本应做什么

授权边界

只读取用户提供的合法源码与赝势包,不内置、不下载、不转发受许可文件

前置检查

检查 root 权限、Ubuntu 版本、磁盘空间、安装包完整性和 oneAPI 组件

环境隔离

清理残留 MPI/编译器变量,只加载指定 Intel oneAPI 环境

路径识别

自动识别单层或双层 VASP 源码目录,校验 arch/src/makefile

依赖生成

检测并生成 libfftw3xf_intel.a,验证 MKLROOT

配置生成

按实际 icc/icpc 或 icx/icpx 生成 makefile.include,并保留备份

稳健编译

强制清理旧 build,取消 MAKEFLAGS,串行编译 std/gam/ncl

日志与失败点

保存完整日志,任何一步失败立即停止,不继续输出安装完成

环境交付

生成 modulefile 或明确的用户环境脚本,不污染全局 shell

验收与回滚

检查二进制、动态库、MPI 启动和小算例;重复执行时可安全覆盖或回滚

这也是手工安装与专业交付之间的差别:手工命令解决一次问题,工程化脚本要解决重复执行、不同机器差异、失败恢复和后续维护。

14. 最终验收清单

检查项

合格标准

oneAPI 环境

ifort / mpiifort / mpirun / MKLROOT 均来自预期 oneAPI 路径

FFTW wrapper

libfftw3xf_intel.a 已生成且 makefile.include 路径一致

编译结果

vasp_stdvasp_gamvasp_ncl 三个二进制均存在

运行库

ldd 无 not foundMPI 与 MKL 未串到系统其他版本

用户入口

普通用户可通过 PATH 或 module load 找到程序

资源设置

OMP_NUM_THREADS=1,栈大小设置合理

赝势管理

赝势库权限正确,任务目录中的 POTCAR 来源合法且元素顺序正确

实际计算

至少完成一次 4 进程小算例,输出正常进入电子迭代

集群任务

Slurm 脚本在计算节点加载正确环境并可正常结束

交付文档

记录版本、路径、编译器、MPIMKLmodule 名称和测试结果

安装完成之后:从编译成功走向长期可用

VASP 5.4.4 的编译命令并不算多,真正消耗时间的是环境一致性、旧版源码兼容、路径差异和错误定位。只要坚持先验证工具链,再生成依赖,再配置源码,最后做实际算例的顺序,大多数问题都能被限制在清晰的一层,而不是在最终链接阶段一次性爆发。

后续的软件安装实战系列还会继续覆盖不同第一性原理、分子动力学、有限元与高性能计算软件。每篇文章都会尽量给出可以照做的步骤,同时解释为什么这样配置,以及怎样判断结果是真的可用。

不想自己处理环境,也可以交给我们

云算科技可提供 VASP 及其他科研软件的远程安装与环境配置服务。我们使用经过实际服务器验证的一键安装脚本,并根据 CPU 平台、操作系统、编译器、MPI、数学库、Slurm 与已有软件环境进行适配。交付不仅包含可执行文件,还包括环境入口、版本与路径记录、运行测试和基础使用说明。VASP 源码及赝势仍由具备合法授权的客户自行提供。

建议咨询时准备的信息

·服务器操作系统与版本,例如 Ubuntu 22.04

·CPU 型号、节点数量以及是否使用 Slurm

·计划安装的 VASP 版本与已有合法源码包;

·希望使用 IntelGNU 或 AMD 编译环境;

·服务器是否能联网,以及是否已有 oneAPI / MPI / MKL

·是否需要多版本并存、modulefile、赝势目录规划与测试算例。

— 软件安装实战系列 · VASP 5.4.4 / Intel oneAPI —