不少同学抱怨,在集群的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. JavaACOFramework的各个类介绍(part1 : Ant类)

    public abstract class Ant extends Observable implements Runnable { public static int ANT_ID = 1; // ...

  2. 安装composer

    按照composer官网的指导,运行下列命令:curl -sS https://getcomposer.org/installer | php长时间无反应.手动安装1.下载installer# wge ...

  3. [SAP ABAP开发技术总结]ABAP调优——代码优化

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. maven多模块下使用JUnit进行单元测试

    1.选中需要进行测试的service类,右键->new->other->JUnit Test Case,如下图: 2.编写测试代码如下: AppServiceTest.java im ...

  5. hdu 5506 GT and set dfs+bitset优化

    GT and set Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Probl ...

  6. java归并排序,单线程vs多线程

    一.什么是归并排序 归并排序又称合并排序,它是成功应用分治技术的一个完美例子.对于一个需要排序的数组A[0..n-1],归并排序把它一分为二:A[0..n/2-1]和A[n/2..n-1],并对每个子 ...

  7. java面向对象的语言

    对象:真实存在唯一的事物. 类: 实际就是对某种类型事物的共性属性与行为的抽取. 抽象的概念.... 车 我们从小的时候就不断的接触很多的对象,我们的大脑就会把 这些具备相同属性与行为的事物进行分类. ...

  8. AWT编程学习01(未完成)

    本文资料来源:<java疯狂讲义> 作者:李刚 终于要学习这一部分了~~虽然很多人(明明是绝大多数的人)说学这个没有用...而且有点过时了...但我觉得很有意思啊...感兴趣就学~~反正多 ...

  9. easyui layout 布局title

    <script> function aclick(){ $("a").click(function () { var name=this.innerHTML; $($( ...

  10. sublime 3 安装go环境

    安装go环境是在go已经安装的情况下, 1 首先安装 Package Control ctrl + · 打开sublime 命令行模式 复制粘贴以下代码 import urllib.request,o ...