mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-27 13:45:19 -04:00
Extend Toolchain/CMake build script (no container)
This commit is contained in:
parent
b85d882634
commit
ae6f7bfca4
2 changed files with 114 additions and 33 deletions
|
|
@ -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."
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue