相关文章推荐
想旅行的双杠  ·  Spring Boot Actuator ...·  11 月前    · 
玉树临风的马克杯  ·  python shellcode免杀 - ...·  1 年前    · 
气宇轩昂的香菇  ·  GPT专业应用:生成电影解说词_gtp电影解 ...·  1 年前    · 
越狱的茶叶  ·  reportlab ...·  1 年前    · 
八块腹肌的大熊猫  ·  检查HDFS目录大小的方法?-腾讯云开发者社 ...·  1 年前    · 
Code  ›  【tensorflow】为什么CUDA装好了,Tensorflow-GPU不能用?_安装了cuda却不调用gpu_落叶阳光的博客
python 编程语言 tensorflow cuda
https://blog.csdn.net/xiangxiang613/article/details/112603083
骑白马的咖啡
2 年前
    • 1.CUDA、cudnn、Tensorflow、python版本并不配套!!!(大多都是这个原因)
    • 2.CUDA没有装好:
    • 3.环境变量没配置好
    • 4.NVDIA驱动版本太低不合要求
    • 5.以前的tensorflow没有卸载干净
    • 6.装了多个Tensorflow或Python(少见,但我就是这个原因!!!)
    • 其它问题
      • 1.VS20XX,如VS2017必须要装吗?
      • 2.CUDA是精简安装还是自定义安装?
      • 3.CUDA Driver Version / Runtime Version不一致有没有问题?
      • 4.为什么tensorflow的GPU运算比CPU还慢?
      • 5.如何看GPU是否运行?
      • 6.GPU运行报错:Resource exhausted: OOM when allocating tensor with shape
      • 7.测试代码的报错分析

      当我们把CUDA、cudnn、tensorflow-GPU都装好,但在tensorflow GPU测试tf.test.is_gpu_avaiable()却始终返回false,怎么办?

      import tensorflow as tf
      tf.test.is_gpu_available()
      

      FALSE

      可能的原因如下:
      ————————————————————————————————

      1.CUDA、cudnn、Tensorflow、python版本并不配套!!!(大多都是这个原因)

      查看tensorflow官网的版本要求:https://tensorflow.google.cn/install/source_windows(见【经过测试的构建配置】)
      在这里插入图片描述
      先查看目前能支持的最高的CUDA版本!
      在安装之前可以在pytorch官网看一下能支持的的最高的CUDA版本,尽量与tensorflow共用CUDA。https://pytorch.org/

      请仔细核对你的版本是否符合要求。
      eg:我的环境配置:

      • python: 3.7.1
      • CUDA:10.0.132
      • cudnn:V7.4.1.5(根据cuda版本和tf版本来选)
      • tensorflow-gpu-2.0.0

      重要补充:CUDA环境升级教程----------------------

      CUDA驱动版本是向下兼容的,所以保持最新就没事,也就是驱动版本可以高于CUDA版本。
      卸载和重装CUDA教程:
      https://blog.csdn.net/weixin_44606139/article/details/127493438

      同一台电脑,我将CUDA从10升级到了11.0,此时我就可以用更高的python版本和tensorflow版本、pytorch版本,给一个版本配套的配置:

      • python:3.8

      • cuda:11.0,能够同时满足tensorfow和pytorch的是CUDA11.0

      • cudnn:8.0

      • tensorflow-GPU:2.4.0
        在这里插入图片描述

      • pytorch:1.7.1

      2.CUDA没有装好:

      验证方式一:nvcc -V
      在这里插入图片描述
      正确输出版本表示成功,否则没装好。

      验证方式二:运行demo

      打开 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\demo_suite

      (若是自定义安装,则换成相对应的路径)

      在此路径下打开powershell

      执行:.\bandwidthTest.exe
      在这里插入图片描述
      输出如图,表示CUDA安装成功,否则CUDA没装好

      若CUDA可运行,且版本没问题,那么可能是一下的原因:

      3.环境变量没配置好

      参考这里:https://blog.csdn.net/u010618587/article/details/82940528?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

      4.NVDIA驱动版本太低不合要求

      参考:https://blog.csdn.net/flana/article/details/104772614

      可以尝试更新一下NVDIA驱动,看是否成功。不成功也没有影响。

      5.以前的tensorflow没有卸载干净

      这个也是有可能的,若是以前安装过tensorflow其它版本,如CPU版本,一定要卸载干净后再装新的版本!

      看写没卸载干净,

      方式一:pip list 看是否有带tensorflow名称的库

      方式二:到对应的文件夹下看,eg:Anaconda就到Anaconda3\Lib\site-packages的目录下看是否还有tensorflow相关的文件夹

      有的话用pip uninstall的方式卸载掉

      6.装了多个Tensorflow或Python(少见,但我就是这个原因!!!)

      同一台电脑中装了多个python,在一个python中装了tensorflow,但在pycharm中调用Interpreter时又没有选对对应的装了tensorflow的python环境。
      比如:我有一个直接通过python安装包安装的python环境(图中的Python3.7,称为A),还有一个anaconda自带的python环境(图中的Python3.7(2),称为B),我在A环境下装了tensorflow-CPU,另外在B环境下又直接装了一个tensorflow-CPU,此时两套是独立的,两套环境都可以在Pycharm调用和切换。
      在这里插入图片描述

      然后我想把B环境下的tensorflow换成GPU版本,装好了,然后在Pycharm中运行测试程序或其它程序时,没有将Interpreter切换到对应的B环境,此时相当于还是在用A环境下的tensorflow-CPU,所以始终FALSE。(因为环境装了太久,自己都忘了)

      然后通过检查查看tensorflow运行时的版本和路径,才发现了这个问题。此时将Interpreter切换到B环境下,问题解决。
      多说一句:这个本质原因不是同时装了多个tensorflow的问题,而是多个python环境在执行程序时没有选择正确。

      这里给一个完整的验证tensorflow-GPU是否可用的程序:

      import tensorflow as tf
      print(tf.__version__)  # 查看tensorflow版本
      print(tf.__path__)     # 查看tensorflow安装路径
      a = tf.test.is_built_with_cuda()  # 判断CUDA是否可以用
      b = tf.test.is_gpu_available(
          cuda_only=False,
          min_cuda_compute_capability=None
      )  # 判断GPU是否可以用
      print(a) # 显示True表示CUDA可用
      print(b) # 显示True表示GPU可用
      # 查看驱动名称
      if tf.test.gpu_device_name():
          print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
      else:
          print("Please install GPU version of TF")
      

      网上看了那么多,我可能是第一个提醒:在验证tensorflow-GPU是否可用前,先查看一下tensorflow版本和安装路径。

      ——————————————补充——————————————————

      1.VS20XX,如VS2017必须要装吗?

      不用,虽然tensorflow官网也有说让装,其实可以不用装,VS2017是用于编译tensorflow的,我们直接用编译好的,就不用装它。

      2.CUDA是精简安装还是自定义安装?

      推荐自定义安装,可以选择安装路径,教程如下:

      https://blog.csdn.net/u010618587/article/details/82940528?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

      3.CUDA Driver Version / Runtime Version不一致有没有问题?

      只要CUDA Driver Version > Runtime Version就没有问题。

      我把NVDIA Driver(不是CUDA)升级了,结果GPU还是可以用。

      如何查看这两个的版本:
      在这里插入图片描述

      4.为什么tensorflow的GPU运算比CPU还慢?

      参考:https://www.cnblogs.com/liuhuacai/p/12328020.html
      在这里插入图片描述

      结论:1.在计算量较小的情况下,cpu的计算速度比gpu计算速度快,但是都是微量级别的差异

      2.随着计算量的增加,cpu的计算时间逐步增加,而gpu的计算时间相对平缓,在计算量达到一定程度之后,gpu的优势就出来了。

      5.如何看GPU是否运行?

      最简单的就是直接在任务管理器-性能中查看。在进程里可以看到哪些程序在使用GPU。

      6.GPU运行报错:Resource exhausted: OOM when allocating tensor with shape

      参考:https://www.jianshu.com/p/f29dbb13bb07
      OOM表示分配的显存超过GPU可用的最大显存,显存不足(OOM, Out of Memory)
      可能的原因:
      (1)batchsize太大,这种只需要将batchsize减小就行了,比如从1开始
      (2)GPU的显存太小,或者剩余的显存太少了

      7.测试代码的报错分析

      在这里插入图片描述
      这是一个朋友运行测试代码后的报错情况,若是你也遇到这样的问题,那么可以仔细分析看一下报错中的第2、3行,主要问题在于“cudnn64_8.dll not found”,你可以在电脑中搜索一下是否存在这个文件,若没有,一个简单的办法就是去下载对应的文件,然后放到指定的目录中,具体可以参考:https://blog.csdn.net/a1456123a/article/details/115098630;若有,那么可能是路径不正确或其他的问题。

      为什么CUDA装好了,Tensorflow-GPU不能用?当我们把CUDA、cudnn、tensorflow-GPU都装好,但在tensorflow GPU测试tf.test.is_gpu_avaiable()却始终返回false,怎么办?import tensorflow as tftf.test.is_gpu_available()FALSE可能的原因如下:————————————————————————————————1,CUDA、cudnn、Tensorflow、python版本并不
      pytorch无法调用gpu的解决方法 UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 10010). Please update your GPU driver by downloading and installing a new version 导入torch后torch.cuda.is_available()为false ELF标头无效
      [ /job:localhost/replica:0/task:0/device:CPU:0 ] 当我看到CPU的时候瞬间蒙了,我指定的是使用GPU为什么出现CPU被占满的错误,于是开始上网搜索,试了好多种方法,例如: 没有安装tensorflow-gpu、tensorflow-gpu版本没有和cuda相对应 te...
      在开始安装前,如果你的电脑装过tensorflow,请先把他们卸载干净,包括依赖的包(tensorflow-estimator、tensorboard、tensorflow、keras-applications、keras-preprocessing),不然后续安装了tensorflow-gpu可能会出现找不到cuda的问题。 cuda、cudnn。...
      之前用tensorflow整天检测都是说False,捣鼓了一天,总结分享一下。 因为要使用pytorch,所以安装的cuda10.2(这个cuda指的是英伟达官网那个2G多的exe安装文件) 但是,tensorflow官网上展示的cuda版本和tensorflow-gpu版本对照中,并没有cuda10.2的版本,就很气。 问题一:tensorflow-gpu 1.x版本的安装 这个其实比较好解决 比如我要安装tensorflow-gpu 1.15.0版本
      m0_63471180: 运行make出现: NDT_PCL_demo/normal_distributions_transform.cpp:49:16: error: ‘boost::this_thread’ has not been declared 49 | boost::this_thread::sleep (boost::posix_time::microseconds (100000)); 【NLP】常见自然语言处理任务及工具方案 落叶阳光: 这个搜一下LAC示例的博客就知道了,主要是需要根据LAC的词典格式定义自己的词典,然后LAC函数里面有个dic属性,赋值词典路径即可。 【NLP】常见自然语言处理任务及工具方案 woshayebuhuib: 想问一下 lac怎么载入自定义的词典啊表情包 【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口 m0_64101192: 请求超时,怎么办
 
推荐文章
想旅行的双杠  ·  Spring Boot Actuator 健康检查、度量、指标收集、监控,一文搞定! - Java技术栈 - 博客园
11 月前
玉树临风的马克杯  ·  python shellcode免杀 - CSDN文库
1 年前
气宇轩昂的香菇  ·  GPT专业应用:生成电影解说词_gtp电影解说指令-CSDN博客
1 年前
越狱的茶叶  ·  reportlab 页脚和页眉的使用_reportlab添加页眉-CSDN博客
1 年前
八块腹肌的大熊猫  ·  检查HDFS目录大小的方法?-腾讯云开发者社区-腾讯云
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号