支持Nvidia CUDA Toolkit 9.2

7
Tensorflow-gpu为什么要绑定到特定版本的Nvidia CUDA Toolkit上?当前版本似乎只支持9.0,而不支持任何更高版本。例如,我安装了最新的Toolkit 9.2并将其添加到路径中,但Tensorflow-gpu无法使用它,并抱怨它正在寻找9.0版本。
我可以理解不支持主要版本更新,但是连小版本更新也不支持吗?
3个回答

4

这是一个好问题。根据NVidia的网站

CUDA驱动程序向后兼容,这意味着针对特定版本CUDA编译的应用程序将继续在随后(更晚)的驱动程序发布版上工作。

因此,从技术上讲,支持后续迭代的CUDA驱动程序不应该是一个问题。实际上,您会在网络上找到使用较新版本CUDA和CuDNN的非官方预编译二进制文件[1], [2]。更容易安装的是,从conda安装的tensorflow-gpu软件包目前捆绑了CUDA 9.2。

当被问及此话题时,一位开发者回答道

答案是驱动程序问题,这些问题是由9.1所需的驱动程序引起的,我们不需要太多新功能在cuda 9.1中,还有一些较小的问题。因此,原因看起来相当模糊 - 他可能意味着CUDA 9.1(和9.2)需要的显卡驱动程序可能有点太新了,不太方便,但这只是一个不成熟的猜测。如果NVidia关于二进制兼容性的说法是正确的,您可以尝试将CUDA 9.2库重命名或链接为CUDA 9.0库,那么它应该可以工作。但在尝试之前,我会保存所有的工作......而且人们甚至重新编译tensorflow以支持更高版本的CUDA,这可能是如何结束的提示。

3
当你下载TF时,你会下载一个预编译的二进制文件。 在构建过程中,TF被硬链接到特定版本的Cuda中,因此你不能使用不同版本的cuda来运行它。
如果你想使用新版本(或者有时是旧版本)的cuda,你需要从源代码安装TF(在这里查看如何安装)。 或者,如果你真的不想自己构建,可以检查这些存储库,其中有其他发布特定TF二进制文件的人,以下是一些示例:

为了方便起见,我在此添加了每个预构建Tensorflow版本所需的CUDA + cuDNN版本:

(我只写了我用过的TF版本,也许旧的TF版本也使用旧版的CUDA)

  • 在TF v1.5之前,需要cuda 8.0和cuDNN 6
  • 从1.5开始 - 预构建二进制文件现在建立在CUDA 9和cuDNN 7上。

如果有人能为TF团队预构建的原始版本中的所有TF-CUDA-CuDNN组合添加(或编辑帖子)的话,这将非常有益。 (除了帖子中提到的那个以外) - Kings85
我刚刚安装了Ubuntu 18.04 LTS。NVDA网站似乎没有适用于该版本的CUDA 9.2版本。下载适用于17.10版本的安装程序版本是否可以? - Evan Zamir

1
问题并不在于NVIDIA驱动程序,而是Tensorflow本身。我花了一个小时试图让它工作,最终意识到如果你从googleapi.com下载预编译的二进制文件,它将硬编码以加载libcudart.so.9.0!如果你同时安装了cuda 9.0和9.2,则tensorflow将正常工作(但实际上是从9.0加载动态库)。 (顺便说一句,我使用anaconda安装了TF。)
更干净的方法是从源代码构建TF。这并不太复杂。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接