LAMMPS GPU版本安装教程
1. 环境准备
系统要求
- Linux系统(推荐Ubuntu/CentOS)
- NVIDIA GPU + CUDA驱动
- 足够的磁盘空间(~2GB)
必需软件
# Ubuntu/Debian
sudo apt update
sudo apt install build-essential cmake git
# CentOS/RHEL
sudo yum groupinstall "Development Tools"
sudo yum install cmake3 git
2. CUDA环境安装
检查GPU和驱动
# 检查GPU
nvidia-smi
# 检查CUDA版本
nvcc --version
安装CUDA(如果没有)
# 下载CUDA toolkit(以CUDA 11.8为例)
wget <https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run>
sudo sh cuda_11.8.0_520.61.05_linux.run
# 添加环境变量到 ~/.bashrc
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
source ~/.bashrc
3. 下载LAMMPS源码
# 克隆最新版本
git clone -b stable <https://github.com/lammps/lammps.git>
cd lammps
# 或者下载特定版本(推荐)
wget <https://github.com/lammps/lammps/archive/stable.tar.gz>
tar -xzf stable.tar.gz
cd lammps-stable
4. 创建编译目录
mkdir build
cd build
5. CMAKE配置(重点)
基本GPU配置
cmake ../cmake \\
-DCMAKE_INSTALL_PREFIX=$HOME/lammps \\
-DPKG_GPU=yes \\
-DGPU_API=cuda \\
-DGPU_PREC=mixed \\
-DCUDA_NVCC_FLAGS="-arch=sm_75" \\
-DCMAKE_BUILD_TYPE=Release
完整配置(推荐)
cmake ../cmake \\
-DCMAKE_INSTALL_PREFIX=$HOME/lammps \\
-DPKG_GPU=yes \\
-DGPU_API=cuda \\
-DGPU_PREC=mixed \\
-DCUDA_NVCC_FLAGS="-arch=sm_75" \\
-DPKG_KSPACE=yes \\
-DPKG_MANYBODY=yes \\
-DPKG_MOLECULE=yes \\
-DPKG_RIGID=yes \\
-DPKG_EXTRA-PAIR=yes \\
-DPKG_EXTRA-FIX=yes \\
-DPKG_EXTRA-COMPUTE=yes \\
-DCMAKE_BUILD_TYPE=Release
GPU架构选择(重要)
根据您的GPU选择合适的架构:
# 查看GPU架构
nvidia-smi --query-gpu=name --format=csv
# 常见架构对应:
# RTX 30系列: -arch=sm_86
# RTX 20系列: -arch=sm_75
# GTX 10系列: -arch=sm_61
# Tesla V100: -arch=sm_70
# 多架构支持: -arch=sm_61,sm_70,sm_75,sm_86
6. 编译和安装
# 编译(使用多核加速)
make -j$(nproc)
# 安装
make install
# 添加到PATH
echo 'export PATH=$HOME/lammps/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
7. 验证安装
# 检查LAMMPS版本
lmp -help
# 检查GPU支持
lmp -h | grep -i gpu
# 运行简单测试
cd ../examples/melt
lmp -in in.melt -sf gpu -pk gpu 1
8. 性能优化配置
高性能编译选项
cmake ../cmake \\
-DCMAKE_INSTALL_PREFIX=$HOME/lammps \\
-DPKG_GPU=yes \\
-DGPU_API=cuda \\
-DGPU_PREC=mixed \\
-DCUDA_NVCC_FLAGS="-arch=sm_75 -O3" \\
-DCMAKE_CXX_FLAGS="-O3 -march=native" \\
-DCMAKE_BUILD_TYPE=Release \\
-DPKG_OPENMP=yes \\
-DPKG_KSPACE=yes \\
-DPKG_MANYBODY=yes \\
-DPKG_MOLECULE=yes
9. 常见问题和解决方案
问题1: CUDA找不到
# 指定CUDA路径
cmake ../cmake -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda ...
问题2: 架构不匹配
# 检查GPU计算能力
nvidia-smi --query-gpu=compute_cap --format=csv
# 相应调整 -arch=sm_XX
问题3: 内存不足
# 降低并行编译数
make -j4 # 而不是 make -j$(nproc)
问题4: 权限问题
# 安装到用户目录而不是系统目录
-DCMAKE_INSTALL_PREFIX=$HOME/lammps
10. 使用示例
GPU输入脚本示例
# 启用GPU包
package gpu 1
# 或者在命令行
# lmp -in input.lmp -sf gpu -pk gpu 1
运行命令
# 单GPU
lmp -in input.lmp -sf gpu -pk gpu 1
# 多GPU(如果有)
lmp -in input.lmp -sf gpu -pk gpu 2
# 混合CPU+GPU
mpirun -np 4 lmp -in input.lmp -sf gpu -pk gpu 1 neigh yes newton off
11. 性能测试
# 创建测试脚本 test_gpu.lmp
cat > test_gpu.lmp << EOF
units metal
atom_style atomic
lattice fcc 3.52
region box block 0 10 0 10 0 10
create_box 1 box
create_atoms 1 box
mass 1 63.546
pair_style lj/cut 2.5
pair_coeff 1 1 0.415 2.315
neighbor 0.3 bin
neigh_modify delay 5
fix 1 all nve
thermo 100
run 1000
EOF
# CPU版本测试
time lmp -in test_gpu.lmp
# GPU版本测试
time lmp -in test_gpu.lmp -sf gpu -pk gpu 1
安装完成后,您就可以享受GPU加速带来的巨大性能提升了!通常GPU版本比CPU版本快5-20倍。
批量管理LAMMPS脚本
我来创建一个批量管理多个LAMMPS任务的脚本,支持串行和并行执行多个in文件。我创建了一个批量管理器,可以处理多个LAMMPS输入文件。这个脚本提供了以下功能:
主要功能:
1. 批量文件处理
- 支持通配符匹配(如
.in) - 支持处理整个目录
- 支持多个文件/模式组合
2. 执行模式
- 串行模式:逐个运行任务
- 并行模式:同时运行多个任务(可控制并发数)
3. 断点续传
- 自动保存批量任务进度
- 支持从中断处继续执行
- 跳过已完成的任务
4. 任务监控
- 实时显示总体进度
- 统计成功/失败任务数
- 显示成功率
5. 报告生成
- 生成CSV格式的执行报告
- 包含每个任务的状态、时间、错误信息
安装依赖:
pip install psutil tqdm pandas
使用方法:
1. 运行当前目录所有.in文件:
python lammps_batch_manager.py *.in
2. 运行多个特定文件:
python lammps_batch_manager.py file1.in file2.in file3.in
3. 运行整个目录中的所有LAMMPS文件:
python lammps_batch_manager.py input_files/
4. 并行运行(4个任务同时执行):
python lammps_batch_manager.py *.in --parallel 4
5. 使用特定配置:
python lammps_batch_manager.py *.in -np 4 -gpu 2 --parallel 2
6. 从上次中断处继续:
python lammps_batch_manager.py *.in --resume
7. 清理所有进度,重新开始:
python lammps_batch_manager.py *.in --clean
高级用法:
1. 混合模式(处理多个目录和文件):
python lammps_batch_manager.py dir1/ dir2/*.in specific_file.lmp
2. 生成自定义报告:
python lammps_batch_manager.py *.in --report my_report.csv
输出示例:
运行时会看到类似这样的输出:
找到 10 个输入文件:
- in.sample1.in
- in.sample2.in
- ...
配置:
MPI进程数: 2
GPU数量: 1
并行任务数: 4
开始执行? (y/n): y
并行模式: 最多 4 个任务同时运行
总进度: 60%|████████████░░░░░░░░| 6/10 [15:23<10:15, 1.54 任务/min, 完成=5, 失败=1, 成功率=83.3%]
[任务 1] 开始处理: in.sample1.in
[任务 2] 开始处理: in.sample2.in
[任务 3] 开始处理: in.sample3.in
[任务 4] 开始处理: in.sample4.in
生成的报告内容:
CSV报告包含以下信息:
- 输入文件名
- 执行状态(completed/failed/running)
- 开始时间
- 结束时间
- 运行时长
- 错误信息(如果失败)
注意事项:
-
需要lammps_manager.py:这个批量管理器依赖之前的单任务管理器,请确保两个文件在同一目录
-
资源分配
:并行运行时要考虑系统资源
- 如果每个任务用2个GPU,并行4个任务需要8个GPU
- CPU和内存也要相应考虑
-
检查点管理
:
- 批量检查点保存在
batch_checkpoints/目录 - 每个任务有独立的检查点子目录
- 使用
-clean可以清理所有检查点
- 批量检查点保存在
-
错误处理
:
- 单个任务失败不会影响其他任务
- 所有错误信息都会记录在报告中
这个批量管理器非常适合需要运行大量LAMMPS模拟的场景,可以充分利用计算资源,并且具有良好的容错能力。