启用尽可能多的功能包,并开启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

标签: linux, GPU, lammps

添加新评论