Skip to content

Instantly share code, notes, and snippets.

@link89
Last active March 18, 2024 05:20
Show Gist options
  • Save link89/efcad575fb29fe228ace5c417113c957 to your computer and use it in GitHub Desktop.
Save link89/efcad575fb29fe228ace5c417113c957 to your computer and use it in GitHub Desktop.
Script to build LAMMPS with MACE support

Summary

  • Use rocky8 singularity container to build and run to work around legacy glibc issue.

Build

 singularity exec -B /public,/etc --nv /public/groups/ai4ec/libs/images/rocky8.sif /bin/bash -l build_lammps.sh

Run

Start shell environment in GPU node

salloc -p GPU_s --gres=gpu:1
ssh gpu001
singularity shell -B /public,/etc --nv -s /bin/bash /public/groups/ai4ec/libs/images/rocky8.sif

Run Command

source /public/groups/ai4ec/libs/bin/mace/build_env.sh
lmp

SBATCH

#!/bin/bash
#SBATCH -p GPU_s
#SBATCH --gres=gpu:1

module load singularity/3.8.3
singularity exec -B /public,/etc --nv /public/groups/ai4ec/libs/images/rocky8.sif /bin/bash -l << EOF
source  /public/groups/ai4ec/libs/bin/mace/build_env.sh
lmp ...
EOF

Appendix

rocky8-dockerfile

FROM rockylinux:8.9
RUN mkdir -p /public

RUN yum group install "Development Tools" -y && \
    yum clean all && rm -rf /var/cache/yum

RUN yum install tcl compat-openssl10 -y && \
    yum clean all && rm -rf /var/cache/yum

build_env.sh

module purge

module load gcc/9.3
module load dev/oneapi/2022.3.1
module load cuda/11.6
module load cudnn/8.4.1
module load cmake/3.21

export CUDNN_INCLUDE_DIR=/public/software/cudnn/8.4.1/include
export CUDNN_LIBRARY=/public/software/cudnn/8.4.1/lib

build_lammps.sh

set -e

mkdir -p lammps-mace-gpu
cd lammps-mace-gpu

[ -d lammps ] || git clone --branch=mace --depth 1 https://github.com/ACEsuit/lammps
# Use this if you are living in China: copy the zip to your folder before running your script
# [ -d lammps ] || ( unzip ../lammps-mace.zip && mv lammps-mace lammps )


CUDA_VER=cu116
LIBTORCH_ZIP=libtorch-cxx11-abi-shared-with-deps-1.13.1+$CUDA_VER.zip

[ -f $LIBTORCH_ZIP ] || wget https://download.pytorch.org/libtorch/$CUDA_VER/libtorch-cxx11-abi-shared-with-deps-1.13.1%2B$CUDA_VER.zip
[ -d libtorch-gpu ] || ( unzip libtorch-cxx11-abi-shared-with-deps-1.13.1+$CUDA_VER.zip && mv libtorch libtorch-gpu )

module purge

module load gcc/9.3
module load dev/oneapi/2022.3.1
module load cuda/11.6
module load cudnn/8.4.1
module load cmake/3.21

export CUDNN_INCLUDE_DIR=/public/software/cudnn/8.4.1/include
export CUDNN_LIBRARY=/public/software/cudnn/8.4.1/lib


cd lammps
rm -rf build-kokkos-cuda || true
mkdir -p build-kokkos-cuda && cd build-kokkos-cuda


cmake \
    -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DCMAKE_Fortran_COMPILER=ifx \
    -DKokkos_ARCH_AMPERE80=ON \
    -D CMAKE_BUILD_TYPE=Release \
    -D CMAKE_INSTALL_PREFIX=$(pwd) \
    -D BUILD_MPI=yes \
    -D BUILD_OMP=yes \
    -D BUILD_SHARED_LIBS=yes \
    -D LAMMPS_EXCEPTIONS=yes \
    -D PKG_KOKKOS=yes \
    -D Kokkos_ARCH_AMDAVX=yes \
    -D Kokkos_ARCH_AMPERE100=yes \
    -D Kokkos_ENABLE_CUDA=yes \
    -D Kokkos_ENABLE_OPENMP=yes \
    -D Kokkos_ENABLE_DEBUG=no \
    -D Kokkos_ENABLE_DEBUG_BOUNDS_CHECK=no \
    -D Kokkos_ENABLE_CUDA_UVM=no \
    -D CMAKE_CXX_COMPILER=$(pwd)/../lib/kokkos/bin/nvcc_wrapper \
    -D PKG_ML-MACE=yes \
    -D CMAKE_PREFIX_PATH=$(pwd)/../../libtorch-gpu \
    ../cmake

make -j 12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment