2017-12-27 446 views
0

据我了解CUDA的所有版本都是向下兼容的,但是通过安装CUDA和用TF建立一个虚拟环境的全过程后出现这种情况时,我import tensorflowTensorflow和CUDA版本

ImportError: libcublas.so.8.0: cannot open shared object file: No such file or directory 

这显然意味着Tensorflow正在寻找CUDA 8.0,但没有找到CUDA 8.0,因为我拥有CUDA 9.1,但是如果它向后兼容,为什么要这么做呢?对于这样一个受欢迎的图书馆来说,在设置说明上有点模糊,所以我希望这里有人能够提供一些知识,这真是令人惊讶。

安装CUDA 8.0我没有问题,但当然这不是一个选项,我只能通过NVIDIA网站获得最新版本。这有什么解决办法?

+1

它们不是二进制向后兼容的。一切都和版本它是建立针对给定的运行时API版本和共享库必须有一个版本的安装或与它分配为它工作 – talonmies

+2

这里那些库什么是安装tensorflow https://www.tensorflow.org文档/安装/并下载CUDA的其他版本https://developer.nvidia.com/cuda-toolkit-archive –

回答

2

如果您有与CUDA库(例如libcublas.so.8.0)链接的二进制文件(任何类型),您将无法满足shared-object-dynamic-load-time的要求,只需将另一个库libcublas.so.9.0。 CUDA具有某些前向/后向兼容性,但这不是其中之一。您必须提供代码所链接的确切库。

如果要访问旧版CUDA工具包版本,以便使旧版库可用,那些CUDA工具包版本通常可在CUDA Toolkit存档页面here上获得。

如果你已经有了一个新的CUDA工具包加载并工作正常,你应该能够装载旧的工具包,并使用它,而无需更新/修改您的安装GPU驱动程序。

要解决此,以便能实际使用一个新的图书馆,你需要重新链接(至少)代码/二进制文件正在使用。