解决在Ubuntu中Pycharm一直tf.test.is_gpu_available()为false的问题

目录

    • 本机软件环境
    • 问题描述
    • 问题原因
    • 解决方法1——为单个文件添加环境变量
    • 解决方法2——命令行启动pycharm

本机软件环境

Ubuntu20.04 + CUDA10.0 + cudNN7.6.5 + Anaconda3-2020.02
tensorflow-gpu安装了两个,tf1.15 和 tf2.0
(安装教程可参考这里)

【查看环境常用命令】
echo $PATH 查看环境变量PATH
在这里插入图片描述
nvcc -V 检查CUDA版本(Runtime API)
在这里插入图片描述
nvidia-smi 查看该时刻GPU使用情况(注意,右上角的CUDA是指 Driver API,我们自己跑程序用的是nvcc -V里的 Runtime API)
解决在Ubuntu中Pycharm一直tf.test.is_gpu_available()为false的问题_第1张图片
top 查看系统实时的资源使用情况:"%Cpu(s)"行的第一项"0.x us"表示CPU利用率;“MiB Mem"行的"total” “free” "used"分别表示总量、空闲、已使用内存大小,单位是MB;此外还有各个进程的资源占用情况等信息。退出按 q 键即可。
解决在Ubuntu中Pycharm一直tf.test.is_gpu_available()为false的问题_第2张图片

问题描述

我们通常用两个语句来检查tensorflow-gpu有没有正常执行:

# 检查tensorflow是否得到CUDA支持
tf.test.is_built_with_cuda() 
# 检查tensorflow是否可以获取到GPU
tf.test.is_gpu_available()

只有上述语句返回值都是 true 时,表示能够成功执行tensorflow-gpu。
我们安装完环境通常会迫不及待地在命令行测试一下这两句话,返回都是true(出现false的话一般是CUDA的问题,可参考这里)。然后开开心心安装好pycharm,选择好对应的conda环境就开始跑程序啦。

然而,程序跑是跑起来了,怎么这训练速度比我自己手算还慢啊?!这时用 nvidia-smi 一检查,好家伙,显存只用了3%,GPU利用率只有2%?CPU占用率87%?!!!这怎么成了cpu在跑了???

命令行中两个测试语句明明都返回的true啊,于是我在pycharm里进行检查,conda环境是对的,运行了同样的测试语句后,tf.test.is_gpu_available()居然是false

问题原因

pycharm没有找到CUDA的支持文件,还记得安装CUDA时我们在.bashrc文件里写入过两个环境变量吗,问题就在LD_LIBRARY_PATH,环境变量里明明有,但是pycharm就是读不到。(知道真相的我眼泪掉下来)
怎么看pycharm能不能读到呢?在菜单栏"RUN"下面的"Edit Configuration"中,环境变量一栏可以看到pycharm获取的环境变量,发现确实没有LD_LIBRARY_PATH。
解决在Ubuntu中Pycharm一直tf.test.is_gpu_available()为false的问题_第3张图片

解决方法1——为单个文件添加环境变量

直接在上图所示的用户环境变量一栏里添加一栏LD_LIBRARY_PATH和对应的路径(以自己环境变量中的路径为准),如下:
解决在Ubuntu中Pycharm一直tf.test.is_gpu_available()为false的问题_第4张图片
我们再执行这个程序,就不会有问题了。
**【缺点】**这一操作只针对单个文件,我们每次要执行一个新创建的 tf 程序时都要这样重新再配置一遍。
那如何一劳永逸呢,且往下看

解决方法2——命令行启动pycharm

是的,只要pycharm在命令行中执行,就会获取到LD_LIBRARY_PATH(这是什么鬼畜的bug)
(如果你在安装pycharm的时候有选择创建命令行启动,就直接可以在命令行输入指令启动了,指令默认是"charm",你可以在/usr/local/bin下面查看之前有没有设置过)
那如何简单快速地用命令行启动pycharm呢?其实就是把pycharm的启动程序连接到PATH中,只需两步:
1.找到pycharm.sh的路径
2.命令行输入sudo ln -s pycharm.sh的路径 /usr/local/bin
例如我的是:sudo ln -s ~/.local/share/JetBrains/Toolbox/apps/PyCharm-C/ch-0/201.8743.11/bin usr/local/bin/pycharm
执行完毕后,会在 /usr/local/bin 下生成一个名为 pycharm 的链接文件,从命令行直接输入"pycharm"就可以启动pycharm了。
pycharm启动后,我们再去看一眼Edit Configuration,里面果然加载到了LD_LIBRARY_PATH。
解决在Ubuntu中Pycharm一直tf.test.is_gpu_available()为false的问题_第5张图片
于是乎又一个坑被我们填上了,希望pycharm尽快把这个bug解决掉啊啊啊。

你可能感兴趣的:(tensorflow环境搭建,ubuntu,tensorflow,cuda,pycharm)