支持Nvidia CUDA Toolkit 9.2

时间:2018-05-30 13:14:13

标签: tensorflow nvidia

Tensorflow-gpu绑定到特定版本的Nvidia CUDA Toolkit的原因是什么?当前版本似乎专门寻找9.0,并且不适用于任何更大的版本。例如,我安装了最新的Toolkit 9.2并将其添加到路径中,但Tensorflow-gpu无法使用它并抱怨它正在寻找9.0。

我可以看到主要版本更新不受支持,但是是次要版本?

3 个答案:

答案 0 :(得分:4)

这是一个很好的问题。根据{{​​3}},

  

CUDA驱动程序是向后兼容的,这意味着针对特定版本的CUDA编译的应用程序将继续用于后续(稍后)驱动程序版本。

从技术上讲,支持CUDA驱动程序的后续迭代应该不是问题。在实践中,您将在网络NVidia's website[1]上找到工作的非官方预构建二进制文件以及更高版本的CUDA和CuDNN。更容易安装,从conda安装的tensorflow-gpu软件包目前与CUDA 9.2捆绑在一起。

当被问及这个主题时,我是一个开发者[2]

  

为什么驱动程序问题出现在9.1所要求的问题,cuda 9.1中我们需要的新功能不多,还有一些小问题。

所以原因看起来很模糊 - 他可能意味着CUDA 9.1(和9.2)要求显卡驱动程序可能有点太新,不太方便,但这是一个没有受过教育的猜测。

如果NVidia对二进制兼容性是正确的,您可以尝试简单地将CUDA 9.2库重命名或链接为CUDA 9.0库,它应该可以工作。但是在尝试这个之前我会保存所有的工作...而且人们甚至重新编译张量流来支持后来的CUDA版本可能会暗示这可能会如何结束。

答案 1 :(得分:3)

下载TF时,将下载一个预构建的二进制文件。 在构建过程中,TF被硬链接到特定版本的Cuda中,因此您不能将其与其他cuda版本一起使用。

如果您想使用新版本(或有时是旧版本)的cuda,则需要从源代码(check how here)安装TF。 或者,如果您真的不想构建自己的设备,请签入这些存储库,其中有一些发布特定的TF二进制文件,例如:

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

(我在这里写的是我使用过的TF版本,也许较旧的TF版本也会使用较旧的CUDA版本)

  • 在TF v1.5 cuda 8.0和cuDNN 6之前
  • 从1.5开始-现在已针对CUDA 9和cuDNN 7构建了预构建的二进制文件。

答案 2 :(得分:1)

问题不在于NVIDIA驱动程序,而在于Tensorflow本身。我花了一个小时试图让它工作,并最终意识到,如果你从googleapi.com下载预先构建的二进制文件,它是硬编码来加载libcudart.so.9.0!如果您同时安装了cuda 9.0和9.2,则tensorflow将起作用(但它实际上是从9.0加载动态库)。 (顺便说一下,我用anaconda安装了TF。)

更清洁的方法是从源代码构建TF。它并不太复杂。