使用TensorFlow 2.0.0时未找到GPU

使用TensorFlow 2.0.0时未找到GPU,tensorflow,keras,gpu,tensorflow2.0,Tensorflow,Keras,Gpu,Tensorflow2.0,我正在迁移到Tensorflow 2.0,我正在 Ubuntu 18.04 CUDA 10.2 Python 3.7 ZOTAC GeForce®GTX 1080钛迷你(ZT-P10810G-10P) 当我运行nvcc-V和nvidia smi时,我可以看到GPU。但以下命令不列出GPU tf.test.is_gpu_available(cuda_only=False, min_cuda_compute_capability=None) Output: False tf.config.expe

我正在迁移到Tensorflow 2.0,我正在

Ubuntu 18.04

CUDA 10.2

Python 3.7

ZOTAC GeForce®GTX 1080钛迷你(ZT-P10810G-10P)

当我运行
nvcc-V
nvidia smi
时,我可以看到GPU。但以下命令不列出GPU

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

tf.config.experimental.list_physical_devices(device_type=None)
Output: [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),
PhysicalDevice(name='/physical_device:XLA_CPU:0', device_type='XLA_CPU')]

from keras import backend as K
K.tensorflow_backend._get_available_gpus()
Output: []
编辑1:他们有关于
tensorflow 1.15
tensorflow 1.14
的说明,但不适用于更高版本

此外,重新启动和重新安装tensorflow gpu也无济于事

更新CUDA和cudnn也不起作用。

从链接上看,对于tensorflow-2.0.0,需要cudnn版本7.4和CUDA 10.0。不确定您的cuDNN版本是什么(您可以通过以下方式进行检查:

cat ${CUDNN_H_PATH} | grep CUDNN_MAJOR -A 2
它应该返回:

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 5
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
=>这意味着它的7.5.0

我已经读到,如果上面的链接指定了7.4,你就不能使用任何其他版本(甚至7.5、7.6等)。因此,请在cuDNN下载中查找存档版本

我建议您卸载所有nvidia驱动程序、tensorflow gpu、cuDNN、所有cuda库和工具包,然后重新安装。不要同时安装tensorflow和tensorflow gpu。只需安装tensorflow gpu即可

以下是如何卸载nvidia cuda工具包及其依赖项:

sudo apt-get remove --auto-remove nvidia-cuda-toolkit
记住编辑~/.bash_配置文件

所有的东西都被正确卸载和清除后,安装NvidiaDRIVER -418(我个人使用这个版本,但是根据英伟达文档,对于CUDA 10,只要它的410xx就可以了)- < /P> 然后重新启动并使用nvidia smi命令检查是否显示: NVIDIA-SMI 430.50驱动程序版本430.50

然后下载并安装CUDA 10.0

请不要下载任何其他版本(不是10.1、10.2等-抱歉唠叨)

要安装NVIDIA加速图形驱动程序,请记住选择n(否)。将出现一条错误消息,说明其安装不完整,但您可以忽略它

确保~/.bashrc文件包含cuda-10.0

export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64 
然后下载cuDNN v7.4.2 for CUDA 10.0。使用tar命令提取tgz文件后,将cd放入CUDA文件夹,并将lib64/目录的内容及其所有内容复制到/usr/local/CUDA/lib64/路径中。此外,将include/文件夹复制到/usr/local/CUDA/include/路径中,如下所示:

sudo cp -P lib64/* /usr/local/cuda/lib64/
sudo cp -P include/* /usr/local/cuda/include/
核对

tf.test.is_gpu_available()

这应该是真的。

是的,非常感谢@Ran Fang

TF2.0只能与CUDA 10.0和cuDNN 7.4一起在GPU上工作-您可以 检查依赖项

我完成了以上所有操作,目前我的版本是CUDA 10.0、cuDNN 7.4.1和NVIDIA-SMI 410.129。您可以查看和

对我来说,要检查cuDNN版本,以下命令在Ubuntu 18.04上起作用-

cat/usr/include/cudnn.h| grep cudnn|u专业-a2

但是做了以上所有的工作,仅仅安装tensorflow gpu并没有使gpu正常工作

最后的工作是:首先卸载所有tensorflow软件包,然后只安装-

pip卸载tensorflow tf nightly tensorboard tb nightly tensorflow估计器

pip安装tf-nightly-gpu-2.0-preview

工作得很有魅力

按照教程安装Tensorflow 2.0和相应的依赖项


您也可以通过和doc完全卸载较新的CUDA和cuDNN版本,并安装较旧的CUDA 10.0版本。

完成上述所有操作后,我在运行model.fit(…)后遇到一个错误-

Unknown错误:无法获取卷积算法。这可能是因为cuDNN未能初始化,因此请尝试查看上面是否打印了警告日志消息。[Op:Conv2D]

我遵循了这里和@RadV的答案,它成功了。他的答案-

此TensorFlow GPU指令上的每个指令的升级

所以现在我有

Ubuntu 18.04

当我在终端中运行nvidia smi时,它显示CUDA 10.2

终端中nvcc给出的
输出
/usr/local/cuda-10.0/bin/nvcc


尝试卸载“tensorflow”软件包,然后通过“pip install tensorflow-gpu”重新安装gpu版本。所有这些都完成了,但TF仍然没有检测到gpu
tf.test.is_gpu_available()