哪个TensorFlow和CUDA版本组合兼容?

时间:2018-05-31 10:48:09

标签: tensorflow cuda version compatibility cudnn

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

7 个答案:

答案 0 :(得分:81)

一般而言:

检查CUDA版本:

cat /usr/local/cuda/version.txt

和cuDNN版本:

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

并在图片或here中安装如下所示的组合。

以下图片和链接概述了Linux,macOS和Windows上CUDA和TensorFlow的官方支持/测试组合:

次要配置:

由于以下某些情况下给定的规范可能过于宽泛,因此以下是一个有效的配置:

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

可以下载相应的cudnn here

(2018年2月16日更新的数据)

Linux GPU

enter image description here

的Linux

enter image description here

macOS GPU

enter image description here

MACOS

enter image description here

(图更新于2018年5月31日)

enter image description here

答案 1 :(得分:11)

https://www.tensorflow.org/install/source#tested_build_configurations中给出的兼容性表不包含cuda和cuDNN的特定次要版本。通常只将其列出为cuda = 9和cuDNN = 7。但是,如果不符合特定的版本,则会出现错误。

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

您可以使用
检查cuda版本  nvcc --version

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

tensorflow-gpu版本使用
pip freeze | grep tensorflow-gpu

答案 2 :(得分:3)

工作:tensorflow 1.13.1,CUDA 10,CUDNN 7.4.2,python 3.6(不适用于3.7 .. 3.7有很多错误) 对于Windows 10

答案 3 :(得分:3)

如果您在jupyter笔记本中进行编码,并且想检查tf使用的是哪个cuda版本,请直接在jupyter单元中运行以下命令:

!conda list cudatoolkit

!conda list cudnn

并检查gp是否对tf可见:

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

答案 4 :(得分:2)

您可以将此配置用于cuda 10.0(从3/18开始10.1无效),

  • tensorflow> = 1.12.0
  • tensorflow_gpu> = 1.4

安装版本tensorflow gpu:

pip install tensorflow-gpu==1.4.0

答案 5 :(得分:2)

我错误地安装了CUDA 10.1和CUDNN 7.6。您可以使用以下配置(这对我有用-从9/10开始)。 :

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

但是我必须创建符号链接才能使其工作,因为tensorflow最初可用于CUDA10。

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/

答案 6 :(得分:-2)

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

我最终要做的是在/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再也找不到了,所以一切都像个魅力。

一切都非常令人沮丧,我仍然觉得我只是在随机进行黑客入侵。但这有效了:),也许这会对遇到类似问题的人有所帮助。