centos tensorflow无法使用GPU问题

4 篇文章 1 订阅

GPU驱动的安装和相关cuda安装参见我的前两篇文章:

GPU安装

centos 7 环境下GPU环境搭建+安装tensorflow

在执行nvidia-smi的时候没有问题,显示成功并且很正常:

nvidia-smi
显示如下:
Thu Mar 13 09:45:13 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26       Driver Version: 430.26       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 208...  Off  | 00000000:D8:00.0 Off |                  N/A |
| 34%   42C    P0     1W / 250W |      0MiB / 11019MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

但是在python命令下执行,打印出来的是空值:

import tensorflow as tf
gpu_device_name = tf.test.gpu_device_name()
print(gpu_device_name)

再执行一下命令进行验证,只是打印输出了CPU相关信息:

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

然后看了一下log显示报错是failed call to cuInit: CUDA_ERROR_UNKNOWN: unknown error,一直以为是cuda版本和驱动的问题,于是安装了好多次不同版本的cuda,但是问题还是没有解决,我看stackflow上很多人都说是reboot一下,但是并没有什么效果

于是我执行:

sudo modprobe nvidia

显示报错no module nvidia....

查看相关驱动lsmod | grep “nvidia”

nvidia_drm             43690  0
nvidia_modeset       1112541  1 nvidia_drm
nvidia              18794229  1 nvidia_modeset

我推测可能是驱动的问题,于是找到nvidia驱动位置重新加载,如果insmod nvidia.ko失败就先rmmod然后在重新insmod。但在rmmod之前需要把依赖的模块都先rmmod之后才行,操作如下,因为nvidia驱动和其他启动没有依赖关系,所以不会对其他的造成影响,操作相对安全:

cd /usr/lib/modules/3.10.0-1062.4.1.el7.x86_64/extra文件中
    0)xz -d -k nvidia-uvm.ko.xz
    1)rmmod nvidia_drm.ko
    2)rmmod nvidia_modeset.ko
    3)rmmod nvidia_uvm.ko
    4)rmmod nvidia.ko
    5)insmod nvidia.ko
    6)insmod nvidia-uvm.ko
    7)xz -d -k nvidia-modeset.ko.xz
    8)insmod nvidia-modeset.ko
    9)insmod nvidia-drm.ko

然后重新安装cuda,cudnn即可:

cuda安装:
    1)sudo sh cuda_10.0.130_410.48_linux
    2)accept->n->y->y->y(一定记住不能装driver,在driver那项里选no)
    3)vim /etc/profile
    4)source /etc/profile
    5)echo $PATH

cudnn安装:
    1)使用版本:cudnn-10.0-linux-x64-v7.6.5.32.tgz
    2)tar -zxvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
    3)cd cuda/
    4)sudo cp include/cudnn.h /usr/local/cuda/include
    5)sudo cp lib64/libcudnn.* /usr/local/cuda/lib64
    6)sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h /usr/local/cuda-10.0/lib64/libcudnn*

个人感觉网上相关reboot操作只是因为在当前状态相关模块不小心down掉了,于是重启以达到相关模块重新加载的目的。如果无法自动加载就需要相关的手动自己加载就可以。

安装完成之后,执行下面命令,打印出GPU相关信息则表示成功。

import tensorflow as tf
gpu_device_name = tf.test.gpu_device_name()
print(gpu_device_name)

同时要保证tensorflow、cuda、cudnn相关的版本一致。这个很重要。可以在官网上查到。我的版本如下。

tensorflow:tensorflow_gpu-1.15.0
cuda:10.0
cudnn:7.6

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值