-
AMS
AMS
Amsterdam Modeling Suite (AMS) on kattava laskennallisen kemian ohjelmistopaketti. Sen mukana tulee graafinen käyttöliittymä, AMS-GUI, joka tarjoaa intuitiivisen tavan simulaatioiden määrittämiseen, ajamiseen ja analysointiin.
Saatavuus
- Puhti: AMS, versio 2024.102, 2025.105
- Mahti: AMS, versio 2024.102, 2025.105
- Roihu-CPU: AMS, versio 2026.104
Lisenssi
- Lisenssi oikeuttaa ohjelmiston käyttöön kaikki akateemiset tutkijat ja opiskelijat akateemisessa oppilaitoksessa, jossa "Academic" tarkoittaa "tutkintoja myöntävään oppilaitokseen kuuluvaa".
- Lisenssi ei sisällä oikeutta ohjelmiston käyttöön valtion laboratorioiden työntekijöille tai muiden ei-akateemisten voittoa tavoittelemattomien tutkimuslaitosten työntekijöille.
- Lisenssi sallii vain voittoa tavoittelemattoman ei-kaupallisen käytön.
- Lisenssi sulkee pois kaiken sopimustutkimuksen, rojaltituottoa tuottavan toiminnan ja muun rahalliseen hyötyyn johtavan toiminnan.
- Tutkimusryhmät, jotka tarvitsevat AMS-ohjelmistopaketin muita moduuleja, voivat hankkia itselleen lisenssin ohjelmien ajamiseen CSC:n tietokoneilla.
Käyttö
Alusta AMS Puhdissa ja Mahdissa:
Alusta AMS Roihu-CPU:ssa:
Esimerkkieräajokomennostot
Huomaa
Erityisesti jotkin ominaisuuslaskennat voivat olla hyvin levy-I/O-intensiivisiä. Tällaiset ajot hyötyvät nopean paikallisen tallennustilan (NVMe) käytöstä Puhdissa, Mahdissa tai Roihussa. Paikallislevyn käyttö tällaisissa ajoissa vähentää myös Lustre-rinnakkaistiedostojärjestelmän kuormitusta.
#!/bin/bash
#SBATCH --partition=test
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=40 # MPI tasks per node
#SBATCH --account=yourproject # insert here the project to be billed
#SBATCH --time=00:15:00 # time as `hh:mm:ss`
#SBATCH --mem-per-cpu=1500 # requested memory per process in MB
module purge
module load ams/2025.105
export SCM_TMPDIR=$PWD/$SLURM_JOB_ID
mkdir -p $SCM_TMPDIR
# Create an example input file from the examples
sed '1,4d;$d;/Print/,/End/d' $AMSHOME/examples/Benchmarks/ADF/Si35_TZ2P/Si35_TZ2P.run > ./Si35_TZ2P.inp
"$AMSBIN/ams" < ./Si35_TZ2P.inp > ./Si35_TZ2P.log
#!/bin/bash
#SBATCH --partition=large
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=40 # MPI tasks per node
#SBATCH --account=yourproject # insert here the project to be billed
#SBATCH --time=00:15:00 # time as `hh:mm:ss`
#SBATCH --mem-per-cpu=1500 # requested memory per process in MB
#SBATCH --gres=nvme:100 # requested local disk space in GB
module load ams/2025.105
export SCM_TMPDIR=$LOCAL_SCRATCH
# Create an example input file from the examples
sed '1,4d;$d;/Print/,/End/d' $AMSHOME/examples/Benchmarks/ADF/Si35_TZ2P/Si35_TZ2P.run > ./Si35_TZ2P.inp
"$AMSBIN/ams" < ./Si35_TZ2P.inp > ./Si35_TZ2P.log
#!/bin/bash
#SBATCH --partition=medium
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=128 # MPI tasks per node
#SBATCH --account=yourproject # insert here the project to be billed
#SBATCH --time=00:20:00 # time as `hh:mm:ss`
module purge
module load ams/2025.105
export SCM_TMPDIR=$PWD/$SLURM_JOB_ID
mkdir -p $SCM_TMPDIR
# Create an example input file from the examples
sed '1,4d;$d;/Print/,/End/d' $AMSHOME/examples/Benchmarks/ADF/Si35_TZ2P/Si35_TZ2P.run > ./Si35_TZ2P.inp
"$AMSBIN/ams" < ./Si35_TZ2P.inp > ./Si35_TZ2P.log
#!/bin/bash
#SBATCH --partition=small
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=128 # MPI tasks per node
#SBATCH --account=yourproject # insert here the project to be billed
#SBATCH --time=00:20:00 # time as `hh:mm:ss`
#SBATCH --gres=nvme:100
module purge
module load ams/2025.105
export SCM_TMPDIR=$LOCAL_SCRATCH
mkdir -p $SCM_TMPDIR
# Create an example input file from the examples
sed '1,4d;$d;/Print/,/End/d' $AMSHOME/examples/Benchmarks/ADF/Si35_TZ2P/Si35_TZ2P.run > ./Si35_TZ2P.inp
"$AMSBIN/ams" < ./Si35_TZ2P.inp > ./Si35_TZ2P.log
#!/bin/bash
#SBATCH --partition=small
#SBATCH --nodes=1
#SBATCH --ntasks=128 # MPI tasks
#SBATCH --account=yourproject # insert here the project to be billed
#SBATCH --time=00:20:00 # time as `hh:mm:ss`
#SBATCH --mem-per-cpu=1500M # requested memory per process
module purge
module load ams/2026.104
export SCM_TMPDIR=$PWD/$SLURM_JOB_ID
mkdir -p $SCM_TMPDIR
# Create an example input file from the examples
sed '1,4d;$d;/Print/,/End/d' $AMSHOME/examples/Benchmarks/ADF/Si35_TZ2P/Si35_TZ2P.run > ./Si35_TZ2P.inp
"$AMSBIN/ams" < ./Si35_TZ2P.inp > ./Si35_TZ2P.log
Ydinten määrän valinta Roihu-CPU:ssa
Roihun M-solmuissa on 384 ydintä, mutta ADF ei skaalaudu tehokkaasti koko solmulle tyypillisissä ajoissa. Alla oleva taulukko näyttää Si35_TZ2P- vertailuajon skaalautuvuuden — huomaa, että skaalautuvuus riippuu vahvasti järjestelmästä ja mallista, joten näitä lukuja kannattaa käyttää ohjeellisina eikä absoluuttisina arvoina. 128–192 ydintä tarjoaa parhaan tasapainon tehokkuuden ja nopeuden välillä tässä tapauksessa. Tämän yli seinäkelloaika paranee tuskin lainkaan, kun taas muistinkäyttö ja laskutuskustannukset kasvavat merkittävästi. Koko solmun ajoissa käytä paikallista NVMe-väliaikaistallennusta (katso "Roihu-CPU, local disk" -välilehdet), jotta vältät AMS:n rank-kohtaisten väliaikaistiedostojen aiheuttaman I/O-kilpailun.
| MPI ranks | CPU efficiency | Wall time |
|---|---|---|
| 48 | ~95% | ~437 s |
| 96 | ~91% | ~385 s |
| 128 | ~90% | ~302 s |
| 192 | ~85% | ~252 s |
| 384 (full node) | ~75% | ~247 s |
#!/bin/bash
#SBATCH --partition=small
#SBATCH --nodes=1
#SBATCH --ntasks=128 # MPI tasks
#SBATCH --account=yourproject # insert here the project to be billed
#SBATCH --time=00:20:00 # time as `hh:mm:ss`
#SBATCH --mem-per-cpu=1500M # requested memory per process
module purge
module load ams/2026.104
# On Roihu, local NVMe scratch is available via $TMPDIR (no --gres flag needed)
export SCM_TMPDIR=$TMPDIR/ams_$SLURM_JOB_ID
mkdir -p $SCM_TMPDIR
# Create an example input file from the examples
sed '1,4d;$d;/Print/,/End/d' $AMSHOME/examples/Benchmarks/ADF/Si35_TZ2P/Si35_TZ2P.run > ./Si35_TZ2P.inp
"$AMSBIN/ams" < ./Si35_TZ2P.inp > ./Si35_TZ2P.log
Katso myös
Katso "Roihu-CPU"-välilehdeltä suositukset ydinten määrälle. Jos koko solmun ajo vaatii maksimaalista I/O-suorituskykyä, harkitse hajautetun NVMe:n vaihtoehtoa "Roihu-CPU, disaggregated NVMe" -välilehdellä.
Paikallisen NVMe-levytilan enimmäismäärä, joka on käytettävissä hakemistossa $TMPDIR, riippuu Slurm-osiosta ja solmutyypistä.
Jaetuilla solmuilla (esim. small- ja longrun-osioissa) käytettävissäsi on 20 GiB väliaikaistallennustilaa.
Koko solmuilla (medium- ja large-osiot) käytettävissäsi on 600 GiB paikallista tallennustilaa.
Katso lisätietoja Roihun tallennusdokumentaatiosta.
Hajautettu NVMe Roihussa
Roihu tarjoaa keskitetyn 307,2 TB:n nopean NVMe-tallennuspoolin, jota palvellaan
InfiniBand NDR:n yli. I/O-intensiivisissä koko solmun ajoissa tämä voi olla
suorituskykyisempi kuin sekä Lustre scratch että solmukohtainen $TMPDIR.
Se vaatii koko solmun osion (medium tai large) ja #BB_LUA burst-buffer
-direktiivin — tuki jaetuille solmuille ei ole vielä saatavilla. Katso
Roihun levyalueet
täydet tiedot.
#!/bin/bash
#SBATCH --partition=medium
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=384 # full node required for disaggregated NVMe
#SBATCH --account=yourproject # insert here the project to be billed
#SBATCH --time=00:20:00 # time as `hh:mm:ss`
#BB_LUA SBF storagesize=100GB path=/run/sbb/<user>
module purge
module load ams/2026.104
# Disaggregated NVMe is mounted at the path specified in #BB_LUA above
export SCM_TMPDIR=/run/sbb/<user>/ams_$SLURM_JOB_ID
mkdir -p $SCM_TMPDIR
# Create an example input file from the examples
sed '1,4d;$d;/Print/,/End/d' $AMSHOME/examples/Benchmarks/ADF/Si35_TZ2P/Si35_TZ2P.run > ./Si35_TZ2P.inp
"$AMSBIN/ams" < ./Si35_TZ2P.inp > ./Si35_TZ2P.log
Si35_TZ2P:n vertailuajotulokset 384 rankilla
Vertailuajot osoittivat, että hajautettu NVMe tarjoaa parhaan suorituskyvyn
koko solmun ADF-ajoille ja päihittää sekä Lustre scratchin että
solmukohtaisen $TMPDIR:n:
| Scratch location | Wall time | CPU efficiency | Billing units |
|---|---|---|---|
| Lustre scratch | ~247 s | ~75% | ~20 BU |
$TMPDIR (node-local) |
~230 s | ~91% | ~19 BU |
| Disaggregated NVMe | ~190 s | ~89% | ~15 BU |
Huomaa, että skaalautuvuus riippuu vahvasti järjestelmästä ja mallista. Katso "Roihu-CPU"-välilehdeltä ohjeita ydinten määrän valintaan.
AMS-GUI
AMS:n mukana tulee integroitu graafinen käyttöliittymä, AMS-GUI, jonka avulla mallinnustehtävien määrittäminen, ajaminen ja analysointi on helppoa. Voit testata käyttöliittymää Puhdin selainkäyttöliittymän kautta, mutta laajempaan käyttöön suosittelemme asentamaan käyttöliittymän omalle kannettavalle tietokoneellesi tai työasemallesi. Yksityiskohtaiset ohjeet löydät AMS-GUI-dokumentaatiosta.
Viitteet
Käytöstäsi riippuen varmista, että viittaat asianmukaisesti AMS-ajuriin, käytettyihin laskentamoottoreihin sekä ominaisuuksien viitteisiin. Lisätietoja on asiaankuuluvassa AMS-dokumentaatiossa