CentOS6.8 + cuda + caffe安装记录 (之一 cpu下caffe安装)

来源:互联网 发布:卖家淘宝客怎么查询 编辑:程序博客网 时间:2024/05/16 23:40

本次是在服务器上安装的caffe,并在GPU模式下编译运行的。如果希望知道Ubuntu下的安装经验,并只想在CPU下运行,请移步http://blog.csdn.net/u011636440/article/details/52438666

我的安装环境,在远程服务器安装的

  • centos6.8
  • gcc 4.4.7
  • python 2.6

因为我直接在root权限下执行的,所有的命令都是管理员权限。各位如果在用户权限下执行,命令前请加sudo。

为了比较容易判断caffe编译不过时是哪部分的问题,本次安装分两步进行:先将CPU模式下的所有依赖装好;然后再装GPU和cuda。

注:apt-get是Ubuntu版本下的命令,CentOS默认软件安装命令为yum,可以给CentOS安装apt-get包,但是不推荐这么做。

1. 查看系统版本

cat /etc/issueuname –a

参考http://www.ha97.com/2987.html

2. 看官方安装指导
官方安装文档: http://caffe.berkeleyvision.org/install_yum.html
还有一个不错的教程参考: http://coldmooon.github.io/2015/08/03/caffe_install/
安装时几个用的上的参考: http://blog.csdn.net/chieryu/article/details/50218763
http://my.oschina.net/speedinghzl/blog/464142
http://www.ttlsa.com/linux/install-caffe-on-centos6-5/

3. 安装依赖库

 yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel

安装glog

下载安装包

wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz

但是连不上Google的下载不了。这里给两种办法解决:

  1. 找个能连Google的机器下载,把本地文件(glog安装包)推送到远程服务器
  2. 修改机器的host文件,这里推荐一个https://laod.org/hosts/2016-google-hosts.html

    服务器上有安装包以后

tar zxvf glog-0.3.3.tar.gzcd glog-0.3.3./configuremake && make install

Tips:本地文件推送到远程的方法
【参考: http://www.it165.net/os/html/201410/9574.html】

yum install lrzszrz

此时会弹出一个windowns的对话框,选择你要上传的文件就可以了,注意文件不能为空文件,也就是大小为0字节的文件,文件为空文件是不行的,会一直处于上传的状态
这里写图片描述


安装cmake
参考http://www.cnblogs.com/mophee/archive/2013/03/19/2969456.html
1、安装gcc等必备程序包(已安装则略过此步)

yum install -y gcc gcc-c++ make automake 

2、安装wget (已安装则略过此步)

yum install -y wget

3、获取CMake源码包

wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz

4、解压CMake源码包

tar -zxvf cmake-2.8.10.2.tar.gz

5、进入目录

cd cmake-2.8.10.2

6、安装

./bootstrapgmakegmake install

安装gflags

wget https://github.com/schuhschuh/gflags/archive/master.zipunzip master.zipcd gflags-mastermkdir build && cd buildexport CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1make && make install

安装lmdb

git clone https://github.com/LMDB/lmdbcd lmdb/libraries/liblmdbmake && make install

执行第一句,出现git: command not found,说明尚未安装。
解决方法为

yum install -y git

基本开发工具安装

yum -y groupinstall "Development Tools"

添加EPEL repositories

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

4. 编译安装python2.7(centOS6上默认python2.6)

【参考http://www.ttlsa.com/linux/install-caffe-on-centos6-5/】

wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz

编译安装python2.7(必须先安装zlib与openssl的包再执行编译)
先安装gcc zlib openssl 等包

tar -xvf Python-2.7.9.tgz -C /usr/srccd /usr/src/Python-2.7.9./configure --enable-sharedmake -j12make altinstall

(altinstall在安装时会区分已存在的版本)(解决libpython2.7.so.1.0办法:vi /etc/ld.so.conf 添加/usr/local/lib,然后ldconfig)
替换系统中的python

ls -l `which python python2 python2.6`rm /usr/bin/pythonln -s -f /usr/local/bin/python2.7 /usr/bin/python

保持yum可用性

vim /usr/bin/yum#!/usr/bin/python 改为 #!/usr/bin/python2.6

但是,这时出现libpython2.7.so.1.0: cannot open shared object file: No such file or directory
可以使用如下方式编译Python以解决这个问题:【参考http://blog.csdn.net/huzhenwei/article/details/7339548】

./configure --enable-shared --prefix=/usr/local/python27make && make installcp /usr/local/python27/lib/libpython2.7.so.1.0 /usr/local/libcd /usr/local/libln -s libpython2.7.so.1.0 libpython2.7.so

使用命令whereis libpython2.7.so.1.0得到如下结果就说明已经成功

libpython2.7.so.1: /usr/local/lib/libpython2.7.so.1.0

如果whereis没有结果,或者还有import错误,可以尝试如下操作:
在/etc/ld.so.conf中加入新行/usr/local/lib,保存后,运行

/sbin/ldconfig/sbin/ldconfig –v

5. 安装其他依赖库

安装boost-devel

用rpm -qa boost 查看CentOS系统中是否已有boost。我的机器虽然有,但是版本太低,所以重新安装:

获取安装包

wget -O boost_1_55_0.tar.bz2 http://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fboost%2Ffiles%2Fboost%2F1.55.0%2F&ts=1385953406&use_mirror=softlayer-ams

解压并安装

tar jxvf  boost_1_55_0.tar.bz2cd boost_1_55_0./bootstrap.sh./b2sudo ./b2 install

安装opencv-devel

yum -y install cmake pkgconfig gtk2-devel python-devel numpy tbb-devel libpng-develwget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.10/opencv-2.4.10.zipunzip opencv-2.4.10.zipcd opencv-2.4.10mkdir buildcd buildcmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_EXAMPLES=ON -DBUILD_NEW_PYTHON_SUPPORT=ON -DINSTALL_PYTHON_EXAMPLES=ONmake -j 2sudo make install

安装pip

curl -O https://bootstrap.pypa.io/get-pip.py # 得到一个get-pip.pypython get-pip.pyInstalling collected packages: pip, setuptools, wheelSuccessfully installed pip-7.1.0 setuptools-18.0.1 wheel-0.24.0

关于pip后来还出了一个问题,因为机器上装了两个版本的python,2.6.6是系统自带的,2.7.9是后来我装的(因为caffe需要python的版本大于2.7),然后我把2.7改成默认的python了。可是

pip –version

得到的结果是pip 8.1.2 from /usr/lib/python2.6/site-packages(python2.6)
也就是说默认的pip还是在Python2.6下的。
我想把pip装到2.7下,要不然的话使用pip安装别的软件(例如,pip install numpy)都是报错说2.6版本不支持啥的。
这里写图片描述

最后一条指令是不对的,因为这么写是卸载一个python包的方式,并不能把pip卸掉。
ptpi.python.org是pip官方网站,可以在上面下一个最新的包安装在2.7下。

这里写图片描述
由此可知机器上对于2.7版本的pip也安装了,只是不是默认的。
解决方法是做了一个硬链接

ln /usr/local/bin/pip2.7 /usr/bin/pip

让每次找pip版本的时候都找到pip2.7

6. 下载caffe,进行测试

当然这时是不能使用GPU的,只是在cpu上跑。先这样跑一次的好处就是如果后边出了错,可以很容易的知道是CPU部分的错还是GPU部分的错。

git clone https://github.com/BVLC/caffecp Makefile.config.example Makefile.configvim Makefile.config把CPU_ONLY = 1那行的#去掉make all

我在安装的过程中果然出现了错误。下面一一说明这些错误是如何解决的。

7. 各种报错及解决办法

error: invalid use of incomplete type ?.onst struct cv::Mat?
原因:opencv版本不够高。参考 http://stackoverflow.com/questions/29109991/issues-compiling-caffe-in-rhel-6-5-with-tesla-k80
解决办法:下载新版的opencv重新装一遍

wget https://github.com/Itseez/opencv/archive/2.4.13.zipmv 2.4.13.zip opencv-2.4.13.zip   #重命名unzip opencv-2.4.13.zipcd opencv-2.4.13mkdir buildcd buildcmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_EXAMPLES=ON -DBUILD_NEW_PYTHON_SUPPORT=ON -DINSTALL_PYTHON_EXAMPLES=ONmake -j 2sudo make install

找不到lcblas
这里写图片描述

找不到lcblas,但是我试图安装这个又安不了,好像是因为服务器的问题。

解决方法:ATLAS的位置 /usr/lib64/atlas — 会报错:lcblas 库找不到,修改Makefile.config最下面的LIBRARY_DIR 后面加上 /usr/lib64/atlas (这个问题是我实验室服务器的问题,正常来说大家不会遇到,或者改环境变量就可以了)


找不到共享库

error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory

【参考https://www.douban.com/note/327349156/】
解决方法:

vim /etc/ld.so.conf.d/opencv.conf在里边写入/usr/local/libldconfig –v

libprotobuf版本问题

这里写图片描述

protobuf的版本太低。错误代码在InitSolverFromProtoString()这个函数里,进到函数里发现调用的是protobuf。 原因是caffe-master使用的protobuf版本是2.6.0及以上,而yum install的protobuf是2.3.0,因此更新protobuf可以解决。【参考:http://blog.csdn.net/chieryu/article/details/50218763】

Tips:
安装的时候使用make安装,用remove是卸不掉的。需要在安装的那个文件夹中运行make uninstall。在安装时可以用命令把文件安装在指定文件夹下(./configure –prefix=/usr),这样的话在卸载的时候rm which protoc【参考http://stackoverflow.com/questions/35896335/how-can-i-uninstall-protobuf-3-0-0】 卸载方法https://www.howtoinstall.co/en/ubuntu/trusty/protobuf-compiler?action=remove

make allmake testmake runtest

都编译通过的时候,便完成了caffe的安装。

2 0
原创粉丝点击