哪些TensorFlow和CUDA版本组合是兼容的?

325

我注意到一些新的TensorFlow版本与旧版本的CUDA和cuDNN不兼容。 是否存在兼容版本的概述或甚至是官方测试组合的列表? 我在TensorFlow文档中找不到它。


31
这个问题涉及兼容性和(官方)已测试的组合,而我认为这些并未在安装说明中提供。此外,我找不到你所指的那个部分。综上所述,我认为所请求的信息很难找到,因此提供答案中发布的链接以便于获取是合理的。 - whiletrue
您会发现在您提到的页面上,CUDA和cuDNN版本与安装说明中的版本相匹配。 - P-Gn
1
你所提到的部分只是告诉我CUDA和cuDNN的兼容版本——一旦我找到了我想要的TensorFlow版本。在通常情况下(例如在.edu实验室环境中),CUDA和cuDNN已经安装好,但TF没有安装,这时就需要一个概述。我的观点是,这个概述相当隐蔽且难以找到(我无法通过谷歌搜索找到它)。 - whiletrue
1
哦,我明白你的意思——尝试查看哪个tensorflow版本适合特定的CUDA/cuDNN组合。你可以浏览TF的发行说明,但是你链接的表确实是一个很好的总结。 - P-Gn
正在使用的工具:tensorflow 1.13.1,CUDA 10,CUDNN 7.4.2,python 3.6(不兼容3.7版本,因为3.7存在许多错误)。适用于Windows 10。 - Ketki Shroff
显示剩余3条评论
7个回答

389

简而言之:请查看此表格:https://www.tensorflow.org/install/source#gpu

一般情况:

检查CUDA版本:

cat /usr/local/cuda/version.txt

以及cuDNN版本:

grep CUDNN_MAJOR -A 2 /usr/local/cuda/include/cudnn.h

请按照以下图片或此处给出的组合安装:

以下图片和链接提供了TensorFlow在Linux、macOS和Windows上官方支持/测试的CUDA和TensorFlow版本组合概述:

小型配置:

由于下面给定的规格在某些情况下可能过于宽泛,这里有一个可行的特定配置:

  • tensorflow-gpu==1.12.0
  • cuda==9.0
  • cuDNN==7.1.4

对应的cudnn可以在这里下载。

已测试的构建配置

有关最新的兼容性图表(用于官方TF Wheels),请参见https://www.tensorflow.org/install/source#gpu

(数据更新至2020年5月20日)

Linux GPU

enter image description here

Linux CPU

enter image description here

macOS GPU

enter image description here

macOS CPU

enter image description here

Windows GPU

enter image description here

Windows CPU

enter image description here

2020年12月5日更新:有关更新信息,请参见Linux链接Windows链接


1
我注意到 TensorFlow 版本 < 1.0 已从概述中排除。有人知道在哪里可以找到旧版本的相同列表吗? - whiletrue
3
似乎他们没有为CUDA和cuDNN指定次要版本。 - mrgloom
1
更新:已测试 TF-GPU 1.12,Windows 10,CUDA 9.0,CuDNN 7.3.1,Python 3.6.6。 - mjaniec
4
不要更新数字,链接到文档。与表格相比,链接变化较少。 - Trylks
1
@Fábio:根据您的请求,已更新您的答案以包含最新链接。 - user11530462
显示剩余6条评论

32
tensorflow 网站上提供的兼容性表格中,没有列出 cuda 和 cuDNN 的具体次要版本。但是,如果未满足特定的版本要求,则在尝试使用 tensorflow 时会出现错误。
对于 tensorflow-gpu==1.12.0cuda==9.0,兼容的 cuDNN 版本为 7.1.4,可以从 此处(注册后可用)下载。
您可以使用以下命令检查您的 cuda 版本:
nvcc --version 使用以下命令检查 cuDNN 版本:
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2 使用以下命令检查 tensorflow-gpu 版本:
pip freeze | grep tensorflow-gpu 更新: 由于 tensorflow 2.0 已发布,我将分享其兼容的 cuda 和 cuDNN 版本(适用于 Ubuntu 18.04)。
  • tensorflow-gpu = 2.0.0
  • cuda = 10.0
  • cuDNN = 7.6.0

能否在CUDA10 GPU卡上训练TF1.4模型? - ivan866

5

如果你在Jupyter Notebook中编写代码,并想要检查TensorFlow使用的CUDA版本,请直接在Jupyter单元格中运行以下命令:

!conda list cudatoolkit

!conda list cudnn

并检查 GPU 是否对 TensorFlow 可见:

tf.test.is_gpu_available(
    cuda_only=False, min_cuda_compute_capability=None
)

4

你好,请问你能告诉我你在哪里找到这张图吗?当我点击上面消息中提供的链接时,图表停留在Tensorflow 2.6... - Valentin Goldité
https://www.tensorflow.org/install/source#gpu - one

3
您可以使用此配置来运行cuda 10.0(截至3/18,10.1不可用),这对我有效:
  • tensorflow>=1.12.0
  • tensorflow_gpu>=1.4

安装版本tensorflow gpu:

pip install tensorflow-gpu==1.4.0

那么,这实际上意味着新的GPU卡不支持旧的软件堆栈,这意味着向后兼容性确实被破坏了?#NVIDIA - ivan866

1
我错误地安装了CUDA 10.1和CUDNN 7.6。您可以使用以下配置(截至9/10为止,这对我有效):

  • Tensorflow-gpu == 1.14.0
  • CUDA 10.1
  • CUDNN 7.6
  • Ubuntu 18.04

但是我不得不创建符号链接才能使其正常工作,因为tensorflow最初与CUDA 10配合使用。

sudo ln -s /opt/cuda/targets/x86_64-linux/lib/libcublas.so /opt/cuda/targets/x86_64-linux/lib/libcublas.so.10.0
sudo cp /usr/lib/x86_64-linux-gnu/libcublas.so.10 /usr/local/cuda-10.1/lib64/
sudo ln -s /usr/local/cuda-10.1/lib64/libcublas.so.10 /usr/local/cuda-10.1/lib64/libcublas.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusolver.so.10 /usr/local/cuda/lib64/libcusolver.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcurand.so.10 /usr/local/cuda/lib64/libcurand.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcufft.so.10 /usr/local/cuda/lib64/libcufft.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcudart.so /usr/local/cuda/lib64/libcudart.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusparse.so.10 /usr/local/cuda/lib64/libcusparse.so.10.0

将以下内容添加到我的~/.bashrc文件中 -
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cuda/targets/x86_64-linux/lib/

我相信利用 nvidia-docker 软件层可以解决不兼容的 cuda-tf 组合问题。同时,描述如何找出需要通过符号链接重新定位的库也会很有帮助。 - ivan866

-2

我在升级到TF 2.0后遇到了类似的问题。TF报告的CUDA版本与Ubuntu 18.04认为我安装的版本不匹配。它说我正在使用CUDA 7.5.0,但apt认为我已经安装了正确的版本。

最终我不得不在/usr/local中递归地grep CUDNN_MAJOR,并发现/usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.h确实将版本指定为7.5.0
/usr/local/cuda-10.1是正确的,而/usr/local/cuda指向/usr/local/cuda-10.1,所以我不知道为什么TF会查看/usr/local/cuda-10.0

无论如何,我只需将/usr/local/cuda-10.0移动到/usr/local/old-cuda-10.0,这样TF就找不到它了,然后一切都像魔术般地正常工作了。

这一切都非常令人沮丧,我仍然觉得自己只是随意地进行了一次黑客攻击。但它起作用了 :) 也许这会帮助到遇到类似问题的人。


10.0 是 CUDA SDK 版本;7.5 是 GPU 本身的计算能力。 - ivan866

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