Hyppää sisältöön

Puhdin ja Mahdin laskentapalvelut ovat poistuneet käytöstä. Puhdin ja Mahdin kirjautumisnoodit sekä tallennustila ovat saatavilla 15. lokakuuta 2026 asti, mutta ne eivät enää ole palvelusopimusten piirissä. Ryhdythän toimiin datan siirtämiseksi Roihuun välittömästi. Ohjeita löydät sivulta Roihun datan siirto-opas.

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
2025.1 gromacs/2025.1 CPU-versio
2025.2 gromacs/2025.2 CPU-versio
2025.3 gromacs/2025.3 CPU-versio
2025.4 gromacs/2025.4 CPU-versio
2026.0 gromacs/2026.0 CPU-versio
2026.1 gromacs/2026.1 CPU-versio
Versio Saatavilla olevat moduulit Huomautukset
2025.1 gromacs/2025.1 GPU-versio
2025.2 gromacs/2025.2 GPU-versio
2025.3 gromacs/2025.3 GPU-versio
2025.4 gromacs/2025.4 GPU-versio
2026.0 gromacs/2026.0 GPU-versio
2026.1 gromacs/2026.1 GPU-versio
Versio Saatavilla olevat moduulit Huomautukset
2025.1 gromacs/2025.1
gromacs/2025.1-gpu
gromacs/2025.1-heffte
GPU-tuettu moduuli saatavilla
heFFTeä sisältävä moduuli saatavilla GPU PME -hajotelmaa varten
2025.2 gromacs/2025.2
gromacs/2025.2-gpu
GPU-tuettu moduuli saatavilla
2025.3 gromacs/2025.3
gromacs/2025.3-gpu
GPU-tuettu moduuli saatavilla
2025.4 gromacs/2025.4
gromacs/2025.4-gpu
gromacs/2025.4-heffte
GPU-tuettu moduuli saatavilla
heFFTeä sisältävä moduuli saatavilla GPU PME -hajotelmaa varten
2026.0 gromacs/2026.0
gromacs/2026.0-gpu
GPU-tuettu moduuli saatavilla
2026.1 gromacs/2026.1
gromacs/2026.1-gpu
gromacs/2026.1-heffte
GPU-tuettu moduuli saatavilla
heFFTeä sisältävä moduuli saatavilla GPU PME -hajotelmaa varten

Huomautukset

  • Roihussa on myös gromacs-env/<year>-moduuleja, joilla voi ladata kunkin vuoden 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
    
  • Versioiden 2025.0 ja sitä uudempien pitäisi tukea PLUMEDia oletuksena. Jos haluat käyttää PLUMEDia, lataa lisäksi PLUMED-moduuli.

  • Tarjoamme vain MPI-version gmx_mpi, mutta sitä voidaan käyttää myös komennoille grompp, editconf jne. samaan tapaan kuin sarjaversiota. Komennon gmx grompp sijaan anna gmx_mpi grompp.

Lisenssi

GROMACS on vapaata ohjelmistoa, joka on saatavilla LGPL-lisenssillä, versio 2.1.

Käyttö

Alusta GROMACSin suositeltu versio Roihussa näin:

module purge
module load gromacs-env

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:

module use /appl/local/csc/modulefiles

Rajoita simulaatioaikaa käyttämällä -maxh

Käytäthän mdrun-komennon kanssa -maxh-valitsinta. Kun asetat sen yhtä suureksi tai hieman pienemmäksi kuin pyydetty aikaraja (tunneissa), simulaatiolle jää aikaa kirjoittaa viimeinen checkpoint ja päättyä hallitusti ennen kuin Slurm lopettaa työn.

Jos tämä jätetään määrittämättä, on mahdollista, että työ kaataa solmun tai solmut, joilla se on käynnissä. Yleisiä vinkkejä pitkien simulaatioiden hallintaan löytyy GROMACS-käsikirjasta.

Yleisiä huomioita

Minimoi I/O

Minimoi tarpeeton levy-I/O – älä koskaan aja runsassanallisia simulaatioita käyttäen mdrun -v -valitsinta!

On tärkeää määrittää simulaatiot oikein, jotta resursseja käytetään tehokkaasti.

  1. Jos ajat rinnakkaisesti, tee skaalautuvuustesti jokaiselle järjestelmälle – älä käytä enempää ytimiä/GPU:ita kuin on tehokasta. Skaalautuvuus riippuu monista järjestelmäsi ominaisuuksista ja käytetyistä algoritmeista, ei vain koosta.
  2. Käytä tuoretta versiota – vuosien varrella on tullut merkittäviä nopeusparannuksia ja virheenkorjauksia. Jos vaihdat pääversion, muista tarkistaa, että tulokset ovat vertailukelpoisia.
  3. Suurissa CPU-töissä käytä kokonaisia solmuja (Roihussa 384 ytimen monikertoja tai LUMIssa 128 ytimen monikertoja). Katso esimerkit alta.
  4. GPU-suorituskyky riippuu monista tekijöistä ja siitä, mitä laskentaa siirrät GPU:lle. Katso yleiskuva ENCCS:n verkkomateriaaleista tai GROMACS on LUMI -työpajan materiaaleista, miten ajaa tehokkaasti LUMI-G:llä.
  5. 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 GROMACS-käsikirjan mdrun-suorituskyvyn tarkistuslistasta.

Roihu

#!/bin/bash
#SBATCH --time=00:15:00
#SBATCH --partition=small
#SBATCH --ntasks=1
#SBATCH --account=<project>

# 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=small
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=192
#SBATCH --account=<project>

# this script runs a 192-core (half a node, 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
#!/bin/bash
#SBATCH --time=00:15:00
#SBATCH --partition=medium
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=192
#SBATCH --cpus-per-task=2
#SBATCH --account=<project>

# this script runs a 384-core (one full node, no hyperthreading) gromacs
# job, requesting 15 minutes time and 192 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
#!/bin/bash
#SBATCH --time=00:15:00
#SBATCH --partition=gpumedium
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=72
#SBATCH --gres=gpu:gh200:1
#SBATCH --account=<project>

# this script runs a single-GPU gromacs job, requesting 1 task per GPU,
# 72 OpenMP threads per task and 15 minutes time

module purge
module load gromacs-env

export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
export GMX_ENABLE_DIRECT_GPU_COMM=1
export GMX_FORCE_GPU_AWARE_MPI=1

srun gmx_mpi mdrun -s topol -maxh 0.2 -nb gpu -bonded gpu -pme gpu -update gpu
#!/bin/bash
#SBATCH --time=00:15:00
#SBATCH --partition=gpumedium
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=4
#SBATCH --cpus-per-task=72
#SBATCH --gres=gpu:gh200:4
#SBATCH --account=<project>

# this script runs a full GPU node gromacs job, requesting 1 task per GPU,
# 72 OpenMP threads per task and 15 minutes time

module purge
module load gromacs-env

export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
export GMX_ENABLE_DIRECT_GPU_COMM=1
export GMX_FORCE_GPU_AWARE_MPI=1

srun gmx_mpi mdrun -s topol -maxh 0.2 -nb gpu -bonded gpu -pme gpu -update gpu -npme 1

LUMI

Terminologia

Jokainen LUMIn GPU koostuu kahdesta AMD Graphics Compute Die (GCD) -yksiköstä. 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. Lisätietoja löytyy LUMI Docsista.

#!/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

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 jättää lisäksi pois jokaisen tiettyyn GCD:hen kytketyn 8 ytimen ryhmän ensimmäisen ytimen. Ne 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ä. Siksi ajamme myös 7 säiettä MPI-rankia kohden emmekä 8:aa.

CPU-GPU-sidonta vaatii yksinomaisen käytön

Huomaa, että CPU-GPU-sidonta toimii vain, kun varataan kokonaisia solmuja ajamalla standard-g-osiolla tai käyttämällä --exclusive-valitsinta. Lisätietoja löytyy LUMI Docsista:

Sen sijaan, että GPU:t kommunikoisivat CPU:n kautta, suora GPU-kommunikaatio tuo merkittäviä suorituskykyetuja myös usealla GPU:lla ajettaessa. Tämän käyttöönotto edellyttää seuraavien ympäristömuuttujien asettamista eräajokomentosarjaasi (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

Suorituskyvyn yleiskatsaus

Alla on yleiskatsaus GROMACS 2026.1:n suorituskykyyn Roihussa ja LUMIssa. Käytössä on STMV-benchmark (1067k atomia, 2 fs aikasteppi). Huomaa, että jokainen LUMIn GPU sisältää kaksi fyysistä GPU-laitetta (GCD:t), ja alla oleva kuvaaja viittaa nimenomaan GPU:ihin.

GROMACS performance on Roihu and LUMI

Pienet järjestelmät ja suuren läpimenon simulaatiot

Huomaa, että yllä oleva benchmark on suuri järjestelmä, joka skaalautuu hyvin useille CPU-solmuille ja GPU:ille. Pienemmät järjestelmät (<100k atomia) eivät välttämättä pysty hyödyntämään useita tai edes yhtä GPU:ta tehokkaasti, jolloin suositellaan useiden simulaatioiden ajamista yhtä GPU:ta kohden. Tämä voidaan toteuttaa käyttämällä GROMACSin sisäänrakennettua -multidir-ominaisuutta.

Katso tämä opas suuren läpimenon simulaatioiden ajamiseen GROMACSilla.

GPU PME -hajotelma

Useiden miljoonien atomien erittäin suurten järjestelmien skaalautuvuutta voi rajoittaa yhden GPU:n PME. Skaalautuvuuden merkittäväksi parantamiseksi PME-työn hajottaminen useille GPU:ille on mahdollista LUMIssa moduuleissa, joiden pääte on -heffte ja jotka on linkitetty heFFTe-kirjastoon. Lisää seuraavat export-komennot eräajokomentosarjaasi:

export GMX_GPU_PME_DECOMPOSITION=1
export GMX_PMEONEDD=1

Käytettävien PME-rankien määrä riippuu tapauksesta, mutta 1 tai 2 GPU-solmua kohden pitäisi olla järkevä lähtökohta. Joten 16 LUMI-G-solmulle kokeile -npme 16 tai -npme 32. Esimerkkibenchmark on esitetty alla.

Scalability of benchPEP-h

GPU PME -hajotelma Roihussa

Roihusta puuttuu tällä hetkellä moduuli, joka mahdollistaisi GPU PME -hajotelman. Se lisätään mahdollisimman pian.

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ätiedot 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-komentosi eteen prterun -n 1, esimerkiksi näin:

sinteractive --account <project>
module load gromacs-env
prterun -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äajotöinä. Jos komento, jonka haluat ajaa, vaatii vuorovaikutusta (esimerkiksi sen valitsemista, mitkä järjestelmäsi osat sisällytetään analyysiin), voit välittää nämä eräajotyö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ää longrun-osiota (aikaraja 10 päivää), jos small-osion 3 päivän aikaraja ei riitä. Sen 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 lähteillä:

  • 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 menetelmille, joita asetuksissasi on käytetty.

Lisätietoja

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta