【机器学习】Tensorflow 2.4.1 + CUDA 11.1.0 + cuDNN 8.1.1 环境配置踩坑一则

本文档介绍了Tensorflow2.4中遇到的两个问题及其解决方案。第一个问题是由于新特性导致的不再创建XLA设备,可以通过设置TF_XLA_FLAGS环境变量解决。第二个问题是找不到cusolver64_10.dll,可以尝试重命名或下载对应dll文件。正确配置后,GPU将能正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一个坑

Not creating XLA devices, tf_xla_enable_xla_devices not set

相关帖子

Github #44683

原因

Tensorflow 2.4版本新特性所致

解决办法

实际上这个问题可以忽略,看看2.4版本的release就一目了然,并不是很多博客说的版本对应问题,回退到老版本治标不治本。
如果需要用XLA,添加TF_XLA_FLAGS=–tf_xla_enable_xla_devices即可解决该warning。

release

默认情况下,不再注册XLA:CPU和XLA:GPU设备。
TF_XLA_FLAGS=--tf_xla_enable_xla_devices
如果确实需要它们,请使用此flag,但是此flag最终将在后续版本中删除。

第二个坑

Could not load dynamic library ‘cusolver64_10.dll’; dlerror: cusolver64_10.dll not found

相关帖子

Github #44159
Overflow

原因

去到CUDA的bin文件夹可以发现并没有cusolver64_10.dll这个文件,但是有cusolver64_11.dll,cusolver64_10.dll按理说应该是对应CUDA 10版本,而11版本对应的是cusolver64_11.dll,估计是一个底层小bug。

解决办法
  • 方法一:重命名 ‘cusolver64_11.dll’ 为 ‘cusolver64_10.dll’!
  • 方法二:下载 cusolver64_10.dll 原文件!

测试代码

  • 测试GPU是否被检测到
import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

1

  • 测试GPU运算是否可用
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
config = tf.compat.v1.ConfigProto(allow_soft_placement=True)

sess = tf.compat.v1.Session(config=config)
with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)
    print(sess.run(c))

2
以上输出正常则配置成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值