TensorFlow找不到gpu,pytorch能找到的问题

TensorFlow找不到gpu,pytorch能找到的问题

1. 起因

公司换服务器,需要做代码迁移,需要重新安装cuda cudnn等包,我使用scp命令将安装包复制过来,并且conda环境都是打包过来的,但是在部署模型服务时,TensorFlow提示找不到gpu,使用cpu代替。

2. 测试

检测TensorFlow gpu是否可用代码:

import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
cpus = tf.config.experimental.list_physical_devices(device_type='CPU')
print(gpus, cpus)

输出结果:

在这里插入图片描述

检测pytorch gpu是否可用代码:

import torch

# 检查是否有可用的 GPU
if torch.cuda.is_available():
    # 获取 GPU 设备的数量
    gpu_count = torch.cuda.device_count()
    print(f"Number of available GPUs: {gpu_count}")

    # 获取当前 GPU 的名称
    current_gpu_name = torch.cuda.get_device_name(torch.cuda.current_device())
    print(f"Current GPU: {current_gpu_name}")

    # 获取所有 GPU 的名称
    all_gpu_names = [torch.cuda.get_device_name(i) for i in range(gpu_count)]
    print(f"All GPUs: {all_gpu_names}")
else:
    print("No GPU available.")

在这里插入图片描述

2. 环境列表

python                    3.8.18
tensorflow                2.13.0
pytorch                   2.1.0

cuda  Driver Version: 535.129.03
cuda  release 12.2, V12.2.91 #我本来装的12.2.2版本,找错误过程总逐步重装成了12.2.0

3. 原因探索

pytorch 能找到gpu说明我的cuda安装应该是没有问题的,但是之前的服务器可用,那么这一套环境的兼容性应该也不存在问题,找了各种方法也没用,把tf版本卸载了重装了各个版本仍然不好用,看网上说2.10.0版本的tf怎么怎么样,但是那是基于Windows的,想着破罐子破摔一下,装个2.10的试试,给了我一点不一样的报错信息,有提示,就好办了:

在这里插入图片描述

libcudart.so.11.0
libnvinfer.so.7
libnvinfer_plugin.so.7
libcudart.so.11.0
libcublas.so.11
libcublasLt.so.11
libcufft.so.10
libcusparse.so.11

但是这个原因似乎是因为tf2.10.0版本需要11.x的cuda。好像不相关,这个时候已经开始头皮发麻了。。。。无从下手的感觉。

4. 问题解决

破罐子破摔没用,还是要把碎片捡起来,在stackoverflow上看到了相似的情况,一个哥们也是装12.x的cuda,tf找不到gpu

底下的回复让我看到了光:

https://stackoverflow.com/questions/75614728/cuda-12-tf-nightly-2-12-could-not-find-cuda-drivers-on-your-machine-gpu-will

在这里插入图片描述

修改测试代码:

import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
cpus = tf.config.experimental.list_physical_devices(device_type='CPU')
print(gpus, cpus)
print(tf.sysconfig.get_build_info())

返回结果(此时我的cuda版本是12.0):

[] [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU')]
OrderedDict([('cpu_compiler', '/usr/lib/llvm-16/bin/clang'), ('cuda_compute_capabilities', ['sm_35', 'sm_50', 'sm_60', 'sm_70', 'sm_75', 'compute_80']), ('cuda_version', '11.8'), ('cudnn_version', '8'), ('is_cuda_build', True), ('is_rocm_build', False), ('is_tensorrt_build', True)])

问题:发现即使我装了12.2版本的cuda,但是tf的info信息提示的仍然是11.8,问题应该出在这

然后底下的哥们说另一个选择是安装11.8的cuda,尝试安装11.8cuda 和 对应的cudnn,问题解决了,泪目!!!!!!!困扰我两天了!!!!!!!!!!!!!!!!!!!!!

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值