Skip to main content

Setting up OpenMX

Please refer to the OpenMX website for detailed documentations. The installation options will depend on your system architecture and available libraries. I am installing OpenMX version 3.9.9 at one of NUS HPC clusters.

Get the source code:

tar -zxvf openmx3.9.tar.gz
rm openmx3.9.tar.gz
mv patch3.9.9.tar.gz openmx3.9/source
cd openmx3.9/source
tar -zxvf patch3.9.9.tar.gz
rm patch3.9.9.tar.gz

Load Intel Math Kernel library:

module load xe_2015

You may check the necessary environment variables:


Open the makefile and specify CC, FC, and LIB flags according to your system and libraries. I am using MPI and Intel Math Kernel Libraries.

CC = mpicc -O3 -qopenmp -I${MKLROOT}/include/fftw -I${MKLROOT}/include
FC = mpif90 -O3 -qopenmp -I${MKLROOT}/include/fftw
LIB= -L${MKLROOT}/include/fftw -lfftw3 -L$MKLROOT/lib/intel64 -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -lpthread -lifcore

Currently I found some issues with the Intel license server while using xe_2015 module at NUS HPC clusters. After the module load, you need to export following ENV variable:

export "INTEL_LICENSE_FILE=/app1/centos6.3/Intel/xe_2015/composer_xe_2015.3.187/licenses"

If you have xe_2018 (instead of xe_2015):

module load xe_2018

Use following flags:

MKLROOT = /opt/intel/mkl
CC = mpiicc -O3 -xHOST -ip -no-prec-div -qopenmp -I${MKLROOT}/include/fftw -I${MKLROOT}/include
FC = mpiifort -O3 -xHOST -ip -no-prec-div -qopenmp
LIB= -L${MKLROOT}/include/fftw -lfftw3 -L$MKLROOT/lib/intel64 -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -lpthread -lifcore

Once you are set, compile and build the executables:

make -j8 all
make install

Compile the DosMain program:

make DosMain

There is bandgnu13.c in the source directory, which resulted in error. It needs be compiled using gcc:

module purge
gcc bandgnu13.c -lm -o bandgnu13
cp bandgnu13 ../work/

Optionally you may add the openmx3.9/work PATH to your .bashrc.

export PATH="/home/svu/{username}/openmx3.9/work:$PATH"

Compile using latest Intel oneAPI libraries

Download and install latest Intel oneAPI libraries:


# install a subset of components from base toolkit
sh ./ -a --silent --eula accept --components intel.oneapi.lin.dpcpp-cpp-compiler:intel.oneapi.lin.mkl.devel

# download and install hpc toolkit
sh ./ -a --silent --eula accept

Initialize MKL env:

source /opt/intel/oneapi/

OpenMX makefile configuration:

MKLROOT = /opt/intel/oneapi/mkl/2022.1.0
CC = mpiicc -O3 -xHOST -ip -no-prec-div -qopenmp -I${MKLROOT}/include/fftw -I${MKLROOT}/include
FC = mpiifort -O3 -xHOST -ip -no-prec-div -qopenmp
LIB= -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lifcore -lmkl_blacs_intelmpi_lp64 -liomp5 -lpthread -lm -ldl

Compile and install:

make -j4 install

If you like to run tests to verify your installation:

cd openmx3.9/source
mpirun -np 4 ./openmx -runtest

You may compare CPU times with other machines.

Here is a sample PBS job-script for NUS HPC cluster:

#PBS -q parallel12
#PBS -l select=2:ncpus=12:mpiprocs=12:mem=45GB
#PBS -j eo
#PBS -N openmx-test
source /etc/profile.d/
module load xe_2015
np=$( cat ${PBS_NODEFILE} |wc -l );
mpirun -np $np -f ${PBS_NODEFILE} openmx input.txt > output.txt

Input files, Jupyter notebooks, and other source files used in this tutorial can be found in my GitHub repository: pranabdas/openmx.

  • Read through the OpenMX manual for various details.
  • OpenMX viewer can help you choose certain parameters for the input file e.g., basis configuration. You may also consult this reference table.
  • SeeK-path tool can help you build the k-path.
  • The work directory under OpenMX installation contains lots of example files for your reference.