From 39eddeee7a0eb00817b7193f7df06dd30c058561 Mon Sep 17 00:00:00 2001 From: SY Wang Date: Mon, 29 Jun 2026 04:15:19 +0800 Subject: [PATCH] Toolchain: Update libxs* and DBCSR; fix CUDA/HIP package discovery (#5472) --- tools/docker/scripts/cmake_cp2k.sh | 2 - tools/toolchain/build_cp2k.sh | 49 ++++++++++++------- .../toolchain/scripts/stage4/install_cosma.sh | 27 ++++++---- .../toolchain/scripts/stage4/install_libxs.sh | 9 ++-- .../scripts/stage4/install_libxstream.sh | 12 +++-- .../scripts/stage8/install_sirius.sh | 1 + .../toolchain/scripts/stage9/install_dbcsr.sh | 47 +++++++----------- 7 files changed, 81 insertions(+), 66 deletions(-) diff --git a/tools/docker/scripts/cmake_cp2k.sh b/tools/docker/scripts/cmake_cp2k.sh index d27c83c4ae..4bab46154c 100644 --- a/tools/docker/scripts/cmake_cp2k.sh +++ b/tools/docker/scripts/cmake_cp2k.sh @@ -122,7 +122,6 @@ elif [[ "${PROFILE}" == "toolchain_cuda_"* ]] && [[ "${VERSION}" == "psmp" ]]; t cmake \ -GNinja \ -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \ - -DDBCSR_DIR="${DBCSR_CUDA_ROOT}/lib/cmake/dbcsr" \ -DSPLA_ROOT="${SPLA_ROOT}-cuda" \ -DCP2K_WITH_GPU="${PROFILE:15}" \ -DCP2K_USE_ACCEL=CUDA \ @@ -150,7 +149,6 @@ elif [[ "${PROFILE}" == "toolchain_hip_"* ]] && [[ "${VERSION}" == "psmp" ]]; th cmake \ -GNinja \ -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \ - -DDBCSR_DIR="${DBCSR_HIP_ROOT}/lib/cmake/dbcsr" \ -DCP2K_WITH_GPU="${PROFILE:14}" \ -DCP2K_USE_ACCEL=HIP \ -DCP2K_USE_MPI=ON \ diff --git a/tools/toolchain/build_cp2k.sh b/tools/toolchain/build_cp2k.sh index 0924905909..f1db9c5942 100755 --- a/tools/toolchain/build_cp2k.sh +++ b/tools/toolchain/build_cp2k.sh @@ -193,16 +193,26 @@ if [ ${DEBUG_BUILD} == "__TRUE__" ]; then fi if [ -n "$(grep -- "--install-all" "${TOOLCHAIN_ROOTDIR}/toolchain_settings")" ]; then CMAKE_OPTIONS+=" -DCP2K_USE_EVERYTHING=ON -DCP2K_USE_DLAF=OFF -DCP2K_USE_PEXSI=OFF" + # If MPI is disabled, set "CP2K_USE_MPI" to "OFF" + if [ "${mpi_mode}" = "no" ]; then + CMAKE_OPTIONS+=" -DCP2K_USE_MPI=OFF" + fi + # Some options that should be specially considered: + # Intel MKL includes FFTW + if [ "${with_fftw}" = "__DONTUSE__" ] && [ "${math_mode}" != "mkl" ]; then + CMAKE_OPTIONS+=" -DCP2K_USE_FFTW3=OFF" + fi + # MiMic-MCL (MiMiC Communication Library) + if [ "${with_mcl}" = "__DONTUSE__" ]; then + CMAKE_OPTIONS+=" -DCP2K_USE_MIMIC=OFF" + fi for toolchain_option in $(grep -i "dontuse" "${TOOLCHAIN_INSTALL_DIR}/toolchain.conf" | - grep -Evi "gcc|amd|intel" | cut -d'_' -f2 | cut -d'=' -f1); do - var_name="with_${toolchain_option}" - if [ "${!var_name}" != "__DONTUSE__" ]; then - ADDED_CMAKE_OPTION=$(sed -n '/option(/,/)/p' "${CP2K_ROOT}/CMakeLists.txt" | - grep -i "${toolchain_option}" | awk '{print $1}' | cut -d'(' -f2 | head -n 1) - # Use "if-then" below can avoid generating empty "-D=OFF" options - if [ -n "${ADDED_CMAKE_OPTION}" ]; then - CMAKE_OPTIONS+=" -D${ADDED_CMAKE_OPTION}=OFF" - fi + grep -Evi "gcc|amd|intel|cmake|fftw|mkl|dbcsr" | cut -d'_' -f2 | cut -d'=' -f1); do + ADDED_CMAKE_OPTION=$(sed -n '/option(/,/)/p' "${CP2K_ROOT}/CMakeLists.txt" | + grep -i "${toolchain_option}" | awk '{print $1}' | cut -d'(' -f2 | head -n 1) + # Use "if-then" below can avoid generating empty "-D=OFF" options + if [ -n "${ADDED_CMAKE_OPTION}" ]; then + CMAKE_OPTIONS+=" -D${ADDED_CMAKE_OPTION}=OFF" fi done else @@ -215,7 +225,7 @@ else if [ "${with_fftw}" != "__DONTUSE__" ] || [ "${math_mode}" = "mkl" ]; then CMAKE_OPTIONS+=" -DCP2K_USE_FFTW3=ON" fi - # Mimic-MCL (MiMiC Communication Library) + # MiMic-MCL (MiMiC Communication Library) if [ "${with_mcl}" != "__DONTUSE__" ]; then CMAKE_OPTIONS+=" -DCP2K_USE_MIMIC=ON" fi @@ -233,19 +243,22 @@ else fi fi done - # Additional feature of SIRIUS - if [ "${with_sirius}" = "__INSTALL__" ]; then - CMAKE_OPTIONS+=" -DCP2K_USE_SIRIUS_VCSQNM=ON" - if [ "${with_tblite}" != "__DONTUSE__" ]; then - CMAKE_OPTIONS+=" -DCP2K_USE_SIRIUS_DFTD3=ON -DCP2K_USE_SIRIUS_DFTD4=ON" - elif [ "${with_dftd4}" != "__DONTUSE__" ]; then - CMAKE_OPTIONS+=" -DCP2K_USE_SIRIUS_DFTD4=ON" - fi +fi +# Additional feature of SIRIUS +if [ "${with_sirius}" = "__INSTALL__" ]; then + CMAKE_OPTIONS+=" -DCP2K_USE_SIRIUS_VCSQNM=ON" + if [ "${with_tblite}" != "__DONTUSE__" ]; then + CMAKE_OPTIONS+=" -DCP2K_USE_SIRIUS_DFTD3=ON -DCP2K_USE_SIRIUS_DFTD4=ON" + elif [ "${with_dftd4}" != "__DONTUSE__" ]; then + CMAKE_OPTIONS+=" -DCP2K_USE_SIRIUS_DFTD4=ON" fi fi # If GPU acceleration is used, add the option about GPU acceleration if [ "${ENABLE_CUDA}" = "__TRUE__" ]; then CMAKE_OPTIONS+=" -DCP2K_USE_ACCEL=CUDA -DCP2K_WITH_GPU=${GPU_VER}" + if [ "${with_cusolvermp}" != "__DONTUSE__" ]; then + CMAKE_OPTIONS+=" -DCP2K_USE_CUSOLVER_MP=ON" + fi elif [ "${ENABLE_HIP}" = "__TRUE__" ]; then CMAKE_OPTIONS+=" -DCP2K_USE_ACCEL=HIP -DCP2K_WITH_GPU=${GPU_VER}" elif [ "${ENABLE_OPENCL}" = "__TRUE__" ]; then diff --git a/tools/toolchain/scripts/stage4/install_cosma.sh b/tools/toolchain/scripts/stage4/install_cosma.sh index da89e2a5f0..c74da99c50 100755 --- a/tools/toolchain/scripts/stage4/install_cosma.sh +++ b/tools/toolchain/scripts/stage4/install_cosma.sh @@ -25,11 +25,11 @@ source "${INSTALLDIR}"/toolchain.env cd "${BUILDDIR}" # HIP-build of Tiled-MM and COSMA requires rocblas -if [ "$with_cosma" != "__DONTUSE__" ] && [ "$ENABLE_HIP" = "__TRUE__" ]; then +if [ "${with_cosma}" != "__DONTUSE__" ] && [ "$ENABLE_HIP" = "__TRUE__" ]; then check_lib -lrocblas "rocm" fi -case "$with_cosma" in +case "${with_cosma}" in __INSTALL__) require_env OPENBLAS_ROOT require_env SCALAPACK_ROOT @@ -227,19 +227,26 @@ case "$with_cosma" in check_dir "${pkg_install_dir}/include" ;; esac -if [ "$with_cosma" != "__DONTUSE__" ]; then - if [ "$with_cosma" != "__SYSTEM__" ]; then +if [ "${with_cosma}" != "__DONTUSE__" ]; then + if [ "${with_cosma}" != "__SYSTEM__" ]; then + pkg_install_dir1="${pkg_install_dir}" + if [ "${with_cosma}" = "__INSTALL__" ]; then + if [ "${ENABLE_CUDA}" = "__TRUE__" ]; then + pkg_install_dir1="${pkg_install_dir}-cuda" + elif [ "${ENABLE_HIP}" = "__TRUE__" ]; then + pkg_install_dir1="${pkg_install_dir}-hip" + fi + fi cat << EOF > "${BUILDDIR}/setup_cosma" -prepend_path LD_LIBRARY_PATH "${pkg_install_dir}/lib" -prepend_path LD_RUN_PATH "${pkg_install_dir}/lib" -prepend_path LIBRARY_PATH "${pkg_install_dir}/lib" -prepend_path PKG_CONFIG_PATH "${pkg_install_dir}/lib/pkgconfig" -prepend_path CMAKE_PREFIX_PATH "${pkg_install_dir}" +prepend_path LD_LIBRARY_PATH "${pkg_install_dir1}/lib" +prepend_path LD_RUN_PATH "${pkg_install_dir1}/lib" +prepend_path LIBRARY_PATH "${pkg_install_dir1}/lib" +prepend_path PKG_CONFIG_PATH "${pkg_install_dir1}/lib/pkgconfig" +prepend_path CMAKE_PREFIX_PATH "${pkg_install_dir1}" EOF fi cat << EOF >> "${BUILDDIR}/setup_cosma" export COSMA_VER="${cosma_ver}" -export COSMA_ROOT="${pkg_install_dir}" EOF filter_setup "${BUILDDIR}/setup_cosma" "${SETUPFILE}" diff --git a/tools/toolchain/scripts/stage4/install_libxs.sh b/tools/toolchain/scripts/stage4/install_libxs.sh index c9f259f396..fa4eccf05b 100755 --- a/tools/toolchain/scripts/stage4/install_libxs.sh +++ b/tools/toolchain/scripts/stage4/install_libxs.sh @@ -6,8 +6,8 @@ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -libxs_ver="ee1e6ab" -libxs_sha256="c5b64701d5c1d01b0307c9ae438d3e12408b04cf8b0f4a11e8139107b3bd82fa" +libxs_ver="1.0.0" +libxs_sha256="de26f50cb986a2f0e4f92c0eb489d40a44f7e4c5acd22751a6cfa2829dabd04d" source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh @@ -31,9 +31,8 @@ case "$with_libxs" in if [ -f libxs-${libxs_ver}.tar.gz ]; then echo "libxs-${libxs_ver}.tar.gz is found" else - download_pkg_from_urlpath "${libxs_sha256}" "${libxs_ver}" \ - https://codeload.github.com/hfp/libxs/tar.gz \ - "libxs-${libxs_ver}.tar.gz" + download_pkg_from_urlpath "${libxs_sha256}" "libxs-${libxs_ver}.tar.gz" \ + https://github.com/hfp/libxs/releases/download/${libxs_ver} fi [ -d libxs-${libxs_ver} ] && rm -rf libxs-${libxs_ver} tar -xzf libxs-${libxs_ver}.tar.gz diff --git a/tools/toolchain/scripts/stage4/install_libxstream.sh b/tools/toolchain/scripts/stage4/install_libxstream.sh index f1f80256fa..641fd5bf90 100755 --- a/tools/toolchain/scripts/stage4/install_libxstream.sh +++ b/tools/toolchain/scripts/stage4/install_libxstream.sh @@ -6,8 +6,8 @@ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)" -libxstream_ver="9b5d4ed" -libxstream_sha256="77bd005aaf1d03556c32ea30b3f239d2ac09270c9adb219a82d585a82f1b6fea" +libxstream_ver="1.0.0" +libxstream_sha256="44a2823b12eb58b5eaf97649244b93dcf921597ceabc718053cd28e5f59260e3" source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh @@ -34,7 +34,13 @@ case "$with_libxstream" in if verify_checksums "${install_lock_file}"; then echo "libxstream-${libxstream_ver} is already installed, skipping it." else - retrieve_package "${libxstream_sha256}" "libxstream-${libxstream_ver}.tar.gz" + # retrieve_package "${libxstream_sha256}" "libxstream-${libxstream_ver}.tar.gz" + if [ -f libxstream-${libxstream_ver}.tar.gz ]; then + echo "libxstream-${libxstream_ver}.tar.gz is found" + else + download_pkg_from_urlpath "${libxstream_sha256}" "libxstream-${libxstream_ver}.tar.gz" \ + https://github.com/hfp/libxs/releases/download/${libxstream_ver} + fi [ -d libxstream-${libxstream_ver} ] && rm -rf libxstream-${libxstream_ver} tar -xzf libxstream-${libxstream_ver}.tar.gz diff --git a/tools/toolchain/scripts/stage8/install_sirius.sh b/tools/toolchain/scripts/stage8/install_sirius.sh index 1e7577fb49..eed6b5f0df 100755 --- a/tools/toolchain/scripts/stage8/install_sirius.sh +++ b/tools/toolchain/scripts/stage8/install_sirius.sh @@ -103,6 +103,7 @@ case "$with_sirius" in if [ "$ENABLE_CUDA" = "__TRUE__" ]; then [ -d build-cuda ] && rm -rf "build-cuda" + echo "Installing from scratch into ${pkg_install_dir}/cuda" mkdir build-cuda cd build-cuda cmake \ diff --git a/tools/toolchain/scripts/stage9/install_dbcsr.sh b/tools/toolchain/scripts/stage9/install_dbcsr.sh index 15c41b67a7..187e083f5c 100755 --- a/tools/toolchain/scripts/stage9/install_dbcsr.sh +++ b/tools/toolchain/scripts/stage9/install_dbcsr.sh @@ -6,8 +6,8 @@ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0 SCRIPT_DIR="$(cd "$(dirname "${SCRIPT_NAME}")/.." && pwd -P)" -dbcsr_ver="4d85b72" -dbcsr_sha256="33461c7313e432b8902c9484ec327550d01b32b1b487020d3372d0ddd19265dc" +dbcsr_ver="2.10.0" +dbcsr_sha256="3d897220fbb4498215331efad6905eb7744881b4cf04eb5c5fb4db7c48a56ef9" source "${SCRIPT_DIR}"/common_vars.sh source "${SCRIPT_DIR}"/tool_kit.sh source "${SCRIPT_DIR}"/signal_trap.sh @@ -27,12 +27,12 @@ case "${with_dbcsr}" in if verify_checksums "${install_lock_file}"; then echo "dbcsr-${dbcsr_ver} is already installed, skipping it." else + # retrieve_package "${dbcsr_sha256}" "dbcsr-${dbcsr_ver}.tar.gz" if [ -f dbcsr-${dbcsr_ver}.tar.gz ]; then echo "dbcsr-${dbcsr_ver}.tar.gz is found" else - download_pkg_from_urlpath "${dbcsr_sha256}" "${dbcsr_ver}" \ - https://codeload.github.com/cp2k/dbcsr/tar.gz \ - "dbcsr-${dbcsr_ver}.tar.gz" + download_pkg_from_urlpath "${dbcsr_sha256}" "dbcsr-${dbcsr_ver}.tar.gz" \ + https://github.com/cp2k/dbcsr/releases/download/v${dbcsr_ver} fi echo "Installing from scratch into ${pkg_install_dir}" [ -d dbcsr-${dbcsr_ver} ] && rm -rf dbcsr-${dbcsr_ver} @@ -45,30 +45,18 @@ case "${with_dbcsr}" in sed -i "s/ H100)/ H100\\n GB10)/" CMakeLists.txt sed -i "/ set(GPU_ARCH_NUMBER_H100 90)/a\\ set(GPU_ARCH_NUMBER_GB10 121)" CMakeLists.txt cp src/acc/libsmm_acc/parameters/parameters_H100.json \ - src/acc/libsmm_acc/parameters/parameters_GB10.json 2> /dev/null || true + src/acc/libsmm_acc/parameters/parameters_GB10.json fi fi - # Locate fypp (GitHub tarballs lack submodules). - FYPP_EXE="" - if [ -x "${ROOTDIR}/../../tools/build_utils/fypp" ]; then - FYPP_EXE="${ROOTDIR}/../../tools/build_utils/fypp" - elif [ -x "${SCRIPT_DIR}/fypp" ]; then - FYPP_EXE="${SCRIPT_DIR}/fypp" - elif command -v fypp > /dev/null 2>&1; then - FYPP_EXE="$(command -v fypp)" - else - report_error $LINENO "Failed to find the FYPP preprocessor." - fi mkdir build-cpu cd build-cpu - CMAKE_OPTIONS="-DBUILD_TESTING=NO -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=RelWithDebInfo" - CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_OPENMP=ON" - CMAKE_OPTIONS="${CMAKE_OPTIONS} -DWITH_EXAMPLES=NO -DFYPP_EXECUTABLE=${FYPP_EXE}" - if [ "${with_libxsmm}" != "__DONTUSE__" ]; then - CMAKE_OPTIONS="${CMAKE_OPTIONS} -DUSE_LIBXSMM=ON" - fi + CMAKE_OPTIONS="-DBUILD_TESTING=NO -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE=ON" + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_OPENMP=ON -DWITH_EXAMPLES=NO" if [ "${with_libxs}" != "__DONTUSE__" ]; then CMAKE_OPTIONS="${CMAKE_OPTIONS} -DUSE_LIBXS=ON" + if [ "${with_libxsmm}" != "__DONTUSE__" ]; then + CMAKE_OPTIONS="${CMAKE_OPTIONS} -DUSE_LIBXSMM=ON" + fi fi if [ "${MPI_MODE}" == "no" ]; then CMAKE_OPTIONS="${CMAKE_OPTIONS} -DUSE_MPI=OFF" @@ -82,6 +70,7 @@ case "${with_dbcsr}" in make -j $(get_nprocs) install > make.log 2>&1 || tail_excerpt make.log cd .. if [ "${ENABLE_CUDA}" == "__TRUE__" ]; then + echo "Installing from scratch into ${pkg_install_dir}-cuda" mkdir build-cuda cd build-cuda CMAKE_OPTIONS="${CMAKE_OPTIONS} -DUSE_ACCEL=cuda" @@ -94,6 +83,7 @@ case "${with_dbcsr}" in cd .. fi if [ "${ENABLE_HIP}" == "__TRUE__" ]; then + echo "Installing from scratch into ${pkg_install_dir}-hip" mkdir build-hip cd build-hip CMAKE_OPTIONS="${CMAKE_OPTIONS} -DUSE_ACCEL=hip -DWITH_GPU=Mi250" @@ -128,14 +118,15 @@ esac if [ "${with_dbcsr}" != "__DONTUSE__" ]; then cat << EOF > "${BUILDDIR}/setup_dbcsr" export DBCSR_VER="${dbcsr_ver}" -export DBCSR_ROOT="${pkg_install_dir}" EOF if [ "${with_dbcsr}" != "__SYSTEM__" ]; then pkg_install_dir1="${pkg_install_dir}" - if [ "${ENABLE_CUDA}" == "__TRUE__" ]; then - pkg_install_dir1="${pkg_install_dir}-cuda" - elif [ "${ENABLE_HIP}" == "__TRUE__" ]; then - pkg_install_dir1="${pkg_install_dir}-hip" + if [ "${with_dbcsr}" = "__INSTALL__" ]; then + if [ "${ENABLE_CUDA}" = "__TRUE__" ]; then + pkg_install_dir1="${pkg_install_dir}-cuda" + elif [ "${ENABLE_HIP}" = "__TRUE__" ]; then + pkg_install_dir1="${pkg_install_dir}-hip" + fi fi cat << EOF >> "${BUILDDIR}/setup_dbcsr" prepend_path LD_LIBRARY_PATH "${pkg_install_dir1}/lib"