支持 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的主要内容,如果未能解决你的问题,请参考以下文章