-
ORCA
ORCA
ORCA on ab initio -kvanttikemian ohjelmistopaketti, joka sisältää nykyaikaisia elektronirakennemenetelmiä, kuten tiheysfunktionaaliteorian, monikappalehäiriöteorian, kytketyn klusterin menetelmät, moniviitemenetelmät sekä semi-empiiriset kvanttikemian menetelmät. Sen tärkeimmät sovellusalueet ovat suuremmat molekyylit, siirtymämetallikompleksit ja niiden spektroskooppiset ominaisuudet. ORCAa kehitetään Frank Neesen tutkimusryhmässä. Ilmainen versio on saatavilla vain akateemiseen käyttöön akateemisissa instituutioissa.
Saatavuus
- Puhti: 6.0.0
- Mahti: 6.0.0
- Roihu-CPU: 6.1.1
Huomaa, että lisenssisyistä jokaisen käyttäjän on asennettava oma kopionsa ohjelmasta.
Lisenssi
ORCAn käyttäjien tulee rekisteröityä, hyväksyä EULA, ladata ja asentaa ohjelmasta oma yksityinen kopio (ORCA-foorumin verkkosivuston kautta). Ilmainen versio on saatavilla vain akateemiseen käyttöön akateemisissa instituutioissa.
Käyttö
- Lataa ORCA 6.0.0, Linux, x86-64, shared-version,
orca_6_0_0_linux_x86-64_avx2_shared_openmpi416.tar.xz - Siirrä ladattu tiedosto laskentaprojektisi sovellusalueelle
(
/projappl/<proj>) Puhdissa tai Mahdissa - Pura paketti:
tar xf orca_6_0_0_linux_x86-64_avx2_shared_openmpi416.tar.xz
- Lataa ORCA 6.1.1, Linux, x86-64, shared-version,
orca_6_1_1_linux_x86-64_shared_openmpi418_avx2.tar.xz - Siirrä ladattu tiedosto laskentaprojektisi sovellusalueelle
(
/projappl/<proj>/<user>/orca/) - Pura paketti:
mkdir -p /projappl/<project>/<user>/orca
cd /projappl/<project>/<user>/orca
tar xf orca_6_1_1_linux_x86-64_shared_openmpi418_avx2.tar.xz
Roihussa aseta ORCADIR ennen moduulin lataamista. Moduuli lataa sitten
tarvittavat MPI-kirjastot (gcc/15.2.0, openmpi/5.0.10)
automaattisesti — moduuleja ei tarvitse ladata käsin.
Työt on lähetettävä CPU-kirjautumissolmulta (roihu-cpu).
Esimerkkieräajokomennostot
Note
Aaltotoimintoon perustuvat 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 gcc/11.3.0 openmpi/4.1.4 intel-oneapi-mkl/2022.1.0
export ORCADIR=<path to your ORCA directory>/orca_6_0_0_shared_openmpi416_avx2/
export LD_LIBRARY_PATH=${ORCADIR}:${LD_LIBRARY_PATH}
# Set $ORCA_TMPDIR to point to the submission directory
export ORCA_TMPDIR=$SLURM_SUBMIT_DIR
# create an mpirun script that executes srun
echo exec 'srun $(echo "${@}" | sed 's/^-np/-n/')' >./mpirun
chmod +x ./mpirun
export PATH=${SLURM_SUBMIT_DIR}:${PATH}
touch Jobid_is_$SLURM_JOB_ID
${ORCADIR}/orca orca6.inp > orca6.out
rm -f ${SLURM_SUBMIT_DIR}/mpirun
#!/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 gcc/11.3.0 openmpi/4.1.4 intel-oneapi-mkl/2022.1.0
export ORCADIR=<path to your ORCA directory>/orca_6_0_0_shared_openmpi416_avx2/
export LD_LIBRARY_PATH=${ORCADIR}:${LD_LIBRARY_PATH}
# create a mpirun script that executes srun
echo exec 'srun $(echo "${@}" | sed 's/^-np/-n/')' >./mpirun
chmod +x ./mpirun
export PATH=${SLURM_SUBMIT_DIR}:${PATH}
touch Jobid_is_$SLURM_JOB_ID
#Set $ORCA_TMPDIR to point to the local disk
export ORCA_TMPDIR=$LOCAL_SCRATCH
# Copy only necessary files to $ORCA_TMPDIR
cp $SLURM_SUBMIT_DIR/*.inp $ORCA_TMPDIR/
# Move to $ORCA_TMPDIR
cd $ORCA_TMPDIR
$ORCADIR/orca orca6.inp > ${SLURM_SUBMIT_DIR}/orca6.out
rm -f ${SLURM_SUBMIT_DIR}/mpirun
# Copy all output to submit directory
cp -r $ORCA_TMPDIR $SLURM_SUBMIT_DIR
#!/bin/bash
#SBATCH --partition=test
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=128
#SBATCH --account=yourproject # insert here the project to be billed
#SBATCH --time=0:10:00 # time as hh:mm:ss
module purge
module load gcc/11.2.0 openmpi/4.1.2 openblas/0.3.18-omp
export ORCADIR=<path to your ORCA directory>/orca_6_0_0_shared_openmpi416_avx2/
export LD_LIBRARY_PATH=${ORCADIR}:${LD_LIBRARY_PATH}
# create a mpirun script that executes srun
echo exec 'srun $(echo "${@}" | sed 's/^-np/-n/')' >./mpirun
chmod +x ./mpirun
export PATH=${SLURM_SUBMIT_DIR}:${PATH}
touch Jobid_is_$SLURM_JOB_ID
${ORCADIR}/orca orca6.inp > orca6.out
rm -f ${SLURM_SUBMIT_DIR}/mpirun
Roihussa moduuli lataa MPI:n automaattisesti. mpirun-kääreskriptiä ei
tarvita. Aseta ORCADIR ennen moduulin lataamista. Täydellinen luettelo
käytettävissä olevista partitioista on sivulla
Roihun eräajopartitiot.
Note
Paikallinen NVMe-levy ei ole vielä saatavilla Roihun tavallisille M-solmutöille. 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
#SBATCH --mem-per-cpu=2667 # MB; total memory = nprocs * maxcore
#SBATCH --account=yourproject
#SBATCH --time=01:00:00
export ORCADIR=/projappl/<project>/<user>/orca/orca_6_1_1_linux_x86-64_shared_openmpi418_avx2
module purge
module load orca/6.1.1
${ORCADIR}/orca orca6.inp > orca6.out
Muisti — ORCAn %maxcore-direktiivi määrittää muistin MPI-prosessia kohti
megatavuina. Vastaavan --mem-per-cpu-arvon tulee olla sama:
Esimerkiksi 12 MPI-prosessilla ja 32 Gt:n kokonaismuistilla:
%maxcore 2667 ja --mem-per-cpu=2667.
Työn valmistuttua tarkista todellinen muistinkäyttö komennolla:
Note
Muista säätää syötetiedostosi %pal nprocs pyydettyjen MPI-tehtävien
kokonaismäärän mukaan (--nodes × --ntasks-per-node).
Esimerkki skaalautuvuudesta
Seuraavat tulokset saatiin Roihussa naftaleenin
DLPNO-CCSD(T)/aug-cc-pVTZ-yksittäispiste-energialaskennassa käyttäen
%maxcore 5000 (6 tehtävää: %maxcore 8000) M-solmulla, jossa scratch on
Lustressa. Työt ajettiin peräkkäin. Jaetuilla solmuilla seinäajat voivat
vaihdella samalle solmulle sijoitettujen töiden I/O- ja muistikaistakilpailun
vuoksi.
| MPI tasks | Wall time | Peak scratch | MaxRSS total | %maxcore |
|---|---|---|---|---|
| 6 | 56 min | ~32 GB | 47 GiB | 8000 MB |
| 12 | 48 min | ~34 GB | 59 GiB | 5000 MB |
| 24 | 38 min | ~34 GB | 117 GiB | 5000 MB |
| 48 | 31 min | ~34 GB | 231 GiB | 5000 MB |
Syötetiedosto on saatavilla osoitteessa naphthalene_dlpno.inp.
DLPNO-CCSD(T) skaalautuu hyvin rinnakkaisesti tässä järjestelmässä. Scratch-levyn huippukäyttö (~34 GB) on käytännössä riippumaton ytimien määrästä — integraalien kokonaistyö määräytyy järjestelmän koon, ei prosessien määrän, perusteella. Muisti tehtävää kohti pienenee prosessien määrän kasvaessa, mikä heijastaa DLPNO:n aluejakoa.
Muistivaatimusten arviointi
ORCAn %maxcore määrittää muistin MPI-prosessia kohti megatavuina. Aseta
--mem-per-cpu vastaamaan sitä:
Valmiin ajon jälkeen tarkista todellinen muistinkäyttö komennolla:
Jaa MaxRSS MPI-tehtävien määrällä saadaksesi todellisen huippumuistin
prosessia kohti ja säädä %maxcore- ja --mem-per-cpu-arvoja sen mukaan.
Huomaa, että ORCA voi vaatia enemmän muistia prosessia kohti pienemmällä
tehtävämäärällä — jos pienennät %pal nprocs -arvoa, kasvata %maxcore-arvoa
vastaavasti.
Viitteet
ORCAn yleiset viitteet ovat:
- Frank Neese. The ORCA program system. Wiley Interdiscip. Rev. Comput. Mol. Sci., 2(1):73–78, 2012. doi:https://doi.wiley.com/10.1002/wcms.81.
- Frank Neese. Software update: the ORCA program system, version 4.0. Wiley Interdiscip. Rev. Comput. Mol. Sci., 8(1):e1327, 2018. doi:https://doi.wiley.com/10.1002/wcms.1327.
- Frank Neese, Frank Wennmohs, Ute Becker, and Christoph Riplinger. The ORCA quantum chemistry program package. J. Chem. Phys., 152(22):224108, 2020. doi:https://aip.scitation.org/doi/10.1063/5.0004608.
Älä viittaa ainoastaan yllä oleviin yleisiin viitteisiin, vaan viittaa lisäksi myös alkuperäisiin artikkeleihin, joissa kuvataan tutkimuksissasi käyttämiesi menetelmien kehitys ja niiden ORCA-toteutus!