【超级小白代码路】错误:InternalError: Blas GEMM launch failed : a.shape=

我这里的错误是在某个时间点GPU利用率 ,显存一下子上去计算矩阵,但是因为gpu算力不够,导致上去一下就崩掉了,生成的程序错误如下:

    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InternalError: Blas GEMM launch failed : a.shape=(49820, 3), b.shape=(3, 30), m=49820, n=30, k=3
	 [[node MatMul_6 (defined at python\anaconda3\envs\dev37\lib\site-packages\tensorflow_core\python\framework\ops.py:1748) ]]

首先,在cmd中输入下面这行代码查看GPU 利用率、GPU显存利用率、温度、GPU显存具体使用大小。每0.5s记录一次

nvidia-smi --query-gpu=timestamp,index,name,utilization.gpu,utilization.memory,temperature.gpu,memory.used --format=csv -lms 500 > D:\zhangwei\shixian\PINN+FWI\rasht-behesht_etal_2021\log.csv

 在自己的代码里查看生成的记录日志

解决这个错误,首先我纠结我使用的gpu是集成显卡还是独立显卡,这里赋个链接是集成显卡和独立显卡的区别

【扫盲】关于GPU的那些事_gpu是独显还是集显-CSDN博客

后来在一番验证后发现虽然任务管理器显示有两个显卡,且gpu0对应集显,gpu1对应独显,但是在代码运行时显示的gpu0对应的仍然是独显,可以在代码中输入显示使用设备信息查证,例如我的代码运行会显示

2024-09-04 11:50:46.609184: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties: 
name: NVIDIA GeForce RTX 3060 Laptop GPU major: 8 minor: 6 memoryClockRate(GHz): 1.425

说明我的代码是在独显上运行的。

其次,我考虑了batch-size大小的原因,我的batch-size大小为40000,代码输入为40000*2000,我调小batch-size为5000*500,发现还是计算不出来,我觉得应该不是这个的原因。但是cpu加载数据的时间明显变短,说明改变size是对加载数据有调节的。

raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InternalError: Blas GEMM launch failed : a.shape=(11820, 3), b.shape=(3, 30), m=11820, n=30, k=3
	 [[node MatMul_6 (defined at python\anaconda3\envs\dev37\lib\site-packages\tensorflow_core\python\framework\ops.py:1748) ]]

然后,考虑tensorflow版本兼容问题,我用的是tensorflow=1.15对应cuda=10.0、cudnn=7.4版本都是对的,兼容问题排除。

然后,考虑是否因为驱动不是最新版导致,更新驱动,我的驱动是

我到官网去手动搜索驱动,看到最新的驱动是

支持我的显卡,所以下载安装,安装步骤参考:

【Windows】安装NVIDIA驱动 / 更新驱动_windows 更新nvidia驱动-CSDN博客

直至安装完毕,重启电脑,再在设备管理器中查看驱动版本,发现已经更新到安装版本

更新驱动之后还是出现错误,且还是会出现在某一时间点显存和利用率都爆了的情况。

至此,应该只有两种可能要么是代码中gpu并行没有处理好要么是模型太大了,因为batchsize已经减小且输入的数据量也不算太多。

代码中gpu并行没有处理好

针对tensorflow1.x,动态配置gpu显存,参考这篇文章:

TensorFlow1.x/2.x配置动态显存方法_tensorflow2 动态分配显存-CSDN博客

keras 或 tensorflow 调用GPU报错:Blas GEMM launch failed_internalerror (see above for traceback): blas xgem-CSDN博客

速度确实提升很多,但是问题还是没有解决,那么就是只有模型太大的可能了,这个问题使用云服解决。

更新:云服上我已经使用了gpu显存48g仍然显示该错误,我的模型感觉用不了那么大的显存,等有时间试一下显存80g的,我看到有人说将tensorflow1.x升级到2.x也可能解决该问题,因为1.x很多功能没开发出来,对于现在新的gpu有种力不从心的感觉,下边更新如何从tensorflow1.x更新到2.x。

参考另一篇文章:

将 TensorFlow 1.X 的代码转换为 TensorFlow 2.0_tf.contrib.tpu.runconfig在tf2-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值