首页 > 系统 > Linux >

ubuntu16.04安装caffe

2016-08-10

CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台CUDA?是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。开发人员现在可以使用C语言来为CUDA?架构编写程序,C语言是应用最广泛的一种高级编程语言。

CUDA安装(包括nvidia显卡驱动和cuda库文件):

CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台CUDA?是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。开发人员现在可以使用C语言来为CUDA?架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA?的处理器上以超高性能运行。CUDA3.0已经开始支持C++FORTRAN

通过英伟达安装包来分别安装库的驱动程序而不是使用apt-get来安装。如果只有CPU可以跳过这步。主板BIOS里面要选择自由选择显卡,这样才能识别nvidia的显卡并进行驱动更新。快捷键ctrl+alt+T打开命令终端,加入官方ppa源(ppa简介)。
$ sudo  add-apt-repository ppa:graphics-drivers/ppa
需要输入密码并按enter键确认。之后刷新软件库并安装最新驱动。
$ sudo apt-get update
$ sudo apt-get install nvidia-367 nvidia-settings nvidia-prime
安装完成后通过下面命令查看是否安装成功。
$ nvidia-settings
注意安装完成后要重启,有如下效果则安装完成,否则就说明安装有问题,尝试关闭UEFI保护试试。\
从官网下载cuda7.5.run文件cuda7.5下载 ,进入该页面选择相应版本,如下图\
可知当前cuda7.5还不支持ubuntu16.06,参考他人博客可知主要是gcc版本问题,实际可通过编译。下载完run文件后,cd命令进入该文件所在目录,进行MD5检验,确保安装包正常。
sudo md5sum cuda_7.5.18_linux.run     检验结果与源文件的md5sum比较。
检验正确后,输入如下代码安装(第一行修改文件权限,第二行执行文件安装):
$ chmod 777 cuda_7.5.18_linux.run
$ sudo ./cuda_7.5.18_linux.run --override 
执行代码后会跳出一个信息,左下方出现more|0%这样,此时直接按enter直到跳到100%结束退出,接下来要求输入相关配置命令,如下图,注意别弄错了,第三行配置询问是否要安装nvidia图形驱动器,一定要选n,因为之前已经安装过了,如果再安装则会报错。仔细看如下配置,别看错行。\
安装后出现如下则说明安装正确:
===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-7.5
Samples:  Installed in /usr/local/cuda-7.5, but missing recommended librarie
接下来安装cudnn动态库,可以获得更快计算速率。cudnn5.0 ,初次进入需要注册,然后问卷调查,之后进入如下页面\\选择cuDNN v5 Library for Linux进行下载。下载后名字为:cudnn-7.5-linux-x64-v5.0-ga.tgz,进入文件所在目录进行解压:
$ tar zxvf cudnn-7.5-linux-x64-v5.0-ga.tgz 
解压后有个cuda文件,内有include和lib64两个文件夹,进入include文件夹,执行如下命令:
$ sudo cp cudnn.h /usr/local/cuda/include/     #复制头文件
再cd命令切换进lib64文件夹,执行如下命令:
$ sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接库
然后进入复制后的动态链接库进行新的链接:
$ cd /usr/local/cuda/lib64/      
$ sudo rm -rf libcudnn.so libcudnn.so.5    #删除原有动态文件
$ sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5
$ sudo ln -s libcudnn.so.5 libcudnn.so
然后设置环境变量和动态链接库:
$ sudo gedit /etc/profile
然后再打开的文件末尾加上(“=”前后不要有空格)
export PATH=/usr/local/cuda/bin:$PATH
保存之后创建链接文件:
$ sudo vim /etc/ld.so.conf.d/cuda.conf
按下键盘i进行编辑:
/usr/local/cuda/lib64
按下esc,按下:wq保存退出。并在终端输入以下命令使该链接生效:
$ sudo ldconfig
使用sample里面的例子来测试还需要编译。因为当前的cuda还不支持gcc5.0以上的版本,在编译之前,我们需要修改配置文件,否则无法编译成功。
$ cd /usr/local/cuda-7.5/include
$ sudo cp host_config.h host_config.h.bak   #备份编译头文件
$ sudo gedit host_config.h
在113行将if后面的两个4改成5,改成如下所示:
#if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 9)

#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!

#endif /* __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9) */
然后进入用例文件进行编译(注意执行第二步命令时候需要较长时间是正常现象):
$ cd /usr/local/cuda/samples
$ sudo make all -j4
$ cd /usr/local/cuda/samples/bin/x86_64/linux/release
$ sudo ./deviceQuery
执行命令后出现如下信息则说明显卡驱动和cuda安装成功。\

BLAS安装与配置

BLAS,即基础线性代数子程序库,里面拥有大量已经编写好的关于线性代数运算的程序,是一个应用程序接口的标准。caffe官网上推荐了三种实现:ATLAS, MKL, or OpenBLAS。其中atlas可以直接通过命令行安装.在此,采用intel的MKL库。intel官网下载MKL ,该链接进入后,申请学生版本的Parallel Studio XE Cluster Edition,这里注册要学校的邮箱拿去注册。该文件有3.9GB,下载完成后切换进文件所在目录解压缩该文件。

$ cd ~/Downloads/
$ tar zxvf parallel_studio_xe_2016_update3.tgz   #解压下载文件
$ chmod 777 parallel_studio_xe_2016_update3 -R   #获取文件权限
$ cd parallel_studio_xe_2016_update3/
$ sudo ./install_GUI.sh
上述命令后会跳出一个安装界面,其中需要输入license,从网站上获取: license,进入该网站后如下图点击信封那里就会给你之前注册过的邮箱发送含有license的邮件,输入即可正常安装如下图二所示。
\\
安装完成后进行相关文件链接
$ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
在打开的文件中添加库文件
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
添加完成后编译生效
$ sudo ldconfig

OpenCV3.1.0安装与配置(感觉有问题)

首先安装一些必要的依赖库:
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
OpenCV 进入该网站下载OpenCV3.1.0并解压缩,然后进入解压缩后的文件,创建build文件。
$ unzip opencv-3.1.0.zip
$ cd opencv-3.1.0
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
生成的文件在bulid中,而生成的CMakeLists.txt文件在上一级文件中。在配置过程会出现– ICV: Downloading ippicv_linux_20151201.tgz…错误。可以到 ippicv_linux_20151201.tgz 下载。将下载的文件替换掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件,同时在opencv-3.1.0目录下的CMakeList.txt 文件的开头加入一行,然后再次cmake即可,如下:
$ cd ~/Downloads/
$ mv ippicv_linux_20151201.tgz opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ 
$ vim opencv-3.1.0/CMakeLists.txt 
在弹出的文件开头加入一行(注意里面的引号要英文状态下的):
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES") 
然后按esc和:wq保存退出。
$ cd opencv-3.1.0/build
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ make -j4       #四核运算
$ sudo make install
以上最后两步比较耗时,耐心等待。

Python安装与配置

选择的是anaconda linux64 2.7版本python2.7 。下载完成之后,最好也要进行md5sum的检验。完成之后,cd进入下载文件所在的目录,在命令行输入:
$ bash Anaconda2-4.0.0-Linux-x86_64.sh
安装完成之后,在~/.bashrc文件末尾添加Anaconda的库文件(注意“=”两边不要有空格),具体如下:
$ sudo gedit ~/.bashrc    
export PATH="/home/jeson/anaconda2/bin:$PATH"
export LD_LIBRARY_PATH="/home/jeson/anaconda2/lib:$LD_LIBRARY_PATH"
重启电脑之后,在命令行输入:
$ ipython
就可以看到python的版本。

matlab的安装与配置

在网盘上下载安装包及Crack破解文件之后 matlab2014 ,解压两个压缩文件(最后一步解压时也会将part2一起合并解压):
$ cd matlab2014/
$ unrar x MATHWORKS_R2014A.part1.rar
然后在命令行cd进入matlab2014目录,输入:
$ sudo ./install
1、选择“不联网安装”:“Use a File Installation Key”;
2、当出现密钥时,输入20个数字12345-67890-12345-67890即可;
3、安装路径默认为:/usr/local/MATLAB/R2014a,然后选择自己需要安装的工具(默认全选);符号链接也为默认:/usr/local/bin。
4、需要激活时选择不要联网激活"Activate manually without the Internet",运用Crack目录下的“license_405329_R2014a.lic”文件作为激活文件。
5、安装完成之后,还要将Crack/linux目录下的libmwservices.so文件拷贝到/usr/local/MATLAB/R2014a/bin/glnxa64,即:
$ cd ~/matlab2014/Crack/Linux/
$ sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/
安装完成之后,直接在命令行输入matlab,就能使用matlabR2014a了。\

caffe的安装和配置

安装各种依赖包
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install -y python-pip
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy
sudo apt-get install -y libopencv-dev
下载caffe:
cd ~
git clone https://github.com/BVLC/caffe.git    //从github上git caffe
安装配置caffe:
cd caffe    //打开到刚刚git下来的caffe
cp Makefile.config.example Makefile.config //make指令只能make Makefile.config
sudo gedit Makefile.config      //打开Makefile.config文件
配置文件修改(看英文提示根据具体修改):
OPENCV_VERSION := 3    #取消注释符号#,应用opencv3
BLAS := mkl   #BLAS库应用英特尔的mkl
#注释第66行自带的python
ANACONDA_HOME := /home/jeson/anaconda2  #将具体anaconda2路径写入
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
		  $(ANACONDA_HOME)/include/python2.7 \
		  $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \   #PYTHON_INCLUDE之前的注释#去掉,以及之后两行前的#也去掉
PYTHON_LIB := $(ANACONDA_HOME)/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
为了之后编译matlab,这里提前在配置文件中修改matlab路劲,改完后保存退出:
MATLAB_DIR := /usr/local/MATLAB/R2014a
CUDNN只支持CUDA Capability 3.0以上的GPU加速,而我的笔记本显卡GT630M才2.1的加速能力,在其他3.0以上的显卡运行正常,因此选择不启用cuDNN加速,所以Makefile.config中USE_CUDNN行是注释状态不改变。为hdf5之类的文件创建新的链接
\\首先执行下面两句话:
find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \;
cd /usr/lib/x86_64-linux-gnu
\\然后根据情况执行下面两句:
sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
\\注意:这里的10.1.0和10.0.2根据不同的系统可能对应的数字会不同,比如在ubuntu16.04中其数字就是10.1.0.
\\具体的数字可以在输入命令时候使用tab键补全查看
打开makefile文件搜索并替换
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

$ sudo gedit ~/.bashrc
在打开的文件末尾加上:
export LD_LIBRARY_PATH="/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH”
在命令行输入:
sudo ldconfig #编译立即生效
然后进入caffe目录:
make all -j4
make test -j4
make runtest
这里runtest会报错如下:\解决方法是在~/.bashrc文件末尾添加输入一行,具体如下:
sudo gedit ~/.bashrc
export MKL_CBWR=AUTO     #打开的文件末尾加入该行,然后保存退出。
sudo ldconfig            #编译立即生效 
然后再来一遍
make clean
make all -j4
make test -j4
make runtest
正确结果是如下:\
如果编译没有报错,则基本没问题。在运用anaconda和matlab时都需要修改相应的内容。
anaconda需要将caffe头文件进行链接:
$ sudo gedit ~/.bashrc
输入
export PYTHONPATH="/home/jeson/caffe/python:$PYTHONPATH"
保存后在命令行输入:
sudo ldconfig
make pycaffe
make distribute
ipython
import caffe
最后如果没有跳出错误则说明编译成功,即可调用caffe模块。将matlab下的libstdc++.so.6 更改名称为libstd++.so.6_back(让matlab找不到这个,但是为了安全还是备份一下吧),这样在执行matlab编译的时候会自动去找系统用的库。具体为:
cd /usr/local/MATLAB/R2014a/sys/os/glnxa64/
sudo mv libstdc++.so.6 libstdc++.so.6_back
sudo ldconfig
cd ~/caffe/
make matcaffe
make mattest
出现下图说明编译正确:\
测试matlab打开./caffe/matlab/+caffe/private,看有没有生成一个caffe的mex文件,可以运行+test文件夹里面的程序测试。
至此,暂时应该算是安装完成。

相关文章
最新文章
热点推荐