【问题标题】:Linker can't load Nvidia Management Library链接器无法加载 Nvidia 管理库
【发布时间】:2018-06-09 12:04:25
【问题描述】:

我正在尝试将 CUDA 工具包安装到我的 Ubuntu 机器上,以便我可以处理一些 CUDA 代码。我相信我已经正确安装了 CUDA 8.0,如 nvcc --version 和 nvidia-smi 的输出所示。

    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2016 NVIDIA Corporation
    Built on Tue_Jan_10_13:22:03_CST_2017
    Cuda compilation tools, release 8.0, V8.0.61

    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 384.90                 Driver Version: 384.90                    |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+======================+======================|
    |   0  GeForce 820M        Off  | 00000000:01:00.0 N/A |                  N/A |
    | N/A   45C    P8    N/A /  N/A |     18MiB /  1985MiB |     N/A      Default |
    +-------------------------------+----------------------+----------------------+

    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID   Type   Process name                             Usage      |
    |=============================================================================|
    |    0                    Not Supported                                       |
    +-----------------------------------------------------------------------------+

我还添加了 Nvidia CUDA 安装指南中提到的路径变量扩展。我正在处理的代码需要指向 Nvidia 工具包中的几个库的链接,即 -lcuda、-lnvrtc 和 -lnvidia-ml。编译器可以找到前两个就好了,但给出一个错误,说它找不到 Nvidia 管理库的库。

    /usr/bin/ld: cannot find -lnvidia-ml

据我所知,CUDA 8.0 工具包应该已经包含了 Nvidia 管理库,所以有什么想法为什么链接器找不到它?

【问题讨论】:

    标签: ubuntu cuda


    【解决方案1】:

    该库实际上是由驱动程序安装的,而不是由 CUDA 工具包(NVML 实际上不是 CUDA 的一部分),并且它最终位于与通常的 CUDA 库不同的位置。实际位置可能取决于发行版。

    不管怎样,运行如下代码:

    sudo find / -name libnvidia-ml.* 
    

    找出图书馆的位置。然后将路径作为-L 链接器开关传递到该位置,在-lnvidia-ml 之前,例如:

    -L/path/to/libnvidia-ml -lnvidia-ml
    

    【讨论】:

    • 我使用 find 来查找库文件的位置 但是尝试链接这三个中的任何一个都会出现类似这样的错误 /usr/bin/ld: /tmp/cczBuPIL.o: undefined reference to符号 '_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@@GLIBCXX_3.4.22' //usr/lib/x86_64-linux-gnu/libstdc++.so.6:添加符号时出错:命令行中缺少 DSO
    • 这是一个不同的问题。
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多