相关文章推荐
八块腹肌的大熊猫  ·  Socket.BeginReceive ...·  2 年前    · 
霸气的弓箭  ·  Stream.WriteAsync 方法 ...·  2 年前    · 
果断的火柴  ·  opengl - What does a ...·  2 年前    · 
耍酷的梨子  ·  php ...·  2 年前    · 

CUDA 版本不对导致 Pytorch / Tensorflow 无法调用GPU的问题

系统:Ubuntu 16.04
Tensorflow版本: 1.14.0
原 CUDA:10.2 (Nvidia 440.几忘了)
新 CUDA:10.0 (Nvidia 410.48)

之前成功装好了 CUDA 10.2、Nvidia驱动及 cuDNN 7.6.5(参见 这篇博客 ),并按照 cuDNN官网测试安装是否成功的方法 跑 mnist 测试也通过了。然而跑一个基于Tensorflow 1.14.0的深度学习代码时,发现训练速度特别慢,看起来GPU没有成功调用。

检查 Tensorflow 能否调用 GPU
终端输入:

python 
>>> import tensorflow as tf
>>> tf.test.is_gpu_available()

检查 Pytorch 能否调用 GPU
终端输入:

python 
>>> import torch
>>> torch.cuda.is_available()

如果最后显示 True 就证明 CUDA 版本没问题,False 就是用不了GPU,CUDA 版本不对。

Tensorflow 各版本与支持的 CUDA、cuDNN、gcc和 python 版本关系:官网.
Pytorch 各版本与支持的 CUDA 版本关系:官网
才知道 tensorflow 1.14.0 不支持 CUDA 10.2,得卸载CUDA 10.2,重装CUDA 10.0及对应的nvidia驱动还有cuDNN了。

CUDA、Nvidia驱动 和 cuDNN 的卸载重装

网上有很多人说CUDA卸载不干净之类的,事实上没有那么麻烦,按照以下方法(参考官网文档&github)即可成功卸载重装不同版本CUDA。此外,由于 cuda 驱动和 nvidia 驱动千丝万缕的关系,基本上两者要一起卸载、一起安装。

1、卸载 CUDA 和 cuDNN:

卸载 CUDA 10.2 :

cd /usr/local/cuda-10.2/bin/
sudo ./cuda-uninstaller

命令行里会提示让你选择卸载哪些,全按 Enter 选上。即选项前面都变成 [X] 而不是 [ ]。
等待卸载结束,你会发现 /usr/local/ 里 cuda 文件夹没了,cuda-10.2 文件夹还在但是是空的,可以直接删了。

卸载CUDA 10.0 :

cd /usr/local/cuda-10.0/bin/
sudo ./uninstall_cuda_10.0.pl

2、卸载 Nvidia 驱动:

sudo /usr/bin/nvidia-uninstall

3、重新装 CUDA 10.0(及对应的 nvidia 410.48驱动)和 cuDNN:

(对应 Tensorflow 1.14.0)
进入CUDA download 界面,选择 legacy releases(旧版本), 找到 CUDA 10.0, 下载 runfile (local)
按照
这篇博客安装即可,把其中 CUDA 10.2文件换成新下载的10.0的文件。注意: export 环境变量那两句也要把 10.2 改成 10.0。cuDNN也找到对应 CUDA 10.0版本的重新装一遍,过程一样。

4、最后再测试 tensorflow 是否能使用 GPU:

python
>>> import tensorflow as tf
>>> tf.test.is_gpu_available()

最后返回: True

重装完毕。

重新跑我之前的训练程序,速度快了60倍,GPU占用率也变成 68%了,搞定。

[2022.2.11更新]
若仍然返回False, 另一种检查办法: 跑CUDNN的测试程序

cd ~/cudnn_samples_v7//mnistCUDNN/
make clean && make
./mnistCUDNN

若出现报错 libcudart.so.10.0: cannot open shared object file: No such file, 解决方法:
运行:

sudo ldconfig /usr/local/cuda-10.0/lib64

即可解决.

[2020.10.2更新]
若重启电脑后Ubuntu出现循环登录,则:
第一步,卸载NVIDIA驱动:
ctrl + alt + F1进入命令行:

sudo apt-get remove --purge nvidia-*
sudo apt-get autoremove
sudo nvidia-uninstall

一路选OK.卸载完 sudo reboot 重启可进入系统。
第二步,重装CUDA和相应NVIDIA驱动:
这篇博客
ctrl + alt + F1进入命令行,sudo service lightdm stop,进入cuda runfile在的文件夹,sudo sh ./cuda- ...... .run 安装CUDA,一路按默认的选就行。装完运行 sudo service lightdm start

Tensorflow 未使用GPU的问题系统:Ubuntu 16.04之前按照这篇博客成功装好了 CUDA 10.2、Nvidia驱动及 cuDNN 7.6.5 ,跑mnist测试通过了。然而,跑一个基于tensorflow 1.14.0的深度学习代码时,发现训练速度特别慢。这是不应该的,因为我在运行程序时指定了使用GPU( Nvidia GTX 2080Ti)。事实证明如果直接跑别人代码而不仔细看每一个细节处理的话,就会踩这种「以为设置的参数一定是真的」的坑。。。仔细看了下终端的log,发现了几句 os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ['CUDA_VISIBLE_DEVICES'] = "0" a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a... ngpu= 1 # Decide which device we want to run on device = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu") print(device) print(torch.c.
博主花了两天时间,总算在win10上完成了cuda环境的部署,期间踩了很多坑。 现有的教程大都是通过anaconda部署的,但我是在jupyter上跑的,这一块似乎没什么指导性的教程,所以我决定写一个,顺带将自己遇到的坑ye'ti'yi'ti 首先说明一下我的本地环境: tensorflow==2.4.1 python==3.6.2 jupyter==1.9.0 官方文档链接:https://www.tensorflow.org/install/gpu#windows_setup 1.1 进入对应的环境 打开终端、进入对应的虚拟环境,我的是tensorflow1140cuda100 conda activate tensorflow1140cuda100 1.2 打开Python python 1.3 查看tensorflow版本、安装路径 import tensorflow as tf tf.__version__ # 此命令为获取安装的tensorflow版本 print(tf.__version__) # 输出版本
# 目前tensorflow2.2官方标配cuda10.1,也是官方在github给出方案,修改cuda软链接即可,非常简单。 # 前提是你已经正确安装cuda10.2,检查nvidia-smi nvcc -V # 干正事(重点就这一步): cd /usr/local/cuda-10.2/targets/x86_64-linux/lib/ ln -s libcudart.so.10.2.89 libcudart.so.10.1 # 检查是否可用: source /etc/profile
TensorFlow 为 Google 开源的新一代深度学习框架,与之前使用的Caffe和Torch基于层的设计理念有所不同,是基于张量流图的设计思路,这也是今后深度学习框架的一大发展趋势。本文默认您的linux计算机已经安装有Python下面介绍一下安装与安装遇到的问题及解决方法。将包含下列内容: CUDA-7.5 与 cuDNN v.5 安装 pip安装 TensorFlow 安装 安装成功测试 问题和解决方案
检查操作系统:确保您使用的操作系统是支持您的 GPU 的。 检查驱动程序版本:使用 GPU 制造商的官方网站检查最新的驱动程序版本,确保您已经安装了最新版本。 检查设备管理器:在设备管理器中查看 GPU 设备,确保已经正确安装驱动程序并且没有任何错误标记。 执行 GPU 测试:使用 GPU 厂商提供的测试工具或第三方测试工具...
为什么CUDA装好了,Tensorflow-GPU不能用? 当我们把CUDAcudnntensorflow-GPU都装好,但在tensorflow GPU测试tf.test.is_gpu_avaiable()却始终返回false,怎么办? import tensorflow as tf tf.test.is_gpu_available() FALSE 可能的原因如下: ———————————————————————————————— 1,CUDAcudnnTensorflow、python版本并不
(已解决)报错:qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found 去往火星: centos7下这个命令没用啊 (已解决)Github pages 报错404无法打开 あき的坐标系: 这个是不是只能弄一个项目,要是多个项目怎么办 (已解决)报错:qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found weixin_46316023: 有用!谢谢~ (已解决)Ubuntu 16.04 循环登录问题原因及对策总结(2021.3更新) we-ai: boot repair这个方法为什么要启动盘啊?我可以从tty纯命令行界面操作么?另外这个方法会对系统原来的东西有影响吗? (已解决)LaTeX报错:! Package inputenc Error: inputenc is not designed for xetex or luatex. m0_59376968: 对于使用texstudio的用户要如何操作啊 (已解决)报错 ValueError: Tensor conversion requested dtype float32 for Tensor with dtype resource (已解决)报错:qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found