Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hmem/cuda: avoid stub loading at runtime #10365

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Commits on Oct 27, 2024

  1. hmem/cuda: avoid stub loading at runtime

    When the CUDA toolkit is installed, a set of "stub" libraries are
    installed under /usr/local/cuda*/lib64/stubs/. These libraries include a
    SONAME field with a `.1' suffix, but the filenames of these stubs are
    bare. eg:
    
     > $ readelf -d /usr/local/cuda-12.5/lib64/stubs/libnvidia-ml.so | grep soname
     > 0x000000000000000e (SONAME)  Library soname: [libnvidia-ml.so.1]
    
    The CUDA toolkit does not include any library file with the name
    `libnvidia-ml.so.1` (or `libcuda.so.1`, etc.), as these are provided by
    the driver package. This disconnect between the stub filename in the
    toolkit and the SONAME within it is done intentionally to allow linking
    with the stub at build time, while ensuring it's never loaded at
    runtime.
    
    In normal dynamic linking cases (ie: without dlopen), the SONAME field
    of `libnvidia-ml.so.1` is used in the DT_NEEDED tag, where that filename
    can only come from a driver package and this ensures that the stub
    library will never match.
    
    Match the same behavior and provide `.1` suffixes to dlopen where
    appropriate for NVIDIA libraries.
    
    Signed-off-by: Nicholas Sielicki <[email protected]>
    aws-nslick committed Oct 27, 2024
    Configuration menu
    Copy the full SHA
    907688f View commit details
    Browse the repository at this point in the history