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


当前回答

如果你在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
)

其他回答

谢谢你的第一个回答。

关于向后兼容性。

我可以用cuda-11.1和cudn 8.0.5成功安装tensorflow-2.4.0。

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

我错误地安装了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/

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

tensorflow > = 1.12.0 tensorflow_gpu > = 1.4

安装tensorflow版本:

pip install tensorflow-gpu==1.4.0

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

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

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

如果你在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
)