当包含不兼容的nvml库时,nvidia-smi失败

BAd*_*dhi 1 cuda dynamic-linking

意外nvml地,在Linux环境中的库路径中添加了一个不兼容的库.在我尝试查询时nvidia-smi,在该设置中,它会发出以下错误

Failed to initialize NVML: Driver/library version mismatch

当我从库路径中删除该不兼容的库并nvidia-smi再次查询时,查询成功运行并且输出按预期显示.

然而,当我通过输入ldd查看依赖库时,nvidia-smi它并未显示该过程依赖于nvml库.

$>ldd /usr/bin/nvidia-smi 
    linux-vdso.so.1 =>  (0x00007fffa84db000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f58ba044000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f58b9e3f000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f58b9a7e000)
    librt.so.1 => /lib64/librt.so.1 (0x00007f58b9876000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f58ba27d000)
Run Code Online (Sandbox Code Playgroud)

如果它不依赖于nvml库,为什么在存在不兼容的nvml库时它会发出错误?

Rob*_*lla 6

ldd提供动态链接到应用程序的库的应用程序依赖项列表.

据推测,此应用程序使用(共享)库的运行时加载(例如strace nvidia-smi 2>&1 |grep ml)

在运行时加载库时,没有必要将应用程序与库显式链接,并且库不会在ldd输出中显示为依赖项(如果它未在应用程序构建时显式链接).