• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

2021-12-01解决tensorflow没办法调用GPU运行的问题?

武飞扬头像
LJhaha
帮助1

1.目前的环境和问题

1.1问题说明

目前的主要问题是在做深度学习时,不能成功调用GPU进行运算,程序一直在CPU上运行,对于数据量大的深度学习而言,时间成本高
主要问题如下(代码都是在python环境下运行):
①tensorflow版本检查

import tensorflow as tf
tf.__version__  #(2.6.0)

再导入tensorflow时出现如下问题:
学新通
②可用的GPU设备检查

import tensorflow as tf
from tensorflow.python.client import device_lib
#输出可用的GPU数量
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
#查询GPU设备
print(device_lib.list_local_devices())

以上结果返回如下:
GPU的可使用数量为0(实际上可使用的GPU数量为2)
学新通
未能成功检测到GPU设备,只检测到CPU
学新通
综合以上目前觉得是GPU的配置不成功,版本不匹配之类的问题

1.2操作环境等说明

①操作系统linux/ubuntu18.04(查询方法如下图)
学新通
②系统的架构=amd64(x86_64)(查询方法如下图)
学新通
③python=3.6.9
④tensorflow-gpu=2.6.0
⑤cuda=9.1.85(查询方法如下图)
注意区分两种查询命令的区别:https://blog.csdn.net/hb_learing/article/details/115534219
学新通
⑥无cudnn(查询方法如下图)
学新通

2.针对该问题的解决办法

①查询tensorflow版本对应的cuda和cudnn
查询链接:https://tensorflow.谷歌.cn/install/source?hl=en
学新通
由以上可知tensorflow2.6.0对应的版本分别为cudnn=8.1和cudn=11.2
②升级cudn的版本
先下载对应的cudn版本文件,下载地址:https://developer.nvidia.com/cuda-11.2.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=runfilelocal
可直接参照官网的安装教程在终端输入相关命令进行安装
学新通
因为我是在docker容器里运行,没有root权限,所以在命令行输入时,我会舍去sudo,直接输入后面的内容
③配置cudn
a. 查看.bashrc文件

vim  ~/.bashrc

b. 在该文件的末尾加入

export PATH=/usr/local/cuda-11.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH

c. 最后使用如下命令对.bashrc文件的修改进行激活生效

source ~/.bashrc

d. 使用nvcc -V命令查看cudn的版本,可知现在变成了11.2.152,如图所示:
学新通
④安装cudnn
a. 先下载对应的cudnn安装包,安装包链接:https://developer.nvidia.com/rdp/cudnn-archive
b. 解压安装包并进入解压目录

tar zxvf cudnn-11.2-linux-x64-v8.1.0.77.tgz
cd 压缩文件所在路径

c. 执行cp和chmod命令配置cudnn环境

sudo cp cuda/include/cudnn.h /usr/local/cuda-11.2/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.2/lib64
sudo chmod a r /usr/local/cuda-11.2/include/cudnn.h 
sudo chmod a r /usr/local/cuda-11.2/lib64/libcudnn*

d. 查看cudnn版本
网上常用的查看cudnn版本的命令为:

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

但是该命令没有反应,所以网上搜索了解决办法,有效解决办法的链接https://blog.csdn.net/eaxy_z/article/details/108615548
最终查询cudnn的版本为8.1.0
学新通
至此所有的配置均已完成,现在可以按照1.1问题说明中的②查看可用GPU的数量了,结果显示如下(部分截图):
学新通

哈哈哈哈,困扰我老久的问题总算解决了,具体参考内容的链接如下
①cudn配置时.bashrc文件的添加内容:https://blog.csdn.net/qq_16792139/article/details/113256279
②整体的安装流程:
https://zhuanlan.zhihu.com/p/72298520

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgjgjhc
系列文章
更多 icon
同类精品
更多 icon
继续加载