-
MOLPRO
MOLPRO
MOLPRO on ohjelmistopaketti, joka on suunnattu tarkkoihin ab initio -kvanttikemian laskuihin. Ohjelmassa painotetaan erittäin tarkkoja laskelmia, ja elektronikorrelaatio-ongelmaa käsitellään laajasti moniviitekonfiguraatiointeraktion, coupled cluster -menetelmien ja niihin liittyvien menetelmien avulla.
Saatavuus
- Puhti: 2024.3
- Mahti: 2024.3
- Roihu-CPU: 2025.4, 2026.1 (oletus)
Lisenssi
- Ohjelmiston käyttö on rajoitettu ei-kaupalliseen tutkimukseen.
Käyttö
Alusta MOLPRO Puhdissa tai Mahdissa:
Roihussa oletusversio on 2026.1:
Molpro on käännetty Global Arrays -työkalupakilla (--with-mpi-pr), joka
varaa yhden apuprosessin solmua kohden rinnakkaisia MPI-ajoja varten.
Note
Vaikka jotkin koodin osat tukevat jaetun muistin rinnakkaisuutta (OpenMP), sen käyttöä ei yleisesti suositella.
Esimerkkiajoskriptit
Note
Aaltofunktiopohjaiset korrelaatiomenetelmät, sekä yhden viitteen että moniviitteen menetelmät, tuottavat usein huomattavan määrän levy-I/O:ta. Työn suorituskyvyn maksimoimiseksi ja Lustre-rinnakkaistiedostojärjestelmän ylimääräisen kuormituksen välttämiseksi on suositeltavaa käyttää paikallista levyä silloin, kun se on saatavilla.
#!/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
module purge
module load molpro/2024.3
export MOLPRO_TMP=$PWD/MOLPRO_TMP_$SLURM_JOB_ID
mkdir -p $MOLPRO_TMP
$MOLPROP -d$MOLPRO_TMP -I$MOLPRO_TMP -W$PWD test.com
rm -rf $MOLPRO_TMP
#!/bin/bash
#SBATCH --partition=large
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=40
#SBATCH --account=yourproject # insert here the project to be billed
#SBATCH --time=00:15:00 # time as hh:mm:ss
#SBATCH --gres=nvme:100 # requested local disk space in GB
module purge
module load molpro/2024.3
export MOLPRO_TMP=$LOCAL_SCRATCH/MOLPRO_TMP_$SLURM_JOB_ID
mkdir -p $MOLPRO_TMP
$MOLPROP -d$MOLPRO_TMP -I$MOLPRO_TMP -W$PWD test.com
rm -rf $MOLPRO_TMP
#!/bin/bash
#SBATCH --partition=test
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=16
#SBATCH --cpus-per-task=8
#SBATCH --account=yourproject # insert here the project to be billed
#SBATCH --time=0:10:00 # time as hh:mm:ss
# set --ntasks-per-node=X and --cpus-per-task=Y so that X * Y = 128
module purge
module load molpro/2024.3
export MOLPRO_TMP=$PWD/MOLPRO_TMP_$SLURM_JOB_ID
mkdir -p $MOLPRO_TMP
$MOLPROP -d$MOLPRO_TMP -I$MOLPRO_TMP -W$PWD test.com
rm -rf $MOLPRO_TMP
Roihussa työt on lähetettävä CPU-kirjautumissolmulta (roihu-cpu).
Täydellinen luettelo käytettävissä olevista partitioista ja niiden rajoista
löytyy sivulta
Roihun eräajopartiot.
Useimmat Molpro-työt ajetaan small- (enintään 72 h) tai longrun-
(enintään 10 päivää) partitioissa, jotka molemmat tukevat enintään
1500 GiB per työ M- ja L-solmuilla, joissa CPU- ja muistiresurssit
varataan toisistaan riippumatta (--mem-per-cpu).
hugemem- ja hugemem_longrun-partitiot tarjoavat pääsyn XL-solmuihin,
joissa on enintään 6037 GiB muistia, mutta niissä käytetään kiinteää
muistia per ydin -varausta — et voi asettaa --mem-per-cpu-arvoa niissä
riippumattomasti.
Note
Paikallinen NVMe-levy ei ole vielä saatavilla Roihun tavallisille M-solmutöille. Scratch-I/O ohjautuu Lustreen, joka on merkittävästi nopeampi kuin Puhdissa tai Mahdissa. NVMe-tuki otetaan käyttöön tulevassa päivityksessä.
Perusesimerkki — small- ja longrun-partitioissa (M- ja L-solmut)
CPU- ja muistiresurssit varataan toisistaan riippumatta. Aseta vain
--mem-per-cpu vastaamaan syötetiedostosi memory-direktiiviä.
Ytimien alivarausta ei tarvita:
#!/bin/bash
#SBATCH --partition=small # see batch-job-partitions for all options
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=12
#SBATCH --mem-per-cpu=8000 # MB; 1000 MW * 8 / 1 core = 8000 MB/cpu
#SBATCH --account=yourproject
#SBATCH --time=02:00:00
module purge
module load molpro/2026.1
export MOLPRO_TMP=$PWD/MOLPRO_TMP_$SLURM_JOB_ID
mkdir -p $MOLPRO_TMP
$MOLPROP -n $SLURM_NTASKS -d$MOLPRO_TMP -I$MOLPRO_TMP -W$PWD test.com
rm -rf $MOLPRO_TMP
Ytimien alivaraus — vain hugemem- ja hugemem_longrun-partitioissa
hugemem- ja hugemem_longrun-partitiot (XL-solmut, enintään 6037 GiB)
käyttävät kiinteää muistia per ydin -varausta (varaustyyppi C). Ainoa tapa
kasvattaa muistia MPI-tehtävää kohden on varata useita ytimiä tehtävää
kohden --cpus-per-task-asetuksella. Aseta --ntasks-per-node=X ja
--cpus-per-task=Y siten, että niiden tulo ei ylitä arvoa 128
(hugemem-partition ydinraja). Huomaa, että yksi MPI-tehtävä per solmu
kuluu Global Arrays -apuprosessiin, joten todellinen työtehtävien määrä on
--ntasks-per-node - 1.
Molpron memory-direktiivin sovittaminen Slurm-resursseihin
memory-direktiivi määrittää muistin työntekijä-MPI-prosessia kohden
sanoina (1 sana = 8 tavua), joten pääte m tarkoittaa MW:tä
(megasanoja). Vastaava --mem-per-cpu-arvo riippuu partition tyypistä:
small/longrun(tyyppi R,--cpus-per-task=1):--mem-per-cpu (MB) = memory_in_MW × 8hugemem/hugemem_longrun(tyyppi C,--cpus-per-task=Y):--mem-per-cpu (MB) = memory_in_MW × 8 / --cpus-per-task
Esimerkiksi memory,1000,m vaatii asetuksella --cpus-per-task=1
arvon --mem-per-cpu=8000. Solmulla varatun kokonaismuistin määrä on
--mem-per-cpu × --cpus-per-task × --ntasks-per-node. Katso
Molpro-käsikirjasta
täydet tiedot memory-direktiivistä.
Skaalautuvuusesimerkki
Molpron suorituskyky riippuu paljon järjestelmän koosta ja käytetystä laskentamallista. Seuraava taulukko näyttää seinäkelloajan (sekunteina) bentseenin (C6H6) yksittäispiste-energialaskulle CCSD(T)/aug-cc-pVTZ-tasolla ytimien lukumäärän funktiona Puhdissa mitattuna. Tulokset Lustrella ja paikallisella NVMe-scratchilla esitetään erikseen. Huomaa, että rinnakkaisajot varaavat yhden ytimen solmua kohden apuprosessille, joten varsinaiseen laskentaan on käytettävissä yksi ydin vähemmän per solmu.
| Cores | Wall time/Lustre (s) | Wall time/NVMe (s) |
|---|---|---|
| 1 | 11749 | 10962 |
| 5 | 3254 | 3228 |
| 10 | 1730 | 1561 |
| 20 | 1394 | 1239 |
| 40 | 1112 | 814 |
| 2×20 | 786 | 729 |
| 2×40 | 716 | 701 |
Seuraavat tulokset saatiin Roihun M-solmuilla Lustre-scratchia käyttäen.
Työt ajettiin peräkkäin ilman muita töitä solmulla. Seinäkelloajat jaetuilla
solmuilla (tyypillistä small-partitiossa) voivat vaihdella ±20–50 % muiden
samalle solmulle sijoitettujen töiden I/O- ja muistiväyläkiistan vuoksi.
Tavanomainen CCSD(T)/aug-cc-pVQZ — bentseeni (756 kantafunktiota),
memory,1000,m:
| MPI tasks | Workers | Wall time (s) | Peak scratch |
|---|---|---|---|
| 6 | 5 | 662 | ~98 GB |
| 12 | 11 | 552 | ~98 GB |
| 24 | 23 | 495 | ~98 GB |
| 48 | 47 | 521 | ~98 GB |
Syötetiedosto on saatavilla osoitteessa benzene_ccsd_t_avqz.inp.
CCSD(T)-F12b/cc-pVTZ-F12 — naftaleeni (674 kantafunktiota),
memory,1000,m:
| MPI tasks | Workers | Wall time (s) | Peak scratch |
|---|---|---|---|
| 6 | 5 | 1250 | ~62 GB |
| 12 | 11 | 761 | ~62 GB |
| 24 | 23 | 811 | ~62 GB |
| 48 | 47 | 842 | ~62 GB |
Syötetiedosto on saatavilla osoitteessa naphthalene_ccsd_t_f12b_vtz.inp.
Vertailun vuoksi sama naftaleenilasku tavanomaisella CCSD(T)/aug-cc-pVQZ-tasolla vaatisi noin 400 GB scratch-levytilaa. F12-lähestymistapa vähentää tämän noin 62 gigatavuun samalla, kun käytössä on pienempi kantajoukko (674 verrattuna noin 1500 kantafunktioon aug-cc-pVQZ:lle).
Muistivaatimusten arviointi
Molpron sisäiset muistitilastot (tulostetaan tulostetiedoston lopussa) kattavat vain CCSD-vaiheet ja aliarvioivat todellisen huipun. Valmiin ajon jälkeen tarkista todellinen muistinkäyttö komennolla:
Jaa MaxRSS työtehtävien määrällä ja edelleen luvulla 8 saadaksesi
memory-direktiiviä vastaavan arvon MW-yksiköissä. Käytä tätä
--mem-per-cpu- ja memory-asetusten hienosäätöön tulevia ajoja varten.
Naftaleenin CCSD(T)-F12b/cc-pVTZ-F12-laskussa 12 tehtävällä pienin toimiva
muistimäärä on noin 500 MW (--mem-per-cpu=4000). Asetus memory,1000,m
(--mem-per-cpu=8000) antaa parhaan suorituskyvyn.
Viitteet
Kaikissa MOLPROn käytöstä syntyvissä julkaisuissa on viitattava seuraaviin kolmeen lähteeseen.
- H.-J. Werner, P. J. Knowles, G. Knizia, F. R. Manby and M. Schütz, WIREs Comput Mol Sci 2, 242–253 (2012), doi: 10.1002/wcms.82
- Hans-Joachim Werner, Peter J. Knowles, Frederick R. Manby, Joshua A. Black, et al., J. Chem. Phys. 152, 144107 (2020). doi:10.1063/5.0005081
- MOLPRO, version , a package of ab initio programs, H.-J. Werner, P. J. Knowles, and others, see https://www.molpro.net.
Riippuen siitä, mitä ohjelmia käytetään, myös lisäviitteitä tulee käyttää. Ohjeet löytyvät käsikirjasta.