Ubuntu 24.04 编译安装GPU加速的LAMMPS
启用尽可能多的功能包,并开启GPU加速支持,特别针对GTX 1060和服务器环境进行了优化配置。采用 nvidia-driver-570-server
版本驱动和 12.8
版本CUDA。
0) 目标与要点
- 构建:
Release + shared
(生成liblammps.so
,便于后续联动) - 加速:
MPI + OpenMP + GPU(CUDA 12.8, sm_61) + OPT
- 物理与功能:
KSPACE, ELECTRODE, COLVARS, RIGID, MOLECULE, MISC, COMPRESS, H5MD, NETCDF, MOLFILE, VORONOI
- 关闭:
KOKKOS=off
,INTEL=off
,KIM=off
- 无 GUI(不装 VTK/Qt);数据通过 HDF5/NetCDF 输出,后处理走 Python
1) 驱动与 CUDA 12.8(已满足可略过)
如需从 535/其他版本切到 570 + CUDA 12.8(官方仓库):
# 添加 NVIDIA 官方仓库(Ubuntu 24.04)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
# 安装/切换到 570 server 驱动(DKMS 版更稳)
sudo apt install -y linux-headers-$(uname -r)
sudo apt install -y nvidia-dkms-570-server nvidia-driver-570-server
# 安装 CUDA Toolkit 12.8(含 nvcc)
sudo apt install -y cuda-toolkit-12-8
# 写入环境变量
echo 'export PATH=/usr/local/cuda-12.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
# 验证
nvidia-smi
nvcc --version
安装完驱动后建议 重启 一次。
2) 安装前置依赖
sudo apt update # CMake时如果报错提示缺少依赖,可以直接安装
sudo apt install -y \
build-essential cmake git gfortran pkg-config \
libopenmpi-dev openmpi-bin \
libfftw3-dev libzstd-dev \
libopenblas-dev liblapack-dev \
libhdf5-dev libnetcdf-dev \
libvoro++1 voro++-dev \
libjpeg-dev libpng-dev zlib1g-dev \
python3 python3-dev python3-numpy \
ffmpeg libpnetcdf-dev
3) 获取源码并创建构建目录
mkdir ~/src && cd ~/src
git clone -b stable https://github.com/lammps/lammps.git
cd lammps
mkdir build && cd build
4) CMake 配置(按你的最终选型)
cmake ../cmake \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local/lammps \
-D BUILD_SHARED_LIBS=on \
-D LAMMPS_EXCEPTIONS=on \
-D FFT=FFTW3 \
-D BUILD_MPI=on -D BUILD_OMP=on \
-D BLA_VENDOR=OpenBLAS \
-D CMAKE_Fortran_COMPILER=gfortran \
\
-D PKG_GPU=on -D GPU_API=cuda -D GPU_ARCH=sm_61 \
-D PKG_OPENMP=on -D PKG_OPT=on \
\
-D PKG_KSPACE=on \
-D PKG_ELECTRODE=on \
-D PKG_COLVARS=on \
-D PKG_PYTHON=on \
-D PKG_H5MD=on -D PKG_NETCDF=on \
-D PKG_VORONOI=on \
-D PKG_MISC=on -D PKG_COMPRESS=on \
-D PKG_RIGID=on -D PKG_MOLECULE=on \
-D PKG_MOLFILE=on \
\
-D PKG_KOKKOS=off -D PKG_INTEL=off
5) 编译与安装
make -j"$(nproc)"
sudo make install
echo 'export PATH=/usr/local/lammps/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
6) 配置 PATH 与 动态库搜索路径(避免 liblammps.so.0 not found)
# 设置lmp动态库
echo '/usr/local/lammps/lib' | sudo tee /etc/ld.so.conf.d/lammps.conf
sudo ldconfig
# 自检
which lmp
ldconfig -p | grep -i lammps
lmp -h | head -n 1
7) 运行与验证(使用GPU)
cd ~/src/lammps/bench
# 基本基准:4~6 个 MPI rank 共享 1 块 GPU
mpirun -np 4 lmp -sf gpu -pk gpu 1 -in in.lj
# 使用长程静电时,在输入脚本里:
# kspace_style pppm/gpu 1.0e-4
调优提示
- 从
-np 4
或-np 6
开始试(每卡 4–6 个 MPI rank 常见有效区间)。 - 若 CPU 线程竞争激烈,先设
export OMP_NUM_THREADS=1
。 - 出现个别 pair/neigh 组合不稳时试
-pk gpu 1 neigh no
让邻域在 CPU 侧建立。
以下是旧版本,不推荐,可能存在兼容性问题。
1. 系统环境准备
1.1 更新系统包
sudo apt update && sudo apt upgrade -y
1.2 安装基础编译工具
sudo apt install -y build-essential cmake git wget curl
sudo apt install -y gcc g++ gcc-14 g++-14 gfortran
sudo apt install -y pkg-config autoconf automake libtool
2. 安装依赖库
2.1 MPI并行库
# 安装OpenMPI
sudo apt install -y openmpi-bin openmpi-common libopenmpi-dev
# 或者安装MPICH(二选一)
# sudo apt install -y mpich libmpich-dev
2.2 数学库
# BLAS/LAPACK
sudo apt install -y libopenblas-dev liblapack-dev
# FFTW3
sudo apt install -y libfftw3-dev libfftw3-mpi-dev
# Eigen3
sudo apt install -y libeigen3-dev libzstd-dev
2.3 基础图像处理库(无GUI环境)
sudo apt install -y libpng-dev libjpeg-dev
sudo apt install -y zlib1g-dev
sudo apt install -y libgsl-dev
2.4 Python支持
sudo apt install -y python3-dev python3-pip python3-numpy
sudo apt install -y python3-matplotlib python3-scipy
2.5 编译安装plumed
cd /tmp
wget https://github.com/plumed/plumed2/releases/download/v2.9.3/plumed-2.9.3.tgz
tar -xzf plumed-2.9.3.tgz
cd plumed-2.9.3
make clean # 清理旧配置留下的对象文件;如提示无目标可忽略
./configure CXX=mpicxx CC=mpicc \
--prefix=/usr/local \ # 可省略,默认就是 /usr/local
--enable-modules=all \ # 打开全部可选模块
--enable-openmp \ # 保持 OpenMP
--enable-fftw \ # 使用系统 FFTW
--enable-rpath \ # 在可执行文件里记录库路径
--enable-shared # 显式生成 .so(默认就是 ON)
make -j$(nproc)
sudo make install
sudo ldconfig # 更新动态链接器缓存
echo 'export PLUMED_KERNEL=/usr/local/lib/libplumedKernel.so' >> ~/.bashrc
source ~/.bashrc
2.5 其他有用的库
sudo apt install -y libhdf5-dev libhdf5-mpi-dev
sudo apt install -y libnetcdf-dev # libnetcdf-cxx-legacy-dev
sudo apt install -y libyaml-dev libvoro++1 voro++-dev libadios2-common-core-dev libadios2-mpi-core-dev
3. CUDA环境配置(GPU加速)
3.1 安装NVIDIA驱动
# 安装服务器版NVIDIA驱动(无GUI)
sudo apt install -y nvidia-driver-575
# 重启系统
sudo reboot
3.2 安装CUDA Toolkit
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install --no-install-recommends cuda-toolkit-12-9
# 写入环境变量
echo 'export PATH=/usr/local/cuda-12.9/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
3.3 验证CUDA安装
nvcc --version # => release 12.9
nvidia-smi # Driver Version ≥ 575.*
4. 下载LAMMPS源码
cd ~/
git clone -b stable https://github.com/lammps/lammps.git
cd lammps
mkdir build
cd build
5. CMake配置
5.1 CMake内容
使用most.cmake
开启尽可能夺的功能,并将程序路径设置为/opt/lammps
。
cmake -C ../cmake/presets/most.cmake \
-D CMAKE_INSTALL_PREFIX=/opt/lammps \
-D PKG_KOKKOS=on \
-D Kokkos_ENABLE_CUDA=on \
-D Kokkos_ENABLE_OPENMP=ON \
-D Kokkos_ARCH_PASCAL61=on \
-D Kokkos_ENABLE_CUDA_LAMBDA=on \
-D PKG_GPU=on \
-D GPU_API=cuda \
-D GPU_ARCH=sm_61 \
-D BUILD_MPI=on \
-D BUILD_OMP=on \
-D CMAKE_CUDA_STANDARD=17 \
../cmake
cmake -C ../cmake/presets/most.cmake \
-D CMAKE_INSTALL_PREFIX=/opt/lammps \
-D BUILD_OMP=ON \
-D PKG_OPENMP=ON \
-D PKG_KOKKOS=ON \
-D Kokkos_ENABLE_OPENMP=ON \
-D Kokkos_ENABLE_CUDA=ON \
-D Kokkos_ENABLE_HWLOC=ON \
-D Kokkos_ARCH_PASCAL61=ON \
-D Kokkos_ENABLE_CUDA_LAMBDA=ON \
-D PKG_GPU=ON -D GPU_API=cuda -D GPU_ARCH=sm_61 \
-D BUILD_MPI=ON \
-D BUILD_SHARED_LIBS=ON \
-D LAMMPS_EXCEPTIONS=ON \
-D CMAKE_CUDA_STANDARD=17 \
../cmake
cmake -C ../cmake/presets/most.cmake \
-D CMAKE_INSTALL_PREFIX=/opt/lammps \
-D CMAKE_INSTALL_RPATH=/opt/lammps/lib \
-D CMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \
-D PKG_OPENMP=ON \
-D PKG_KOKKOS=ON -D Kokkos_ENABLE_CUDA=ON -D Kokkos_ENABLE_OPENMP=ON \
-D Kokkos_ENABLE_HWLOC=ON -D Kokkos_ARCH_PASCAL61=ON \
-D PKG_GPU=ON -D GPU_API=cuda -D GPU_ARCH=sm_61 \
-D PKG_VORONOI=ON \
-D PKG_PTM=ON \
-D PKG_H5MD=ON \
-D BUILD_LIB=ON -D BUILD_SHARED_LIBS=ON \
-D BUILD_MPI=ON -D BUILD_OMP=ON \
-D LAMMPS_EXCEPTIONS=ON -D CMAKE_CUDA_STANDARD=17 \
../cmake
5.2 其他
export NVCC_PREPEND_FLAGS="-Wno-deprecated-gpu-targets" # 忽略旧GPU提醒
6. 编译和安装
6.1 编译(使用多核心加速)
# 使用所有可用CPU核心编译
cmake --build . -- -j$(nproc)
6.2 安装
sudo cmake --install .
6.3 添加到PATH
echo 'export PATH=/opt/lammps/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
7. 验证安装
7.1 检查LAMMPS版本和功能
lmp -help
7.2 测试GPU功能
cd ~/lammps/examples/melt
mpirun -np 1 lmp -sf gpu -pk gpu 1 -in in.melt
7.3 测试并行功能
mpirun -np 2 lmp -in in.melt
8. 性能优化配置
如果GPU加速正常,则不要执行以下内容
8.1 针对GTX 1060的GPU优化设置
在LAMMPS输入脚本中添加:
# GPU包设置
package gpu 1 neigh yes newton off
8.2 OpenMP线程设置
export OMP_NUM_THREADS=4 # 根据CPU核心数调整
9. 常见问题解决
9.1 CUDA编译错误
如果遇到CUDA相关编译错误:
# 确保CUDA环境变量正确
echo $CUDA_HOME
echo $PATH | grep cuda
# 检查GPU架构设置
nvidia-smi --query-gpu=compute_cap --format=csv
9.2 MPI相关错误
# 检查MPI安装
mpirun --version
which mpirun
# 测试MPI
mpirun -np 2 hostname
9.3 内存不足问题
对于GTX 1060 6GB显存:
- 适当减小GPU包中的
neigh
参数 - 使用较小的测试系统
- 监控显存使用:
nvidia-smi
10. 安装后的简便测试
创建简单的性能测试脚本:
#!/bin/bash
echo "Testing CPU performance..."
time mpirun -np 4 lmp -in ~/lammps/examples/melt/in.melt
echo "Testing GPU performance..."
time mpirun -np 1 lmp -sf gpu -pk gpu 1 -in ~/lammps/examples/melt/in.melt