Skip to content

Commit 19fe3fa

Browse files
committed
[ci] openmpi: Ubuntu 26.04, OpenMPI 5, clang 22, Python 3.14
Mirror the github_ci base bump for the openmpi image. - FROM ubuntu:24.04 -> 26.04 (OpenMPI 5.0.10 / PRRTE; removes the ORTE concurrent-mpirun session-dir race behind the flaky mpi_group_np4 etc.) - ARG LLVM 20 -> 22 (main build uses clang + -stdlib=libc++) - Add g++-16: clair is built with CXXFLAGS="" (libstdc++, not libc++), and clang-22 selects the highest gcc install dir (16) for libstdc++; g++-16 populates it so clair links. - Python 3.12 -> 3.14 (26.04 default); parametrize the pkgs-stage python path via ${PYTHON_VERSION}; the base-stage pip --target predates that ENV so it is set to 3.14 explicitly. - Replace OMPI_MCA_rmaps_base_oversubscribe=yes (removed in OpenMPI 5) with PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe - pip: --break-system-packages (PEP 668 on 26.04) Note: the openmpi image cannot be fully built locally on the arm64 host under x86 emulation (qemu ENOSYS in wannier90's tar --xform extraction, and triqs OOMs at make -j under emulation). Validated by analogy with the github_ci build plus: 26.04 apt set resolves, clang-22 -stdlib=libc++ compiles/links, and the PRRTE oversubscribe env works. Authoritative test is the native amd64 CI build on the PR.
1 parent 7323e98 commit 19fe3fa

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

Docker/openmpi_dockerfile

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
FROM --platform=linux/amd64 ubuntu:24.04 AS base
2-
ARG LLVM=20
1+
FROM --platform=linux/amd64 ubuntu:26.04 AS base
2+
ARG LLVM=22
33

44
# This platform includes dependencies for building docs
55
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
@@ -16,6 +16,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-ins
1616
debhelper \
1717
dh-python \
1818
g++ \
19+
g++-16 \
1920
gfortran \
2021
git \
2122
hdf5-tools \
@@ -90,9 +91,9 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-ins
9091
# && rm -rf openmpi-4.1.5.tar.gz openmpi-4.1.5
9192

9293
# install sparse-ir into triqs pythonpath
93-
RUN pip install --no-deps --target /triqs/lib/python3.12/site-packages sparse-ir xprec
94+
RUN pip install --no-deps --break-system-packages --target /triqs/lib/python3.14/site-packages sparse-ir xprec
9495

95-
ENV PYTHON_VERSION=3.12 \
96+
ENV PYTHON_VERSION=3.14 \
9697
CC=clang-${LLVM} CXX=clang++-${LLVM} CXXFLAGS="-stdlib=libc++"
9798
RUN update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM} 60 --slave /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM} --slave /usr/bin/clang-cpp clang-cpp /usr/bin/clang-cpp-${LLVM}
9899

@@ -102,7 +103,10 @@ ENV MKL_INTERFACE_LAYER=GNU,LP64
102103
ENV MKL_THREADING_LAYER=SEQUENTIAL
103104
ENV OMPI_ALLOW_RUN_AS_ROOT=1
104105
ENV OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
105-
ENV OMPI_MCA_rmaps_base_oversubscribe="yes"
106+
# OpenMPI 5 moved mapping/oversubscribe from ORTE to PRRTE; the old
107+
# OMPI_MCA_rmaps_base_oversubscribe is ignored and np>cores would fail with
108+
# "not enough slots". PRRTE also fixes the concurrent-mpirun session-dir race.
109+
ENV PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe
106110
ARG NCORES=4
107111

108112
# create source dirs
@@ -160,7 +164,7 @@ ENV CPATH=/triqs/include:/usr/include/mkl:${CPATH} \
160164
PATH=/triqs/bin:${PATH} \
161165
LIBRARY_PATH=/triqs/lib:${LIBRARY_PATH} \
162166
LD_LIBRARY_PATH=/triqs/lib:${LD_LIBRARY_PATH} \
163-
PYTHONPATH=/triqs/lib/python3.12/site-packages:/triqs/lib/python3.12/dist-packages:${PYTHONPATH} \
167+
PYTHONPATH=/triqs/lib/python${PYTHON_VERSION}/site-packages:/triqs/lib/python${PYTHON_VERSION}/dist-packages:${PYTHONPATH} \
164168
CMAKE_PREFIX_PATH=/triqs/share/cmake:${CMAKE_PREFIX_PATH} \
165169
CMAKE_BUILD_PARALLEL_LEVEL=${NCORES} \
166170
CTEST_OUTPUT_ON_FAILURE=1 \

0 commit comments

Comments
 (0)