AOCC + OpenMPI 5: Lösen von Linker-Fehlern bei FP16-Helferfunktionen

By

in , , ,

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



Comments

Leave a Reply

Your email address will not be published. Required fields are marked *