[转]Centos7下caffe的安装

原文地址:http://blog.csdn.net/s2392735818/article/details/49796017
 

版权声明:本文为博主原创文章,未经博主允许不得转载。

很无奈的开个头,最近装了好几次caffe,前面由于没有记录完整而详细的过程,以致于这次安装的过程中除了很多问题,现在特此留博客一篇记录一下细节的部分,免得下次继续入坑。

首先列一下本文档下适合的环境,和已经成功安装的环境。

  • 显卡:Telsa k20c/Quadro k5000
  • 系统:Centos7

好了,下面就是具体的步骤了:


安装依赖

Ubuntu用户参考http://caffe.berkeleyvision.org/install_apt.html 
OS X用户参考http://caffe.berkeleyvision.org/install_osx.html

REHL/Centos/Fedora用户参考以下步骤:


  1. 安装基础依赖

    sudo yum install protobuf-devel leveldb-devel snappy-devel OpenCV-devel boost-devel hdf5-devel

  2. 其他依赖

    sudo yum install gflags-devel glog-devel lmdb-devel


如果发现没有找到上面的包,可以采用手动安装的方法,系统需要提前装好最新的cmake版本,我装的是3.4.0版本。 
cmake版本传送cmake3.4.0二进制版本 
cmake的配置过程可以参考Centos6.3安装配置cmake

接下来就可以手动安装glog,gflags,lmdb了


  1. glog

    wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz 
    tar zxvf glog-0.3.3.tar.gz 
    cd glog-0.3.3 
    ./configure 
    make && make install

  2. gflags

    wget https://github.com/schuhschuh/gflags/archive/master.zip 
    unzip master.zip 
    cd gflags-master 
    mkdir build && cd build 
    export CXXFLAGS=”-fPIC” && cmake .. && make VERBOSE=1 
    make && make install

  3. lmdb

    Git clone https://github.com/LMDB/lmdb 
    cd lmdb/libraries/liblmdb 
    make && make install

  4. protobuf重要

    安装步骤请参考 http://blog.csdn.net/tdmyl/article/details/31811317

  5. hdf5安装

    hdf5安装请查看官方文档 
    http://www.hdfgroup.org/HDF5/release/obtainsrc.html#src

  6. leveldb安装 

    leveldb下载请见https://github.com/google/leveldb 
    安装请见http://blog.sina.com.cn/s/blog_560e310001015jfx.html 
    缺失的步骤: 
    leveldb文件夹下依次执行 
    make 
    cd out-shared 
    cp lib* /usr/local/lib


切记,上述依赖需要安装到/usr/local下面的目录,否则编译时会提示找不到相关库文件。当然也可以配置到用户自定义的目录下面,不过没有尝试过。 前方高能!!接下来就是一些稍大型的安装动作了,步骤如下:

  1. NVIDIA驱动,驱动文件请于官方链接自行下载NVIDIA驱动下载

    1、下载完成后,设置系统为命令行启动systemctl set-default multi-user.target 
    2、重启系统,切换到root模式 
    3、设刚才下载的文件名为nvidia.run,接下来执行sh nvidai.run,应该会出现几个提示,选择accept或者yes。出现这一步的原因是系统没有禁用Nouveau驱动,现在安装nvidia驱动的过程中会帮助用户禁用Nouveau 驱动,之前参照网上的一些帖子禁用Nouveau 均不成功,所以只有这种方法了。 
    4、使用 dracut重新建立 initramfs image file :

    • 备份 the initramfs file 
      mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
    • 重新建立 the initramfs file 
      dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

    5、再次重启系统,如果字体变大了,就说明Nouveau禁用成功,然后就可以继续安装Nvidia驱动了 
    6、成功安装Nvidia驱动后,再次将系统设置为图形模式,systemctl set-default graphical.target,重启系统就可以正常进入图形界面了。

    也可以参考这篇文章CentOS 7.0安装Nvidia驱动

  2. CUDA7.5自行下载CUDA下载链接

    建议下载runfile类型的文件,后缀名为.run 
    下面就可以使用sh cuda*.run执行安装步骤,安装时需要输入几个参数

    • 1、是否安装Nvidia驱动,选no
    • 2、安装cuda的位置,我输入的是/usr/local/cuda-7.5
    • 3、是否创建cuda的快捷方式,我选择的是yes
    • 4、是否创建cuda-samples,我输入的是/usr/local/cuda-samples
    • 5、是否安装OpenGL,选择是,这个过程也算是安装了OpenCV
    • 6、接下来就安装成功了
  3. OpenBLAS安装OpenBLAS下载链接

    下载后,解压,然后安装。 
    或者可以使用我用的版本,OpenBLAS–楼主使用的版本 
    然后执行下面的指令 
    tar -xzvf OpenBLAS.tar.gz 
    make 
    make --PREFIX='usr/local/' install 
    上述步骤只做参考,实际操作过程可能会存在部分差异,安装的时候注意一下就行 
    若在caffe编译的时候出现/usr/bin/ld: cannot find -lopenblas 
    请在openblas编译文件夹下执行cp lib* /usr/local/lib即可

  4. Anaconda

    官方下载链接Anaconda下载链接 
    楼主下载链接Anaconda下载链接 
    接下来直接执行sh anaconda.sh就行,安装过程自己领会


接下来就是最终的caffe配置过程了,caffe的github地址为https://github.com/BVLC/caffe 
将工程文件拷贝到本地后,执行

cp Makefile.config.example Makefile.config 
vim ./Makefile.config 
修改CUDA_DIR :=/usr/local/cuda-7.5 (按照个人之前安装cuda的路径进行配置) 
修改BLAS := open 
修改BLAS_INCLUDE,BLAS_LIB为安装路径 
保存(如果用户显卡不够用,可以去除前面的CPU_ONLY :=1前面的注释符号”#”,表示只使用CPU做运算)

接下来就可以正常的执行

make all 如果编译速度慢,可以使用make all -jN (N为核心处理器的个数) 
make test 对编译结果进行测试

下面需要对用户根目录下的.bashrc文件进行编辑,加载一些动态库

vim ~/.bashrc 
文本最后加入 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-7.5/lib64 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/glog/lib 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

最后再次进入caffe目录,执行make runtest,喝杯茶,等一会,就结束了。

上述过程是安装caffe最基础的步骤,如果需要加速cuDNN,Matlab,等扩展文件,可以参考 
http://www.cnblogs.com/platero/p/3993877.html

教程到此结束,如有纰漏请指正。谢谢。未经允许,不准转载,谢谢配合。

上一篇:Centos7 下的SVN安装与配置


下一篇:JDK、JVM和JRE三者间的关系,及JDK安装路径下的文件夹说明