【caffe跑试验遇到错误:Check failed: error == cudaSuccess (2 vs. 0) out of memory】

刚开始跑caffe试验,老是遇见各种错误。今天又遇见:

[java]  view plain  copy
  1. <span style="font-size:18px;color:#ff0000;">I1214 09:32:19.428040 11425 net.cpp:748] Ignoring source layer loss  
  2. F1214 09:32:19.515925 11425 syncedmem.cpp:64] Check failed: error == cudaSuccess (2 vs. 0)  out of memory  
  3. *** Check failure stack trace: ***  
  4.     @     0x7fc5fe034b5d  google::LogMessage::Fail()  
  5.     @     0x7fc5fe038b77  google::LogMessage::SendToLog()  
  6.     @     0x7fc5fe0369f9  google::LogMessage::Flush()  
  7.     @     0x7fc5fe036cfd  google::LogMessageFatal::~LogMessageFatal()  
  8.     @     0x7fc603ee8f12  caffe::SyncedMemory::to_gpu()  
  9.     @     0x7fc603ee86c9  caffe::SyncedMemory::gpu_data()  
  10.     @     0x7fc603e9e14d  caffe::Blob<>::gpu_data()  
  11.     @     0x7fc603fb7385  caffe::InnerProductLayer<>::Forward_gpu()  
  12.     @     0x7fc603e77382  caffe::Net<>::ForwardFromTo()  
  13.     @     0x7fc603e775bf  caffe::Net<>::ForwardPrefilled()  
  14.     @     0x7fc603e70b22  caffe::Solver<>::Test()  
  15.     @     0x7fc603e716ad  caffe::Solver<>::TestAll()  
  16.     @     0x7fc603e7181c  caffe::Solver<>::Step()  
  17.     @     0x7fc603e72540  caffe::Solver<>::Solve()  
  18.     @           0x40a366  train()  
  19.     @           0x40746e  main  
  20.     @       0x3cbb41ed1d  (unknown)  
  21.     @           0x406a39  (unknown)</span>  
这明显是内存不够,但是我们服务器足够大,有20G的内存,用top命令查看内存的使用情况,空间也很大,开始我以为我的数据太大了,可是还不到2G:

I1214 10:00:57.934880 11810 net.cpp:165] Memory required for data: 1137538000.

最后问师兄,大概是使用查看的内存命令不对,他们使用的是:

 nvidia-smi


发现有top命令无法查看到的进程,将这些进程杀死掉,释放内存:

杀死进程命令:kill -9 PID

最后重新运行试验,就可以开始跑了,最后我终于知道为什么了:

top是监视CPU的,而 nvidia-smi才是监视GPU的。



nvidia-smi是用来查看GPU使用情况的。我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下。

这里写图片描述

这是服务器上特斯拉K80的信息。 
上面的表格中: 
第一栏的Fan:N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能打不到显示的转速。有的设备不会返回转速,因为它不依赖风扇冷却而是通过其他外设保持低温(比如我们实验室的服务器是常年放在空调房间里的)。 
第二栏的Temp:是温度,单位摄氏度。 
第三栏的Perf:是性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能。 
第四栏下方的Pwr:是能耗,上方的Persistence-M:是持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态。 
第五栏的Bus-Id是涉及GPU总线的东西,domain:bus:device.function 
第六栏的Disp.A是Display Active,表示GPU的显示是否初始化。 
第五第六栏下方的Memory Usage是显存使用率。 
第七栏是浮动的GPU利用率。 
第八栏上方是关于ECC的东西。 
第八栏下方Compute M是计算模式。 
下面一张表示每个进程占用的显存使用率。

显存占用和GPU占用是两个不一样的东西,显卡是由GPU和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系。我跑caffe代码的时候显存占得少,GPU占得多,师弟跑TensorFlow代码的时候,显存占得多,GPU占得少。




  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值