Skip to content

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

ORCA

ORCA is an ab initio quantum chemistry program package that contains modern electronic structure methods including density functional theory, many-body perturbation, coupled cluster, multireference methods, and semi-empirical quantum chemistry methods. Its main field of application is larger molecules, transition metal complexes, and their spectroscopic properties. ORCA is developed in the research group of Frank Neese. The free version is available only for academic use at academic institutions.

Available

  • Roihu-CPU: 6.1.1

Note that due to licensing issues every user has to install their own copy of the program.

License

ORCA users should register, agree to the EULA, download and install a private copy of the program (via the ORCA forum website). The free version is available only for academic use at academic institutions.

Usage

  • Download ORCA 6.1.1, Linux, x86-64, shared-version, orca_6_1_1_linux_x86-64_shared_openmpi418_avx2.tar.xz
  • Move the downloaded file to your computing project's application area (/projappl/<proj>/<user>/orca/)
  • Unpack the package:
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

On Roihu, set ORCADIR before loading the module. The module then loads the required MPI libraries (gcc/15.2.0, openmpi/5.0.10) automatically — no manual module loads are needed.

Jobs must be submitted from the CPU login node (roihu-cpu).

Example batch scripts

Note

Wave function-based correlation methods, both single and multireference, often create a substantial amount of disk I/O. In order to achieve maximal performance for the job and to avoid excess load on the Lustre parallel file system it is advisable to use the local disk where available.

On Roihu, the module loads MPI automatically. No mpirun wrapper script is needed. Set ORCADIR before loading the module. For a full list of available partitions see the Roihu batch job partitions page.

Note

Local NVMe disks on the compute nodes can be accessed through $TMPDIR. Jobs in the "small" partition have 20 GiB quota available, while "medium" nodes have 600 GiB available. $TMPDIR storage does not need to be separately reserved in Slurm to be accessible.

#!/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

Memory — ORCA's %maxcore directive sets memory per MPI process in MB. The corresponding --mem-per-cpu value should match:

--mem-per-cpu (MB) = %maxcore

For example, with 12 MPI processes and 32 GB total memory: %maxcore 2667 and --mem-per-cpu=2667.

After the job completes, check actual memory usage with:

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

Note

Please remember to adjust %pal nprocs in your input file according to the total number of requested MPI tasks (--nodes × --ntasks-per-node).

Example of scalability

The following results were obtained on Roihu for a naphthalene DLPNO-CCSD(T)/aug-cc-pVTZ single-point energy calculation using %maxcore 5000 (6 tasks: %maxcore 8000) on an M-node with Lustre scratch. Jobs were run sequentially. Wall times on shared nodes may vary due to I/O and memory bandwidth contention from co-located jobs.

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

The input file is available at naphthalene_dlpno.inp.

DLPNO-CCSD(T) shows good parallel scaling for this system. Peak scratch disk (~34 GB) is essentially independent of core count — the total integral work is determined by the system size, not the number of processes. Memory per task decreases with more processes, reflecting DLPNO's domain decomposition.

Estimating memory requirements

ORCA's %maxcore sets memory per MPI process in MB. Set --mem-per-cpu to match:

--mem-per-cpu (MB) = %maxcore

After a completed run, check actual memory usage with:

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

Divide MaxRSS by the number of MPI tasks to get actual peak per process and adjust %maxcore and --mem-per-cpu accordingly. Note that ORCA may require more memory per process with fewer tasks — if you reduce %pal nprocs, increase %maxcore proportionally.

References

The generic references for ORCA are:

Please do not only cite the above generic references, but also cite in addition the original papers that report the development and ORCA implementation of the methods you have used in your studies!

More information

Do you find this page useful?
Thank you for your feedback!
Thank you! Your feedback is appreciated.

Please let us know how we could improve this page by contacting us or by creating an issue in GitHub. You can also edit this page yourself and contribute your improvements by creating a pull request.