DIRAC¶
Description¶
The DIRAC program computes molecular properties using relativistic quantum chemical methods. It is named after P.A.M. Dirac, the father of relativistic electronic structure theory.
User guide¶
You can find the software documentation and user guide on the official DIRAC website.
Available Versions¶
The following versions of DIRAC are currently available:
- Runtime dependencies:
- None, required libraries and dependencies are loaded automatically with the
DIRAC/22.0-foss-2021amodule.
- None, required libraries and dependencies are loaded automatically with the
You can load the DIRAC module with the following command:
module load DIRAC/22.0-foss-2021a
- Runtime dependencies:
- None, required libraries and dependencies are loaded automatically with the
DIRAC/25.0-intel-2022b-int64module.
- None, required libraries and dependencies are loaded automatically with the
You can load the DIRAC module with the following command:
module load DIRAC/25.0-intel-2022b-int64
This version is built with 64-bit integers (int64), which allows allocating larger amounts of memory.
Benchmarking DIRAC¶
In order to better understand how DIRAC utilizes the available hardware on Devana and how to get good performance we can examine the effect on benchmark performance of the choice of the number of MPI ranks and OMP threads per node.
The following command has been used to run the benchmarks:
export OMP_NUM_THREADS=$ntomp
pam-dirc --mpi=$ntmpi --ag=$mem_cpu --scratch=$dirac_dir --inp=$benchmark.inp --mol=$benchmark.mol
echo "scale=0; ($SLURM_MEM_PER_NODE / (64 / $ntomp))" | bc. Temporary working dirac_dir directory was set to /scratch.
Benchmarks have been made on the following systems:
pbf.mol
INTGRL
DHF energy calculation for Ba atom
dyall.v2z basis set
C 2 0 A
82. 1
Pb .0000000000 .0000000000 2.0575
LARGE BASIS dyall.cv2z
9. 1
F 0.0000000000 0.0000000000 0.00
LARGE BASIS dyall.cv2z
FINISH
pbf-ccsdt-505000-cv2z.inp
**DIRAC
.TITLE
PbF
.WAVE F
.4INDEX
**GENERAL
**INTEGRALS
.PRINT
1
*READIN
.UNCONTRACTED
**HAMILTONIAN
.X2C
*AMFI
.AMFICH
+6
**WAVE FUNCTIONS
.SCF
.RELCCSD
*SCF
.CLOSED SHELL
90
.OPEN SHELL
1
1/2
.MAXITR
200
.ERGCNV
1.0D-9 1.0D-9
.EVCCNV
5.0D-6 5.0D-6
.PRINT
1
**MOLTRA
.ACTIVE
energy -50.0 100.0 1.0
.PRINT
1
**RELCC
.NELEC
32 31
.ENERGY
.PRINT
1
*CCENER
.NTOL
9
.MAXIT
150
*END OF
SCF calculation of PbF molecule utilizing 2-component X2C Hamiltonian.
| Single-node Performance | Cross-node Performance |
|---|---|
![]() |
![]() |
SCF calculation of the PbF molecule utilizing the 4-component Dirac-Coulomb Hamiltonian (DCSSSS) in conjunction with the GAUNT correction to the two-electron interaction.
| Single-node Performance | Cross-node Performance |
|---|---|
![]() |
![]() |
Example run script¶
You can copy and modify this script to dirac_run.sh and submit a job to a compute node by the command sbatch dirac_run.sh.
#!/bin/bash
#SBATCH -J "dirac_job" # name of job in SLURM
#SBATCH --account=<project> # project account
#SBATCH --partition=long # selected partition, short, medium or long
#SBATCH --nodes=1 # number of used nodes
#SBATCH --ntasks= # number of mpi tasks (parallel run)
#SBATCH --cpus-per-task= # number of cpus per mpi task (parallel run)
#SBATCH --time=72:00:00 # time limit for a job
#SBATCH -o stdout.%J.out # standard output
#SBATCH -e stderr.%J.out # error output
#SBATCH --exclusive # exclusive run on node
module load DIRAC/22.0-foss-2021a
INPUT=dirac.inp # input file
MOL=dirac.xyz # xyz or mol file
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
mkdir -p /scratch/$SLURM_JOB_ACCOUNT/$SLURM_JOB_ID
pam-dirc --mpi=$SLURM_NTASKS --inp=$INPUT --scratch=/scratch/$SLURM_JOB_ACCOUNT/$SLURM_JOB_ID --mol=$MOL



