From 8e43b5cd4d8a458667f4f7f2bd4ebbf57826b9d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Sch=C3=BCtt?= Date: Thu, 24 Jul 2025 15:50:29 +0200 Subject: [PATCH] Docker: Migrate arm64 test to CMake --- cmake/cmake_cp2k.sh | 14 ++++++++++++++ tools/docker/Dockerfile.test_arm64-psmp | 22 +++++++++++----------- tools/docker/generate_dockerfiles.py | 8 ++------ tools/docker/scripts/test_regtest_cmake.sh | 3 --- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/cmake/cmake_cp2k.sh b/cmake/cmake_cp2k.sh index 1fcbb82614..5cade4ab2e 100755 --- a/cmake/cmake_cp2k.sh +++ b/cmake/cmake_cp2k.sh @@ -110,6 +110,20 @@ elif [[ "${PROFILE}" == "toolchain_all" ]] && [[ "${VERSION}" == "ssmp" ]]; then .. |& tee ./cmake.log CMAKE_EXIT_CODE=$? +elif [[ "${PROFILE}" == "toolchain_arm64" ]] && [[ "${VERSION}" == "psmp" ]]; then + cmake \ + -GNinja \ + -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \ + -DCP2K_USE_EVERYTHING=ON \ + -DCP2K_USE_DLAF=OFF \ + -DCP2K_USE_PEXSI=OFF \ + -DCP2K_USE_ACE=OFF \ + -DCP2K_USE_DEEPMD=OFF \ + -DCP2K_USE_LIBTORCH=OFF \ + -Werror=dev \ + .. |& tee ./cmake.log + CMAKE_EXIT_CODE=$? + elif [[ "${PROFILE}" == "toolchain_generic" ]] && [[ "${VERSION}" == "psmp" ]]; then cmake \ -GNinja \ diff --git a/tools/docker/Dockerfile.test_arm64-psmp b/tools/docker/Dockerfile.test_arm64-psmp index f11a9acbc0..df546d03c7 100644 --- a/tools/docker/Dockerfile.test_arm64-psmp +++ b/tools/docker/Dockerfile.test_arm64-psmp @@ -23,7 +23,7 @@ COPY ./tools/toolchain/install_cp2k_toolchain.sh . RUN ./install_cp2k_toolchain.sh \ --install-all \ --mpi-mode=mpich \ - --with-dbcsr=no \ + --with-dbcsr \ --with-gcc=system \ --with-libtorch=no \ --with-deepmd=no \ @@ -66,25 +66,25 @@ COPY ./tools/toolchain/scripts/arch_base.tmpl \ ./scripts/ RUN ./scripts/generate_arch_files.sh && rm -rf ./build -# Install CP2K using local.psmp. +# Install CP2K sources. WORKDIR /opt/cp2k -COPY ./Makefile . COPY ./src ./src -COPY ./exts ./exts -COPY ./tools/build_utils ./tools/build_utils -RUN /bin/bash -c " \ - mkdir -p arch && \ - ln -vs /opt/cp2k-toolchain/install/arch/local.psmp ./arch/" COPY ./data ./data COPY ./tests ./tests -COPY ./tools/regtesting ./tools/regtesting +COPY ./tools/build_utils ./tools/build_utils +COPY ./cmake ./cmake +COPY ./CMakeLists.txt . + +# Compile CP2K. +COPY ./tools/docker/scripts/build_cp2k_cmake.sh . +RUN ./build_cp2k_cmake.sh toolchain_arm64 psmp # Run regression tests. ARG TESTOPTS="" -COPY ./tools/docker/scripts/test_regtest.sh ./ +COPY ./tools/docker/scripts/test_regtest_cmake.sh ./ RUN /bin/bash -o pipefail -c " \ TESTOPTS='${TESTOPTS}' \ - ./test_regtest.sh 'local' 'psmp' |& tee report.log && \ + ./test_regtest_cmake.sh toolchain_arm64 psmp |& tee report.log && \ rm -rf regtesting" # Output the report if the image is old and was therefore pulled from the build cache. diff --git a/tools/docker/generate_dockerfiles.py b/tools/docker/generate_dockerfiles.py index abf9f72568..be9e26019e 100755 --- a/tools/docker/generate_dockerfiles.py +++ b/tools/docker/generate_dockerfiles.py @@ -74,12 +74,8 @@ def main() -> None: with OutputFile("Dockerfile.test_arm64-psmp", args.check) as f: base_img = "arm64v8/ubuntu:24.04" - f.write( - install_deps_toolchain( - base_img, with_libtorch="no", with_deepmd="no", with_dbcsr="no" - ) - ) - f.write(regtest("psmp")) + f.write(install_deps_toolchain(base_img, with_libtorch="no", with_deepmd="no")) + f.write(regtest_cmake("toolchain_arm64", "psmp")) with OutputFile(f"Dockerfile.test_performance", args.check) as f: f.write(install_deps_toolchain(with_dbcsr="no")) diff --git a/tools/docker/scripts/test_regtest_cmake.sh b/tools/docker/scripts/test_regtest_cmake.sh index 03790a67fd..288bea247b 100755 --- a/tools/docker/scripts/test_regtest_cmake.sh +++ b/tools/docker/scripts/test_regtest_cmake.sh @@ -19,9 +19,6 @@ if ((SHM_AVAIL < 1024)); then exit 1 fi -# Compile CP2K. -./build_cp2k_cmake.sh "${PROFILE}" "${VERSION}" || exit 0 - # Extend stack size only for Intel compilers. if "./build/bin/cp2k.${VERSION}" --version | grep -q "compiler: Intel"; then ulimit -s unlimited # breaks address sanitizer