Skip to content

Commit 6261a60

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

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

cmake/CompilerConfiguration.cmake

+1-1
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

+8-2
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,12 @@ 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+
for ff in /usr/lib/x86_64-linux-gnu/pkgconfig/mpich.pc /usr/bin/mpicc.mpich /usr/bin/mpicxx.mpich /usr/bin/mpif77.mpich /usr/bin/mpif90.mpich /usr/bin/mpifort.mpich; do \
70+
sed -i -e 's/-flto=auto//g' -e 's/-ffat-lto-objects//g' ${ff}; \
71+
done
72+
6773
# Leak suppression
6874
COPY lsan.supp /opt
6975
ENV LSAN_OPTIONS=suppressions=/opt/lsan.supp

0 commit comments

Comments
 (0)