Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

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.

Saatavuus

Seuraavat versiot ovat saatavilla:

  • Puhti: 2.14, 2.14-cuda, 3.0, 3.0-cuda
  • Mahti: 2.14, 3.0, 3.0-cuda
  • 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ö

NAMD:a voidaan ajaa joko CPU:illa tai GPU:illa yhdessä CPU:iden kanssa. GPU-versiot tukevat vain yhden solmun töitä.

Suorituskykyyn liittyviä huomioita

Testit osoittavat, että useilla CPU-solmuilla ajettaessa on hyödyllistä jättää yksi ydin viestintään jokaista tehtävää kohden:

(( namd_threads = SLURM_CPUS_PER_TASK - 1 ))

Tätä suositellaan myös NAMD-käyttöohjeessa. Testaa kuitenkin omalla syötteelläsi.

Varmista, että --ntasks-per-node kerrottuna arvolla --cpus-per-task on 40 (Puhdissa) tai 128 (Mahdissa), eli kaikki solmun ytimet. Kokeile eri suhteita ja valitse optimaalinen.

Alla oleva data näyttää ApoA1-vertailutestin (92k atomia, 2 fs aikasteppi) Mahdissa, missä ns/päivä esitetään varattujen solmujen funktiona ja namd_threads-arvoa vaihdellaan kuten alla olevassa Mahti-skriptissä on asetettu.

NAMD Scaling on Mahti

Data osoittaa myös seuraavat asiat:

  • Optimaaliset asetukset riippuvat järjestelmän ja ajoparametrien lisäksi resurssien määrästä. Tässä järjestelmässä resurssien määrän kasvaessa optimaalinen suorituskyky siirtyy useammista säikeistä tehtävää kohden (15) kohti pienempää säiemäärää tehtävää kohden (3).
  • 1 GPU (+ 10 CPU-ydintä) Puhdissa antaa paremman suorituskyvyn kuin ajo neljällä täydellä Mahti-solmulla. Tämä saavutetaan käyttämällä GPU-resident-tilaa tavallisen GPU-offloadauksen sijaan. Katso lisätietoja NAMD-käyttöoppaasta.
  • Muista, että useampien resurssien käyttö nopeampien tulosten saamiseksi on myös kalliimpaa kulutettujen laskutusyksiköiden (BUs) kannalta. Jotta resursseja ei kulu hukkaan, varmista, 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:.

NAMD 3.0

NAMD3 tarjoaa GPU:illa 2–3 kertaa paremman suorituskyvyn kuin NAMD2, esimerkiksi 160 ns/päivä verrattuna 55 ns/päivä ApoA1-järjestelmällä Puhdissa. Harkitse NAMD3:n käyttöä, jos aiot ajaa GPU:illa. LUMI-G:tä suositellaan laajamittaisiin simulointeihin, koska GPU-resursseja on siellä paremmin saatavilla kuin Puhdissa ja Mahdissa.

Usean GPU:n suorituskyky

Warning-label

Koska GPU-resursseja on Puhdissa ja Mahdissa niukasti, suosittelemme vahvasti ajamaan usean GPU:n NAMD-simulaatiot LUMI-G:llä.

Alla oleva kuvaaja näyttää NAMD 3.0:n skaalautuvuuden Puhdissa, Mahdissa ja LUMI-G:llä. Jotta useilla GPU:illa ajaminen olisi tehokasta, tarvitset yleensä melko suuren järjestelmän, jossa on vähintään useita satoja tuhansia atomeja, kuten alla oleva STMV-tapaus. Tarkista tilanne 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 konfiguraatiotiedoston valinnalla GPUresident on.

NAMD Scaling on GPUs

Eräajokomentosarjojen esimerkkejä

NAMD2:n ja NAMD3:n suoritustiedostojen nimet ovat erilaiset: namd2 ja namd3. Jos aiot käyttää NAMD2:ta, muokkaa alla olevia eräajoesimerkkejä vastaavasti.

Alla oleva skripti pyytää 5 tehtävää solmua kohden ja 8 säiettä tehtävää kohden kahdella täydellä Puhti-solmulla (80 ydintä). Yksi säie tehtävää kohden varataan viestintään.

#!/bin/bash 
#SBATCH --account=<project>
#SBATCH --partition=test
#SBATCH --time=0:10:00
#SBATCH --nodes=2             
#SBATCH --ntasks-per-node=4   # test to find the optimum number
#SBATCH --cpus-per-task=10    # 40/(ntasks-per-node)

module purge
module load gcc/11.3.0
module load openmpi/4.1.4
module load namd/3.0

# 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

Huomaa, että NAMD3 toimii tehokkaasti GPU:illa, ja tämä on yleensä kustannustehokkaampaa kuin ajo useilla pelkkiä CPU:ita käyttävillä solmuilla.

#!/bin/bash 
#SBATCH --account=<project>
#SBATCH --partition=gputest
#SBATCH --time=0:10:00
#SBATCH --ntasks=1     
#SBATCH --cpus-per-task=10    # use at most 10 CPU cores per GPU
#SBATCH --gres=gpu:v100:1

module load namd/3.0-cuda

srun namd3 +p ${SLURM_CPUS_PER_TASK} +setcpuaffinity +devices 0 apoa1.namd > apoa1.out

Alla oleva skripti pyytää 8 tehtävää solmua kohden ja 16 säiettä tehtävää kohden kahdella täydellä Mahti-solmulla (256 ydintä). Yksi säie tehtävää kohden varataan viestintään.

#!/bin/bash
#SBATCH --account=<project>
#SBATCH --partition=test
#SBATCH --time=0:10:00 
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=8   # test to find the optimum number
#SBATCH --cpus-per-task=16    # 128/(ntasks-per-node)

module purge
module load gcc/11.2.0
module load openmpi/4.1.2
module load namd/3.0

# leave one core per process for communication
(( namd_threads = SLURM_CPUS_PER_TASK - 1))

srun namd3 +ppn ${namd_threads} apoa1.namd > apoa1.out

Alla oleva skripti 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 skripti pyytää 8 GCD:tä ja 50 CPU-ydintä. PME:stä johtuvan kuormituksen epätasapainon lieventämiseksi vähemmän CPU-ytimiä osoitetaan sille yksittäiselle GPU-laitteelle, joka suorittaa PME-työn, käyttäen +pmepes-valintaa. STMV-tapauksessa 8 GCD:tä käytettäessä paras suorituskyky saavutetaan osoittamalla 7 ydintä jokaiselle ei-PME-laitteelle ja vain 1 ydin PME-laitteelle. Huomaa, että +p asetetaan CPU-ytimien kokonaismäärään eli 7*7 + 1 = 50. Testaa eri vaihtoehtoja omalla järjestelmälläsi.

#!/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äajot komennolla:

sbatch namd_job.bash

Viitteet

NAMD-lisenssisopimuksessa määritellään, että kaikissa NAMD:lla 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 käytetään NAMD:a, tulee olla mukana 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.

Lisätietoja

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta