Extend Toolchain/CMake build script (no container)

This commit is contained in:
Matthias Krack 2025-01-27 16:10:45 +01:00
parent b85d882634
commit ae6f7bfca4
2 changed files with 114 additions and 33 deletions

View file

@ -1,6 +1,6 @@
#!/bin/bash
# author: Ole Schuett
# authors: Ole Schuett, Matthias Krack
if (($# != 2)); then
echo "Usage: build_cp2k_cmake.sh <PROFILE> <VERSION>"
@ -10,11 +10,47 @@ fi
PROFILE=$1
VERSION=$2
[[ -z "${log_lines}" ]] && log_lines="100"
[[ -z "${maxtasks}" ]] && maxtasks="12"
[[ -z "${mpi_implementation}" ]] && mpi_implementation="mpich"
[[ -z "${target_cpu}" ]] && target_cpu="native"
if [[ "${PROFILE}" == "toolchain-cwd" ]]; then
CWD="${PWD}"
TOOLCHAIN_DIR="${CWD}/tools/toolchain"
INSTALL_PREFIX="${CWD}/install/${VERSION}"
# Build or update CP2K toolchain if needed
echo "==================== Building CP2K toolchain =========="
cd "${TOOLCHAIN_DIR}" || exit 1
rm -rf build
echo "Found GCC $(gcc -dumpfullversion) compiler"
if [[ "${VERSION}" == "ssmp" ]]; then
echo "Building for target CPU ${target_cpu} without MPI"
./install_cp2k_toolchain.sh -j "${maxtasks}" --mpi-mode=no --no-arch-files --log-lines="${log_lines}" --target-cpu="${target_cpu}" \
--with-gcc --with-dftd4 --with-hdf5 --with-libtorch --with-trexio
elif [[ "${VERSION}" == "psmp" ]]; then
echo "Building for target CPU ${target_cpu} using ${mpi_implementation}"
./install_cp2k_toolchain.sh --install-all -j "${maxtasks}" --no-arch-files --log-lines="${log_lines}" --target-cpu="${target_cpu}" \
--with-gcc --with-"${mpi_implementation}" --with-libsmeagol
else
echo "ERROR: Unknown version ${VERSION} specified"
exit 1
fi
cd "${CWD}" || exit 1
# Install DBCSR if needed
"${CWD}/tools/docker/scripts/install_dbcsr.sh" "${PROFILE}" "${VERSION}"
PROFILE="toolchain"
else
TOOLCHAIN_DIR="/opt/cp2k-toolchain"
INSTALL_PREFIX="/opt/cp2k"
fi
echo "==================== Building CP2K ===================="
# Using Ninja because of https://gitlab.kitware.com/cmake/cmake/issues/18188
# Run CMake.
[[ -d build ]] && rm -rf build
mkdir build
cd build || exit 1
@ -22,7 +58,7 @@ if [[ "${PROFILE}" == "spack" ]]; then
eval "$(spack env activate myenv --sh)"
elif [[ "${PROFILE}" == "toolchain" ]]; then
# shellcheck disable=SC1091
source /opt/cp2k-toolchain/install/setup
source "${TOOLCHAIN_DIR}/install/setup"
fi
# TODO: Reconcile PROFILE/VERSION with CP2K_BUILD_OPTIONS in CMakeLists.txt.
@ -54,20 +90,22 @@ if [[ "${PROFILE}" == "spack" ]] && [[ "${VERSION}" == "psmp" ]]; then
elif [[ "${PROFILE}" == "toolchain" ]] && [[ "${VERSION}" == "ssmp" ]]; then
cmake \
-GNinja \
-DCMAKE_INSTALL_PREFIX=/opt/cp2k \
-Werror=dev \
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCP2K_BLAS_VENDOR=OpenBLAS \
-DCP2K_USE_LIBINT2=ON \
-DCP2K_USE_LIBXC=ON \
-DCP2K_USE_COSMA=OFF \
-DCP2K_USE_DFTD4=ON \
-DCP2K_USE_DLAF=OFF \
-DCP2K_USE_FFTW3=ON \
-DCP2K_USE_SPGLIB=ON \
-DCP2K_USE_LIBINT2=ON \
-DCP2K_USE_LIBTORCH=ON \
-DCP2K_USE_LIBXC=ON \
-DCP2K_USE_LIBXSMM=ON \
-DCP2K_USE_VORI=ON \
-DCP2K_USE_MPI=OFF \
-DCP2K_USE_MPI_F08=OFF \
-DCP2K_USE_COSMA=OFF \
-DCP2K_USE_DLAF=OFF \
-DCP2K_USE_LIBTORCH=ON \
-DCP2K_USE_SPGLIB=ON \
-DCP2K_USE_VORI=ON \
-Werror=dev \
.. |& tee ./cmake.log
CMAKE_EXIT_CODE=$?
@ -96,25 +134,26 @@ elif [[ "${PROFILE}" == "toolchain" ]] && [[ "${VERSION}" == "psmp" ]]; then
# https://github.com/cp2k/cp2k/issues/3416
cmake \
-GNinja \
-DCMAKE_INSTALL_PREFIX=/opt/cp2k \
-Werror=dev \
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCP2K_BLAS_VENDOR=OpenBLAS \
-DCP2K_USE_LIBINT2=ON \
-DCP2K_USE_LIBXC=ON \
-DCP2K_USE_FFTW3=ON \
-DCP2K_USE_SPGLIB=ON \
-DCP2K_USE_VORI=ON \
-DCP2K_USE_MPI=ON \
-DCP2K_USE_MPI_F08=ON \
-DCP2K_USE_LIBXSMM=ON \
-DCP2K_USE_PLUMED=ON \
-DCP2K_USE_SPLA=ON \
-DCP2K_USE_ELPA=ON \
-DCP2K_USE_COSMA=ON \
-DCP2K_USE_SIRIUS=OFF \
-DCP2K_USE_LIBTORCH=ON \
-DCP2K_USE_DFTD4=ON \
-DCP2K_USE_DLAF=OFF \
-DCP2K_USE_ELPA=ON \
-DCP2K_USE_FFTW3=ON \
-DCP2K_USE_LIBINT2=ON \
-DCP2K_USE_LIBTORCH=ON \
-DCP2K_USE_LIBXC=ON \
-DCP2K_USE_LIBXSMM=ON \
-DCP2K_USE_MPI=ON \
-DCP2K_USE_MPI_F08=ON \
-DCP2K_USE_PLUMED=ON \
-DCP2K_USE_SIRIUS=OFF \
-DCP2K_USE_SPGLIB=ON \
-DCP2K_USE_SPLA=ON \
-DCP2K_USE_VORI=ON \
-Werror=dev \
.. |& tee ./cmake.log
CMAKE_EXIT_CODE=$?
@ -219,12 +258,30 @@ if grep -A5 'CMake Warning' ./cmake.log; then
fi
# Compile CP2K.
echo -en '\nCompiling cp2k...'
echo -en '\nCompiling CP2K ... '
if ninja --verbose &> ninja.log; then
echo "done."
# Install CP2K.
echo -en '\nInstalling CP2K ... '
if ninja --verbose install &> install.log; then
echo "done."
echo ""
echo " Run the following commands after a successful CP2K build"
echo ""
echo " source ${CWD}/tools/toolchain/install/setup"
echo " export LD_LIBRARY_PATH=${INSTALL_PREFIX}/lib:\$LD_LIBRARY_PATH"
echo " export PATH=${INSTALL_PREFIX}/bin:\$PATH"
echo ""
echo " A CP2K regression test can be run with"
echo " tests/do_regtest.py install/${VERSION}/bin ${VERSION}"
else
echo -e "failed.\n\n"
tail -n "${log_lines}" install.log
exit 1
fi
else
echo -e "failed.\n\n"
tail -n 100 ninja.log
tail -n "${log_lines}" ninja.log
mkdir -p /workspace/artifacts/
cp ninja.log /workspace/artifacts/
echo -e "\nSummary: Compilation failed."

View file

@ -13,6 +13,25 @@ DBCSR_sha256="d55e4f052f28d1ed0faeaa07557241439243287a184d1fd27f875c8b9ca6bd96"
echo "==================== Installing DBCSR ===================="
if [[ "${PROFILE}" == "toolchain-cwd" ]]; then
CWD=${PWD}
TOOLCHAIN_DIR="${CWD}/tools/toolchain"
INSTALL_PREFIX="${TOOLCHAIN_DIR}/install/dbcsr-${DBCSR_ver}/${VERSION}"
DBCSR_DIR="${INSTALL_PREFIX}/lib/cmake/dbcsr"
echo "export DBCSR_DIR=${INSTALL_PREFIX}/lib/cmake/dbcsr" >> "${TOOLCHAIN_DIR}/install/setup"
if [[ -d "${DBCSR_DIR}" ]]; then
echo "dbcsr-${DBCSR_ver} is already installed, skipping it."
exit
else
[[ ! -d "${TOOLCHAIN_DIR}/build" ]] && mkdir -p "${TOOLCHAIN_DIR}/build"
cd "${TOOLCHAIN_DIR}/build"
fi
PROFILE="toolchain"
else
TOOLCHAIN_DIR="/opt/cp2k-toolchain"
INSTALL_PREFIX="/opt/dbcsr"
fi
wget -q "https://github.com/cp2k/dbcsr/releases/download/v${DBCSR_ver}/dbcsr-${DBCSR_ver}.tar.gz"
echo "${DBCSR_sha256} dbcsr-${DBCSR_ver}.tar.gz" | sha256sum --check > /dev/null
@ -23,8 +42,13 @@ mkdir build
cd build
if [[ "${PROFILE}" == "toolchain" ]]; then
# shellcheck disable=SC1091
source /opt/cp2k-toolchain/install/setup
if [[ -f "${TOOLCHAIN_DIR}/install/setup" ]]; then
# shellcheck disable=SC1091
source "${TOOLCHAIN_DIR}/install/setup"
else
echo "ERROR: Toolchain setup file not found"
exit 1
fi
fi
if [[ "${VERSION}" == "ssmp" ]]; then
@ -36,7 +60,7 @@ else
exit 1
fi
if ! cmake -DCMAKE_INSTALL_PREFIX=/opt/dbcsr -DUSE_MPI=${USE_MPI} -DUSE_OPENMP=ON -DUSE_SMM=blas .. &> cmake.log; then
if ! cmake -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" -DCMAKE_INSTALL_LIBDIR=lib -DUSE_MPI=${USE_MPI} -DUSE_OPENMP=ON -DUSE_SMM=blas .. &> cmake.log; then
cat cmake.log
exit 1
fi
@ -51,7 +75,7 @@ if ! make install VERBOSE=1 &> install.log; then
exit 1
fi
cd ..
rm -rf build "dbcsr-${DBCSR_ver}" "dbcsr-${DBCSR_ver}.tar.gz"
cd ../..
rm -rf "dbcsr-${DBCSR_ver}" "dbcsr-${DBCSR_ver}.tar.gz"
#EOF