Beim Kompilieren von OpenMPI 5 mit AOCC/Clang können Entwickler auf ungewöhnliche Linker-Fehler stoßen, insbesondere beim Bauen von Tools wie ompi_info
:
ld.lld: error: undefined reference due to --no-allow-shlib-undefined: __extendhfsf2
ld.lld: error: undefined reference due to --no-allow-shlib-undefined: __truncsfhf2
Diese Symbole gehören zu den FP16 ? FP32-Konvertierungsfunktionen, die von AOCCs Clang-Toolchain bereitgestellt werden, aber beim Linken nicht automatisch eingebunden werden.
Ursache
AOCC/Clang lagert bestimmte mathematische Hilfsfunktionen in eine eigene Laufzeitbibliothek aus: libclang_rt.builtins-x86_64.a
Wenn diese Bibliothek beim Linken fehlt, schlägt der Build von OpenMPI fehl, insbesondere unter ld.lld
mit --no-allow-shlib-undefined
.
Lösung
Bibliothek finden
In der AOCC-Installation suchen:
find /opt/AMD/aocc -name "libclang_rt.builtins-*.a"
LDFLAGS setzen
export LDFLAGS="-L/opt/AMD/aocc/lib/clang/17/lib/linux -lclang_rt.builtins-x86_64"
OpenMPI neu konfigurieren und bauen:
make clean
CC=clang CXX=clang++ FC=flang ./configure \
--prefix=/opt/openmpi/aocc \
--with-libevent=internal \
--enable-mpi1-compatibility \
--without-xpmem \
--with-cuda=/usr/local/cuda \
--with-slurm \
--with-platform=contrib/platform/mellanox/optimized \
--with-hcoll=/cluster/hpcx/2.23/hcoll \
--with-ucx=/cluster/hpcx/2.23/ucx \
--with-ucc=/cluster/hpcx/2.23/ucc
make -j install
Leave a Reply