RTX2080配置tensorflow-gpu,问题1:检测不到可用gpu设备,问题2:Failed to get convolution algorithm.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43523725/article/details/100696894

RTX2080配置tensorflow-gpu,问题1:检测不到可用gpu设备,问题2:Failed to get convolution algorithm.

Error : Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
cuda环境:10.0
经过了一天多的奋战,在老大的帮助下终于解决了tensorflow-gpu检测不到可用gpu,以及检测到gpu,但是报错不能进行卷积甲酸的错误

错误1:cuda10.0 安装tensorflow-gpu一直无法检测到可用gpu,检测到的设备只有cpu

  tf检测可用设备代码如下:

 from tensorflow.python.client import device_lib
 print(device_lib.list_local_devices())

感谢大佬们链接:one of here
当时检测出来的设备只有这个样子:

只有cpu和XLA_CPU,而且第二个还不能用
后来发现,我是用的anaconda安装的,用的conda,安装tensorflow-gpu时,也顺带安装了tensorflow,有博客说会默认先用gpu的,而且不能import tensorflow-gpu,很迷
后来发现,用pip方式,只会安装gpu版,cpu版本的就不会装了
于是,

pip install tensorflow-gpu

一行代码解决了检测不到gpu设备的问题
然后顺带遇到一个,cudnn的问题
很多博客上面有分享了cuda和cudnn之间的关系,tensorflow-gpu1.14.0,cuda10.0,匹配的是7.4的cudnn,但是我设备上默认的是7.3.1,而且老大用这个版本用的好好的,各种博客看看看,有点忘记了,但是感觉还是用conda安装最新版本的cudnn比较好(版本自动匹配)而且,本来可以指定安装cudnn的版本的,后来装着装着就不能指定了,不懂
在cudnn.h这个文件里面写的是7.3.1
在这里插入图片描述
指定安装版本命令:

conda install cudnn==7.4.2

在此放上版本对应链接:链接
还有github上面对于cudnn版本的讨论:github

错误2:提示Failed to get convolution algorithm.

有说是tensorflow版本太高了,但是cuda限制,并不是想降到哪个版本就降到哪个版本的,(网上有强制--force命令,但是我输入会报错,很无奈)
类似这样子(版本号自行修改):

sudo pip3 install --upgrade --force-reinstall tensorflow-gpu==1.9.0 --user

有说是要用conda安装,可能是缺少库,但是,用conda安装的tensorflow-gpu,import时提示没有这个模块

万念俱灰啊,向老大求助
得到了这个链接:感谢老大
试了一万遍之后,抱着最后试一次的心态
输入以下代码:

tf.debugging.set_log_device_placement(True)
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
  try:
    # Currently, memory growth needs to be the same across GPUs
    for gpu in gpus:
      tf.config.experimental.set_memory_growth(gpu, True)
    logical_gpus = tf.config.experimental.list_logical_devices('GPU')
    print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
  except RuntimeError as e:
    # Memory growth must be set before GPUs have been initialized
    print(e)

解决!!!

这才是使用了gpu之后会输出的东西啊
在这里插入图片描述
再次感谢老大帮助

猜你喜欢

转载自blog.csdn.net/qq_43523725/article/details/100696894
今日推荐