caffe: Data layer prefetch queue empty

探讨在使用GTX1080ti显卡训练GoogLenet网络时,CPU数据读取速度慢于GPU计算速度导致的Datalayerprefetchqueueempty警告,及其对训练速度的影响。

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

本人在配置有GTX 1080ti 显卡的服务器上训练GoogLenet网络时在日志中出现了一句话:Data layer prefetch queue empty
在这里插入图片描述
因为之前训练的时候并没有见到这句话,因此初步认为是一个错误。但是过了一段时间之后,发现程序还在继续运行,只是感觉相对没有出现这句话训练时的速度较慢。

因此就在网上查询问题出现的原因。了解到原因是:CPU数据的读入数据慢于GPU计算(出现在数据层,即读取图像和label时),导致GPU处于空闲,使得GPU的计算速度下降,迭代时间间隔扩大。 因此在观察日志的时候感觉运行速度相对较慢。

分析这个问题要追溯到caffe源码。实际上这句话是在base_data_layer.cpp文件中出现的。
在这里插入图片描述
该部分代码的意思是DataLayer中使用线程读取Batch(image,label)push到队列中,然后pop出来前向传播
也就是进行数据准备,填充到top(即数据层中的top),该处的forward函数不进行计算,只是一个数据准备的过程。

总结:原因就是CPU数据的读入数据慢于GPU计算,这就跟电脑的CPU有关系了,该问题在有的高配置的电脑上并不会出现。
但是即使出现这种问题也不会影响程序的正常运行。

作者:GL3_24
来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值