Skip to content

Commit 1ba0f0b

Browse files
committed
Build MPICH to avoid LTO of the ubuntu package
1 parent 0f1bff5 commit 1ba0f0b

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

cmake/CompilerConfiguration.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
66
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch") # requires for 10+ for the MPI wrap module
77
endif ()
88
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -g -funroll-loops")
9-
set(CMAKE_Fortran_FLAGS_COVERAGE "-O0 -g --coverage -fno-omit-frame-pointer -fcheck=all -ffpe-trap=invalid,zero,overflow -fbacktrace -finit-real=snan -finit-integer=-42 -finit-derived -Werror=realloc-lhs -finline-matmul-limit=0 -Werror")
9+
set(CMAKE_Fortran_FLAGS_COVERAGE "-O0 -g --coverage -fno-omit-frame-pointer -fcheck=all,no-array-temps -ffpe-trap=invalid,zero,overflow -fbacktrace -finit-real=snan -finit-integer=-42 -finit-derived -Werror=realloc-lhs -finline-matmul-limit=0 -Werror")
1010
set(CMAKE_Fortran_FLAGS_DEBUG "-O2 -ggdb -fno-omit-frame-pointer -fcheck=all -ffpe-trap=invalid,zero,overflow -fbacktrace -finit-real=snan -finit-integer=-42 -finit-derived -finline-matmul-limit=0 -fsanitize=undefined -fsanitize=address -fsanitize-recover=all -Wall -Wextra -Werror -Werror=realloc-lhs -Wno-error=array-temporaries -Wno-error=compare-reals -Wno-error=function-elimination -Wno-error=surprising")
1111
if ((NOT (USE_MPI)) OR (NOT ("${MPI_Fortran_LIBRARY_VERSION_STRING}" MATCHES "Open MPI")))
1212
set(CMAKE_Fortran_FLAGS_COVERAGE "${CMAKE_Fortran_FLAGS_COVERAGE} -fsanitize=leak")

tools/docker/Dockerfile.build-env-ubuntu

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ RUN set -ex ; \
2929
g++ \
3030
openmpi-bin \
3131
libopenmpi-dev \
32-
mpich \
33-
libmpich-dev \
32+
mpich \
33+
libmpich-dev \
3434
libopenblas-openmp-dev \
3535
cmake \
3636
ninja-build \
@@ -64,6 +64,16 @@ RUN set -ex ; \
6464

6565
ENV PKG_CONFIG_PATH="/opt/libxsmm/lib:${PKG_CONFIG_PATH}"
6666

67+
# Remove LTO for MPICH (default now in Ubuntu >=22)
68+
RUN set -ex ; \
69+
sed -i 's/-flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects//' /usr/lib/x86_64-linux-gnu/pkgconfig/mpich.pc ; \
70+
sed -i 's/-flto=auto -ffat-lto-objects -flto=auto//' /usr/lib/x86_64-linux-gnu/pkgconfig/mpich.pc ; \
71+
sed -i 's/-flto=auto -ffat-lto-objects -flto=auto//' /usr/bin/mpicc.mpich ; \
72+
sed -i 's/-flto=auto -ffat-lto-objects -flto=auto//' /usr/bin/mpicxx.mpich ; \
73+
sed -i 's/-flto=auto -ffat-lto-objects -flto=auto//' /usr/bin/mpif77.mpich ; \
74+
sed -i 's/-flto=auto -ffat-lto-objects -flto=auto//' /usr/bin/mpif90.mpich ; \
75+
sed -i 's/-flto=auto -ffat-lto-objects -flto=auto//' /usr/bin/mpifort.mpich
76+
6777
# Leak suppression
6878
COPY lsan.supp /opt
6979
ENV LSAN_OPTIONS=suppressions=/opt/lsan.supp

0 commit comments

Comments
 (0)