
Ubuntu WSL 环境下 LAMMPS 及 KOKKOS CUDA 软件包编译安装规程 🚀
本规程旨在详细说明在 Windows Subsystem for Linux (WSL) 的 Ubuntu 环境中,从源码编译并安装大规模原子/分子并行模拟器 (LAMMPS) 的步骤。重点介绍启用 KOKKOS 软件包以支持基于 NVIDIA CUDA 技术的图形处理器 (GPU) 加速功能,同时涵盖其他常用可选软件包的集成。本规程特别强调确保编译器版本与 CUDA 版本兼容的策略。
一、系统环境准备与依赖项配置 🛠️
在启动编译之前,需确保 WSL 环境已更新,并安装所有必需的编译工具及依赖库。
1. 系统更新与基础编译工具安装
在 WSL Ubuntu 终端执行以下命令:
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential cmake git gfortran
build-essential
: 提供 C/C++ 编译器 (gcc, g++) 及 make 构建工具。cmake
: 用于配置编译流程。git
: 用于从 GitHub 代码仓库获取 LAMMPS 源码。gfortran
: Fortran 编译器,部分 LAMMPS 软件包所需。
2. MPI (消息传递接口) 库安装
LAMMPS 广泛使用 MPI 实现并行计算,推荐使用 OpenMPI:
sudo apt install -y libopenmpi-dev openmpi-bin
3. FFTW3 (快速傅里叶变换库) 安装
许多 LAMMPS 软件包 (如 KSPACE 中的 PPPM 算法) 依赖 FFTW 库:
sudo apt install -y libfftw3-dev
4. 其他常用依赖库安装
sudo apt install -y libjpeg-dev libpng-dev libgomp1 pkg-config
libjpeg-dev
,libpng-dev
: 用于图像处理功能。libgomp1
: GNU OpenMP 运行时库。pkg-config
: 辅助 CMake 定位所需库文件。
5. 确保 GCC/G++ 与 CUDA 版本兼容性 (关键步骤)
若计划使用 KOKKOS CUDA 后端,必须确保 GCC/G++ 版本与已安装的 NVIDIA CUDA Toolkit 版本兼容。例如,CUDA Toolkit 12.0 通常最高支持 GCC/G++ 12.x 版本。若系统默认 GCC 版本过高 (如 GCC 13+),需安装并指定使用兼容版本。
- 检查当前 GCC 版本:
gcc --version
- 安装 GCC/G++ 12 (若必要):
sudo apt update
sudo apt install -y gcc-12 g++-12
后续 CMake 配置中将指定使用 gcc-12
和 g++-12
。
6. NVIDIA CUDA Toolkit for WSL 安装 (可选但推荐)
为利用 GPU 加速功能,需在 WSL2 环境中安装 NVIDIA CUDA Toolkit。
- 确认 Windows 系统已安装最新 NVIDIA 显卡驱动程序。注意不是WSL中的驱动。
- 按照 NVIDIA 官方文档指引,在 WSL Ubuntu 环境中安装 CUDA Toolkit。以下为典型安装命令序列 (具体指令及版本号请参考 NVIDIA 官方网站最新发布):
# 示例命令,具体以 NVIDIA 官方最新指令为准
# wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
# sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
# wget https://developer.download.nvidia.com/compute/cuda/YOUR_CUDA_VERSION/local_installers/cuda-repo-wsl-ubuntu-YOUR_CUDA_VERSION-local.deb
# sudo dpkg -i cuda-repo-wsl-ubuntu-YOUR_CUDA_VERSION-local.deb
# sudo cp /var/cuda-repo-wsl-ubuntu-YOUR_CUDA_VERSION-local/cuda-*-keyring.gpg /usr/share/keyrings/
# sudo apt-get update
# sudo apt-get -y install cuda-toolkit-YOUR_CUDA_VERSION_SHORT # 例如:cuda-toolkit-12-0
- 验证 CUDA 安装状态 (重要):
nvcc --version
此命令应成功显示 NVIDIA CUDA 编译器 (nvcc) 的版本信息。
二、LAMMPS 源码获取 📥
推荐从 LAMMPS 官方 GitHub 仓库获取最新稳定版本源码:
cd ~ # 或指定存放源码的目标目录
git clone -b stable https://github.com/lammps/lammps.git lammps_stable
cd lammps_stable
三、LAMMPS 编译配置 (采用 CMake) ⚙️
CMake 是 LAMMPS 编译配置的推荐方案。
1. 创建并进入构建目录
在 LAMMPS 源码根目录下创建独立的构建目录 (推荐实践):
mkdir build
cd build
2. 执行 CMake 配置命令
以下为 CMake 配置命令示例,涵盖 KOKKOS (CUDA 后端) 及其他常用软件包。请将 -DCMAKE_C_COMPILER
与 -DCMAKE_CXX_COMPILER
参数替换为已安装的兼容编译器版本 (如 gcc-12
, g++-12
)。
cmake ../cmake \
-DCMAKE_C_COMPILER=gcc-12 \
-DCMAKE_CXX_COMPILER=g++-12 \
-D PKG_MOLECULE=yes \
-D PKG_KSPACE=yes \
-D PKG_RIGID=yes \
-D PKG_MANYBODY=yes \
-D PKG_REPLICA=yes \
-D PKG_CLASS2=yes \
-D PKG_MC=yes \
-D PKG_REAXFF=yes \
-D PKG_EXTRA-MOLECULE=yes \
-D PKG_EXTRA-COMPUTE=yes \
-D PKG_EXTRA-DUMP=yes \
-D PKG_EXTRA-FIX=yes \
-D PKG_EXTRA-PAIR=yes \
-D BUILD_MPI=yes \
-D BUILD_OMP=no \
-D PKG_KOKKOS=yes \
-D Kokkos_ENABLE_CUDA=yes \
-D Kokkos_ARCH_AUTO=ON \
-D FFTW3_INCLUDE_DIR=/usr/include \
-D FFTW3_LIBRARY=/usr/lib/x86_64-linux-gnu/libfftw3.so
关键 CMake 选项释义:
-DCMAKE_C_COMPILER=gcc-12
,-DCMAKE_CXX_COMPILER=g++-12
: 指定兼容编译器。PKG_<PackageName>=yes
: 启用 LAMMPS 的标准或用户贡献软件包。BUILD_MPI=yes
: 编译支持 MPI 的并行版本。PKG_KOKKOS=yes
: 启用 KOKKOS 软件包。Kokkos_ENABLE_CUDA=yes
: 为 KOKKOS 启用 CUDA 后端,支持 GPU 加速。Kokkos_ARCH_AUTO=ON
: 指示 KOKKOS 自动检测 GPU 架构。FFTW3_...
: 指定 FFTW3 库路径 (CMake 通常可自动定位,显式指定更稳妥)。
注意:若确知 GPU 架构 (如 Ada Lovelace SM_89 对应
-DKokkos_ARCH_ADA89=ON
),可替换-DKokkos_ARCH_AUTO=ON
,但AUTO
选项通常正常工作。BUILD_OMP=no
的设定是因为 KOKKOS 自身提供线程并行能力 (通过 OpenMP 或 CUDA 后端)。若不使用 KOKKOS 而倾向传统 OpenMP,可设为yes
并禁用PKG_KOKKOS
。
若 CMake 配置过程中出现关于
KOKKOS_ARCH
或Kokkos_ENABLE_CUDA
选项大小写的错误提示,请严格遵循提示信息修正。
四、LAMMPS 编译执行 🔨
CMake 配置完成且无错误提示后,在 build
目录内执行 make
命令:
make -j$(nproc)
-j$(nproc)
: 利用与 CPU 核心数量相等的线程进行并行编译,提升编译效率。- 编译过程可能需要一定时间。
五、编译后配置与设定
1. 可执行文件确认
编译成功后,可执行文件 lmp
将生成于 build
目录内:
ls -l /home/your_username/lammps_stable/build/lmp # 替换 your_username 为实际用户名
2. 将 lmp
添加至 ~/.bashrc
(便捷调用)
为实现在任意目录下直接调用 lmp
,可将其所在目录添加至 PATH
环境变量:
- 打开
~/.bashrc
文件:
nano ~/.bashrc
- 在文件末尾添加如下行 (确保路径与实际配置相符,替换
your_username
):
export PATH="/home/your_username/lammps_stable/build:$PATH"
- 保存文件并退出 (Ctrl+X, 然后按 Y, 再按 Enter)。
- 使更改在当前终端会话中生效:
source ~/.bashrc
- 验证配置:
which lmp
# 预期输出: /home/your_username/lammps_stable/build/lmp (替换 your_username)
lmp -h
# 预期显示 LAMMPS 帮助信息
六、LAMMPS 程序运行 🚀
1. 基础执行方式
- 串行执行:
lmp < /path/to/your/input_script.in
- MPI 并行执行 (例如,使用 4 个核心):
mpirun -np 4 lmp < /path/to/your/input_script.in
2. 采用 KOKKOS (CUDA GPU 加速) 执行
命令行参数说明:
-k on
: 启用 KOKKOS。-sf kk
: 为支持 KOKKOS 的命令自动附加kk
后缀。-pk kokkos ...
: 向 KOKKOS 软件包传递参数。
示例 (单 GPU,单 MPI 进程):
mpirun -np 1 lmp -k on -sf kk -pk kokkos cuda on < /path/to/your/input_script.in
或者,在 LAMMPS 输入脚本 (input_script.in
) 的起始部分 (如 units
命令之后) 添加:
package kokkos cuda on neigh half newton on # 根据具体需求调整选项
随后执行:
mpirun -np 1 lmp -sf kk < /path/to/your/input_script.in
注意:关于 KOKKOS 具体的运行时参数及
package kokkos
命令选项,请参阅所用 LAMMPS 版本的官方文档。
七、关键考量因素及故障排除 🤔
- GCC 与 CUDA 版本兼容性:启用 KOKKOS CUDA 功能时最常见问题。务必使用 CUDA 支持的 GCC 版本编译。
- CMake 缓存:若修改 CMake 选项后遇到问题,务必彻底清除
build
目录 (rm -rf build
) 后重新配置。 - KOKKOS CMake 选项大小写规范:KOKKOS 对其 CMake 选项大小写要求严格,请留意相关错误提示。
- 依赖库路径指定:若 CMake 无法定位 FFTW3 或其他库,需通过
-D<LIBNAME>_LIBRARY=
及-D<LIBNAME>_INCLUDE_DIR=
参数手动指定路径。
LAMMPS 的编译过程较为精细,遵循上述步骤可显著提升成功概率。预祝您的模拟工作顺利!