我注意到一些新的TensorFlow版本与旧版本的CUDA和cuDNN不兼容。 是否存在兼容版本的概述或甚至是官方测试组合的列表? 我在TensorFlow文档中找不到它。
我注意到一些新的TensorFlow版本与旧版本的CUDA和cuDNN不兼容。 是否存在兼容版本的概述或甚至是官方测试组合的列表? 我在TensorFlow文档中找不到它。
简而言之:请查看此表格: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日)
tensorflow-gpu==1.12.0
和 cuda==9.0
,兼容的 cuDNN
版本为 7.1.4
,可以从 此处(注册后可用)下载。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.0cuda
= 10.0cuDNN
= 7.6.0如果你在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
)
感谢第一个回答。
关于向后兼容性的一些内容。
我成功地使用 cuda-11.1
和 cudnn 8.0.5
安装了 tensorflow-2.4.0
。
安装版本tensorflow gpu:
pip install tensorflow-gpu==1.4.0
但是我不得不创建符号链接才能使其正常工作,因为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
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我在升级到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就找不到它了,然后一切都像魔术般地正常工作了。
这一切都非常令人沮丧,我仍然觉得自己只是随意地进行了一次黑客攻击。但它起作用了 :) 也许这会帮助到遇到类似问题的人。