【问题标题】:Compiling CUDA looks for wrong CUDA version编译 CUDA 查找错误的 CUDA 版本
【发布时间】:2015-09-26 10:58:28
【问题描述】:

在 Ubuntu 上,我之前安装了 CUDA 6.5,并想升级到 CUDA 7.0。因此,我删除了 /usr/local/cuda-6.5 的目录,并将 CUDA 7.0 安装到 /usr/local/cuda-7.0 中。然后我将 /usr/local/cuda 的符号链接更改为指向 /usr/local/cuda-7.0。在我的 bash.rc 文件中,我还相应地更新了环境变量:

export CUDA_HOME=/usr/local/cuda-7.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}

如果我输入“nvcc --version”,那么我会按预期得到以下内容:

Cuda compilation tools, release 7.0, V7.0.27

但是,我现在正在编译一些使用 CUDA 的代码(准确地说是 Caffe 深度学习库),我收到以下错误消息:

error while loading shared libraries: libcudart.so.6.5: cannot open shared object file: No such file or directory

因此,出于某种原因,它仍在寻找 CUDA 6.5 库,而不是 CUDA 7.0 库。为什么是这样?如何告诉编译器查找 7.0 库?我在正在编译的源代码中找不到任何对 libcudart.so.6.5 的引用,因此 CUDA 编译器本身正在寻找错误的版本。

【问题讨论】:

  • 您发布的错误消息发生在运行时,而不是编译时。这意味着您的项目的某些方面仍然针对 CUDA 6.5 进行编译/链接。如果您正在编译的代码具有正确的 Makefile,那么执行 make clean 然后 make 应该可以纠正此问题。
  • 这似乎是编译时间——因为错误发生在我运行make之后,而不是在它编译之后我尝试运行编译后的程序......

标签: ubuntu compilation cuda gpu nvidia


【解决方案1】:

很明显,您没有遵循正确的卸载方法;请注意,如果您安装不同的工具包版本,它们之间不会有任何冲突,您可以同时保留它们。在安装过程中,系统会要求您将 /usr/local/cuda-x.y 链接到 /usr/local/cuda。查看CUDA 7.0 GETTING STARTED ON LINUX 的第 2.6 节。

上述链接中提到的正确卸载方法是使用以下命令,具体取决于您的安装方式(即,run 方法或 rpm 方法) :

$ sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl
Use the following command to uninstall a Driver runfile installation:
$ sudo /usr/bin/nvidia-uninstall
Use the following commands to uninstall a RPM/Deb installation:
$ sudo apt-get --purge remove <package_name> # Ubuntu
$ sudo yum remove <package_name> # Fedora/Redhat/CentOS
$ sudo zypper remove <package_name> # OpenSUSE/SLES

我希望它对你有用;我不知道 Caffe 深度学习 库,但我假设您之前没有通过提供 cuda 6.5 编译器及其库的 PATH 来配置它。如果是这种情况,请先尝试正确卸载之前的cuda 6.5,从头配置库,然后制作。

【讨论】:

    猜你喜欢
    • 2011-02-21
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2016-03-06
    • 2022-01-25
    相关资源
    最近更新 更多