From fcf49867ac2046c94b08325bb606cfb01b0d77ba Mon Sep 17 00:00:00 2001 From: Matthias Krack Date: Tue, 28 Apr 2026 10:03:02 +0200 Subject: [PATCH] Add spack OpenMPI debug tester (pdbg) (#5104) --- tools/dashboard/dashboard.conf | 7 ++ .../docker/Dockerfile.test_spack_openmpi-pdbg | 91 +++++++++++++++++++ tools/docker/cp2k-ci.conf | 8 ++ tools/docker/generate_dockerfiles.py | 11 +++ tools/spack/lsan.supp | 25 +++++ 5 files changed, 142 insertions(+) create mode 100644 tools/docker/Dockerfile.test_spack_openmpi-pdbg diff --git a/tools/dashboard/dashboard.conf b/tools/dashboard/dashboard.conf index 83822b7d16..3a16d153aa 100644 --- a/tools/dashboard/dashboard.conf +++ b/tools/dashboard/dashboard.conf @@ -108,6 +108,13 @@ timeout: 170 host: GCP report_url: https://storage.googleapis.com/cp2k-ci/dashboard_spack-openmpi-psmp_report.txt +[spack-openmpi-pdbg] +sortkey: 449 +name: Spack (OpenMPI, pdbg) +timeout: 170 +host: GCP +report_url: https://storage.googleapis.com/cp2k-ci/dashboard_spack-openmpi-pdbg_report.txt + # ============================================================================== [gcc15] diff --git a/tools/docker/Dockerfile.test_spack_openmpi-pdbg b/tools/docker/Dockerfile.test_spack_openmpi-pdbg new file mode 100644 index 0000000000..e23281085f --- /dev/null +++ b/tools/docker/Dockerfile.test_spack_openmpi-pdbg @@ -0,0 +1,91 @@ +# +# This file was created by generate_dockerfiles.py. +# Usage: ./spack_cache_start.sh; podman build --network=host --shm-size=1g -t spack_openmpi-pdbg -f ./Dockerfile.test_spack_openmpi-pdbg ../../ +# + +ARG BASE_IMAGE="ubuntu:24.04" + +###### Stage 1: Build CP2K dependencies ###### + +FROM "${BASE_IMAGE}" AS build_deps + +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + bzip2 \ + ca-certificates \ + cmake \ + g++ g++-13 gcc gcc-13 gfortran gfortran-13 \ + git \ + gnupg \ + libssh-dev \ + libssl-dev \ + libtool \ + libtool-bin \ + lsb-release \ + make \ + patch \ + pkgconf \ + python3 \ + python3-dev \ + python3-pip \ + python3-venv \ + unzip \ + wget \ + xxd \ + xz-utils \ + zstd \ + && rm -rf /var/lib/apt/lists/* + +ARG IMAGE_TAG +ENV IMAGE_TAG=${IMAGE_TAG:-spack_openmpi-pdbg} + +ARG SPACK_CACHE="s3://spack-cache --s3-endpoint-url=http://localhost:9000" + +# Copy CP2K repository into container +WORKDIR /opt +COPY . cp2k/ + +# Build CP2K dependencies +WORKDIR /opt/cp2k +RUN ./make_cp2k.sh -bd_only -cv pdbg -gpu none -gv 13 -mpi openmpi -ue -ef openpmd + +###### Stage 2: Build CP2K ###### + +FROM build_deps AS build_cp2k + +RUN ./make_cp2k.sh -cv pdbg -gv 13 -gpu none -mpi openmpi -ef openpmd + +###### Stage 3: Install CP2K ###### + +FROM "${BASE_IMAGE}" AS install_cp2k + +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + g++ g++-13 gcc gcc-13 gfortran gfortran-13 \ + python3 \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /opt/cp2k + +# Install CP2K dependencies built with spack +COPY --from=build_cp2k /opt/cp2k/spack/spack/opt/spack ./spack/spack/opt/spack + +# Install CP2K +COPY --from=build_cp2k /opt/cp2k/install ./install + +# Install CP2K regression tests +COPY --from=build_cp2k /opt/cp2k/tests ./tests +COPY --from=build_cp2k /opt/cp2k/src/grid/sample_tasks ./src/grid/sample_tasks + +# Install CP2K/Quickstep CI benchmarks +COPY --from=build_cp2k /opt/cp2k/benchmarks/CI ./benchmarks/CI + +# Do not rely only on LD_LIBRARY_PATH because it is fragile +COPY --from=build_cp2k /etc/ld.so.conf.d/cp2k.conf /etc/ld.so.conf.d/cp2k.conf +RUN ldconfig + +# Run CP2K regression test +RUN /opt/cp2k/install/bin/launch /opt/cp2k/install/bin/run_tests + +# Create entrypoint and finalise container build +WORKDIR /mnt +ENTRYPOINT ["/opt/cp2k/install/bin/launch"] +CMD ["cp2k", "--help", "--version"] diff --git a/tools/docker/cp2k-ci.conf b/tools/docker/cp2k-ci.conf index 76e8311fa2..cf021bdf60 100644 --- a/tools/docker/cp2k-ci.conf +++ b/tools/docker/cp2k-ci.conf @@ -129,6 +129,14 @@ nodepools: pool-main build_path: / dockerfile: /tools/docker/Dockerfile.test_spack_openmpi-psmp +[spack-openmpi-pdbg] +display_name: Spack OpenMPI pdbg +tags: daily +cpu: 32 +nodepools: pool-main +build_path: / +dockerfile: /tools/docker/Dockerfile.test_spack_openmpi-pdbg + [conventions] display_name: Conventions tags: daily diff --git a/tools/docker/generate_dockerfiles.py b/tools/docker/generate_dockerfiles.py index 23511e7f56..8064fcc5b7 100755 --- a/tools/docker/generate_dockerfiles.py +++ b/tools/docker/generate_dockerfiles.py @@ -171,6 +171,17 @@ def main() -> None: ) ) + with OutputFile(f"Dockerfile.test_spack_openmpi-pdbg", args.check) as f: + f.write( + install_cp2k_spack( + version="pdbg", + mpi_mode="openmpi", + feature_flags="-ef openpmd", + testopts="", + image_tag=f.image_tag, + ) + ) + with OutputFile(f"Dockerfile.test_spack_openmpi-psmp", args.check) as f: f.write( install_cp2k_spack( diff --git a/tools/spack/lsan.supp b/tools/spack/lsan.supp index 288613bce8..19d0030bc6 100644 --- a/tools/spack/lsan.supp +++ b/tools/spack/lsan.supp @@ -1,4 +1,5 @@ # Leak suppressions +# MPICH leak:MPIR_Find_local leak:MPIR_Find_external leak:MPIR_Csel_prune @@ -6,6 +7,7 @@ leak:MPIDIU_avt_init leak:MPIR_Group_create leak:MPIDIU_alloc_lut leak:MPI_File_open +# xrootd leak:getMyFQN # PEXSI leak:BcTree_Create @@ -13,3 +15,26 @@ leak:MPIR_Type_contiguous_impl leak:MPIR_Typerep_init leak:symbfact_dist leak:yaksa_type_create_contig +# OpenMPI +leak:avx_component_op_query +leak:check_components.constprop +leak:event_process_active_single_queue +leak:libnbc_comm_query +leak:mca_coll_base_comm_select +leak:mca_coll_basic_comm_query +leak:mca_pml_ob1_add_comm +leak:mca_pml_ob1_comm_init_size +leak:mca_pml_ob1_peer_create +leak:ompi_coll_tuned_comm_query +leak:ompi_comm_init_mpi3 +leak:ompi_comm_set_nb +leak:ompi_group_allocate +leak:ompi_group_allocate_plist_w_procs +leak:ompi_mpi_instance_init_common +leak:opal_cstring_create_l +leak:opal_hash_table_init2 +leak:opal_hash_table_set_value_ptr +leak:opal_infosubscribe_subscribe +leak:opal_vasprintf +leak:pmix_hash_fetch +leak:PMIx_Value_create