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.
- Žiadne, požadované knižnice a závislosti sa načítajú
automaticky spolu s modulom
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:
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:
- 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 |
|---|---|
![]() |
![]() |
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 |
|---|---|
![]() |
![]() |
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 |
|---|---|
![]() |
![]() |
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 |
|---|---|
![]() |
![]() |
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/.







