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

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

462464 次浏览

博士TL;)参见此表: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

并安装下面图像中给出的组合或这里<强> < / >强

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

小配置:

由于下面给出的规范在某些情况下可能过于宽泛,下面是一个特定的配置:

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

相应的cudn可以下载在这里

测试的构建配置

请参考https://www.tensorflow.org/install/source#gpu获得最新的兼容性图表(官方TF轮)。

(数据于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链接

张量流点中给出的兼容性表不包含cuda和cuDNN的特定次要版本。但是,如果不满足特定的版本,在尝试使用tensorflow时会出现错误。

对于tensorflow-gpu==1.12.0cuda==9.0,兼容的cuDNN版本是7.1.4,注册后可以从在这里下载。

你可以使用
检查你的cuda版本 nvcc --version < / p >

cuDNN版本使用
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2 < / p >

tensorflow-gpu版本使用
pip freeze | grep tensorflow-gpu < / p >

< >强更新: 由于tensorflow 2.0已经发布,我将分享它兼容的cuda和cuDNN版本(适用于Ubuntu 18.04)

  • __abc0 = 2.0.0
  • __abc0 = 10.0
  • __abc0 = 7.6.0

你可以在cuda 10.0上使用这个配置(10.1在3月18日不能工作),这为我运行:

  • tensorflow > = 1.12.0
  • tensorflow_gpu > = 1.4

安装tensorflow版本:

pip install tensorflow-gpu==1.4.0

我错误地安装了CUDA 10.1和cudn7.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/

如果你在jupyter笔记本上编码,并且想要检查tf使用的cuda版本,直接在jupyter单元中运行以下命令:

!conda list cudatoolkit


!conda list cudnn

检查gpu对tf是否可见:

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

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

我最终不得不做的是在/usr/local中为CUDNN_MAJOR递归地grep,并且我发现/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再也找不到它了,然后一切都像魔法一样工作。

这一切都很令人沮丧,我仍然觉得我只是做了一次随机入侵。但它起作用了:)也许这将帮助那些有类似问题的人。

谢谢你的第一个回答。

关于向后兼容性。

我可以成功地安装tensorflow-2.4.0cuda-11.1cudnn 8.0.5

TensorFlow GPU Compatibility Table

来源:https://www.tensorflow.org/install/source#gpu