-
TURBOMOLE
TURBOMOLE
TURBOMOLE on nopea ja vakaa kvanttikemian ohjelmistopaketti, jossa on erittäin tehokkaat toteutukset useille laskennallisille menetelmille (HF/DFT/MP2/CC). Ominaisuuksia voidaan laskea sekä perustiloille että viritystiloille. TURBOMOLE on suunniteltu suurten järjestelmien tehokkaaseen tutkimukseen.
Saatavuus
- Puhti: 7.5.1, 7.6, 7.7, 7.8
- Mahti: 7.5.1, 7.6, 7.7, 7.8
- Roihu-CPU: 8.0
Lisenssi
- Voit käyttää ohjelmistoa ainoastaan voittoa tavoittelemattomaan tutkimukseen.
- Vain akateemisten (eli tutkintoja myöntävien) instituutioiden käyttäjät saavat käyttää ohjelmistoa.
Käyttö
Alusta TURBOMOLE-ympäristö:
Roihussa työt on lähetettävä CPU-kirjautumissolmulta (roihu-cpu).
Moduuli asettaa muuttujat I_MPI_FABRICS=shm:ofi ja MPI_USESRUN=1
automaattisesti. PATH- tai MPI-asetuksia ei tarvitse tehdä käsin enempää
kuin alla olevissa eräajoesimerkeissä on näytetty. Täydellinen lista
käytettävissä olevista partitioista löytyy sivulta
Roihun eräajopartiot.
Eräajoesimerkit
#!/bin/bash
#SBATCH --partition=test
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=40 # MPI tasks per node
#SBATCH --account=<project> # insert here the project to be billed
#SBATCH --time=00:10:00 # time as hh:mm:ss
export PARA_ARCH=MPI
module load turbomole/7.8
export SLURM_CPU_BIND=none
export TURBOTMPDIR=`echo $PWD |cut -d'/' -f1-3`"/TM_TMPDIR/"$SLURM_JOB_ID
mkdir -p $TURBOTMPDIR
export PARNODES=$SLURM_NTASKS
export PATH=$TURBODIR/bin/`$TURBODIR/scripts/sysname`:$PATH
jobex -ri -c 300 > jobex.out
#!/bin/bash
#SBATCH --partition=test
#SBATCH --nodes=1
#SBATCH --cpus-per-task=40 # SMP threads
#SBATCH --account=<project> # insert here the project to be billed
#SBATCH --time=00:10:00 # time as hh:mm:ss
export PARA_ARCH=SMP
module load turbomole/7.8
export TURBOTMPDIR=`echo $PWD |cut -d'/' -f1-3`"/TM_TMPDIR/"$SLURM_JOB_ID
mkdir -p $TURBOTMPDIR
export PARNODES=$SLURM_CPUS_PER_TASK
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
export PATH=$TURBODIR/bin/`$TURBODIR/scripts/sysname`:$PATH
jobex -ri -c 300 > jobex.out
#!/bin/bash
#SBATCH --partition=small
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=40 # MPI tasks per node
#SBATCH --account=<project> # insert here the project to be billed
#SBATCH --time=00:10:00 # time as hh:mm:ss
#SBATCH --gres=nvme:100 # requested local disk in GB
export PARA_ARCH=MPI
module load turbomole/7.8
export SLURM_CPU_BIND=none
export TURBOTMPDIR=$LOCAL_SCRATCH/$SLURM_JOBID
mkdir -p $TURBOTMPDIR
export PARNODES=$SLURM_NTASKS
export PATH=$TURBODIR/bin/`$TURBODIR/scripts/sysname`:$PATH
dscf > dscf.out
ccsdf12 > ccsdt.out
#!/bin/bash
#SBATCH --partition=medium
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=128 # MPI tasks per node
#SBATCH --account=<project> # insert here the project to be billed
#SBATCH --time=00:60:00 # time as hh:mm:ss
export PARA_ARCH=MPI
module load turbomole/7.8
export SLURM_CPU_BIND=none
export TURBOTMPDIR=`echo $PWD |cut -d'/' -f1-3`"/TM_TMPDIR/"$SLURM_JOB_ID
mkdir -p $TURBOTMPDIR
export PARNODES=$SLURM_NTASKS
export PATH=$TURBODIR/bin/`$TURBODIR/scripts/sysname`:$PATH
jobex -ri -c 300 > jobex.out
Roihussa moduuli asettaa MPI_USESRUN=1, joten TURBOMOLE käynnistää tehtävät
automaattisesti srun-komennolla. Erillistä wrapper-skriptiä ei tarvita.
Note
Paikallinen NVMe-levy ei ole vielä käytettävissä Roihun tavallisissa M-solmutöissä. Scratch-I/O ohjautuu Lustreen. NVMe-tuki otetaan käyttöön tulevassa päivityksessä.
#!/bin/bash
#SBATCH --partition=small # see batch-job-partitions for all options
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=12 # MPI tasks per node
#SBATCH --mem-per-cpu=2000 # MB per CPU core
#SBATCH --account=<project> # insert here the project to be billed
#SBATCH --time=01:00:00 # time as hh:mm:ss
export PARA_ARCH=MPI
module load turbomole/8.0
export SLURM_CPU_BIND=none
export PATH=$TURBODIR/bin/$(sysname):$PATH
export TURBOTMPDIR=/scratch/<project>/<user>/TM_TMPDIR/$SLURM_JOB_ID
mkdir -p $TURBOTMPDIR
export PARNODES=$SLURM_NTASKS
jobex -ri -c 300 > jobex.out
#!/bin/bash
#SBATCH --partition=small # see batch-job-partitions for all options
#SBATCH --nodes=1
#SBATCH --cpus-per-task=12 # SMP threads
#SBATCH --mem-per-cpu=2000 # MB per CPU core
#SBATCH --account=<project> # insert here the project to be billed
#SBATCH --time=01:00:00 # time as hh:mm:ss
export PARA_ARCH=SMP
module load turbomole/8.0
export PATH=$TURBODIR/bin/$(sysname):$PATH
export TURBOTMPDIR=/scratch/<project>/<user>/TM_TMPDIR/$SLURM_JOB_ID
mkdir -p $TURBOTMPDIR
export PARNODES=$SLURM_CPUS_PER_TASK
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
jobex -ri -c 300 > jobex.out
Note
Toisinaan mpshift-laskennat keskeytyvät, koska paikallinen /tmp
täyttyy. Ongelma voidaan kiertää määrittelemällä $TMPDIR uudelleen:
Note
Erityisesti jotkin aaltofunktiopohjaiset elektronikorrelaatiomenetelmät voivat olla hyvin levy-I/O-intensiivisiä. Tällaiset työt hyötyvät Puhdin nopean paikallisen tallennustilan käytöstä. Paikallisen levyn käyttö tällaisissa töissä vähentää myös Lustre-rinnakkaistiedostojärjestelmän kuormitusta. Roihussa paikallinen NVMe ei ole vielä käytettävissä tavallisissa M-solmutöissä.
Suorituskykyesimerkki
Tässä annetaan lyhyt esimerkki siitä, miten erilaiset resurssivaraukset vaikuttavat TURBOMOLEn suorituskykyyn. Käytämme syöterakenteena α-tokoferolia (E-vitamiini, C29H50O2, 81 atomia). Geometria on saatavilla tiedostossa vite_wb97x_d4_roihu.sh.
Testit tehtiin tuotantoympäristössä, jossa muiden töiden vaikutus voi aiheuttaa suorituskyvyn vaihtelua.
Seuraava kuva näyttää ωB97X-D4/def2-TZVP-yksittäispistelaskennan seinäkelloajan Roihussa ytimien/säikeiden määrän funktiona käyttäen sekä SMP- (OpenMP) että MPI-rinnakkaisuutta.

SMP (PARA_ARCH=SMP) skaalautuu hyvin noin 48 säikeeseen asti tässä
81-atomisessa järjestelmässä, minkä jälkeen suorituskyky tasaantuu. MPI:n
(PARA_ARCH=MPI) tulokset näyttävät samanlaisia seinäkelloaikoja kuin SMP,
mutta vaativat huomattavasti enemmän muistia — noin 15 kertaa enemmän 96
prosessilla tässä järjestelmässä.
Yhden solmun ridft-DFT-laskennoissa SMP on siksi yleensä MPI:tä parempi
vaihtoehto. Skaalautuvuuden raja liittyy atomien määrään — suuremmat molekyylit
hyötyvät useammista säikeistä ennen kyllästymispisteen saavuttamista.
Työn valmistuttua tarkista todellinen muistin käyttö ja seinäkelloaika komennolla:
NumForce-laskennat
NumForce on työkalu, jolla voidaan laskea toisia derivaattoja
(molekyyli-Hessen matriisi) kaikille menetelmille, joille TURBOMOLEssa on
saatavilla analyyttiset gradientit. NumForce-työ käynnistää 3*N*2
(N = atomien määrä) toisistaan riippumatonta gradienttilaskentaa. Yleensä on
tehokkainta ajaa yksittäiset gradienttilaskennat sarjallisina
(unset PARA_ARCH). Kunkin sarjallisen laskennan odotetaan kestävän
suunnilleen saman ajan, joten optimaalisessa tapauksessa gradienttilaskentojen
kokonaismäärän tulisi olla varattujen ytimien kokonaislukukerrannainen.
NumForce-vaihe työskriptissä:
unset PARA_ARCH
export HOSTS_FILE=$PWD/turbomole.machines
rm -f $HOSTS_FILE
srun hostname > $HOSTS_FILE
ulimit -s unlimited
kdg tmpdir
NumForce -ri -central -mfile $HOSTS_FILE > NumForce.out
Viitteet
Mainitse ohjelmistopaketin käyttö viitatessasi versionumero huomioiden:
- TURBOMOLE V8.0, a development of University of Karlsruhe and Forschungszentrum Karlsruhe GmbH, 1989-2007, TURBOMOLE GmbH, since 2007; available from https://www.turbomole.org
- Myös katsausartikkeli tulisi mainita: https://doi.org/10.1063/5.0004635
- Tieteellisissä julkaisuissa käytetyt menetelmät ja menettelytavat on viitattava asianmukaisesti. TURBOMOLE-moduulien tulosteiden otsakkeet sisältävät asiaankuuluvat artikkelit.