CentOS 安装caffe步骤(非root、仅CPU、OpenBLAS、Intel MKL)

来源:互联网 发布:淘宝q币劵 lol半价 编辑:程序博客网 时间:2024/05/23 00:05

安装过程出现了各种问题,在网上找了各种的解决方案,好在最后成功了,以下是我的安装情况:

一、安装依赖的库

1、protobuf
下载:https://github.com/google/protobuf/releases/download/v3.4.0/protobuf-cpp-3.4.0.zip
./configure --prefix=指定安装目录
make(make -j24 加速)
make check
make install
可能遇到的问题:usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /data03/WaterMark/protobuf-3.4.0/src/.libs/libprotobuf.so.14)
系统使用的c++版本过低,使用strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX 可以查看当前支持的版本
解决办法:
(1)系统升级libstdc++.so(需root权限)
(2)下载高版本的c++,然后设置LD_LIBRARY_PATH,再执行上面的步骤

2、leveldb
下载:https://github.com/google/leveldb/archive/v1.20.zip
安装:make
生成的动态库在out-shared目录

3、snappy
下载:https://github.com/google/snappy/releases/download/1.1.4/snappy-1.1.4.tar.gz
./configure --prefix=指定安装目录
make
make install

4、opencv
机器上已有动态库,没安装,直接拷贝了include和libopencv*

5、boost
下载:https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gz
cd boost_1_64_0
./bootstrap.sh –with-libraries=all --prefix=指定安装目录 –with-toolset==gcc-4.4(此参数可以指定使用的gcc版本)
./b2
./b2 install


6、hdf5
下载:https://www.hdfgroup.org/downloads/hdf5/source-code/ 下载的gzip类型
./configure --prefix=指定安装目录
make(时间长)
make check(时间长)
make install
make check-install

7、glog
wget --no-check-certificate https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/google-glog/glog-0.3.3.tar.gz
./configure --prefix=指定安装目录
make
make install

8、gflags
wget --no-check-certificate https://github.com/schuhschuh/gflags/archive/master.zip
mkdir build && cd build
export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
make && make install
安装完的include和lib在build/
遇到的问题:安装包里没有configue,需要安装cmake
cmake下载:https://cmake.org/files/v3.9/cmake-3.9.1.tar.gz

9、lmdb
下载页面:https://github.com/LMDB/lmdb
cd lmdb/libraries/liblmdb
make && make install
安装完的include和lib在当前目录下

10、atlas
可用于安装的选项:(ATLAS、Intel MKL、OpenBLAS,速度:Intel MKL (70+毫秒) > OpenBLAS (1秒))
(1)由于安装ATLAS的时候报错,选择安装OpenBLAS:
下载:http://github.com/xianyi/OpenBLAS/archive/v0.2.20.tar.gz
make NO_LAPACK=1(不包含LAPACK)
make PREFIX=指定安装目录 install
遇到的问题:
make的时候如果不设置“NO_LAPACK=1”,会报错:cannot find -lgfortran
(2)由于OpenBLAS速度慢,换用Intel MKL(针对cpu优化了,速度快)
下载页面:https://software.intel.com/en-us/mkl
需要先注册(免费),然后得到一个授权码(个人信息里可以找到Serial Number)
我下载的版本是:l_mkl_2017.3.196.tgz
解压缩之后执行里面的install.sh,按照提示进行安装,里面有选项可以选择安装目录,授权的时候输入上面的Serial Number
如果中途退出的话,服务器里会残留安装信息,在清理之前无法重新安装,怎么清理、保留多久均不知道
此版本要求centos版本6以上
安装完成之后需要找到mklvars.sh,并执行source mklvars.sh intel64(此步骤怀疑可省略,待验证)
如果非root权限,需要使用的文件为:
安装目录/mkl/bin
安装目录/mkl/include
安装目录/mkl/lib/intel64
安装目录/compilers_and_libraries/linux/lib/intel64

11、cuda
用于gpu,此处不安装

二、安装caffe
1、下载:https://github.com/BVLC/caffe/archive/master.zip

2、修改配置文件:
cp Makefile.config.example Makefile.config
如果没有GPU,取消注释:CPU_ONLY := 1
如果安装了OpenBLAS,将BLAS := atlas改成 BLAS := open
(如果安装了Intel MKL,将BLAS := atlas改成 BLAS := mkl)
设置BLAS_INCLUDE和BLAS_LIB
如果使用了opencv3版本,注释掉OPENCV_VERSION := 3
由于不需要使用python,注释掉PYTHON_INCLUDE目录

make all -j24(24表示计算机内核数)
make test
make runtest
可能出现的问题:
(1)./include/caffe/util/signal_handler.h:4:34: 致命错误:caffe/proto/caffe.pb.h:没有那个文件或目录
解决方案:
# 先进入caffe源码的根目录,然后执行:
protoc src/caffe/proto/caffe.proto --cpp_out=.
mkdir include/caffe/proto
mv src/caffe/proto/caffe.pb.h include/caffe/proto
(2)依赖库未安装在默认目录的情况,需要在makefile里指定路径,如增加:
CUSTOM_INCLUDE := 指定目录/include/
CUSTOM_LIB := 指定目录/lib/
LIBRARY_DIRS += $(CUSTOM_LIB)
INCLUDE_DIRS += $(CUSTOM_INCLUDE)

(3)系统默认使用的c++版本是:CXX ?= /usr/bin/g++,如果该版本过低,在makefile里改成指定版本路径的

(4)make runtest的时候报错:
symbol lookup error: libmkl_intel_thread.so: undefined symbol: omp_get_num_procs
原因:安装完Intel MKL之后,没有把安装目录/compilers_and_libraries/linux/lib/intel64里的动态库拷过来


三、将动态库挪到其他机器的时候可能出现gcc版本太低的问题
1、安装gcc
(1)下载4.8.0:wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.0/gcc-4.8.0.tar.bz2
tar -jxvf  gcc-4.8.0.tar.bz2
(2)下载编译所需的依赖项
cd gcc-4.8.0 
./contrib/download_prerequisites 
cd ..
(3)建立编译输出目录
mkdir build-gcc-4.8.0
(4)进入此目录,执行以下命令,生成makefile文件
cd  build-gcc-4.8.0
../gcc-4.8.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --prefix=指定安装目录
make -j24

make install


另外,以上安装过程由于非root权限,可能需要将安装库的相关目录加入到环境变量:

PATH、CPLUS_INCLUDE_PAT、C_INCLUDE_PATH、LD_LIBRARY_PATH、LIBRARY_PATH

比如高版本的gcc,需要设置PATH,设置完成之后调用gcc -v,g++ -v 进行验证


原创粉丝点击