原文地址:http://blog.csdn.net/wqzghost/article/details/47447377
 

总结:在安装protobuf,hdf5等的时候指定了安装路径,这导致在11、12两个步骤中要配置编译选项及链接库的位置,这些软件默认应该是安装在/usr/local下的,如果这个推断是正确的,那么只需要编译caffe之前在/etc/ld.so.conf中添加如下内容: 
/usr/local/lib 
/usr/local/lib64

一、服务器配置

操作系统:centos 6.5 
GPU:

[root@localhost ~]# lspci | grep -i nvidia
02:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)
04:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)
83:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)
84:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20c] (rev a1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

注意:这里使用的是命令行版的centos,如果是图形界面,需要另外配置。

二、安装过程1

在安装之前,建议建立一个文件件,将涉及到的安装包放入其内,便于管理:

$ mkdir caffe
$ cd caffe
  • 1
  • 2
  • 1
  • 2

另外,记得更新一下系统:

$ yum update -y
  • 1
  • 1

1.安装cuda

nvidia官网提供了yum源,因此只需安装yum源,便可轻松安装cuda,省去编译的复杂过程。需要注意的是一定要根据直接的操作系统选择合适的版本,详情点这里

$ yum install epel-release
$ wget http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-7.0-28.x86_64.rpm
$ rpm -iv cuda-repo-rhel7-7.0-28.x86_64.rpm
$ yum search cuda
$ yum install cuda
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.安装opencv

$ yum install opencv-devel
# 配置 OpenCV 环境
$ git clone https://github.com/jayrambhia/Install-OpenCV
$ cd Install-OpenCV/RedHat
$ ./opencv_latest.sh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

在一些资料上看到这样的安装过程,有两个问题:(1)是否需要执行yum install OpenCV-devel,根据Install-OpenCV/RedHat/opencv_install.sh文件,应该是不需要的,有勇气的同学可以试一下!(2)执行./opencv_latest.sh后发现安装不成功,原因可能是centos一些软件版本过低造成的。没办法选择手动安装,记得参考Install-OpenCV/RedHat/opencv_install.sh2

$ yum -y groupinstall "Development Tools"
$ yum -y install wget unzip opencv opencv-devel gtk2-devel cmake
$ wget -O opencv-2.4.9.tar.gz
$ http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.tar.gz/download
$ tar -zxf opencv-2.4.9.tar.gz
$ cd opencv-2.4.9
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..
$ make -j8
$ make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

cmake需要指定GPU架构3 :-D CUDA_GENERATION=Kepler,否则报错:Unsupported gpu architecture ‘compute_11’

安装的过程可能没那么顺利,经常会遇到各种错误。例如生成lib/libopencv_highgui.so.2.4.9找不到png_set_longjmp_fn,可以这样解决:

#google之后发现这个函数定义在libpng中
#查看libopencv_highgui.so.2.4.9引用了哪个libpng
$ ldd lib/libopencv_highgui.so.2.4.9 | grep libpng
#查看该lipng中是否定义了png_set_longjmp_fn,注意根据自己的环境替换掉/usr/lib64/libpng12.so.0.49.0
$ readelf -s /usr/lib64/libpng12.so.0.49.0 | grep png_set_longjmp_fn
#没有任何输出,说明没有定义,则需要安装更新的版本
$ wget http://github.com/glennrp/libpng-releases/raw/master/libpng-1.5.23.tar.xz
$ tar -xvf libpng-1.5.23.tar.xz
$ cd libpng-1.5.23
$ make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

安装后发现仍然找不到,这是因为链接时查找路径的问题4:

$ cd /usr/local/lib
$ cp -d libpng15.a libpng15.la libpng15.so* libpng.a libpng.* /usr/lib64
  • 1
  • 2
  • 1
  • 2

另外可能遇到的问题是编译过程中提示:

opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization
  • 1
  • 1

解决方法是下载NCVPixelOperations.hpp,替换原来的文件重新编译即可5.

3.安装atlas、snappy、boost

$ yum install atlas-devel snappy-devel boost-devel
  • 1
  • 1

4.安装protobuf

$ cd ~/caffe
$ tar –xvf protobuf-2.5.0.tar.gz
$ cd protobuf-2.5.0
$ ./configure --prefix=/opt/protobuf
$ make
$ make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5.安装leveldb

$ cd ~/caffe
$ tar –xvf leveldb-1.7.0.tar.gz
$ cd leveldb-1.7.0
$ make
$ cp libleveldb* /usr/lib/
$ cp –r include/leveldb /usr/local/include
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

6.安装hdf5

$ cd ~/caffe
$ tar –xvf hdf5-1.8.8.tar.bz2
$ cd hdf5-1.8.8
$ ./configure --prefix=/opt/hdf5
$ make
$ make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

7.安装glog

$ cd ~/caffe
$ tar –xvf glog-0.3.3.tar.gz
$ cd glog-0.3.3
$ ./configure
$ make
$ make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

8.安装gflags

$ cd ~/caffe
$ unzip master.zip
$ cd gflags-master
$ mkdir build
$ cd build
$ export CXXFLAGS=”-fPIC”
$ cmake ..
$ make
$ make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

9.安装lmdb

$ wget https://codeload.github.com/LMDB/lmdb/tar.gz/LMDB_0.9.15
$ tar -xvf LMDB_0.9.15.tar.gz
$ make
$ make install
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

10.将 /opt/protobuf/bin 加入到 PATH

echo 'export PATH=$PATH:/opt/protobuf/bin' >> ~/.bashrc
  • 1
  • 1

11.安装caffe

$ cd ~/caffe
$ unzip caffe-master.zip
$ cd caffe-master
$ cp Makefile.config.example Makefile.config
$ vi Makefile
# 修改内容为:
# COMMON_FLAGS 加上 –I/opt/protobuf/include –I/opt/hdf5/include
# LDFLAGS 加上 –L/opt/protobuf/lib –L/opt/hdf5/lib
# LIBRARIES += boost_thread 改为 LIBRARIES += boost_thread-mt
$ vi Makefile.config
# 修改内容为:
# LIBRARY_DIRS 加上 /usr/lib64/atlas
$ make all
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

12. 配置运行环境

$ vi /etc/ld.so.conf.d/caffe.conf
# 增加内容
# /usr/local/cuda/lib64
# /opt/protobuf/lib
# /opt/hdf5/lib
# /usr/local/lib
$ ldconfig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

13. 运行

$ reboot
$ sh data/mnist/get_mnist.sh
$ sh examples/mnist/create_mnist.sh
$ vi examples/mnist/lenet_solver.prototxt
# 修改 ~/caffe/caffe-master/examples/mnist/lenet_solver.prototxt 文件设定运行 CPU 版本或者 GPU 版本。
# 修改最后一行: solver_mode: CPU 或者 solver_mode: GPU
$ time sh examples/mnist/train_lenet.sh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

参考文献

[转]centos 6.5安装caffe的更多相关文章

  1. 如何在 centos 7.3 上安装 caffe 深度学习工具

    有好多朋友在安装 caffe 时遇到不少问题.(看文章的朋友希望关心一下我的创业项目趣智思成) 今天测试并整理一下安装过程.我是在阿里云上测试,选择centos 7.3 镜像. 先安装 epel 源 ...

  2. MonoDevelop 4.2.2/Mono 3.4.0 in CentOS 6.5 安装笔记

    MonoDevelop 4.2.2/Mono 3.4.0 in CentOS 6.5 安装笔记 说明 以root账户登录Linux操作系统,注意:本文中的所有命令行前面的 #> 表示命令行提示符 ...

  3. Centos、Ubuntu 安装 Mono、Jexus

    Mono是.NET的跨平台实现 在众多关于语言的争论中,.NET一直被以不能跨平台而诟病,Mono改变了这一现状. 有人当心Mono会涉及版权啥的问题.高深的偶不懂,不过我觉得Unity3D都能用,为 ...

  4. Centos 7.0 安装Mono 3.4 和 Jexus 5.6

    2013-07-26 写过一篇<CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4>,CentOS 7在CentOS 6的基础上有很大的调整,本文是这篇文章的更新,主要介 ...

  5. 环境搭建系列-系统安装之centos 6.5安装与配置

    按照国际惯例,系列目录先奉上: 系列一:系统安装之centos 6.5安装与配置 系列二:准备工作之Java环境安装 系列三:数据为先之MySQL读写集群搭建 系列四:谈分布式之RabbitMQ集群搭 ...

  6. 在CentOS 7上安装.NET Core R2跑Hello World

    前言 在上个月.NET Core出了最新版本预览版,只是在Window系统上试验了一下.原本想等发布正式版的时候在linux系统上试试,可能还需要一段时间,刚好有空可以折腾一下. 由于之前安装的Ubu ...

  7. CentOS 6/7安装ffmpeg

    环境 CentOS 6/7 安装 导入GPG key rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms 安装ATRPMS Repo ...

  8. CentOS 7.0安装配置Vsftp服务器

    一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...

  9. centos下编译安装lnmp

    centos下编译安装lnmp 本文以centos为背景在其中编译安装nginx搭建lnmp环境. 编译安装nginx时,需要事先安装 开发包组"Development Tools" ...

随机推荐

  1. Python -- 文档测试

    Python内置的“文档测试”(doctest)模块可以直接提取注释中的代码并执行测试. 例子: # mydict2.py class Dict(dict): ''' Simple dict but ...

  2. MFC设置窗体大小SetWindowPos

    SetWindowPos(NULL,0,0,200,300,SWP_NOMOVE); 表示不考虑(0,0),仅仅将大小改为200x300,位置不变    SetWindowPos(NULL,0,0,2 ...

  3. win10系统安装oracle11g时遇到INS-13001环境不满足最低要求

    升级win10系统之后,需要重新安装Oracle,因为在安装Oralce11g时,使用64位的会出现各种不兼容问题,我每次安装都是使用32位的数据库. 在安装时点击setup.exe之后,出现了:[I ...

  4. C语言中的几种常见排序算法

    1.冒泡排序法:如果有N个数,两两相邻进行比较,将最值沉入最后一位置,要进行N-1轮比较, 第一轮要比较N-1次,第2轮只要比较N-1-1次,因为第一次已经把最值沉入最后一位置,故 不需在进行比较一次 ...

  5. HDU 1896 Stones(优先队列)

    还是优先队列 #include<iostream> #include<cstdio> #include<cstring> #include<queue> ...

  6. fragment 数据传递,通信

    Fragment之间的通信   在本节中,你会学到 1.定义接口 2.实现接口 3.将消息传递给fragment 为了重用Fragment UI 组件,在设计中你应该通过定义每一个fragemnt自己 ...

  7. HDU 5438 拓扑排序+DFS

    Ponds Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Sub ...

  8. IMapControl3 Interface(1) Properties属性

    IMapControl3 Interface Provides access to members that control the MapControl. Note: the IMapControl ...

  9. javascript 中的闭包

    在 javascript 中,函数可以当做参数传递,也可以当做返回值返回. 当一个函数内部返回值为一个函数时, 就形成了闭包.(闭包里面的 this 问题) 如下面代码 Function.protot ...

  10. Linux中通过命令直接删除文件中最后一行

    何谓Sed(Stream EDitor):Sed原为UNIX系统上的非交谈式文字编辑器(non-interactive stream editor).当Sed读入待编辑文件,会依编辑命令来进行文件的编 ...