什么是 libcublasLt.so(不是 libcublas.so)?

sun*_*cho 1 cuda nvidia

我正在使用 pgf95(Fortran 编译器)编译源代码。

如果我使用 cuda 10.0,它会成功编译源代码。

但是,如果我使用 cuda 10.1,则无法显示“找不到 libcublasLt.so”。

当我扫描目录 cuda-10.0/lib64、cuda-10.1/lib64 时,两者都没有以“libcublasLt”开头的文件。

我该如何解决这个问题?

Rob*_*lla 6

libcublasLt.so是为此处定义的 cublasLt API 提供实现的库。它恰好是一个单独的共享对象libcublas.so

在过去(例如 CUDA 10.0 和更早版本),大多数 CUDA 库/usr/local/cuda/lib64默认安装在(或类似的)中(在 linux 上)。大约在 CUDA 10.1 的时间范围内,决定将一些库安装在不同的地方。CUDA 10.1 也是引入 cublasLt API 和库的地方。这影响了一些 cublas 库,并在此处的 CUDA 10.1 发行说明中进行了讨论(cublasLt 库的引入以及库位置的更改)。

所以这里有 2 种可能性(对于 CUDA 10.1、CUDA 10.2):

  1. libcublasLt.so 在您的机器上,但它根本不是您期望找到它的地方。

  2. libcublasLt.so 不在您的机器上。这意味着您正在使用 cublasLt API 引入之前的 CUDA 版本(即 10.0 或更低版本),或者您的安装已损坏。

因此,假设您正在使用 CUDA 10.1 或 CUDA 10.2,第一步是定位/确定是否libcublasLt.so在您的机器上。您可以使用像find或 之类的 linux 实用程序locate来完成此操作。他们应该有man页面可供您使用。

如果你能找到它,那么你需要通过链接器规范提供它的路径(例如 -L/path/to/libcublasLt.so/

如果找不到它,那么要么您使用的是旧版本的 CUDA(10.0 或更低版本),要么需要重新安装 CUDA。

我相信当您使用 CUDA 11.0 时,CUDA 软件包会将这些cublas/usr/local/cuda/lib64与其他库一起放回原处。天啊。

  • 是的,你是对的,我的错误。cublasLt API 是随 CUDA 10.1 引入的(请参阅[此处](https://docs.nvidia.com/cuda/archive/10.1/cublas/index.html),并且不适用于 CUDA 10.0(请参阅[此处](https ://docs.nvidia.com/cuda/archive/10.0/cublas/index.html))。(我删除了之前的评论,因为它不正确/具有误导性)。 (2认同)