2. LAMMPS安装与运行环境搭建

LAMMPS 的安装并不是“下载一个可执行文件双击运行”这么简单。它是一套以 C++ 编写、依赖 MPI 与多种数学库的源码工程,官方只提供源码包,预编译包则由各平台或第三方维护。因此,安装方式的选择本质上是在“可控性”和“便利性”之间做权衡:源码编译能精确控制加速包、编译器和数学库,适合 HPC 与需要 GPU 的场景;预编译包(如 Conda、APT、Homebrew 提供的版本)上手快,但通常只启用了基础包,缺少 GPU、KOKKOS、USER-MISC 等可选特性。

一、安装方式的选择逻辑

先明确自己的使用场景,再决定安装路径。若只是做教学演示、跑几百个原子的有机分子体系,Conda 安装的 lammps 足够;若要在超算上跑百万原子、启用 GPU 或 KOKKOS 加速,则必须源码编译。判断依据可以归纳为三点:是否需要特定 package(如 GPU、KOKKOS、REAXFF)、是否需要与特定 MPI 库(如 Intel MPI、OpenMPI)匹配、是否需要针对本机 CPU 指令集(AVX2/AVX-512)优化。

源码编译的典型流程是:下载 lammps-stable.tar.gz,解压后进入 src 目录,用 make yes-xxx 启用所需包,再用 make mpi 或 make serial 编译。以启用 GPU 与 KOKKOS 为例:

tar -xzf lammps-stable.tar.gz
cd lammps-stable/src
make yes-gpu
make yes-kokkos
make yes-manybody
make mpi -j 8

编译完成后,src/lmp_mpi 即为可执行文件。若使用 CMake,则更推荐现代方式:

cmake -B build -D PKG_GPU=on -D PKG_KOKKOS=on \
      -D Kokkos_ARCH_AVX2=on -D CMAKE_BUILD_TYPE=Release
cmake --build build -j 8

CMake 方式对 GPU 后端(CUDA/HIP)和 KOKKOS 架构参数的支持更清晰,适合在 HPC 上做可复现构建。

二、MPI 并行环境配置

LAMMPS 的并行依赖 MPI。单机多核可用 OpenMPI 或 MPICH,超算上通常由 module 系统提供。配置要点是:mpirun 或 mpiexec 的进程数要与 LAMMPS 的 domain decomposition 匹配。例如 8 核机器上运行:

mpirun -np 8 lmp_mpi -in in.melt

若进程数不能整除模拟盒子在某个方向上的分块,LAMMPS 会报错或效率骤降。可用 processors 命令显式指定各方向进程分布,例如 processors 2 2 2 表示三维各 2 个进程。GPU 加速时,通常采用“每 GPU 绑定若干 MPI 进程”的混合模式,如 4 个 MPI 进程共享 1 块 GPU。

三、Windows/Linux/HPC 集群部署差异

Windows 下最省事的是 Conda:conda install -c conda-forge lammps,但 GPU 支持有限。Linux 工作站推荐源码编译,便于启用 GPU 包并链接 CUDA。HPC 集群则通常已有 module:module load lammps/2023,但版本和包可能固定,若需自定义仍需自行编译并提交作业脚本。作业脚本中要写清 #SBATCH --nodes、--ntasks-per-node 与 srun 调用方式。

四、运行命令与日志解读

运行命令的核心是输入脚本 -in、日志 -log、屏幕输出 -screen。日志中最值得关注的是:初始邻居列表构建时间、每步耗时、Loop time、以及 Performance 行给出的 ns/day 与 timesteps/s。若 Performance 远低于预期,常见原因是进程数过多导致通信占比过高、或未启用 GPU/KOKKOS。日志开头的 using X MPI tasks 与 using Y OpenMP threads 可确认并行配置是否生效。

LAMMPS 安装路径与运行环境决策图 使用场景判断 教学 / 小体系 Conda 预编译包 conda install -c conda-forge lammps Linux 工作站 / 自定义包 源码编译(Make / CMake) make yes-gpu && make mpi HPC 集群 / GPU 加速 module + 自编译 + 作业脚本 srun -n 64 lmp_mpi -in in.file MPI 并行环境配置 运行命令 mpirun -np 8 lmp_mpi -in in.melt -log log.lammps -screen screen.out processors 2 2 2 控制分块 日志关键指标 Loop time / Performance ns/day、timesteps/s using X MPI tasks / Y threads 验证

五、常见问题与判断依据

安装后第一步应做“冒烟测试”:运行 lmp_mpi -h 查看已启用的 package 列表,确认 GPU、KOKKOS 是否出现。若日志中 Performance 显示 0.0 ns/day,通常是体系未初始化或步数太少。若 MPI 报 There are not enough slots available,说明 -np 超过可用核数,需减少进程或使用 --oversubscribe。GPU 运行时若报 Cannot find CUDA library,应检查 CUDA_VISIBLE_DEVICES 与编译时的 CUDA 路径是否一致。

建议在源码编译后保留 build/CMakeCache.txt 或 Makefile 的 package 启用记录,便于在集群上复现同一套环境。HPC 上优先使用 CMake + module 组合,避免直接修改系统 MPI。

总结来说,LAMMPS 安装的核心不是“装上去”,而是“装对”。先判断是否需要 GPU/KOKKOS 与特定 MPI,再选择预编译或源码编译;运行后用日志中的并行任务数、线程数和 Performance 指标验证环境是否真正生效。这套判断链条建立起来后,后续建模与调参才有稳定的计算基础。