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.

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/20
amber/20-cuda
22 amber/22
amber/22-cuda
24 amber/24
amber/24-cuda
Versio Saatavilla olevat moduulit
20 amber/20
amber/20-cuda
22 amber/22
amber/22-cuda
24 amber/24
amber/24-cuda
Versio Saatavilla olevat moduulit
24 amber/24-cpu
amber/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:

module spider amber

LUMIssa sinun täytyy lisätä CSC:n moduulit moduulipolkuusi ennen yllä olevan komennon suorittamista:

module use /appl/local/csc/modulefiles

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:

module use /appl/local/csc/modulefiles
module load amber/24-gpu
# or
module load amber/24-cpu
#!/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).

Amber scaling on GPUs and CPUs on Puhti, Mahti and LUMI

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:

srun -n 1 -p test -t 00:05:00 --account=<project> --pty /bin/bash

Kun sinulle on varattu resurssit (saatat joutua odottamaan), voit suorittaa esimerkiksi paramfit-tehtävän suoraan komennolla:

paramfit -i Job_Control.in -p prmtop -c mdcrd -q QM_data.dat

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:

groupfile
-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.

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta