您的位置:首页 > Web前端

[置顶] RedHat6.5+Cuda+caffe非root权限安装依赖包过程详解

2017-03-28 14:13 621 查看
前言:

继上一篇 http://blog.csdn.net/qq_26293147/article/details/67632528在ubuntu14.04下用sudo install安装了大部分caffe的依赖包后,本篇blog记录了在服务器(RedHat6.5系统)下使用非root权限(无yum
install) 下载好所有依赖包的源码进行 configure/make/make install ”三步走“的方法进行caffe的安装使用。

先列出安装caffe所需的依赖包,之后再一一讲解安装。本人安装配置如下:

REDHAT6.5+
gcc4.7.4(如果此后要编译matcaffe则gcc版本不能超过4.7.x) + cmake2.8.12(3.1版本以上编译gflags时有bug)+anaconda2.7.12 +protobuf-2.5.0+Boost_1_56_0+gflags-2.0(2.1版本的编译caffe时有bug)
+glog-0.3.3 +OpenBLAS-0.2.14(也可用默认的atlas或者安装MKL) +hdf5-1.8.9 + OpenCV-2.4.13(2.4.10和11版本有bug,也可用2.4.12或3.x版本) +
lmdb.tgz+ leveldb-1.7.0+snappy-1.1.1 。

一:高版本编译器的安装

1.因为RedHat6.5自带编译器版本较低,故需要自行下载gcc-4.7.4.tar.gz,并依次执行如下语句:

tar zxvf gcc-4.7.4.tar.gz

cd gcc-*

./contrib/download_prerequisites

 

安装gcc需要5个组件,download_prerequisites的任务就是下载这些组件分别是:

cloog-0.18.1  gmp-4.3.2  isl-0.12.2 mpc-0.8.1  mpfr-2.4.2

如果遇到download_prerequisites里面的地址无法访问

推荐自行下载这些组件到目录gcc-4.7.4/,解压。

然后将download_prerequisites里面的wget全部注释掉,再执行 : 

./contrib/download_prerequisites

 

做好上面的准备就可以configure了,建议另建一个目录来存放编译文件,默认安装目录是/usr/local/ 可以使用 --prefix 修改自定义路径。(例如我的根目录为/home/username, 先在该目录下建一个local_install文件夹来放置以后装的这些依赖包) 然后执行如下语句:

mkdir build

cd build

../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib--prefix=/home/yourname/local_install

make –j32

make install

然后在~/.bashrc中配置库文件和头文件路径,如下:

export LD_LIBRARY_PATH=/home/yourname/local_install/lib64/:$LD_LIBRARY_PATH

export C_INCLUDE_PATH=/home/yourname/local_install/include/:$C_INCLUDE_PATH

export CPLUS_INCLUDE_PATH=/home/yourname/local_install/include/:$CPLUS_INCLUDE_PATH

 

最后执行source ~/.bashrc再执行gcc --version查看版本是否为4.7.4即可。

二:python环境的安装

1. 使用pyenv。 pyenv的美好之处在于,他并没有使用将不同的 $PATH 植入不同的 shell 这种高耦合的工作方式,而是简单地在 $PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而架空了后面的系统路径。依次执行如下语句进行安装:

cd ~

git clone git://github.com/yyuu/pyenv.git .pyenv

echo ‘export PYENV_ROOT=”$HOME/.pyenv”’>>~/.bash_profile

echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”’>>~/.bash_profile

echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

source ~/.bash_profile

 

执行 pyenv versions可检测到所有python版本,处于激活状态的版本前以*标示

使用 pyenv install -v 2.7.3 会安装想要的版本到 $PYENV_ROOT/versions 路径下,

同理可使用pyenv uninstall 2.7.3 来卸载,并且以后每次增删了 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次 pyenv rehash。

设置全局的python版本: pyenv global 3.4.0

设置面向程序的本地版本(优先级比global高):pyenv local2.7.3

设置面向shell的python版本(优先级最高): pyenv shell pypy-2.2.1

通过 pyenvshell --unset 可取消当前shell设定

 

2. 安装anaconda2.7.12(推荐)

anaconda中集成了许多python开发环境所需的模块和包,便于之后编译pycaffe.

上anaconda官网下载 Anaconda2-4.2.0-Linux-x86_64.sh后执行:

bash ./anaconda2-4.2.0-Linux-x86_64.sh

之后按命令行提示一路回车,其中是否写入路径需要输入yes,安装路径可手动输入,默认安装在/home/yourname目录下。

然后执行 vi ~/.bashrc 并写入如下语句:

export PATH=/home/username/anaconda2/bin:$PATH

最后执行 source ~/.bashrc 后再执行 python --version 查看版本即可。

三:caffe依赖包的安装

1. 安装protobuffer

tar zxvf protobuf-*.tar.gz

cd protobuf-*

./configure --prefix=/home/yourname/local_install/

make –j32

make install

cd python

python setup.py build

python setup.py install

这样就完成了protobuf的安装,为检验是否成功可用 ls ~/local_install/bin/
查看是否有protoc可执行文件。

再在./bashrc 目录下写入:

export PATH=/home/yourname/local_install/bin/:$PATH

export LD_LIBRARY_PATH=/home/yourname/local_install/lib:$LD_LIBRARY_PATH

别忘了每次修改./bashrc后需执行 source ~/.bashrc 使之生效。

2. 安装Boost

tar jxvf boost_*.tar.bz2

cd boost_*

./bootstrap.sh

./b2

cp –r boost /home/yourname/local_install/include/

cp stage/lib/* /home/yourname/local_install/lib/ 

3. 安装gflags

unzip gflags-2.0.zip
cd gflags-2.0/
mkdir build
cd build
cmake ..
ccmake ..
在这里会弹出ccmake配置界面,只需将BUILD_SHARED_LIBS改为ON(按Enter键) , CMAKE_INSTALL_PREFIX改为/home/yourname/local_install即可。

改完后先按c 键,再按 g键生成 makefile。再执行: make –j && make install

4. 安装glog (需先安装gflags,其他依赖包可依次安装)

tar zxvf glog-0.3.3.tar.gz

cd glog-*

./configure --prefix=/home/yourname/local_install/

make –j32 && make install 

5. 安装 OpenBLAS

tar zxvf OpenBLAS-*.tar.gz

cd OpenBLAS-*/

make –j32

make PREFIX=/home/yourname/local_install install

这里要注意的是在make时可能会报错找不到–lgfortran.一种原因是系统没安装fortran编译器,另一种极大可能是没找到动态库路径,这时可用

locate gfortran

找到/usr/lib下有libgfortran.so文件,然后可在./bash_profile文件中写入如下语句:

export PATH=/usr/bin/:$PATH

export LD_LIBRARY_PATH=/usr/lib:/usr/lib64/:$LD_LIBRARY_PATH

再 source~/.bash_profile ,然后make clean后重新make即可。

6. 安装 HDF5

tar zxvf hdf5-1.8.9.tar.gz

cd hdf5-1.8.9/

./configure –prefix=/home/yourname/local_install/

make –j32 && make install

 

7. 安装OPENCV

unzip opencv-2.4.13.zip

cd opencv-*

mkdir build

cd build

cmake ..

ccmake ..

make -j

make install

可根据需要自行编译opencv相关模块,因为caffe中用到的opencv中的功能并不多,仅限于图片读写、缩放等CPU上的模块。(注意WITH_TBB模块在3.0以下版本要选择ON,WITH_QT如果之前没装qt的话要选择OFF,再把CMAKE_INSTALL_PREFIX改为/home/yourname/local_install , 其他模块自行选择)。

8. 安装LMDB

tar zxvf lmdb.tgz

cd ./libraries/liblmdb/

cp lmdb.h /home/yourname/local_install/include/

cp liblmdb.so /home/yourname/local_install/lib/

 

9. 安装LEVELDB

tar zxvf leveldb-1.7.0.tar.gz

cd leveldb-*

make –j

cp –r include/leveldb /home/yourname/local_install/include/

cp libleveldb.so* /home/yourname/local_install/lib/

10. 安装Snappy

tar zxvf snappy-1.1.1.tar.gz

cd snappy-1.1.1/

./configure–prefix=/home/yourname/local_install/

make –j32 && make install

四:cpu版caffe的安装

 至此cpu版的caffe依赖包全部安装完成,我们可在/home/yourname/local_install/目录下执行tree –d –L 2查看下我们安装的成果。

然后就需要在官网上下载最新版的caffe-master并解压至/home/yourname/目录下,再进入caffe-master目录并执行:

cp Makefile.config.example Makefile.config

再修改Makefile.config如下:

(1)将CPU_ONLY:=1前的#删除

(2)修改BLAS :=open

(3)python路径修改(若用了anaconda的话)

最后INCLUDE_DIRS和LIBRARY_DIRS修改如下:



最后依次执行

make –j32

make pycaffe

make test

make runtest

若没报错则说明CPU版caffe已安装成功。

然后在./bashrc目录下写入:

export PYTHONPATH=/home/yourname/caffe-master/python:$PYTHONPATH

在python环境下能import caffe则说明pycaffe接口也成功编译了。 

五:GPU驱动的安装(该部分需要root权限进行安装,目录在/usr/local)

如果是在自己电脑上安装,推荐使用.deb安装方式,且前面的依赖包也可用root权限进行快速安装(本人在ubuntu14.04系统上已成功安装),但是服务器上为防止出现安装时nvidiadriver不匹配导致系统崩溃还是推荐使用.run的安装方式。

请先直接阅读NVIDIA官方安装手册 NVIDIA CUDA InstallationGuide For Linux/Mac OS X/Windows,可少踩坑。

1. 创建一个文件: vi /etc/modprobe.d/blacklist-nouveau.conf并写入如下内容:

blacklist nouveau

options nouveau modeset=0

 

按wq!保存

2. 进入字符界面(例如ubuntu则按ctrl+alt+F1进入tty1),然后输入用户名和密码后再输入如下命令:

sudo service lightdmstop

3. 安装GPU驱动,可在http://www.geforce.cn/drivers网站找到对应的版本,进入到该文件目录下:

cd /.home/yourname

sudo sh linux***.run

安装完后:

sudo service lightdmstart

然后sudo reboot重启后再终端输入

cat /proc/driver/nvidia/version验证驱动安装是否成功。

 

六:CUDA-7.5的安装

同样在字符界面运行:

sudo chmod +x ./cuda_7.5_****.run

获得可执行权限后再将其解压为三个文件:

sudo sh cuda*.run –noexec –target

分别为CUDA安装包、NVIDIA驱动、SAMPLE包的.run文件,这里我们就不需要再安装NVIDIA驱动了。

先安装CUDA:

sudo ./cuda-***.run(刚解压出来的文件)

完成后在.bashrc下添加CUDA环境变量(分别export PATH和LD_LIBRART_PATH,同上即可,别忘了source使之生效!)

继续安装SAMPLE包,完成后进入samples/bin/x86_64/linux/release并执行:

sudo ./deviceQuery

若出现显卡信息则CUDA安装成功.

七:Caffe的GPU版重编译

重新进入caffe-master并修改Makefile.config文件,将CPU_ONLY:=1前的#加上,查看cuda路径是否正确,python接口和matlab接口可选,若要用则去除对应路径前的#并检查路径是否正确,然后执行:

make clean

make –j32

make pycaffe(可选)

make matcaffe(可选)

 

遇到的问题:手动安装hdf5-1.8.9后编译caffe时报错:头文件和库文件版本不匹配,这是因为安装的anaconda的库中已有hdf5的1.8.17版本,此时只需conda uninstall hdf5后重新编译即可。

Reference:

1. https://segmentfault.com/a/1190000005859547?utm_source=tuicool&utm_medium=referral
2. https://gcc.gnu.org/install/
3. 卜居《深度学习caffe21天实战》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: