[Openmp-dev] Support for static libomptarget

Jon Chesterfield via Openmp-dev openmp-dev at lists.llvm.org
Tue Apr 28 04:04:08 PDT 2020


OpenMP links a libomptarget.so into the host executable which goes looking
for offloading toolchains to dlopen.

This is very flexible, but comes at a price:
- PLT call overhead + inlining barrier
- Startup overhead looking for the toolchain
- Failing to dlopen will run the host fallback, which is not necessarily
what one wants for debugging

For device toolchains that are available as static libraries, and for
deployment of the toolchain to a system with known, fixed hardware (e.g.
some hpc clusters), I'd like to be able to statically link everything.
Faster and fewer failure modes.

Particularly fun for amdgcn, because we'll be able to statically link the
userspace graphics driver into the host executable as well. No shared
libraries necessary.

Involves a change to libomptarget (that I haven't written yet) to fill in
function pointers without dlopen, and some cmake logic/controls to specify
which toolchains are dynamic/static/unavailable. Plus building
libomptarget.a if that isn't yet implemented.

Are patches for this nominally welcome?

Thanks

Jon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/openmp-dev/attachments/20200428/71075204/attachment.html>


More information about the Openmp-dev mailing list