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

What is libcublasLt.so (not libcublas.so)?

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

如果我用的是cuda 10.0,源码编译成功

但是,如果我使用 cuda 10.1,它无法显示 'cannot find libcublasLt.so'。

扫描cuda-10.0/lib64、cuda-10.1/lib64目录时,都没有'libcublasLt'.

开头的文件

我该如何解决这个问题?

libcublasLt.so 是为定义为 here 的 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 发行说明 here 中进行了讨论(包括 cublasLt 库的引入以及库位置的更改)。

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

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

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

因此,假设您使用的是 CUDA 10.1 或 CUDA 10.2,第一步是 locate/determine 无论 libcublasLt.so 是否在您的机器上。您可以使用 findlocate 等 linux 实用程序来完成此操作。他们应该有 man 个页面供您使用。

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

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

我相信当您使用 CUDA 11.0 时,CUDA 包会将 cublas 库与其他库放回 /usr/local/cuda/lib64 中。 YMMV.