Skip to content

Commit cdd4f30

Browse files
committed
Toolchain: Workaround incorrect ELPA results with GCC 15.2
1 parent 1ed4802 commit cdd4f30

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

toolchain/scripts/stage3/install_elpa.sh

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,17 @@ case "$with_elpa" in
109109
config_flags="--enable-avx-kernels=${has_AVX} --enable-avx2-kernels=${has_AVX2} --enable-avx512-kernels=${has_AVX512}"
110110
fi
111111
fi
112+
113+
# GCC 15.2 miscompiles ELPA's double-complex AVX/AVX2 BLOCK2
114+
# kernels when tree SLP vectorization is enabled.
115+
elpa_c_workaround_flags=""
116+
cc_version="$("${MPICC}" -dumpfullversion -dumpversion 2>/dev/null || true)"
117+
cc_banner="$("${MPICC}" --version 2>/dev/null | head -n 1 || true)"
118+
if [[ "${cc_banner}" == *gcc* || "${cc_banner}" == *GCC* ]] &&
119+
[[ "${cc_version}" =~ ^15\.2(\.|$) ]]; then
120+
elpa_c_workaround_flags="-fno-tree-slp-vectorize"
121+
fi
122+
112123
for TARGET in "cpu" "nvidia"; do
113124
# Accept both uppercase and lowercase GPU enable flags for compatibility
114125
gpu_enabled="${ENABLE_CUDA}"
@@ -140,7 +151,7 @@ case "$with_elpa" in
140151
CXX=${MPICXX} \
141152
CPP="cpp -E" \
142153
FCFLAGS="${FCFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
143-
CFLAGS="${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
154+
CFLAGS="${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto ${elpa_c_workaround_flags}" \
144155
CXXFLAGS="${CXXFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
145156
LDFLAGS="${MATH_LDFLAGS} ${SCALAPACK_LDFLAGS} ${cray_ldflags} -lstdc++" \
146157
LIBS="${SCALAPACK_LIBS} $(resolve_string "${MATH_LIBS}" "MPI") ${MPI_LIBS}" \
@@ -171,7 +182,7 @@ case "$with_elpa" in
171182
CXX=${MPICXX} \
172183
CPP="cpp -E" \
173184
FCFLAGS="${FCFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
174-
CFLAGS="${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
185+
CFLAGS="${CFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto ${elpa_c_workaround_flags}" \
175186
CXXFLAGS="${CXXFLAGS} ${MATH_CFLAGS} ${SCALAPACK_CFLAGS} ${AVX_flag} ${FMA_flag} ${SSE4_flag} ${AVX512_flags} -fno-lto" \
176187
LDFLAGS="-Wl,--allow-multiple-definition -Wl,--enable-new-dtags ${MATH_LDFLAGS} ${SCALAPACK_LDFLAGS} ${cray_ldflags} -lstdc++" \
177188
LIBS="${SCALAPACK_LIBS} $(resolve_string "${MATH_LIBS}" "MPI")" \

0 commit comments

Comments
 (0)