Caffe安装以及GPU服务器设置并行
本人新手,在学习GPU服务器的使用,欢迎大家一起交流。这篇博客主要讲的是之前安装的CPU版本的caffe后,进行修改为gpu的版本。
目录
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
这次终于没有出错,开始了它该做的事情。
(所以大家做事要耐心。。。)
随便说些
其实我就是个新手,就是搜集了些资料,想方便自己,也方便别人看看,如果有人看得到的话。。。