不少同学抱怨,在集群的GPU节点上运行caffe程序时,经常出现"Out of Memory"的情况。实际上,如果我们在提交caffe程序到某个GPU节点的同时,指定该节点某个比较空闲的gpu id,便可以避免"Out of Memory"的情况。步骤如下:

1. 在提交任务前,制作一个带有“nvidia-smi”命令的run_gpu.sh文件

#!/bin/bash
#$ -V
#$ -cwd
#$ -j y
#$ -S /bin/bash nvidia-smi

2. 提交run_gpu.sh文件到某个GPU节点(以g0502为例)

qsub -l h=g0502 run_gpu.sh

3. 查看run_gpu.sh任务的运行结果

可以看到,g0502节点有四块gpu,id分别为0, 1, 2, 3。其中0,1和3的内存几乎都已经占满了,只有2稍微空闲一些。所以,若在提交caffe程序到g0502节点上,需要指定运行caffe程序的gpu id为2。否则,提交上去的caffe程序将默认gpu id为0,导致很有可能出现"Out of Memory"的情况。

4. 在提交caffe程序的.sh文件(如caffe_train.sh)中指定gpu id。

 #!/bin/bash
#$ -V
#$ -cwd
#$ -j y
#$ -S /bin/bash ./build/tools/caffe train -gpu -solver models/segnet/segnet_building_solver.prototxt

在.sh文件的第7行,"-gpu 2"的含义为显式指定gpu id为2。

5. 提交caffe_train.sh文件到g0502节点。

qsub -l h=g0502 caffe_train.sh

6. 查看caffe_train.sh.o文件

可以看到,caffe_train.sh文件指定了g0502节点中gpu id为2的gpu来运行caffe程序。这样,我们便可以在很大程度上避免在集群上运行的caffe程序出现"Out of Memory"的情况。

7. 用matcaffe测试训练好的caffemodel时指定gpu id

与训练时一样,用matcaffe测试训练好的caffemodel时,我们也可以显式指定gpu id,以避免出现“Out of Memory"的情况。与在caffe_train.sh文件中指定gpu id不一样,测试时,我们需要在.m文件中显式指定gpu id。而不是在.sh文件中指定。

caffe.set_mode_gpu();
caffe.set_device(2); % set gpu id net = caffe.Net(model, weights,'test');

第2行,caffe.set_device(2),显式指定gpu id为2。

8. 用pycaffe测试训练好的caffemodel时指定gpu id

与matcaffe同理,我们需要在.py文件中显式指定gpu id。

 import caffe
#.....
if __name__ == '__main__':
caffe.set_mode_gpu()
# set gpu_id
caffe.set_device(2);

第6行,caffe.set_device(2),显式指定gpu id为2。

至此,我们便可以通过指定集群某个节点中较为空闲的gpu id来避免出现“Out of Memory"的情况~^_^~

在集群上运行caffe程序时如何避免Out of Memory的更多相关文章

  1. Spark优化之二:集群上运行jar程序,状态一直Accepted且不停止不报错

    如果运行Spark集群时状态一直为Accepted且不停止不报错,比如像下面这样的情况: 15/06/14 11:33:33 INFO yarn.Client: Application report ...

  2. Spark学习之在集群上运行Spark

    一.简介 Spark 的一大好处就是可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力.好在编写用于在集群上并行执行的 Spark 应用所使用的 API 跟本地单机模式下的完全一样.也就是说 ...

  3. MapReduce编程入门实例之WordCount:分别在Eclipse和Hadoop集群上运行

    上一篇博文如何在Eclipse下搭建Hadoop开发环境,今天给大家介绍一下如何分别分别在Eclipse和Hadoop集群上运行我们的MapReduce程序! 1. 在Eclipse环境下运行MapR ...

  4. IntelliJ IDEA编写的spark程序在远程spark集群上运行

    准备工作 需要有三台主机,其中一台主机充当master,另外两台主机分别为slave01,slave02,并且要求三台主机处于同一个局域网下 通过命令:ifconfig 可以查看主机的IP地址,如下图 ...

  5. 06、部署Spark程序到集群上运行

    06.部署Spark程序到集群上运行 6.1 修改程序代码 修改文件加载路径 在spark集群上执行程序时,如果加载文件需要确保路径是所有节点能否访问到的路径,因此通常是hdfs路径地址.所以需要修改 ...

  6. 在local模式下的spark程序打包到集群上运行

    一.前期准备 前期的环境准备,在Linux系统下要有Hadoop系统,spark伪分布式或者分布式,具体的教程可以查阅我的这两篇博客: Hadoop2.0伪分布式平台环境搭建 Spark2.4.0伪分 ...

  7. [Spark Core] 在 Spark 集群上运行程序

    0. 说明 将 IDEA 下的项目导出为 Jar 包,部署到 Spark 集群上运行. 1. 打包程序 1.0 前提 搭建好 Spark 集群,完成代码的编写. 1.1 修改代码 [添加内容,判断参数 ...

  8. 将java开发的wordcount程序提交到spark集群上运行

    今天来分享下将java开发的wordcount程序提交到spark集群上运行的步骤. 第一个步骤之前,先上传文本文件,spark.txt,然用命令hadoop fs -put spark.txt /s ...

  9. 从认证到调度,K8s 集群上运行的小程序到底经历了什么?

    导读:不知道大家有没有意识到一个现实:大部分时候,我们已经不像以前一样,通过命令行,或者可视窗口来使用一个系统了. 前言 现在我们上微博.或者网购,操作的其实不是眼前这台设备,而是一个又一个集群.通常 ...

随机推荐

  1. reverseajax(comet) socket 杂记

    http://blog.it985.com/7797.html http://www.ibm.com/developerworks/web/library/wa-reverseajax1/index. ...

  2. Ubuntu install g++

    We can use two ways to  install g++ on Ubuntu. 1.  a. sudo apt-get install make gcc g++.      b. sud ...

  3. solar system by HTML5

    solar system by HTML5 星际穿越感觉很炫酷啊,网易貌似做了个专题在朋友圈挺火的.用canvas模拟太阳系,嗯,不错昂! 代码及效果 See the Pen GgpRjN by Na ...

  4. winform右下角弹窗

    网页是否经常在电脑右下角弹窗显示消息?其实Winform也是可以实现的.下面介绍两种方法. 第一步:设计窗体 第二步:实现代码 第一种方法 引用user32 声明常量 窗体Load事件 窗体FormC ...

  5. 真核转录组(denovo/resequencing)及案例分析

    参考: 转录组文章的常规套路 文章解读:<Science>小麦转录组研究文章 转录组数据饱和度评估方法 Paper这个东西是多么的诱人,可以毕业,可以评职称,可以拿绩效. 现在的文章都是有 ...

  6. Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享

    架构师小组交流会:每期选一个时下最热门的技术话题进行实践经验分享. 第一期主题:容器实践.Docker 作为当前最具颠覆性的开源技术之一,其轻量虚拟化.可移植性是CI/CD,DevOps,微服务的重要 ...

  7. 【腾讯云的1001种玩法】在腾讯云上创建您的SQL Cluster(5)

    版权声明:本文由李斯达 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/97264001482830465 来源:腾云阁 h ...

  8. Sql Server中实现Mysql中的group_concat函数效果

    ), GuestName) , , '') as CustomerName FROM orderitem oi 以上涉及的两个表是OrderItem和Guest,以属性OrderSN和ItemId连接 ...

  9. RedHat下Bugzilla的安装和配置

    Bugzilla 是一个开源的缺陷跟踪系统(Bug-Tracking System). OS:RedHat Linux 软件类型:开源 架构:B/S server端模块开发语言:perl(c/c++) ...

  10. 【UE4+Vive】学习笔记1

    16.9.10为了做房产项目,这两天开始学习Unreal Engine 4.之前一直用unity,但是视觉效果一直不满意,听说虚幻4的效果更好,就来试一试水. 1.安装UE4 参考资料一: http: ...