支持 Nvidia CUDA Toolkit 9.2

Posted

技术标签:

【中文标题】支持 Nvidia CUDA Toolkit 9.2【英文标题】:Support for Nvidia CUDA Toolkit 9.2 【发布时间】:2018-11-09 08:49:56 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

这是个好问题。根据NVidia's website,

CUDA 驱动程序向后兼容,这意味着针对特定版本的 CUDA 编译的应用程序将继续在后续(以后的)驱动程序版本中运行。

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

当被问及该主题时,开发人员answered,

原因的答案是 9.1 所需的驱动程序问题,cuda 9.1 中我们需要的新功能并不多,还有一些小问题。

所以原因看起来相当模糊——他可能意味着 CUDA 9.1(和 9.2)需要的显卡驱动程序可能有点太新了,不太方便,但这是一个没有根据的猜测。

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

【讨论】:

【参考方案2】:

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

如果您想使用新的(或有时较旧的)版本的 cuda,您需要从源代码 (check how here) 安装 TF 或者,如果您真的不想自己构建,请查看这些 repos,还有其他发布特定 TF 二进制文件的示例:

https://github.com/mind/wheels https://github.com/yaroslavvb/tensorflow-community-wheels https://github.com/fo40225/tensorflow-windows-wheel

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

(我在这里只写我使用的 TF 版本,也许旧的 TF 版本也使用旧版本的 CUDA)

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

【讨论】:

如果有人可以在 TF 团队的预构建原始版本中为所有 TF - CUDA - CuDNN 组合添加(或编辑帖子),那将是非常有益的,(其他然后写的在帖子中) 我刚刚安装了 Ubuntu 18.04 LTS。 NVDA 网站似乎没有为此提供的 CUDA 9.2 版本。下载为17.10构建的安装程序版本可以吗?【参考方案3】:

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

更简洁的方法是从源代码构建 TF。这不是太复杂。

【讨论】:

以上是关于支持 Nvidia CUDA Toolkit 9.2的主要内容,如果未能解决你的问题,请参考以下文章

NVIDIA CUDA Toolkit 各个版本安装方式

不同版本cuda对应的NVIDIA驱动版本

ubuntu安装多版本的cuda

Centos 安装Caffe

Ubuntu 18.04 实验环境配置

tensorflow 1.8, ubuntu 16.04, cuda 9.0, nvidia-390,安装踩坑指南。