NAMD
NAMD on rinnakkainen molekyylidynamiikkaohjelmisto, joka on suunniteltu suurten biomolekulaaristen järjestelmien tehokkaaseen simulointiin. Ohjelmistoa kehittää ja jakelee Illinoisin yliopiston Beckman-instituutin Theoretical and Computational Biophysics Group.
Saatavilla
Seuraavat versiot ovat saatavilla:
- Roihu-CPU: 3.0.2, 3.0.3
- Roihu-GPU: 3.0.3
- LUMI: 3.0.2-cpu, 3.0.2-gpu
Lisenssi
CSC on hankkinut laskentakeskus-lisenssin, joka sallii käytön ei-kaupalliseen tutkimukseen. Kaupallista käyttöä varten ota yhteyttä osoitteeseen namd@ks.uiuc.edu. Katso myös käytön mainitseminen jäljempänä.
Käyttö
NAMDia voidaan ajaa joko suorittimilla tai GPU:illa ja suorittimilla. GPU-versiot tukevat vain yhden solmun töitä.
Näet järjestelmässäsi saatavilla olevat NAMD-versiot komennolla:
Lataa sitten haluamasi versio (esimerkiksi Roihu-CPU:ssa):
Suorituskykyyn liittyviä huomioita
Testit osoittavat, että useilla CPU-solmuilla ajettaessa on hyödyllistä jättää yksi ydin viestintään kullekin tehtävälle:
Tätä suositellaan myös NAMD-käsikirjassa. Testaa kuitenkin omalla syötteelläsi.
Varmista, että --ntasks-per-node kerrottuna arvolla --cpus-per-task on 384
(Roihu-CPU) tai 128 (LUMI-C), eli kaikki solmun ytimet. Kokeile eri suhteita ja valitse optimaalinen.
- Optimaaliset asetukset riippuvat resurssien määrästä sekä järjestelmä- ja ajoasetuksista. Kokeile eri
namd_threads-arvoja (kuten alla olevassa Roihu-skriptissä on asetettu) löytääksesi järjestelmällesi parhaan tasapainon. - Muista, että useampien resurssien käyttäminen tulosten saamiseksi nopeammin on myös kalliimpaa kulutettujen laskutusyksiköiden (BUs) kannalta. Vältä resurssien tuhlaamista varmistamalla, että työsi todella hyötyy ytimien määrän kasvattamisesta. Nopeutuksen tulisi olla vähintään 1,5-kertainen, kun resurssien määrä kaksinkertaistetaan.
- Testataksesi omaa järjestelmääsi aja esimerkiksi 10 000 dynamiikka-askelta ja etsi tulosteesta rivi
Benchmark time:.
Jotta ajo useilla GPU:illa olisi tehokasta, tarvitset yleensä melko suuren järjestelmän, jossa on vähintään useita satoja tuhansia atomeja. Tarkista asia omalla järjestelmälläsi ja katso NAMD-verkkosivustolta saatavilla olevat ominaisuudet, joiden avulla voit maksimoida usean GPU:n ajojen suorituskyvyn. Erityisen hyödyllistä on ottaa käyttöön GPU-resident-tila asettamalla asetustiedostoon valinta GPUresident on.
Info
Suosittelemme tällä hetkellä ajamaan usean GPU:n NAMD-simulaatiot LUMI-G:llä, jossa GPU-resursseja on runsaammin saatavilla kuin Roihussa.
Eräajokomentosarjojen esimerkkejä
Alla oleva komentosarja pyytää 24 tehtävää solmua kohden ja 16 säiettä tehtävää kohden yhdelle täydelle Roihu-solmulle (384 ydintä). Yksi säie tehtävää kohden varataan viestintään.
#!/bin/bash
#SBATCH --job-name=apoa1-namd
#SBATCH --account=<project>
#SBATCH --partition=medium
#SBATCH --time=00:20:00
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=24
#SBATCH --cpus-per-task=16
module purge
module load namd/3.0.2
# leave one core per process for communication
(( namd_threads = SLURM_CPUS_PER_TASK - 1 ))
srun namd3 +ppn ${namd_threads} apoa1.namd > apoa1.out
# while NAMD suggests using 1 thread per task for communication
# (as above), all cores for computing can be tested with:
# srun namd3 +ppn ${SLURM_CPUS_PER_TASK} apoa1.namd > apoa1.out
Alla oleva komentosarja pyytää 1 GCD:n ja 7 CPU-ydintä. Huomaa, että jokainen LUMIn GPU-solmu sisältää 4 GPU:ta, jotka puolestaan koostuvat 2 GCD:stä (graphics compute die), jotka Slurm tunnistaa yksittäisiksi GPU-laitteiksi. Lisäksi solmua kohden on käytettävissä 56 CPU-ydintä, joten käytä enintään 7 ydintä varattua GCD:tä kohden.
#!/bin/bash
#SBATCH --partition=small-g
#SBATCH --account=<project>
#SBATCH --time=00:15:00
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=7
#SBATCH --gpus-per-node=1
module use /appl/local/csc/modulefiles
module load namd/3.0.2-gpu
srun namd3 +p ${SLURM_CPUS_PER_TASK} +setcpuaffinity +devices 0 stmv.namd > stmv.out
Alla oleva komentosarja pyytää 8 GCD:tä ja 50 CPU-ydintä. PME:stä johtuvan kuormituksen epätasapainon lieventämiseksi yhdelle GPU-laitteelle, joka suorittaa PME-työn, osoitetaan vähemmän CPU-ytimiä +pmepes-valinnalla. STMV-tapauksessa, jossa käytetään 8 GCD:tä, paras suorituskyky saavutetaan osoittamalla 7 ydintä kullekin muulle kuin PME-laitteelle ja vain 1 ydin PME-laitteelle. Huomaa, että +p asetetaan CPU-ytimien kokonaismäärään eli 7*7 + 1 = 50. Testaa järjestelmällesi eri vaihtoehtoja.
#!/bin/bash
#SBATCH --partition=standard-g
#SBATCH --account=<project>
#SBATCH --time=00:15:00
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=50
#SBATCH --gpus-per-node=8
module use /appl/local/csc/modulefiles
module load namd/3.0.2-gpu
srun namd3 +p ${SLURM_CPUS_PER_TASK} +pmepes 1 +setcpuaffinity +devices 0,1,2,3,4,5,6,7 stmv.namd > stmv.out
Lähetä eräajotyöt komennolla:
Viitteet
NAMD-lisenssisopimuksessa määritellään, että kaikissa NAMDilla saaduissa raporteissa tai julkaistuissa tuloksissa on mainittava sen käyttö ja annettava tunnustus kehittäjille seuraavasti:
NAMD was developed by the Theoretical and Computational Biophysics Group in the Beckman Institute for Advanced Science and Technology at the University of Illinois at Urbana-Champaign.
Lisäksi kaikissa julkaistuissa töissä, joissa hyödynnetään NAMDia, tulee olla seuraava viite:
James C. Phillips, David J. Hardy, Julio D. C. Maia, John E. Stone, Joao V. Ribeiro, Rafael C. Bernardi, Ronak Buch, Giacomo Fiorin, Jerome Henin, Wei Jiang, Ryan McGreevy, Marcelo C. R. Melo, Brian K. Radak, Robert D. Skeel, Abhishek Singharoy, Yi Wang, Benoit Roux, Aleksei Aksimentiev, Zaida Luthey-Schulten, Laxmikant V. Kale, Klaus Schulten, Christophe Chipot, and Emad Tajkhorshid. Scalable molecular dynamics on CPU and GPU architectures with NAMD. Journal of Chemical Physics, 153:044130, 2020. https://doi.org/10.1063/5.0014475
Lisäksi sähköisten dokumenttien tulee sisältää suora linkki viralliselle NAMD-sivulle.