-
Amber
Amber
Amber on molekyylidynamiikan ohjelmistopaketti, joka sisältää useita lisätyökaluja kehittyneempään analyysiin ja erityisesti NMR-rakenteiden hienosäätöön.
Saatavuus
| Versio | Saatavilla olevat moduulit |
|---|---|
| 20 | amber/20amber/20-cuda |
| 22 | amber/22amber/22-cuda |
| 24 | amber/24amber/24-cuda |
| Versio | Saatavilla olevat moduulit |
|---|---|
| 20 | amber/20amber/20-cuda |
| 22 | amber/22amber/22-cuda |
| 24 | amber/24amber/24-cuda |
| Versio | Saatavilla olevat moduulit |
|---|---|
| 24 | amber/24-cpuamber/24-gpu |
Lisenssi
Amberia voivat käyttää CSC:n palvelimilla kaikkien voittoa tavoittelemattomien instituuttien ja yliopistojen tutkijat kansallisuudesta tai sijainnista riippumatta. Katso akateemisen lisenssin teksti täältä.
Käyttö
Näet saatavilla olevat versiot ja sen, miten Amber ladataan käyttöön, komennolla:
LUMIssa sinun täytyy lisätä CSC:n moduulit moduulipolkuusi ennen yllä olevan komennon suorittamista:
module load -komento asettaa muuttujan $AMBERHOME ja lisää AmberToolsin
binäärit polkuun. Suorita Amberin tuotantoajot eräjonoissa, katso alla. Hyvin
kevyt järjestelmän valmistelu (sarjamuotoiset AmberTools-ajot, jotka kestävät
muutamia sekunteja ja käyttävät tuskin lainkaan muistia) voidaan tehdä myös
kirjautumissolmulla. Raskaampia analyysejä voidaan ajaa esimerkiksi
interaktiivisessa laskentaistunnossa.
Molekyylidynamiikka-ajot kannattaa suorittaa pmemd.cuda:lla, koska ne ovat
GPU:illa paljon nopeampia kuin CPU:illa. Huomaa, että pmemd.cuda:n käyttö
edellyttää moduulia, jossa on -cuda-pääte. Vastaavasti LUMIssa tulee käyttää
pmemd.hip:iä (tai pmemd.hip.MPI:ä usean GPU:n simulaatioihin), mikä
edellyttää moduulin lataamista -gpu-päätteellä.
Suorita GPU-osioissa vain GPU-tietoisia binäärejä. Jos olet epävarma, tarkista
komennolla seff <slurm_jobid>, että GPU:ita todella käytettiin ja että ajo
oli merkittävästi nopeampi kuin ilman GPU:ita.
Python-moduulit
AmberToolsin mukana toimitetut Python-skriptit ovat saatavilla vain Amber22-moduuleissa Puhdissa ja Mahdissa. Koska AmberTools on kuitenkin saatavilla myös Condan kautta, voit helposti luoda itse näitä skriptejä sisältävän kontitetun ympäristön käyttämällä Tykkyä tai LUMI-konttikäärettä.
Esimerkkieräskriptit Puhdille ja Mahdille
#!/bin/bash
#SBATCH --time=00:10:00
#SBATCH --partition=gputest
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --account=<project>
#SBATCH --gres=gpu:v100:1
# Our tests show that for medium-sized systems the most efficient setup is
# one GPU card and one CPU core.
module purge
module load gcc/9.4.0 openmpi/4.1.4
module load amber/22-cuda
srun pmemd.cuda -O -i mdin -r restrt -x mdcrd -o mdout
#!/bin/bash
#SBATCH --time=00:10:00
#SBATCH --partition=test
#SBATCH --ntasks=1
#SBATCH --account=<project>
# The non-GPU aware binaries, e.g. AmberTools, can be run as batch jobs in
# the following way:
module purge
module load gcc/9.4.0 openmpi/4.1.4
module load amber/22
srun paramfit -i Job_Control.in -p prmtop -c mdcrd -q QM_data.dat
#!/bin/bash
#SBATCH --time=00:10:00
#SBATCH --partition=gputest
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --account=<project>
#SBATCH --gres=gpu:a100:1
module purge
module load gcc/9.4.0 openmpi/4.1.2
module load amber/22-cuda
srun pmemd.cuda -O -i mdin.GPU -o mdout.GPU -p Cellulose.prmtop -c Cellulose.inpcrd
Huomio
pmemd.cuda (ja pmemd.hip LUMIssa) on paljon nopeampi kuin pmemd.MPI,
joten käytä CPU-versiota vain, jos et voi käyttää GPU-versiota. Jos Amberin
suorituskyky ei ole riittävä, harkitse GROMACSin käyttöä,
sillä se pystyy yleensä skaalautumaan pidemmälle (eli hyödyntämään enemmän
CPU- ja/tai GPU-resursseja). Mieti myös, tarvitsetko todella nopeutta vai
vain paljon näytteistystä. Nopeutettua näytteistystä voidaan saavuttaa myös
ensemble-simulaatioilla, joissa useita riippumattomia trajektoreita
(esimerkiksi sama järjestelmä tasapainotettuna eri alkuarvoisista
nopeuksista) ajetaan samanaikaisesti. Lisätietoja on osiossa
Amberin suuren läpimenon simuloinnit.
Jos haluat käyttää useampaa kuin yhtä GPU:ta, tee skaalaustestejä
varmistaaksesi, että ajot todella nopeutuvat, ja käytä binääriä, jossa on
.cuda.MPI- tai .hip.MPI-pääte. Nyrkkisääntönä on, että kun resurssit
kaksinkertaistetaan, ajoajan pitäisi lyhentyä vähintään 1,5-kertaisesti.
Yleisiä suorituskykytietoja löytyy
Amberin vertailuskaalauksen tiedoista.
Tyypillisesti paras tehokkuus saavutetaan yhdellä GPU:lla.
Esimerkit GPU-eräskripteistä LUMIin
Amber voidaan ladata käyttöön LUMIssa seuraavasti:
#!/bin/bash
#SBATCH --partition=small-g
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --gpus-per-node=1
#SBATCH --time=01:00:00
#SBATCH --account=<project>
module use /appl/local/csc/modulefiles
module load amber/24-gpu
srun pmemd.hip -O -i mdin.GPU -o mdout.GPU -p Cellulose.prmtop -c Cellulose.inpcrd
#!/bin/bash
#SBATCH --partition=standard-g
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=8
#SBATCH --gpus-per-node=8
#SBATCH --time=01:00:00
#SBATCH --account=<project>
module use /appl/local/csc/modulefiles
module load amber/24-gpu
export MPICH_GPU_SUPPORT_ENABLED=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 pmemd.hip.MPI -O -i mdin.GPU -o mdout.GPU -p Cellulose.prmtop -c Cellulose.inpcrd
Amberin suorituskykyvertailu CPU:illa (Mahti) ja GPU:illa (Puhti, Mahti, LUMI) on esitetty alla olevassa pylväskaaviossa. Huomaa, kuinka yhden GPU:n suorituskyky kaikissa järjestelmissä on kertaluokkaa parempi kuin kokonaisen Mahdin CPU-solmun (128 ydintä). Huomaa myös, että Amber ei yleensä pysty skaalautumaan tehokkaasti useille GPU:ille, ellei järjestelmäsi ole hyvin suuri (>1 miljoona hiukkasta).

GPU-sidonta LUMIssa
Usealla GPU:lla ajaminen LUMIssa hyötyy GPU-sidonnasta. Yllä olevassa
esimerkissä bittimaskia käytetään sitomaan CPU-ytimet optimaalisiin
(yhdistettyihin) GPU:ihin sekä sulkemaan pois ensimmäinen CPU-ydin
jokaisessa 8 ytimen ryhmässä (nämä on varattu käyttöjärjestelmälle eivätkä
siksi ole käytettävissä laskentaan). Taustatietoja ja lisäohjeita löytyy
LUMI-dokumentaatiosta.
Huomaa, että CPU/GPU-sidonta on mahdollista vain, kun varataan kokonaisia
solmuja (standard-g tai --exclusive).
Yleisiä eräskriptiesimerkkejä LUMI-G:lle ja LUMI-C:lle on saatavilla LUMI-dokumentaatiossa.
Interaktiiviset ajot
Joskus pieniä ajoja, kuten järjestelmän valmisteluja, on kätevämpää suorittaa interaktiivisesti. Interaktiiviset eräajot estävät kirjautumissolmun liiallisen kuormituksen, ja niitä tulisi käyttää tällaisissa tapauksissa. Voit pyytää komentotulkin laskentasolmulta Puhdin/Mahdin selainkäyttöliittymästä, komentoriviltä komennolla sinteractive tai manuaalisesti:
Kun sinulle on varattu resurssit (saatat joutua odottamaan), voit suorittaa
esimerkiksi paramfit-tehtävän suoraan komennolla:
Amberin suuren läpimenon laskenta
Samoin kuin GROMACSin multidir, Amberissa on sisäänrakennettu "multi-pmemd"-toiminnallisuus, jonka avulla voit ajaa useita MD-simulaatioita yhden Slurm-varauksen sisällä. Tämä on tehokas vaihtoehto tilanteissa, joissa haluat ajaa monta samankaltaista mutta toisistaan riippumatonta simulaatiota. Tyypillisiä käyttötapauksia ovat tehostetun näytteistyksen menetelmät, kuten replica exchange MD. Koska Amber-simulaatiot eivät myöskään yleensä skaalaudu kovin hyvin useille GPU:ille, monisimulaatioita voidaan käyttää suoraviivaisena menetelmänä näytteistyksen nopeuttamiseen käynnistämällä useita eri tavoin alustettuja kopioita järjestelmästäsi siten, että ne kaikki ajavat samanaikaisesti yhdellä GCD:llä kukin. Jos järjestelmäsi on hyvin pieni eikä siksi pysty hyödyntämään GCD:n koko kapasiteettia, voi olla järkevää ajaa useita replikoita samalla GCD:llä tehokkuuden maksimoimiseksi.
Huomio
GPU-resurssit Puhdissa ja Mahdissa ovat niukat, joten suosittelemme ajamaan laajamittaiset multi-pmemd-simulaatiot vain LUMIssa. LUMI-G:ssä on saatavilla valtava GPU-kapasiteetti, joka on myös edullisempi BU-yksiköiden näkökulmasta verrattuna Puhtiin ja Mahtiin.
Alla on esimerkki multi-pmemd-eräskriptistä LUMI-G:lle.
#!/bin/bash
#SBATCH --partition=standard-g
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=8
#SBATCH --gpus-per-node=8
#SBATCH --time=01:00:00
#SBATCH --account=<project>
module use /appl/local/csc/modulefiles
module load amber/24-gpu
export MPICH_GPU_SUPPORT_ENABLED=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 pmemd.hip.MPI -ng 16 -groupfile groupfile
Tässä esimerkissä 16 kopiota järjestelmästä ajetaan samanaikaisesti yhden
Amber-ajon sisällä, ja kukin käyttää yhtä GCD:tä. Yhteensä pyydetään 2 solmua,
koska jokainen LUMI-G:n solmu sisältää 8 GCD:tä (4 GPU:ta). Kunkin simulaation
syöte-, tuloste-, topologia- ja koordinaattitiedostot määritellään niin
sanotussa groupfile-tiedostossa:
-O -i mdin.GPU -o mdout000.GPU -p system000.prmtop -c system000.inpcrd
-O -i mdin.GPU -o mdout001.GPU -p system001.prmtop -c system001.inpcrd
-O -i mdin.GPU -o mdout002.GPU -p system002.prmtop -c system002.inpcrd
-O -i mdin.GPU -o mdout003.GPU -p system003.prmtop -c system003.inpcrd
-O -i mdin.GPU -o mdout004.GPU -p system004.prmtop -c system004.inpcrd
-O -i mdin.GPU -o mdout005.GPU -p system005.prmtop -c system005.inpcrd
-O -i mdin.GPU -o mdout006.GPU -p system006.prmtop -c system006.inpcrd
-O -i mdin.GPU -o mdout007.GPU -p system007.prmtop -c system007.inpcrd
-O -i mdin.GPU -o mdout008.GPU -p system008.prmtop -c system008.inpcrd
-O -i mdin.GPU -o mdout009.GPU -p system009.prmtop -c system009.inpcrd
-O -i mdin.GPU -o mdout010.GPU -p system010.prmtop -c system010.inpcrd
-O -i mdin.GPU -o mdout011.GPU -p system011.prmtop -c system011.inpcrd
-O -i mdin.GPU -o mdout012.GPU -p system012.prmtop -c system012.inpcrd
-O -i mdin.GPU -o mdout013.GPU -p system013.prmtop -c system013.inpcrd
-O -i mdin.GPU -o mdout014.GPU -p system014.prmtop -c system014.inpcrd
-O -i mdin.GPU -o mdout015.GPU -p system015.prmtop -c system015.inpcrd
Katso lisätietoja multi-pmemd:stä Amberin käyttöoppaasta.
Viitteet
Kun viittaat Amberiin tai AmberToolsiin, käytä seuraavaa:
D.A. Case, H.M. Aktulga, K. Belfon, I.Y. Ben-Shalom, J.T. Berryman, S.R. Brozell, D.S. Cerutti, T.E. Cheatham, III, G.A. Cisneros, V.W.D. Cruzeiro, T.A. Darden, N. Forouzesh, M. Ghazimirsaeed, G. Giambaşu, T. Giese, M.K. Gilson, H. Gohlke, A.W. Goetz, J. Harris, Z. Huang, S. Izadi, S.A. Izmailov, K. Kasavajhala, M.C. Kaymak, A. Kovalenko, T. Kurtzman, T.S. Lee, P. Li, Z. Li, C. Lin, J. Liu, T. Luchko, R. Luo, M. Machado, M. Manathunga, K.M. Merz, Y. Miao, O. Mikhailovskii, G. Monard, H. Nguyen, K.A. O'Hearn, A. Onufriev, F. Pan, S. Pantano, A. Rahnamoun, D.R. Roe, A. Roitberg, C. Sagui, S. Schott-Verdugo, A. Shajan, J. Shen, C.L. Simmerling, N.R. Skrynnikov, J. Smith, J. Swails, R.C. Walker, J. Wang, J. Wang, X. Wu, Y. Wu, Y. Xiong, Y. Xue, D.M. York, C. Zhao, Q. Zhu, and P.A. Kollman (2024), Amber 2024, University of California, San Francisco.
Lisätietoja
Amberin kotisivulla on laaja käyttöopas ja hyödyllisiä opetusohjeita.