最近学校给了一个服务器账号用来训练神经网络使用,服务器本身配置是十路titan V,然后在上面装了tensorflow2.2,对应的python版本是3.6.2,装好之后用tf.test.is_gpu_available()查看是否能调用gpu,结果返回结果是false,具体如下:

这里tensorflow应该是检测出了gpu,但是因为某些库无法打开而导致tensorflow无法调用,返回了false,详细查看错误信息可以看到一行:

可以看到上面几个文件都顺利打开了,但是最后一个libcudnn.so.7文件显示无法打开,not such file or directory。怀疑是cuda有问题,服务器本身是装的cuda10.1,跟tensorflow2.2应该是吻合的,但是一直无法调用,所以一开始我想重新安装cuda,覆盖掉服务器本来的cuda,下好安装包之后,因为我不是管理员,没有root权限,所以总是失败。但是安装过程中了解到系统的cuda安装目录,位于/usr/local/cuda下面,这个libcudnn.so.7应该是一个库文件,那应该放在cuda的安装目录下面,具体地,在/usr/local/cuda/lib64下面,之前在我的windows本地机器安装cuda时还要下载cudnn7.x,然后把文件拷贝到cuda对应的目录下面,我怀疑lib64目录下面的这个libcudnn.so.7文件有问题,因为在linux版本的cudnn中是可以看到libcudnn.so.7这个文件的。

于是,打开lib64目录,查找是否有libcudnn.so.7这个文件,结果是没有找到这个文件,这就很奇怪了,cuda10.1目录下面竟然没有cudnn的文件,我也没有权限修改/usr/local,因此想到既然是少了这个文件,那是不是把对应的文件加载在别的目录下,引导tensorflow去另一个我可以操作的目录下找这个libcudnn.so.7文件,就可以解决问题呢?我带着试验性的心态wget下载cudnn,结果在命令行下无法下载cudnn,原因是cudnn下载需要登录,而在命令行下就没办法下载。于是在本地机器上下载了linux版的cudnn,然后用scp命令把这个tar.gz文件发到服务器上,解压出来可以看到~/cudnn/cuda/lib64下面有libcudnn.so.7。接下来就是添加环境变量,让tensorflow不仅在/usr/local/cuda/lib64下找文件,还可以在我这个目录下找,添加命令:

export PATH=$PATH:/usr/local/cuda-10.1/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-10.1/lib64

这几行命令添加系统cuda的库

然后添加:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/users/cudnn/cuda/lib64

export LIBRARY_PATH=$LIBRARY_PATH:/home/users/cudnn/cuda/lib64

这里的/home/users/cudnn/cuda/lib64视自己的libcudnn.so.7文件目录而定,最后是更新:

source /etc/profile

如果tensorflow是按照在anaconda虚拟环境下的,在执行这几条命令会自动退出虚拟环境。记得重新进入:

source activate 环境名

这时重新进入python,导入tensorflow,然后运行tf.test.is_gpu_available(),可以看到:

这时已经显示成功打开了libcudnn.so.7文件,说明tf根据我提供的目录成功找到了这个文件,在打开了这些库文件后,最下面也返回了True:

还可以用另一个方法tf.config.list_physical_devices(‘GPU')查看当前可用gpu:

十块gpu都显示出来了。

注意,添加这几条命令只在当前连接上有用,如果断开了服务器连接再重新连接时,需要重新输入这些命令。

这个方法只是作为一个参考,碰巧是在tensorflow2.2上这个libcudnn.so.7文件打不开,于是尝试性地试了一下,结果成功了。其他机器上如果出现同类问题,采用这个方法不一定能解决,只是提供一个思路。在tensorflow2.1上,也同样出现gpu无法调用的问题,但打印的错误信息不仅有libcudnn.so.7文件无法打开,还有其他几个文件也打不开,这些文件基本都是lib开头的,可以查看这些文件是否在cuda的lib64目录下,如果找得到这些文件,那有可能是环境变量设错了,可以试试上面那些命令:

export PATH=$PATH:/usr/local/cuda-10.1/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-10.1/lib64

如果找不到,那可以试试跟我一样先把这些文件下载到机器上面,给系统添加环境变量到对应这些文件的目录,引导tf去找。当然,这只是我一种猜测,tensorflow2.1和2.2用的应该都是cuda10.1,但是我不清楚为什么2.2只有一个文件无法打开,而2.1就有好几个文件打不开,而在1.9版本上,由于1.9似乎用的不是10.1版本的cuda,其错误原因更多,这里要区分开。

到此这篇关于详解tensorflow2.x版本无法调用gpu的一种解决方法的文章就介绍到这了,更多相关tensorflow2.x无法调用gpu内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python无法使用1号gpu_详解tensorflow2.x版本无法调用gpu的一种解决方法相关推荐

  1. tensorflow2.x版本无法调用gpu的一种解决方法

    最近学校给了一个服务器账号用来训练神经网络使用,服务器本身配置是十路titan V,然后在上面装了tensorflow2.2,对应的python版本是3.6.2,装好之后用tf.test.is_gpu ...

  2. 仍然报错_详解oracle经典报错:ORA-04030排错思路和解决方法

    概述 前段时间使用的oracle 11g数据库,在用一段时间后(开始要较长时间才出现,后来较短时间就出现),频繁报ORA-04030错误,具体错误信息是 ORA-04030: 在尝试分配...字节(. ...

  3. error2203matlab,小编详解Win10安装MATLAB软件提示Internal error 2203的解决方法

    现在电脑已成为我们工作生活的一部分,相信大家在操作电脑时一定会遇到这样那样的问题,Win10安装MATLAB软件提示Internal error 2203的解决方法这个问题就是我们经常会遇到的,这样的 ...

  4. 上传声音 微信小程序_图文详解微信小程序中调用录音功能和音频播放的方法...

    老规矩,先几张图. 1.为了进来看得清楚.刚开始没有加载音频列表.代码往前挪一挪即可. 2.按住 录音按钮的时候会出现麦克风.中间的麦克风是个帧动画. 其实就是用js控制图片显示隐藏.没啥好说的.这里 ...

  5. Elasticsearch Collapsing 字段折叠使用详解_字段折叠后数量结果Total不准确解决方法

    在 Elasticsearch 5.x 有一个字段折叠(Field Collapsing)的功能非常有用,在这里分享一下 前言 在电商商品中有分SKU和SPU sku是和商品的库存相关的一个概念.比如 ...

  6. 电脑装了python后变卡_老电脑windows系统越用越卡的6种解决方法

    经常听到人说老电脑安装Windows系统后越用越卡,运行时间久了,确实会因为大量的垃圾文件和无用注册表拖慢响应速度.所以定期要进行清理,优化方法有很多种,今天小编给大家讲解老电脑windows系统越用 ...

  7. python初级教程:入门详解

    本文是针对Python的初学者,从无到有的介绍Python语言如何入门,主要包括了:Python的简介,如何下载Python,如何安装Python,如何使用终端.Shell,IDE等各种开发环境进行P ...

  8. python利器怎么编程-Python任务调度利器之APScheduler详解

    任务调度应用场景 所谓的任务调度是指安排任务的执行计划,即何时执行,怎么执行等.在现实项目中经常出现它们的身影:特别是数据类项目,比如实时统计每5分钟网站的访问量,就需要每5分钟定时从日志数据分析访问 ...

  9. python编程入门与案例详解-quot;Python小屋”免费资源汇总(截至2018年11月28日)...

    原标题:"Python小屋"免费资源汇总(截至2018年11月28日) 为方便广大Python爱好者查阅和学习,特整理汇总微信公众号"Python小屋"开通29 ...

最新文章

  1. 求单独出现的数,冒泡排序优化,strncpy的优化
  2. paradox 修改字段长度_【精华】小学作文400字汇总十篇
  3. Android之提示can‘t execute: Permission denied解决办法
  4. Android图片上倒计时,Android自定义照相机倒计时拍照
  5. 网易严选Java开发三面面经:南京黑马java培训怎么样
  6. vs连接oracle数据库报错,用VS连接oracle数据库时ORA-12504错误
  7. windows php fastcgi,windows下FastCGI(php-cgi)的工作原理和配置
  8. 微信公众平台开发(77) 图片下载
  9. LINUX打开方式的配置
  10. curl get请求传递参数_使用curl调用restful API
  11. PowerBuilder快速入门实践
  12. python unmatched_Python
  13. vue websocket实现消息推送和语音提醒功能
  14. “五子登科”新解之“票子,房子,车子,妻子,孩子”
  15. oracle 12c 死锁 处理,oracle - PLSQL Oracle 12c死锁,为什么需要对SSX Table锁进行独立删除? - 堆栈内存溢出...
  16. 服务器cpu型号各个数字,服务器cpu型号 数字
  17. 2013南大专业课试题答案
  18. oracle加密传输的种子,oracle net manager 数据传输安全步骤详解
  19. java咖啡是研磨的吗_没想象的困难:咖啡研磨,明白只需要三步!
  20. 使用WHM重新编译Apache+PHP环境

热门文章

  1. php中什么是函数函数的意义是什么,php中arsort函数的功能起什么作用呢?
  2. 前端js判空处理,js字符串判空,js数组判空
  3. mongoose 查询 find 指定字段
  4. jfinal项目部署服务器,jfinal undertow项目再集成JDK,一键安装系统服务,让部署再快一点...
  5. ubuntu下 windows的zip文件打开,中文目录和文件名乱码
  6. java解析json数组对象_JAVA中快速解析JSON对象里包含的JSON数组
  7. “export ‘default‘ (imported as ‘echarts‘) was not found in ‘echarts‘
  8. 【C++深度剖析教程17】逻辑操作符的陷阱
  9. Linux系统添加永久静态路由的方法
  10. LeetCode 111. Minimum Depth of Binary Tree