-
GROMACS
GROMACS
GROMACS on erittäin tehokas ohjelmisto molekyylidynamiikkasimulaatioiden ja energian minimoinnin suorittamiseen erityisesti proteiineille. Sitä voidaan kuitenkin käyttää myös polymeerien, kalvojen ja esimerkiksi karkeistetun tason järjestelmien mallintamiseen. Lisäksi sen mukana tulee runsaasti analyysiskriptejä.
Saatavuus
| Versio | Saatavilla olevat moduulit | Huomautukset |
|---|---|---|
| 2022.2 | gromacs/2022.2gromacs/2022.2-cuda |
GPU-tuettu moduuli saatavilla |
| 2022.3 | gromacs/2022.3gromacs/2022.3-cuda |
GPU-tuettu moduuli saatavilla |
| 2022.4 | gromacs/2022.4gromacs/2022.4-cuda |
GPU-tuettu moduuli saatavilla |
| 2023.2 | gromacs/2023.2 |
|
| 2023.3 | gromacs/2023.3 |
|
| 2024.0 | gromacs/2024 |
|
| 2024.1 | gromacs/2024.1 |
|
| 2024.2 | gromacs/2024.2 |
|
| 2024.3 | gromacs/2024.3 |
|
| 2024.4 | gromacs/2024.4 |
|
| 2025.1 | gromacs/2025.1 |
|
| 2025.2 | gromacs/2025.2 |
|
| 2025.4 | gromacs/2025.4 |
| Versio | Saatavilla olevat moduulit | Huomautukset |
|---|---|---|
| 2022.1 | gromacs/2022.1gromacs/2022.1-cp2k |
Moduuli, jossa CP2K saatavilla QM/MM-laskentaan |
| 2022.2 | gromacs/2022.2gromacs/2022.2-cuda |
GPU-tuettu moduuli saatavilla |
| 2022.3 | gromacs/2022.3gromacs/2022.3-cuda |
GPU-tuettu moduuli saatavilla |
| 2022.4 | gromacs/2022.4gromacs/2022.4-cuda |
GPU-tuettu moduuli saatavilla |
| 2023.1 | gromacs/2023.1 |
|
| 2023.2 | gromacs/2023.2 |
|
| 2023.3 | gromacs/2023.3 |
|
| 2024.0 | gromacs/2024 |
|
| 2024.1 | gromacs/2024.1 |
|
| 2024.2 | gromacs/2024.2 |
|
| 2024.3 | gromacs/2024.3 |
|
| 2024.4 | gromacs/2024.4 |
|
| 2025.1 | gromacs/2025.1 |
|
| 2025.2 | gromacs/2025.2 |
|
| 2025.4 | gromacs/2025.4 |
| Versio | Saatavilla olevat moduulit | Huomautukset |
|---|---|---|
| 2025.1 | gromacs/2025.1gromacs/2025.1-gpugromacs/2025.1-heffte |
GPU-tuettu moduuli saatavilla Moduuli, jossa heFFTe saatavilla GPU PME -hajotelmaan |
| 2025.2 | gromacs/2025.2gromacs/2025.2-gpu |
GPU-tuettu moduuli saatavilla |
| 2025.3 | gromacs/2025.3gromacs/2025.3-gpu |
GPU-tuettu moduuli saatavilla |
| 2025.4 | gromacs/2025.4gromacs/2025.4-gpugromacs/2025.4-heffte |
GPU-tuettu moduuli saatavilla Moduuli, jossa heFFTe saatavilla GPU PME -hajotelmaan |
| 2026.0 | gromacs/2026.0gromacs/2026.0-gpu |
GPU-tuettu moduuli saatavilla |
| 2026.1 | gromacs/2026.1gromacs/2026.1-gpugromacs/2026.1-heffte |
GPU-tuettu moduuli saatavilla Moduuli, jossa heFFTe saatavilla GPU PME -hajotelmaan |
- Puhdissa ja Mahdissa on myös
gromacs-env/<year>-moduuleja, joilla voi ladata kunkin vuoden suositellun uusimman aliversion (korvaa<year>vastaavasti). - Jotta pääset käyttämään moduuleja LUMIssa, lataa ensin CSC:n moduulipuu käyttöön komennolla
module use /appl/local/csc/modulefiles - Jos haluat käyttää komentorivin Plumed-työkaluja, lataa Plumed-moduuli.
Info
Tarjoamme vain MPI-version gmx_mpi, mutta sitä voi käyttää grompp-, editconf- ym. komentoihin samalla tavalla kuin sarjaversiota. Käytä komennon gmx grompp sijaan komentoa gmx_mpi grompp.
Lisenssi
GROMACS on LGPL-lisenssin version 2.1 alainen vapaa ohjelmisto.
Käyttö
Alusta GROMACSin suositeltu versio Puhdissa tai Mahdissa näin:
Käytä komentoa module spider muiden versioiden löytämiseen. Näiden moduulien lataamiseksi sinun täytyy ensin ladata vaaditut riippuvuudet, jotka näytetään komennolla module spider gromacs/<version>.
Jotta voit käyttää CSC:n GROMACS-moduuleja LUMIssa, muista suorittaa ensin:
Huomio
Käytäthän mdrun-komennon kanssa -maxh-valitsinta. Kun asetat sen pyydettyä aikarajaa vastaavaksi tai hieman sitä pienemmäksi (tunneissa), simulaatiollesi jää aikaa kirjoittaa lopullinen checkpoint ja päättyä hallitusti ennen kuin ajastin lopettaa työn. Jos tätä ei määritetä, on mahdollista, että työ kaataa solmun tai solmut, joilla se on käynnissä. Yleisiä ohjeita pitkien simulaatioiden hallintaan löytyy GROMACS-käsikirjasta.
Plumed
Kaikkien GROMACS-versioiden >=2025.0 pitäisi tukea Plumedia oletusarvoisesti. Jos haluat ajaa GROMACS-simulaatioita Plumedin kanssa, muista ladata myös jokin Plumed-moduuli.
Huomioita suorituskyvystä
Huomio
Minimoi tarpeeton levy-I/O – älä koskaan aja simulaatioita komennolla mdrun -v (verbose-lippu)!
On tärkeää määrittää simulaatiot oikein, jotta resursseja käytetään tehokkaasti. Tärkeimmät huomioitavat asiat (-v-valitsimen välttämisen lisäksi) ovat:
- Jos ajat rinnakkain, tee skaalaustesti jokaiselle järjestelmälle – älä käytä enempää ytimiä/GPU:ita kuin on tehokasta. Skaalautuvuus riippuu monista järjestelmäsi ja käytettyjen algoritmien ominaisuuksista, ei vain koosta.
- Käytä tuoretta versiota – vuosien aikana on tullut merkittäviä nopeusparannuksia ja virhekorjauksia. Jos vaihdat pääversion, muista tarkistaa, että tulokset ovat vertailukelpoisia.
- Suurissa töissä käytä kokonaisia solmuja (40 ytimen monikertoja Puhdissa tai 128 ytimen monikertoja Mahdissa), katso esimerkit alta.
- GPU-suorituskyky riippuu monista tekijöistä ja siitä, mitä laskentaa siirrät GPU:lle. Katso yleiskuva erinomaisista ENCCS:n verkkomateriaaleista tai GROMACS LUMIssa -työpajan materiaaleista, joissa kerrotaan tehokkaasta ajamisesta LUMI-G:llä.
- LUMI-G:llä on tärkeää varmistaa, että CPU:t on sidottu oikeisiin GPU:ihin viestintäylikuorman minimoimiseksi. Katso esimerkit alta ja lisätietoja LUMI Docsista.
Täydellisempi kuvaus löytyy GROMACSin sivun mdrun-suorituskyvyn tarkistuslistasta.
Puhti
#!/bin/bash
#SBATCH --time=00:15:00
#SBATCH --partition=small
#SBATCH --ntasks=1
#SBATCH --account=<project>
##SBATCH --mail-type=END # uncomment to get mail
# this script runs a 1 core gromacs job, requesting 15 minutes time
module purge
module load gromacs-env
export OMP_NUM_THREADS=1
srun gmx_mpi mdrun -s topol -maxh 0.2
#!/bin/bash
#SBATCH --time=00:15:00
#SBATCH --partition=large
#SBATCH --ntasks-per-node=40
#SBATCH --nodes=2
#SBATCH --account=<project>
##SBATCH --mail-type=END # uncomment to get mail
# this script runs an 80 core (2 full nodes) gromacs job, requesting 15 minutes time
module purge
module load gromacs-env
export OMP_NUM_THREADS=1
srun gmx_mpi mdrun -s topol -maxh 0.2 -dlb yes
Huomio
Jotta monisolmuiset rinnakkaistyöt eivät leviäisi useammalle solmulle kuin on tarpeen, älä käytä --ntasks-valitsinta, vaan määritä --nodes ja --ntasks-per-node=40, jotta saat kokonaisia solmuja. Tämä minimoi viestintäylikuorman ja solmuvarausten pirstoutumisen.
#!/bin/bash
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=10
#SBATCH --gres=gpu:v100:1
#SBATCH --time=00:15:00
#SBATCH --partition=gpu
#SBATCH --account=<project>
##SBATCH --mail-type=END # uncomment to get mail
module purge
module load gromacs-env/2022-gpu
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
srun gmx_mpi mdrun -s topol -maxh 0.2 -dlb yes
# additional flags, like these, may be useful - test!
# srun gmx_mpi mdrun -pin on -pme gpu -pmefft gpu -nb gpu -bonded gpu -update gpu -nstlist 200 -s topol -dlb yes
Huomio
Varmistathan, että yhden GPU:n (ja enintään 10 CPU-ytimen) käyttö on nopeampaa kuin yhden kokonaisen CPU-solmun käyttö käyttöehtojemme mukaisesti. Muussa tapauksessa älä käytä GPU:ita Puhdissa.
Mahti
#!/bin/bash
#SBATCH --time=00:15:00
#SBATCH --partition=medium
#SBATCH --ntasks-per-node=128
#SBATCH --nodes=2
#SBATCH --account=<project>
##SBATCH --mail-type=END # uncomment to get mail
# this script runs a 256 core (2 full nodes, no hyperthreading) gromacs
# job, requesting 15 minutes time
module purge
module load gromacs-env
export OMP_NUM_THREADS=1
srun gmx_mpi mdrun -s topol -maxh 0.2 -dlb yes
#!/bin/bash
#SBATCH --time=00:15:00
#SBATCH --partition=medium
#SBATCH --ntasks-per-node=64
#SBATCH --cpus-per-task=2
#SBATCH --nodes=2
#SBATCH --account=<project>
##SBATCH --mail-type=END # uncomment to get mail
# this script runs a 256 core (2 full nodes, no hyperthreading) gromacs
# job, requesting 15 minutes time and 64 tasks per node, each with 2 OpenMP
# threads
module purge
module load gromacs-env
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
srun gmx_mpi mdrun -s topol -maxh 0.2 -dlb yes
LUMI
#!/bin/bash
#SBATCH --partition=small-g
#SBATCH --account=<project>
#SBATCH --time=00:15:00
#SBATCH --nodes=1
#SBATCH --gpus-per-node=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=7
module use /appl/local/csc/modulefiles
module load gromacs/2025.4-gpu
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
srun gmx_mpi mdrun -s topol -nb gpu -bonded gpu -pme gpu -update gpu -maxh 0.2
#!/bin/bash
#SBATCH --partition=standard-g
#SBATCH --account=<project>
#SBATCH --time=00:15:00
#SBATCH --nodes=1
#SBATCH --gpus-per-node=8
#SBATCH --ntasks-per-node=8
module use /appl/local/csc/modulefiles
module load gromacs/2025.4-gpu
export OMP_NUM_THREADS=7
export MPICH_GPU_SUPPORT_ENABLED=1
export GMX_ENABLE_DIRECT_GPU_COMM=1
export GMX_FORCE_GPU_AWARE_MPI=1
cat << EOF > select_gpu
#!/bin/bash
export ROCR_VISIBLE_DEVICES=\$SLURM_LOCALID
exec \$*
EOF
chmod +x ./select_gpu
CPU_BIND="mask_cpu:fe000000000000,fe00000000000000"
CPU_BIND="${CPU_BIND},fe0000,fe000000"
CPU_BIND="${CPU_BIND},fe,fe00"
CPU_BIND="${CPU_BIND},fe00000000,fe0000000000"
srun --cpu-bind=${CPU_BIND} ./select_gpu gmx_mpi mdrun -s topol -nb gpu -bonded gpu -pme gpu -update gpu -npme 1 -maxh 0.2
Terminologia
Jokainen LUMIn GPU koostuu kahdesta AMD Graphics Compute Die -yksiköstä (GCD). Koska solmua kohden on neljä GPU:ta ja Slurm tulkitsee jokaisen GCD:n erilliseksi GPU:ksi, voit varata enintään 8 "GPU:ta" solmua kohden. Katso lisätietoja LUMI Docsista.
Huomioita sidonnasta ja usean GPU:n simulaatioista LUMIssa
Vain tietyt CPU-ytimet on LUMIssa kytketty suoraan tiettyyn GPU:hun, joten usean GPU:n suorituskyvyn maksimoimiseksi on tärkeää varmistaa, että CPU-ytimet sidotaan GPU:ihin tämän mukaisesti. Yllä oleva koko GPU-solmun esimerkki huolehtii tästä ja sulkee myös pois kunkin tiettyyn GCD:hen liitetyn 8 ytimen ryhmän ensimmäisen ytimen. Nämä on varattu käyttöjärjestelmälle häiriöiden vähentämiseksi, mikä tarkoittaa, että solmua kohden on käytettävissä vain 56 ydintä. Tämä on myös syy siihen, miksi käytämme 7 säiettä MPI-rankia kohden emmekä 8:aa.
Huomio
Huomaa, että CPU-GPU-sidonta toimii vain, kun varataan kokonaisia solmuja ajamalla standard-g-osiolla tai käyttämällä --exclusive-valitsinta. Katso lisätietoja LUMI Docsista:
LUMI-G-laitteisto,
LUMI-G-esimerkit,
GPU-sidonta
Sen sijaan, että GPU:t kommunikoisivat CPU:n kautta, suora GPU-viestintä tuo myös merkittäviä suorituskykyetuja usealla GPU:lla ajettaessa. Tämän käyttöönotto edellyttää seuraavien ympäristömuuttujien asettamista eräajokomentosarjassa (katso myös yllä oleva koko GPU-solmun esimerkki):
export MPICH_GPU_SUPPORT_ENABLED=1
export GMX_ENABLE_DIRECT_GPU_COMM=1
export GMX_FORCE_GPU_AWARE_MPI=1
Alla on vertailu GROMACS 2024.3:n suorituskyvystä Mahdissa (CPU:t ja GPU:t) ja LUMI-G:llä käyttäen STMV-benchmarkia (1067k atomia, 2 fs aikasteppi). Tämä on suuri järjestelmä, joka skaalautuu erittäin hyvin myös GPU:illa. Yhden LUMI GCD:n (puoli GPU:ta) suorituskyky on suunnilleen sama kuin yhden täyden Nvidia A100 GPU:n Mahdissa, ja paljon parempi kuin yhden 128-ytimisen CPU-solmun. Tärkeää on, että GPU-solmujen saatavuus LUMIssa on valtava verrattuna Mahtiin (2978 vs. 24).

Pienet järjestelmät ja suuren läpimenon simulaatiot
Vaikka keskikokoiset ja suuret järjestelmät (muutamasta 100k atomista yli 1M atomiin) voivat yleensä hyödyntää useita GPU:ita hyvin, pienet järjestelmät (alle 100k atomia) kannattaa usein ajaa vain yhdellä GCD:llä. Hyvä tapa kasvattaa pienten simulaatioiden GPU-käyttöastetta ja tehokkuutta edelleen on jakaa yksi GCD usean riippumattoman trajektorin kesken. Tämä voidaan toteuttaa GROMACSin sisäänrakennetulla multidir-ominaisuudella. Lisätietoja GPU-jakamisesta ja aggregoidusta näytteenotosta löytyy oppaastamme suuren läpimenon GROMACS-simulaatioihin.
GPU PME -hajotelma
Useiden miljoonien atomien valtavien järjestelmien skaalautuvuutta voi rajoittaa yhden GPU:n PME. Skaalautuvuuden merkittävä parantaminen on mahdollista hajottamalla PME-työ usealle GPU:lle moduuleissa, joiden nimessä on pääte -heffte ja jotka on linkitetty heFFTe-kirjastoon. Lisää seuraavat export-komennot eräajokomentosarjaasi:
Käytettävien PME-rankien määrä riippuu tapauksesta, mutta 1 tai 2 GPU-solmua kohden on järkevä lähtökohta. Jos käytössä on siis 16 LUMI-G-solmua, kokeile -npme 16 tai -npme 32. Alla on esitetty esimerkkibenchmark.

Visualisointi ja analyysi
GROMACSin trajektoritiedostoja ja dataa voidaan visualisoida esimerkiksi seuraavilla ohjelmilla:
- VMD -visualisointiohjelma suurille biomolekulaarisille järjestelmille
- Grace GROMACS-työkaluilla tuotetun datan piirtämiseen
- MDAnalysis Python-kirjasto MD-simulaatioiden trajektorien analysointiin
- Ei saatavilla CSC:llä, mutta käyttäjä voi asentaa sen helposti kontitetussa Conda-ympäristössä Tykyllä
- PyMOL molekyylimallinnusjärjestelmä (ei saatavilla CSC:llä)
Lisää on lueteltu GROMACS-käsikirjassa. Lisäksi GROMACS itse sisältää lukuisia jälkikäsittelytyökaluja trajektorien analysointiin. Katso lisätietoja komentoriviviitteestä.
Raskaiden/pitkien analyysien ajaminen
Suurten trajektorien visualisointi sekä tietyt GROMACS-työkaluskriptit voivat olla laskennallisesti erittäin vaativia, eikä niitä tule koskaan ajaa kirjautumissolmuilla (katso käyttöehdot). Aja tällaiset kuormat sen sijaan interactive-istunnossa. Koska tarjoamme vain GROMACSin MPI-version, sinun täytyy lisätä gmx_mpi-komennon eteen orterun -n 1, esimerkiksi:
sinteractive --account <project>
module load gromacs-env
orterun -n 1 gmx_mpi msd -n index -s topol -f traj
Koska useimmat GROMACSin analyysityökalut, kuten yllä oleva msd-työkalu, voidaan ajaa vain sarjamuodossa, ne voivat kestää varsin pitkään suurilla trajektoreilla. Tällaisissa tapauksissa voi olla kätevämpää ajaa työkalut sarja-ajon erätöinä. Jos komento, jonka haluat ajaa, vaatii vuorovaikutusta (esimerkiksi sen valitsemiseksi, mitkä järjestelmäsi osat sisällytetään analyysiin), voit välittää nämä erätyössä esimerkiksi näin:
# Three consecutive selections (options 2, 2 and 0), you need to know these beforehand
echo "2 2 0" | gmx_mpi trjconv -f traj -s topol -o trajout -pbc cluster -center
Huomaa, että voit käyttää myös interactive-osiota (aikaraja 7 päivää) erätöissä, jos small-osion 3 päivän aikaraja ei riitä. 14 päivän longrun-osion prioriteetti on hyvin matala, ja sen käyttö vaatii usein huomattavaa jonotusta. Toinen käyttökelpoinen vaihtoehto on käyttää selainkäyttöliittymien kautta saatavaa pysyvää laskentasolmun komentotulkkia, joka pysyy käynnissä, vaikka sulkisit selaimen tai internetyhteys katkeaisi.
Viitteet
Viittaa työhösi seuraavilla viitteillä:
- S. Páll, A. Zhmurov, P. Bauer, M. J. Abraham, M. Lundborg, A. Gray, B. Hess, E. Lindahl. Heterogeneous parallelization and acceleration of molecular dynamics simulations in GROMACS. J. Chem. Phys. 153 (2020) pp. 134110.
- M. J. Abraham, T. Murtola, R. Schulz, S. Páll, J. C. Smith, B. Hess, E. Lindahl. GROMACS: High performance molecular simulations through multi-level parallelism from laptops to supercomputers. SoftwareX 1 (2015) pp. 19-25.
- S. Páll, M. J. Abraham, C. Kutzner, B. Hess, E. Lindahl. Tackling Exascale Software Challenges in Molecular Dynamics Simulations with GROMACS. In S. Markidis & E. Laure (Eds.), Solving Software Challenges for Exascale 8759 (2015) pp. 3-27.
- S. Pronk, S. Páll, R. Schulz, P. Larsson, P. Bjelkmar, R. Apostolov, M. R. Shirts, J. C. Smith, P. M. Kasson, D. van der Spoel, B. Hess, and E. Lindahl. GROMACS 4.5: a high-throughput and highly parallel open source molecular simulation toolkit. Bioinformatics 29 (2013) pp. 845-54.
- B. Hess and C. Kutzner and D. van der Spoel and E. Lindahl. GROMACS 4: Algorithms for highly efficient, load-balanced, and scalable molecular simulation. J. Chem. Theory Comput. 4 (2008) pp. 435-447.
- D. van der Spoel, E. Lindahl, B. Hess, G. Groenhof, A. E. Mark and H. J. C. Berendsen. GROMACS: Fast, Flexible and Free. J. Comp. Chem. 26 (2005) pp. 1701-1719.
- E. Lindahl and B. Hess and D. van der Spoel. GROMACS 3.0: A package for molecular simulation and trajectory analysis. J. Mol. Mod. 7 (2001) pp. 306-317.
- H. J. C. Berendsen, D. van der Spoel and R. van Drunen. GROMACS: A message-passing parallel molecular dynamics implementation. Comp. Phys. Comm. 91 (1995) pp. 43-56.
Katso simulaatiosi lokitiedostosta tarkemmat viitteet asetuksissasi käytetyille menetelmille.
Lisätietoja
- GROMACSin kotisivu ja dokumentaatio
- mdrun-suorituskyvyn tarkistuslista
- BioExcel-verkkosivuston materiaalit
- GROMACS-yhteisöfoorumi
- Juliste GROMACSin suorituskyvystä LUMIlla
- Koulutusmateriaalit:
- Opastukset:
- Esimerkki-
.tpr-tiedostoja testaamiseen: