Caffe开发(1):Ubuntu 16.04环境下caffe配置

  1. 安装Ubuntu16.04系统
    下载Ubuntu16.04 Desktop版本 https://www.ubuntu.com/download
    Ubuntu下载页面
    Ubuntu安装可参考我的博客,http://blog.csdn.net/ezhchai/article/details/52891014
    博客:Linux系统安装
    版本不太一致,安装方法没有区别。
  2. 安装NVIDIA显卡驱动
    下载NVIDIA驱动http://www.nvidia.com/Download/index.aspx
    根据自己的情况选取,下载即可。
    NVIDIA Driver下载页面
    安装显卡驱动首先要修改下权限,可以采用
sudo chmod 777 NVIDIA-Linux-x86_64-378.13.run

以确保可以运行,当然777是没必要的,不过为了方便也就这样了~
当然也可以sudo apt-get install nvidia-xxx安装驱动,不过我的显卡1080Ti比较新,此时还不支持这样做。
显卡安装要在命令行界面下运行,关闭X Server,因此首先Ctrl+Alt+F2进入命令行界面,
获取root权限,

sudo su

关闭XServer,

init 3

安装驱动,

./ NVIDIA-Linux-x86_64-378.13.run

根据提示完成安装,reboot 即可完成安装
安装完成后,可通过nvidia-smi命令查看显卡信息,也可通过NVIDIA X Server Settings来观看显卡信息。

  1. 安装基本环境
sudo apt-get update
sudo apt-get install vim openssh-server git cmake cmake-qt-gui

可以参考我的博客 http://blog.csdn.net/ezhchai/article/details/52972064
博客:Ubuntu基本配置
4. 安装CUDA
下载cuda安装包 https://developer.nvidia.com/cuda-downloads
CUDA下载页面
下载文件为cuda_8.0.61_375.26_linux.run,同样chmod 777即可
安装cuda依赖库:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler 
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

安装cuda

./cuda_8.0.61_375.26_linux.run

安装可以用sudo实现,如果没有添加sudo,在安装过程中也会提示要sudo权限,需要输入密码。
在安装cuda时可能有下面的信息

Installing the CUDA Toolkit in /usr/local/cuda-8.0 … 
Missing recommended library: libGLU.so 
Missing recommended library: libX11.so 
Missing recommended library: libXi.so 
Missing recommended library: libXmu.so

出现以上情况,则需要安装依赖库。

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

安装以上依赖库后,重新运行cuda安装程序,可顺利完成安装。

安装完成后,修改环境变量

gedit ~/.bashrc

在文件结尾添加

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}} 
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存文件后,执行

source ~/.bashrc

令环境变量更改后生效
1. 安装CUDNN
下载cudnn https://developer.nvidia.com/cudnn
解压缩后文件夹名为cuda,为了区分,我将文件夹名改为cudnn,并chmod –R 777修改了整个文件夹的权限。将cudnn/lib64以下的软链接文件libcudnn.so和libcudnn.so.5删除。然后拷贝库文件并设置软链接,执行

sudo cp ./cudnn/lib64/lib* /usr/local/cuda/lib64/
sudo ln -s /usr/local/cuda/lib64/libcudnn.so.5.1.10 /usr/local/cuda/lib64/libcudnn.so.5
sudo ln -s /usr/local/cuda/lib64/libcudnn.so.5 /usr/local/cuda/lib64/libcudnn.so

查看文件和软链接情况

ls -al /usr/local/cuda/lib64/libcudnn*

拷贝头文件

sudo cp ./cudnn/include/cudnn.h /usr/local/cuda/include/

6.安装OpenCV
下载OpenCV http://opencv.org/opencv-3-2.html
OpenCV下载页面
Ubuntu安装需要下载源码进行编译
下载后解压缩至~/ opencv-3.2.0目录,并chmod –R 777修改了整个文件夹的权限。
安装OpenCV依赖项
sudo apt-get install liblapacke-dev checkinstall
建立build目录

mkdir ./opencv-3.2.0/build
cd ./opencv-3.2.0/build

依次进行cmake,make和make install过程

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8
sudo make install

此处需要注意的是,如果按以上cmake命令进行编译,会产生警告信息。如想去除警告信息,可将命令更改为:

cmake -DBLAS=Open -DCUDA_NVCC_FLAGS=--Wno-deprecated-gpu-targets -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

完成安装后,执行

pkg-config --modversion opencv

查看OpenCV版本

这里再强调一点,后期编译Caffe可能会遇到一下错误:

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

解决此问题,需要以下步骤:
(1) 打开以下路径:

cd /etc/ld.so.conf.d

(2)创建文件

vim OpenCV.conf

(3)在OpenCV.conf中写入:

/usr/local/opencv320/lib

注:该路径为opencv install之后的路径,一般默认的路径为/usr/local/lib,即lib*.so库文件所在的路径。
(4)在终端执行命令:

sudo ldconfig

7.安装Caffe
下载caffe

git clone https://github.com/BVLC/caffe.git

解压缩至~/caffe目录。
这里需要修改Makefile,Makefile.config和系统的host_config.h文件
配置方法网上写的很多,我不再赘述,可以参考
http://www.2cto.com/kf/201610/552429.html
为了方便配置,我将文件写好,放在资源中,供下载后直接使用
http://download.csdn.net/detail/ezhchai/9807167

Cafffe配置文件
下载文件后,将Makefile,Makefile.config和host_config.h文件拷贝到~/caffe目录下,并chmod –R 777修改了整个文件夹的权限。
进入~/caffe目录,依次执行拷贝命令

sudo cp host_config.h /usr/local/cuda/include/
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig

更新2018-01-31/******************************************************/
还是把具体设置过程写出来吧,这样更明了一些.。
在下载好的caffe目录中,有一个Makefile.config.example文件,这是caffe提供的编译配置例子。make命令对应配置文件名为Makefile.config,因此需要将Makefile.config.example的内容复制到Makefile.config。
cp Makefile.config.example Makefile.config
(1)修改Makefile.config
根据个人情况修改文件:
a.若使用cudnn,则

#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
b.若使用的opencv版本是3的,则

#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
c.若要使用python来编写layer,则

#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1
这里我决定采用python3.5作为python caffe编程语言,还需要设置:
# Uncomment to use Python 3 (default is Python 2)
# PYTHON_LIBRARIES := boost_python3 python3.5m
# PYTHON_INCLUDE := /usr/include/python3.5m \
# /usr/lib/python3.5/dist-packages/numpy/core/include
这里首先要眼妆python3.5和相应的pip3

sudo apt-get install python3.5
sudo apt-get install python3-pip

此时我的系统Ubuntu16.04.2已经默认安装了,运行python3后进入python3环境,发现python3正好链接了python3.5版本。但是运行python命令默认的还是python2.7,于是进行了一下设置:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 200

其实,python3和python3.5对应是一个,所以最后一句话可以省略。这样,python命令就默认对应python3了。
从Makefile.config文件中可以看到,python部分编译需要numpy,因此,进行安装

pip3 install numpy

安装完成后,发现找不到Makefile.config文件中的/usr/lib/python3.5/dist-packages/numpy/core/include目录。
原因是在安装numpy时,没有用sudo,安装路径就变成了~/.local/lib/python3.5/dist-packages/numpy/core/include,用这个路径替换Makefile.config文件中的对应路径。
d. 重要的一项 :
将# Whatever else you find you need goes here.下面的
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径。
(2)修改Makefile文件
a.NVCCFLAGS
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
b.第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
注:Makefile和Makefile.config中,hdf5路径不修改,会出现以下错误
fatal error: hdf5.h: 没有那个文件或目录
(3)编辑/usr/local/cuda/include/host_config.h
将其中的第115行注释掉:

#error– unsupported GNU version! gcc versions later than 5 are not supported!
改为
//#error– unsupported GNU version! gcc versions later than 5 are not supported!
(4)编译caffe遇到错误
libcudart.so.8.0 cannot open shared object file: No such file or directory
解决办法是将一些文件复制到/usr/local/lib文件夹下:
#注意自己CUDA的版本号!

sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig

(5)编译caffe遇到错误
cannot find -lboost_python3
首先去/usr/lib/x86_64-linux-gnu目录下查看是否有python3版本的libboost,如果有类似libboost_python35.so但是没有libboost_python3.so则需要手动建立连接。
方法为:

sudo ln -s libboost_python-py35.so libboost_python3.so 

(6)由于已经通过pip3安装过numpy,所以在编译pycaffe时,不需要再通过apt-get安装。

/******************************************************/更新2018-01-31
然后编译caffe

make -j16
make runtest

安装pycaffe

sudo apt-get install python-numpy
make pycaffe

编译通过后即完成caffe的安装

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值