Caffe安装以及GPU服务器设置并行

xiaoxiao2021-02-28  91

Caffe安装以及GPU服务器设置并行


本人新手,在学习GPU服务器的使用,欢迎大家一起交流。这篇博客主要讲的是之前安装的CPU版本的caffe后,进行修改为gpu的版本。

目录

Caffe安装以及GPU服务器设置并行 目录 caffe的安装非GPU如果只是在CPU上运行到这里就结束了下面是我自己遇到的一些问题和解决nccl安装重新编译caffe并行计算和调试错误随便说些

caffe的安装(非GPU)

这个很简单,在网上就有很多的安装教程,但我这里也稍微讲下吧。我这里用的是Ubuntu的系统。

首先登陆root账号

下载依赖包: apt-get install git apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler apt-get install –no-install-recommends libboost-all-dev apt-get install libatlas-base-dev apt-get install python-dev apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

下载Caffe源码: git clone https://github.com/bvlc/caffe.git cd caffe/ mv Makefile.config.example Makefile.config

修改Makefile.config: vi Makefile.config 如果电脑上没有gpu,需要把其中的CPU_ONLY打开,就是去掉注释。 下面这个是vi的一些操作指令,本人新手,所以想新手都可能会用到。 http://www.cnblogs.com/88999660/articles/1581524.html

编译Caffe: make -j 对了,本人一开始用的电脑比较旧多线程貌似不支持,编译就用的是 make all

如果只是在CPU上运行,到这里就结束了,下面是我自己遇到的一些问题和解决

nccl安装

有很多教程是在caffe安装之前做这部的,但是我说了,我之前的caffe是已经装好的CPU版的,所以之后想改,就自己找了资料,进行修改了。因为用的是多GPU的服务器,肯定要并行运算啊,不然要那么多GPU干嘛?所以要并行就要安装nccl,不然是不行的。 安装步骤:

git clone https://github.com/NVIDIA/nccl.git cd nccl sudo make install -j4 NCCL 库和文件头将安装在 /usr/local/lib 和 /usr/local/include 中。

重新编译caffe

之前说了,很多教程是在编译caffe之前安装nccl的,为什么呢,因为修改了Makefile.config啊!! 因为要进行并行使用,所以在Makefile.config中要把USE_NCCL=1前面的注释去掉,同样使用vi命令啦。 这样修改保存后,接下来就是重新编译caffe了。 首先,是将之前的clean掉了,输入: make clean 然后,重新编译: make -j

并行计算和调试错误

到这里之后,我就试着使用: ./build/tools/caffe train -solver=examples/mnist/lenet_solver.prototxt -gpu all

进行测试啦,结果果然出错了。。。。。 具体的错误就是: error while loading shared libraries: libnccl.so.1: cannot open shared object file: No such file or directory 说是没有这个文件,我又开始搜啊搜。。。 结果是在一篇博客找到解决方案: 具体的原因说是:但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件。 方法很简单,就是用root账户执行下: ldconfig 这个命令,就好了,对了,第一个是L的小写,不是i的大写哦。 对了,这个博客地址是: http://www.cnblogs.com/Anker/p/3209876.html 有兴趣可以看看的。

我解决好这个问题后又开心的执行上面的: ./build/tools/caffe train -solver=examples/mnist/lenet_solver.prototxt -gpu all 结果就是又出错了啊!!!错误就是下面这个:

Check failed: result == ncclSuccess (1 vs. 0) unhandled cuda error

大概看了一下,意思就是nccl没有成功,我没有再上网乱搜,而是想起来之前看的GPU服务器的介绍,想起来我这台服务器上有9块GPU,但实际上只有8块是真的能使用的,另一块是服务器自己的用来显示什么的一些其他功能的,所以我就想是不是那块的原因,于是我就修改了下命令: ./build/tools/caffe train -solver=examples/mnist/lenet_solver.prototxt -gpu 0,1,2

这次终于没有出错,开始了它该做的事情。 (所以大家做事要耐心。。。)

随便说些

其实我就是个新手,就是搜集了些资料,想方便自己,也方便别人看看,如果有人看得到的话。。。


转载请注明原文地址: https://www.6miu.com/read-41273.html

最新回复(0)