Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti are being decommissioned in stages, and their storage areas will become fully unavailable from 15 October 2026. Clean up unnecessary files and move any data you need to keep by 31 August 2026. See the Roihu data migration guide for instructions on transferring your data to Roihu.

Puhti scratch is very full: keep only active data there and move or delete everything else. No new Puhti scratch quota will be granted.

MOLPRO

MOLPRO on ohjelmistopaketti, joka on suunnattu tarkkoihin ab initio -kvanttikemian laskuihin. Ohjelman painopiste on erittäin tarkoissa laskelmissa, joissa elektronikorrelaatio-ongelmaa käsitellään laajasti moniviitekonfiguraatiointeraktion, coupled cluster -menetelmien ja niihin liittyvien menetelmien avulla.

Saatavilla

  • 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:

module load molpro/2024.3

Roihussa oletusversio on 2026.1:

module load molpro/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.

Esimerkkieräajokomennostot

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

Mahdissa on usein tarpeen varata ytimiä vajaasti solmua kohden, jotta muistia on riittävästi ydintä kohden. Katso lisätietoja Mahti-työkomennostojen ohjeista.

#!/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 muistivaraus ovat toisistaan riippumattomia (--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ää muisti per ydin -varausta — et voi asettaa --mem-per-cpu-arvoa niissä itsenäisesti.

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

Perusesimerkkismall- ja longrun-partitioissa (M- ja L-solmut) CPU ja muisti varataan toisistaan riippumatta. Aseta vain --mem-per-cpu vastaamaan syötetiedostosi memory-direktiiviä. Ytimien vajaavarausta 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 vajaavaraus — vain hugemem- ja hugemem_longrun-partitioissa

hugemem- ja hugemem_longrun-partitiot (XL-solmut, enintään 6037 GiB) käyttävät kiinteää muisti 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ä solmua kohden kuluu Global Arrays -apuprosessiin, joten varsinaisten 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ä (mega-sanoja). Vastaava --mem-per-cpu-arvo riippuu partition tyypistä:

  • small/longrun (tyyppi R, --cpus-per-task=1): --mem-per-cpu (MB) = memory_in_MW × 8
  • hugemem/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 varattu kokonaismuisti on --mem-per-cpu × --cpus-per-task × --ntasks-per-node. Katso Molpro-käsikirjasta muistidirektiivin täydet tiedot.

Skaalautuvuusesimerkki

Molpron suorituskyky riippuu paljon järjestelmän koosta ja käytetystä laskentamallista. Seuraava taulukko näyttää seinäkelloajan (sekunteina) bentseenin (C6H6) yksittäispiste-energialaskennalle CCSD(T)/aug-cc-pVTZ-tasolla ytimien lukumäärän funktiona Puhdissa mitattuna. Lustrella ja paikallisella NVMe-scratchilla saadut tulokset esitetään erikseen. Huomaa, että rinnakkaiset ajot 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 naftaleenilaskenta 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äytetään pienempää kantajoukkoa (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:

sacct -j <jobid> --format=JobID,MaxRSS,Elapsed,State

Jaa MaxRSS työtehtävien määrällä ja 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-laskennassa 12 tehtävällä pienin toimiva muistimäärä on noin 500 MW (--mem-per-cpu=4000). Asetuksen memory,1000,m käyttö (--mem-per-cpu=8000) antaa parhaan suorituskyvyn.

Viitteet

Kaikissa MOLPROn käytöstä syntyvissä julkaisuissa on mainittava seuraavat kolme viitettä.

  1. 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
  2. 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
  3. 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 siteerata. Ohjeet löytyvät käsikirjasta.

Lisätietoja

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta