General Information
ELK is an all-electron full-potential linearised augmented-plane wave (LAPW) code with many advanced features. Written originally at Karl-Franzens-Universität Graz as a milestone of the EXCITING EU Research and Training Network, the code is designed to be as simple as possible so that new developments in electronic structure theory can be added quickly and reliably. Elk is freely available under the GNU General Public License.
Running ELK
Lmod modules
ml spider elk
The following environmental variables will be set upon loading any of the ELK modules:
Variable name | Value/Description |
---|---|
ELK_ROOT | root-directory containing elk code |
OMP_NUM_THREADS | $SLURM_CPUS_PER_TASK |
OMP_PROC_BIND | false |
OMP_STACKSIZE | 512M |
Species files
ELK species files are located in $ELK_ROOT/species
and will be used by default unless sppath
points to different directory in the ELK input file elk.in
.
If you want to have customized species files you need to the respective species files and set sppath
accordingly.
cp $ELK_ROOT/species/{C,O,Ni,F}.in .
# use same directory where elk.in is located sppath '' # use a different directory ( / at the end is essential) sppath '/a/different/path/'
Slurm Job Template
#!/bin/bash #SBATCH --job-name=runelk #SBATCH --partition=epyc #SBATCH --ntasks=16 #SBATCH --nodes=1 #SBATCH --cpus-per-task=8 #SBATCH --mem-per-cpu=4G #SBATCH --time=1-0 ml purge ml elk srun elk
Performance considerations
ELK makes heavily use of (nested) OpenMP threading and in principle can use just 1 MPI process per node, using up to 128 CPU threads per process.
Due to the NUMA layout of the processors used on the cluster, it is about 20% faster to use 8 or 16 CPU threads per process.
Choice of the number of tasks
ELK calculates different k-points in parallel. To make optimal use of allocated ressources, choose --ntasks to be equal or as an integer divisor of the number of k-points.
Support
If you have any problems with ORCA please contact the team of IT-Physik (preferred) or the HPC-Servicedesk.
Also, if you have improvements to this documentation that other users can profit from, please reach out!