DFTB+ 25.1 (OpenMP)

Webpage

https://dftbplus.org/

Build Environment

  • Intel oneAPI HPC Toolkit 2025.3.3.15 (icx/icpx, ifx)
  • Intel MKL 2025.3
  • CUDA 13.1 Update 1 

Files Required

  • magma-2.10.0.tar.gz
  • plumed-src-2.10.0.tgz
  • libmbd-0.12.8
  • dftbplus-25.1.tar.xz

Build Procedure

MAGMA

#!/bin/sh
set -eo pipefail

MAGMA_VERSION=2.10.0
MAGMA_DIRNAME=magma-${MAGMA_VERSION}
PARALLEL=16
COMPILER=intel2025.3.3
BASEDIR=${HOME}/Software/magma/${MAGMA_VERSION}
MAGMA_TARBALL=${BASEDIR}/magma-${MAGMA_VERSION}.tar.gz
WORKDIR=/gwork/users/${USER}
INSTALLDIR=/apl/magma/${MAGMA_VERSION}/${COMPILER}
#-----------------------------------------------------------------------------

cd $WORKDIR
module -s purge

if [ ! -d $MAGMA_DIRNAME ]; then
   tar xzf ${MAGMA_TARBALL}
fi

cd $MAGMA_DIRNAME

if [ ! -d build ]; then
   mkdir build
fi


if [ -f build/CMakeCache.txt ]; then
   rm -rf build/*
fi

cd build
module -s load mkl/2025.3
source ${HOME}/intel/oneapi/setvars.sh --force > /dev/null 2>&1
module -s load cuda/13.1u1

FC=ifx CC=icx CXX=icpx cmake -DCMAKE_INSTALL_PREFIX=${INSTALLDIR} -DBUILD_SHARED_LIBS=on .. \
 -DGPU_TARGET="Ampere" \
 -DUSE_FORTRAN=on

make -j ${PARALLEL} lib
make testing
make sparse-lib
make sparse-testing
make install

PLUMED (non-MPI)

#!/bin/bash
set -euo pipefail
PLUMED_VERSION=2.10.0
PLUMED_DIRNAME=plumed-${PLUMED_VERSION}
PARALLEL=16
COMPILER=intel2025.3.3
BASEDIR=${HOME}/Software/plumed/${PLUMED_VERSION}
PLUMED_TARBALL=${BASEDIR}/plumed-src-${PLUMED_VERSION}.tgz
WORKDIR=/gwork/users/${USER}
INSTALLDIR=/apl/plumed/${PLUMED_VERSION}/${COMPILER}/non-mpi
cd $WORKDIR
module -s purge
if [ ! -d "${PLUMED_DIRNAME}" ]; then
   [ ! -f "${PLUMED_TARBALL}" ] && { echo "ERROR: tarball not found: ${PLUMED_TARBALL}"; exit 1; }
   tar xzf "${PLUMED_TARBALL}"
fi
cd "${PLUMED_DIRNAME}" || { echo "ERROR: cannot cd to ${PLUMED_DIRNAME}"; exit 1; }

set +u
source ${HOME}/intel/oneapi/setvars.sh --force > /dev/null 2>&1
set -u
                     
FC=ifx CC=icx CXX=icpx ./configure \
 --prefix=${INSTALLDIR} \
 --disable-mpi \
   --enable-libsearch=no \
   LIBS="-lmkl_rt -lpthread -lm -ldl -lgomp -lstdc++ -lstdc++fs" \
   CXXFLAGS="-O3 -fopenmp" \
   FCFLAGS="" \
   FFLAGS="" \
   LDFLAGS="-fopenmp"
   
make clean
make -j ${PARALLEL} 2>&1 | tee ${WORKDIR}/plumed-build.log
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-}:${WORKDIR}/${PLUMED_DIRNAME}/src/lib

make test 2>&1 | tee ${WORKDIR}/plumed-test.log || { echo "ERROR: make test failed. Aborting install."; exit 1; }
make install 2>&1 | tee ${WORKDIR}/plumed-install.log

DFTB+

#!/bin/bash
set -euo pipefail

set +u
source "${HOME}/intel/oneapi/setvars.sh" --force > /dev/null 2>&1
set -u

DFTBPLUS_VERSION=25.1
DFTBPLUS_DIRNAME=dftbplus-${DFTBPLUS_VERSION}
PARALLEL=64
BASEDIR=${HOME}/Software/dftbplus/${DFTBPLUS_VERSION}
DFTBPLUS_TARBALL=${BASEDIR}/${DFTBPLUS_DIRNAME}.tar.xz
WORKDIR=/gwork/users/${USER}
INSTALLDIR=/apl/dftb+/${DFTBPLUS_VERSION}/non-ompi

PLUMED_DIR=/apl/plumed/2.10.0/intel2025.3.3/non-mpi
MAGMA_DIR=/apl/magma/2.10.0/intel2025.3.3

LIBMBD=${HOME}/libmbd/0.12.8/libmbd-0.12.8
#-----------------------------------------------------------------------------
cd "$WORKDIR" || { echo "ERROR: Cannot cd to $WORKDIR"; exit 1; }
module -s purge
module load mkl/2025.3
module load cuda/13.1u1

if [ ! -d "$DFTBPLUS_DIRNAME" ]; then
   tar xJf "${DFTBPLUS_TARBALL}" || { echo "ERROR: tar failed"; exit 1; }
fi

cd "$DFTBPLUS_DIRNAME" || { echo "ERROR: Cannot cd to $DFTBPLUS_DIRNAME"; exit 1; }

if [ -f _build/CMakeCache.txt ]; then
  echo "INFO: Existing CMakeCache.txt found. Cleaning _build..."
  rm -rf _build
fi
mkdir -p _build

rm -rf external/mbd/origin
cp -a "${LIBMBD}" external/mbd/origin \
    || { echo "ERROR: Failed to copy libMBD from ${LIBMBD}"; exit 1; }
  
FC=ifx CC=icx CXX=icpx \
CMAKE_PREFIX_PATH="${PLUMED_DIR};${MAGMA_DIR}" \
cmake \
 -S . -B _build \
 -DCMAKE_INSTALL_PREFIX="${INSTALLDIR}" \
 -DWITH_MPI=FALSE \
 -DWITH_ELSI=FALSE \
 -DWITH_ARPACK=TRUE \
 -DWITH_GPU=TRUE \
 -DWITH_TRANSPORT=TRUE \
 -DWITH_TBLITE=TRUE \
 -DWITH_SOCKETS=TRUE \
 -DWITH_SDFTD3=TRUE \
 -DWITH_MBD=TRUE \
 -DWITH_PLUMED=TRUE \
 -DWITH_CHIMES=TRUE

cmake --build _build --parallel ${PARALLEL} \
   || { echo "ERROR: Build failed"; exit 1; }

 

# Install
mkdir -p "${INSTALLDIR}"
cmake --install _build \
   || { echo "ERROR: Install failed"; exit 1; }

echo "Install complete: $(ls ${INSTALLDIR}/bin/dftb+)"