CMake 错误-未找到 CUDA_cublas_LIBRARY

CMake 错误-未找到 CUDA_cublas_LIBRARY

我正在尝试安装这个https://github.com/NVlabs/ssn_superpixels但出现以下错误。

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_cublas_LIBRARY (ADVANCED)
    linked by target "caffe" in directory /home/haziq/ASTAR/scripts/ssn_superpixels/lib/video_prop_networks/lib/caffe/src/caffe

我可以正常运行 PyTorch GPU,这意味着我已经安装了 GPU 和 CUDA。如何检查 CUDA_cublas_LIBRARY 是否已安装?我正在使用 Ubuntu 18.04。

我找到了libcublas.so.9.1libcublas.so.9.1.85。我怎么知道哪一个是正确的?

(base) haziq@mdeep:~/ASTAR/scripts/ssncaffe$ ls /usr/lib/x86_64-linux-gnu/libcublas.so.9.1
libcublas.so.9.1     libcublas.so.9.1.85

另外,找到这些文件后我需要做什么?如何告诉 cmake 这些文件在哪里?

答案1

您在标准库位置拥有 libcublas9 库。但是,还有其他方法可以安装 CUDA,这些方法可能会将这些库放在其他地方。makefile 通过让您告诉它库的位置(CUDA_cublas_LIBRARY 变量)来处理这种可能性。此变量可能在 makefile 中设置,也可能从您的环境中获取(您在 .profile 中设置)。您可以编辑 makefile 并在 CUDA_cublas_LIBRARY 中定义位置。它应该看起来像:

CUDA_cublas_LIBRARY=/usr/lib/x86_64-linux-gnu/libcublas.so

如果你在 .profile 中执行此操作,请记住将其添加到导出行:
export CUDA_cublas_LIBRARY

您的 .profile 只是一个文本文件。使用文本编辑器(vim、zile 等)并在底部添加内容。不要使用 LibreWrite 之类的文字处理器,因为它往往会执行不必​​要的操作,例如换行或添加字符。


库会一直进行修订,并且通常会在其名称中添加一个新版本号。您不会希望保留所有旧版本,因此在链接时,您需要一个不会频繁更改的名称——Ubuntu 通常会为这些更稳定的名称提供链接。以 .so 或 .so.x 结尾的库通常是指向 .so.x.version 库的链接。
您列出的 libcublas 文件的位置位于 Ubuntu 64 位架构的库的正常位置,因此正常链接应该会选择它们。如果它们位于其他地方,例如您选择安装所有 CUDA 文件的位置(您可以通过解压 CUDA deb 文件而不是安装它们来执行此操作),那么您将那个 ...cuda/lib 位置添加到您的 LD_LIBRARY_PATH 环境变量中(正如 CUDA 说明所告诉您的那样)。如果 makefile 期望在 /usr/lib 中找到这些库,那么您可以修复 makefile,或者对于真正的 kluge,只需在预期的(错误的)位置添加另一个指向库的链接。


从您的另一个问题尝试向 cmake 提供来自 CUDA_cublas_LIBRARY 变量的信息来看,您可以将其添加到您的 .profile 中并将其放入您的环境中,或者首先在 cmake 行上定义它,而不是在 cmake 命令之后。


现在我知道您使用的是 CUDA9,因此更新了一些内容。内容看起来有点混乱,但我认为您拥有必要的文件,只需按上述说明设置 CUDA_cublas_LIBRARY 变量即可。

相关内容