Hyppää sisältöön

MOLPRO

MOLPRO on ohjelmistopaketti, joka on suunnattu tarkkoihin ab initio -kvanttikemian laskuihin. Ohjelmassa painotetaan erittäin tarkkoja laskentoja, joissa elektronikorrelaatio-ongelmaa käsitellään laajasti moniviitekonfiguraatiointeraktion, coupled cluster -menetelmien ja niihin liittyvien menetelmien avulla.

Saatavuus

  • Roihu-CPU: 2025.4, 2026.1 (oletus)

Lisenssi

  • Ohjelmiston käyttö on rajoitettu ei-kaupalliseen tutkimukseen.

Käyttö

Alusta MOLPRO Roihussa:

module load molpro/2026.1

Molpro on rakennettu 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ä moniviitteiset, tuottavat usein huomattavan määrän levy-I/O:ta. Jotta työn suorituskyky olisi mahdollisimman hyvä ja Lustre-rinnakkaistiedosto- järjestelmän ylimääräiseltä kuormitukselta vältyttäisiin, on suositeltavaa käyttää paikallista levyä silloin kun se on saatavilla.

Roihussa työt on lähetettävä CPU-kirjautumissolmulta (roihu-cpu). Täydellinen luettelo käytettävissä olevista partitioista ja niiden rajoista on sivulla Roihun eräajopartitiot.

Useimmat Molpro-työt ajetaan partitioissa small (enintään 72 h) tai longrun (enintään 10 päivää), jotka molemmat tukevat enintään 1500 GiB per työ M- ja L-solmuilla riippumattomalla CPU- ja muistivarauksella (--mem-per-cpu). Partitiot hugemem ja hugemem_longrun tarjoavat pääsyn XL-solmuihin, joissa on enintään 6037 GiB muistia, mutta niissä käytetään kiinteää muistia per ydin -kohden -varausta — et voi asettaa --mem-per-cpu-arvoa niissä itsenäisesti.

Note

Paikallinen NVMe-levy ei ole vielä käytettävissä Roihun tavallisissa M-solmutöissä. Scratch-I/O ohjautuu Lustreen, joka on erittäin nopea. NVMe-tuki otetaan käyttöön tulevassa päivityksessä.

Perusesimerkki — partitioissa small ja longrun (M- ja L-solmut) CPU ja muisti 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 partitioissa hugemem ja hugemem_longrun

Partitiot hugemem ja hugemem_longrun (XL-solmut, enintään 6037 GiB) käyttävät kiinteää muistia per ydin -varausta (varaustyyppi C). Ainoa tapa lisätä muistia per MPI-tehtävä on varata useita ytimiä tehtävää kohden asetuksella --cpus-per-task. Aseta --ntasks-per-node=X ja --cpus-per-task=Y niin, että niiden tulo ei ylitä arvoa 128 (hugemem-partition ydinraja). Huomaa, että yksi MPI-tehtävä per solmu kuluu Global Arraysin apuprosessiin, joten varsinainen 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 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. Huomaa, että rinnakkaisajot varaavat yhden ytimen per solmu apuprosessille, joten varsinaiseen laskentaan on käytettävissä yksi ydin vähemmän per solmu.

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 % samalle solmulle sijoitettujen töiden aiheuttaman I/O- ja muistiväyläkilvan vuoksi.

Tavanomainen CCSD(T)/aug-cc-pVQZ — bentseeni (756 kantafunktiota), memory,1000,m:

MPI-tehtävät Työntekijät Seinäkelloaika (s) Scratch-huippukäyttö
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-tehtävät Työntekijät Seinäkelloaika (s) Scratch-huippukäyttö
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 ~400 GB scratch-levytilaa. F12-lähestymis- tapa vähentää tämän ~62 gigatavuun samalla kun käytetään pienempää kantafunktiojoukkoa (674 verrattuna noin 1500:aan 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öntekijätehtävien määrällä ja sitten kahdeksalla 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 ~500 MW (--mem-per-cpu=4000). Asetuksen memory,1000,m käyttö (--mem-per-cpu=8000) antaa parhaan suorituskyvyn.

Viitteet

Kaikkien MOLPROn käyttöön perustuvien julkaisujen on viitattava seuraaviin kolmeen lähteeseen.

  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 käyttää. Ohjeet löytyvät käsikirjasta.

Lisätietoja

Onko tämä sivu hyödyllinen?
Kiitos palautteestasi!
Kiitos! Arvostamme palautettasi.

Kerro meille miten voisimme parantaa tätä sivua ottamalla meihin yhteyttä .