Octopus

Description

Octopus is an ab initio program that describes electrons quantum-mechanically within density-functional theory (DFT) and in its time-dependent form (TDDFT) for problems with a time evolution. Nuclei are described classically as point particles. Electron-nucleus interaction is described within the pseudopotential approximation.

Octopus is free software, released under the GPL license.

More information about the program and its usage can be found on https://www.octopus-code.org/

Modules

Octopus is currently available only on Lise. The standard pseudopotentials deployed with Octopus are located in $OCTOPUS_ROOT/share/octopus/pseudopotentials/PSF/. If you need to use a different set, please refer to the manual.

Octopus versionModule filesRequirementsOptional features supportedCompute partitionsCPU/GPU
12.1octopus/12.1

intel/2021.2

impi/2021.7.1


CentOS 7(Haken)/(Fehler)
14.1octopus/14.1impi/2021.13NetCDFRocky Linux 9(Haken)/(Fehler)


Example Jobscripts

Assuming that your input file inp is located within the directory where you are submitting the job script, and that the output is written to out, one example of job script is given below

CPU partitions with Rocky Linux 9
#!/bin/bash 
#SBATCH --time 12:00:00
#SBATCH --partition cpu-clx
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=24
#SBATCH --cpus-per-task=4
#SBATCH --job-name=octopus 

module load impi/2021.13
module load octopus/14.1

# Set the number of OpenMP threads as given by the SLURM parameter "cpus-per-task"
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
 
# Adjust the maximum stack size of OpenMP threads
export OMP_STACKSIZE=512m

# Do not use the CPU binding provided by slurm
export SLURM_CPU_BIND=none
 
# Binding OpenMP threads
export OMP_PLACES=cores
export OMP_PROC_BIND=close
 
# Binding MPI tasks
export I_MPI_PIN=yes
export I_MPI_PIN_DOMAIN=omp
export I_MPI_PIN_CELL=core

mpirun octopus

Please, check carefully for your use cases the best parallelization strategies in terms of e. g. the number of MPI processes and OpenMP threads. Note that the variables ParStates, ParDomains and ParKPoints defined in the input file also impact the parallelization performance.

A similar example valid for the CPU partitions with CentOS 7 is

CPU partitions with CentOS 7
#!/bin/bash 
#SBATCH --time 12:00:00
#SBATCH --partition standard96
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=24
#SBATCH --cpus-per-task=4
#SBATCH --job-name=octopus 

module load intel/2021.2 impi/2021.7.1 octopus/12.1

# Set the number of OpenMP threads as given by the SLURM parameter "cpus-per-task"
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
 
# Adjust the maximum stack size of OpenMP threads
export OMP_STACKSIZE=512m

# Do not use the CPU binding provided by slurm
export SLURM_CPU_BIND=none
 
# Binding OpenMP threads
export OMP_PLACES=cores
export OMP_PROC_BIND=close
 
# Binding MPI tasks
export I_MPI_PIN=yes
export I_MPI_PIN_DOMAIN=omp
export I_MPI_PIN_CELL=core

mpirun octopus