Preskočiť na obsah

LAMMPS

Popis

LAMMPS (Large-scale Atomic/Molecular Massively Parallel Simulator) je kód na klasickú molekulárnu dynamiku so zameraním na modelovanie materiálov. LAMMPS má potenciály pre materiály v pevnom stave (kovy, polovodiče) a mäkké látky (biomolekuly, polyméry) a hrubo-zrnné (coarse grained) alebo mezoskopické systémy. Môže sa použiť na modelovanie atómov alebo, vo všeobecnosti, ako paralelný simulátor častíc na atómovej, mezoskopickej alebo kontinuálnej škále.


Oficiálna dokumentácia

Dokumentáciu a návod pre používateľa nájdete na oficiálnej webovej stránke LAMMPS.

Dostupné verzie

  • Spúšťacie závislosti:
    • Žiadne, požadované knižnice a závislosti sa načítajú automaticky spolu s modulom LAMMPS/23Jun2022-foss-2021b-kokkos-CUDA-11.4.1.

Modul LAMMPS môžete načítať pomocou nasledujúceho príkazu:

module load LAMMPS/23Jun2022-foss-2021b-kokkos-CUDA-11.4.1

Voliteľné balíky

Balíky (packages) sú skupiny súborov, ktoré povolia špecifickú sadu funkcií a rozširujú funkčnosť LAMMPS, napríklad silové polia pre molekulárne systémy alebo väzbové obmedzenia rigidných telies a podobne. Tieto balíky musia byť zahrnuté ako súčasť procesov zostavenia LAMMPS. Zoznam a popis všetkých balíkov nájdete na oficiálnej webovej stránke LAMMPS, v sekcii Package details.

Voliteľné balíky

Aktuálna verzia LAMMPS obsahuje iba balík KOKKOS. Ak chcete mať zahrnuté ďalšie balíky, zašlite žiadosť nášmu administračnému support tímu.

LAMMPS Benchmark

Aby sme lepšie pochopili, ako LAMMPS využíva dostupný hardvér na Devane a ako dosiahnuť dobrý výkon, môžeme preskúmať vplyv výberu počtu MPI rankov na uzol na výkon benchmarkov.

Na spustenie benchmarkov bol použitý nasledujúci príkaz:

\[$bash mpiexec -np $SLURM_NTASKS lmp -in ${benchmark}.inp > ${benchmark}.out $\]

Info

Jednouzlové benchmarky boli spustené na lokálnom NVMe disku /work/, ktorý je integrovaný do každého výpočtového uzla a je zvyčajne rýchlejší než zdieľané súborové systémy /home/ a /scratch/.

OPENMP balík

Aktuálna verzia LAMMPS je skompilovaná bez OpenMP balíka, ktorý poskytuje optimalizované a viacvláknové verzie mnohých pair štýlov, takmer všetkých bonded štýlov (bond, angle, dihedral, improper), niekoľkých Kspace štýlov a niekoľkých fix štýlov. Najlepší výkon sa teda dosiahne maximálnym počtom MPI rankov, z ktorých každý beží na jednom OMP vlákne: export OMP_NUM_THREADS=1.

Benchmarky boli zmerané pre nasledujúce systémy:

Atómová kvapalina:

  • 32,000 atómov na 100000 časových krokov
  • redukovaná hustota = 0.8442 (kvapalina)
  • silový cutoff = 2.5 sigma
  • neighbor skin = 0.3 sigma
  • susedia/atóm = 55 (v rámci silového cutoffu)
  • NVE časová integrácia
Výkon na jednom uzle Výkon na viacerých uzloch
LAMMPS_single_node_perf LAMMPS_cross_node_perf

Polymérne tavenie typu bead-spring so 100-mer reťazcami a FENE väzbami:

  • 32,000 atómov na 100000 časových krokov
  • redukovaná hustota = 0.8442 (kvapalina)
  • silový cutoff = 2^(⅙) sigma
  • neighbor skin = 0.4 sigma
  • susedia/atóm = 5 (v rámci silového cutoffu)
  • NVE časová integrácia
Výkon na jednom uzle Výkon na viacerých uzloch
LAMMPS_single_node_perf LAMMPS_cross_node_perf

Kovové tuhé teleso Cu s potenciálom metódy vloženého atómu (EAM):

  • 32,000 atómov na 100000 časových krokov
  • silový cutoff = 4.95 sigma
  • neighbor skin = 1.0 sigma
  • susedia/atóm = 45 (v rámci silového cutoffu)
  • NVE časová integrácia
Výkon na jednom uzle Výkon na viacerých uzloch
LAMMPS_single_node_perf LAMMPS_cross_node_perf

All-atom bielkovina rhodopsin v solvatovanej lipidovej dvojvrstve s CHARMM silovým poľom, kulombové interakcie na dlhý dosah cez PPPM (particle-particle particle-mesh), SHAKE obmedzenia:

  • 32,000 atómov na 100000 časových krokov
  • LJ silový cutoff = 10 A
  • neighbor skin = 1.0 sigma
  • susedia/atóm = 440 (v rámci silového cutoffu)
  • NPT časová integrácia
Výkon na jednom uzle Výkon na viacerých uzloch
LAMMPS_single_node_perf LAMMPS_cross_node_perf

Viac informácií o týchto benchmarkoch a mnoho ďalších príkladov nájdete na oficiálnej stránke LAMMPS benchmarks.


Príklad spúšťacieho skriptu

Tento skript si môžete skopírovať, upraviť, uložiť ako lammps_run.sh a odoslať úlohu na výpočtový uzol príkazom sbatch lammps_run.sh.

#!/bin/bash
#SBATCH -J "LAMMPS_job"         # name of job in SLURM
#SBATCH --account=<project>     # project number
#SBATCH --partition=            # select short, medium, long
#SBATCH --nodes=                # number of nodes
#SBATCH --ntasks=               # number of mpi ranks
#SBATCH --time=hh:mm:ss         # time limit for a job
#SBATCH -o stdout.%J.out        # standard output
#SBATCH -e stderr.%J.out        # error output

module load LAMMPS/23Jun2022-foss-2021b-kokkos-CUDA-11.4.1

# Modify according to specific needs
init_dir=`pwd`
work_dir=/scratch/$SLURM_JOB_ACCOUNT/$SLURM_JOB_ID

# Copy files over
input_files=""
output_files=""

# Define input file
input=""

# Move to working directory
mkdir -p "$work_dir"
cd $work_dir
cp $input_files $work_dir/.

# Start LAMMPS
export OMP_NUM_THREADS=1
mpiexec -np ${SLURM_NTASKS} lmp -in ${input}.inp

# Move files back
cp $output_files $init_dir/.
Created by: Marek Štekláč, Marek Štekláč