Ubuntu16.04+matlab2014a+anaconda2+OpenCV3.1+caffe安装

本次安装caffe是在新的笔记本上,感觉与之前在台式机上的安装还是有一定的区别。加之是在新的ubuntu16.04系统上安装的,可参考教程较少。而且其中添加了不少库,修改的一些错误,难免会有遗漏。如果发现本文未提及错误,欢迎一起讨论学习。另外,看到有的人说安装了半个多月,多次重装,希望有问题还是先把问题查清楚,不要盲目重装系统;其次,安装的时候最好记录自己安装的过程和内容,避免遗漏和重复,出问题了也可以与别人的教程相对比。
首先介绍安装条件和软件准备:

参考博客与文章:
ubuntu16.04系统cuda7.5安装教程:https://www.pugetsystems.com/labs/hpc/NVIDIA-CUDA-with-Ubuntu-16-04-beta-on-a-laptop-if-you-just-cannot-wait-775/
caffe官网教程:http://caffe.berkeleyvision.org/installation.html
ubuntu16.04系统cuda7.5配置与caffe安装教程:http://blog.csdn.net/g0m3e/article/details/51420565
ubuntu14.04系统上caffe安装:http://www.cnblogs.com/platero/p/3993877.html

一、Ubuntu16.04系统安装

这一部分接触过ubuntu系统的应该比较熟悉,网上也有很多可以参考的例子,就不再赘述。另外,我是在一个SSD固态硬盘上单独安装的系统,之前在台式机上也是这么实现的,感觉这样和windows双系统故障会少些。

二、显卡驱动与cuda安装

1、显卡驱动安装

安装完ubuntu16.04系统之后,直接更新系统并重启。在多显卡的笔记本中,可能需要在BIOS系统里选择”自由选择显卡“,这样系统才能识别nvidia的显卡,并进行驱动更新。我这里是运用ppa更新的最新驱动,使用起来能够得到挺好的体验,并能够实现双显卡的自由切换。
首先,通过快捷键Ctrl+Alt+T打开终端,然后加入官方ppa源:

$ sudo  add-apt-repository ppa:graphics-drivers/ppa

需要输入用户密码,并确认链接源。之后刷新软件库并安装最新的驱动,在命令行输入:

$ sudo apt-get update
$ sudo apt-get install nvidia-367 nvidia-settings nvidia-prime

由于联想笔记本的UEFI保护,会拒绝第三方的驱动,因此需要关闭该保护,关闭之后重启能够正常驱动nvidia,并能够进行双显卡的切换。
安装完成之后,可以通过系查看系统属性,看是否是nvidia的显卡。另外,也可以通过下面命令看是否安装成功:

$ nvidia-settings
nvidia settings界面

如果出现的nvidia设置界面不是这样,驱动可能还是有问题。此处我出现的错误主要是是UEFI保护没注意到,导致重复安装了几遍。

2、cuda7.5 安装与配置

首先下载cuda7.5.run文件,如下图所示:


cuda7.5下载版本

可以看到当前cuda7.5还不支持ubuntu16.04。参考别人的教程,主要是gcc版本的问题,实际是可以编译通过的。下载完15.04版本的run文件之后,一定要进行进行md5检验,校验码不对会出现安装之后重启不能进入界面的问题。
下载完成之后,cd进入文件所在目录,在终端进行如下操作

$ chmod 777 cuda_7.5.18_linux.run     #获取文件权限
$ sudo ./cuda_7.5.18_linux.run --override #执行文件安装

注意后面的override是必须的,这样才能保证安装的过程中,不会出现编译器不支持的错误。另外,在选择条件的过程中,一定不要再次安装nvidia驱动,虽然cuda.run文件本身是包含又nvidia驱动的,但是本处直接安装会出错。下图是安装.run文件的配置:

cuda.run文件安装界面

安装完成之后会出现

============ Summary ============
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-7.5
Samples: Installed in /usr/local/cuda-7.5

之后更换cudnn动态库,可以获得更快的计算效率。下载完cudnn5.0之后进行解压,cd进入cudnn5.0解压之后的include目录,在命令行进行如下操作:

$ sudo cp cudnn.h /usr/local/cuda/include/    #复制头文件

再将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

使链接立即生效。

3、cuda用例安装与测试

在安装cuda.run文件时,我们已经选择安装了samples用例,还需要编译。因为当前的cuda还不支持gcc5.0以上的版本,在编译之前,我们需要修改配置文件,否则无法编译成功。在终端输入:

$ cd /usr/local/cuda-7.5/include
$ cp host_config.h host_config.h.bak   #备份编译头文件
$ sudo gedit host_config.h

然后在115行修改编译其支持的版本:

# if GNUC > 4 || (GNUC == 4 && GNUC_MINOR > 9)
# error -- unsupported GNU version! gcc versions later than 4.9 are not supported!
# endif /* GNUC > 4 || (GNUC == 4 && GNUC_MINOR > 9) */

将if后面连续两个4改为5即可,然后进入用例文件进行编译:

$ cd /usr/local/cuda/samples
$ sudo make all -j4
$ cd /usr/local/cuda/samples/bin/x86_64/linux/release
$ sudo ./deviceQuery

成功之后会出现下列信息:

CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 960M"
CUDA Driver Version / Runtime Version 8.0 / 7.5
CUDA Capability Major/Minor version number: 5.0
Total amount of global memory: 4044 MBytes (4240375808 bytes)
( 5) Multiprocessors, (128) CUDA Cores/MP: 640 CUDA Cores
GPU Max Clock rate: 1176 MHz (1.18 GHz)
Memory Clock rate: 2505 Mhz
Memory Bus Width: 128-bit
L2 Cache Size: 2097152 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX 960M
Result = PASS

通过上述用例测试,就表明显卡驱动安装和cuda安装完全成功了。

二、BLAS安装与配置

BLAS(基础线性代数集合)是一个应用程序接口的标准。caffe官网上推荐了三种实现:ATLAS, MKL, or OpenBLAS。其中atlas可以直接通过命令行安装,在此不再介绍。我采用的是intel的mkl库,首先,通过上面链接在intel官网申请学生版的**Parallel Studio XE Cluster Edition **,下载完成之后cd到下载目录进行安装:

$ 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

安装完成之后,进行相关文件的链接:

$ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf

在打开的文件中添加库文件:

/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64

添加完成之后,编译链接时lib文件立即生效:

$ sudo ldconfig

三、OpenCV3.1.0安装与配置

首先安装必要的库,有的依赖库我是已经安装过的,具体安装的先后关系已经忘了。如果出现有些依赖关系不满足的错误,可以再安装库:

$ sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev    # 必要的基本库

根据上面的链接下载OpenCV3.1.0版本,并进行解压,解压之后进入安装文件目录:

$ cd opencv-3.1.0
$ mkdir build          #创建build文件夹
$ cd opencv-3.1.0/build
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..  
$ #生成的文件在bulid中,而生成的CMakeList.txt文件在上一级文件中

在configure过程中过程中,可能会出现下面的错误:

-- ICV: Downloading ippicv_linux_20151201.tgz...

在直接下载该文件的过程中,会因为超时而失败,可以下载http://download.csdn.net/detail/yehuohan/9511463, 并替换掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件,然后再次cmake即可。生成编译文件之后,在opencv-3.1.0/build目录下,终端输入:

$ make -j4       #四核运算
$ sudo make install

此时,可能会出现另外一个错误:

/usr/include/string.h: In function ‘void* __mempcpy_inline(void, const void, size_t)’: /usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope return (char *) memcpy (__dest, __src, __n) + __n;

这也是因为ubuntu16.04的个个g++版本太高的造成的,只需要在opencv-3.1.0目录下的CMakeList.txt 文件的开头加入:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")

添加之后再次进行编译链接即可。

4、python安装与配置

python的安装有两种方式:一种是系统自带的python,只需再安装相应的库即可;第二种是直接安装anaconda,很多相应的库已经包含了。第一种直接安装库文件比较简单,不需要修改相应的包含路径和库文件。本人因为习惯了anaconda,因此选择的是anaconda linux64 2.7版本(3.5版本我也试过,装caffe的时候可能会比较麻烦)。下载完成之后,最好也要进行md5sum的检验。完成之后,cd进入下载文件所在的目录,在命令行输入:

$ bash Anaconda2-4.0.0-Linux-x86_64.sh

安装完成之后,在.bashrc中添加Anaconda的库文件,一定不要在/etc/profile文件中添加。因为anaconda有几个链接库和系统链接库文件类似,如果添加到/etc/profile文件中,会出现电脑重启之后不能进入界面的情况

$ sudo gedit ~/.bashrc

然后加入库文件:

export PATH="/home/lyndon/anaconda2/bin:$PATH"
export LD_LIBRARY_PATH="/home/lyndon/anaconda2/lib:$LD_LIBRARY_PATH"

重启电脑之后,在命令行输入:

$ ipython

就可以看到python的版本,并进行运用了。

5、matlab的安装与配置

在网盘上下载安装包及Crack破解文件之后,解压两个压缩文件,并用Crack文件中的install替换matlab2014安装目录下/java/jar/下的install文件。然后在命令行cd进入matlab2014目录,输入:

$ sudo ./install

1、选择“不联网安装”;
2、当出现密钥时,随意输入20个数字12345-67890-12345-67890即可;
3、选择自己需要安装的工具;
4、需要激活时选择不要联网激活,运用Crack目录下的“license_405329_R2014a.lic”文件作为激活文件
安装完成之后,还要将Crack/linux目录下的libmwservices.so文件拷贝到/usr/local/MATLAB/R2014a/bin/glnxa64。在Crack/linux目录下的命令行输入:

$ sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64
安装完成之后,直接在命令行输入matlab,就能过进行使用了

6、caffe的安装与配置

首先,安装caffe必要的库文件:protobuf, glog, gflags, hdf5

$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

安装之后,anaconda应用时还是会出现错误。此时用anaconda的安装工具conda 再安装必要文件就行了,我安装了以下文件,后续ipython中就能够用caffe了。

$ conda install libprotobuf-dev libleveldb-dev 

安装完成之后,进入caffe下载的文件目录,在命令行输入:

$ sudo cp Makefile.config.example Makefile.config # 备份配置文件
$ gedit Makefile.config  # 修改编译文件

配置文件主要修改:

USE_CUDNN := 1 #取消注释,应用cudnn
OPENCV_VERSION := 3 #取消注释,应用opencv3
BLAS := mkl #BLAS库应用英特尔的mkl
ANACONDA_HOME := /home/lyndon/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include
$(ANACONDA_HOME)/include/python2.7
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \ #选用anaconda作为python工具
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial #加入了 /usr/include/hdf5/serial,防止找不到hdf5.h错误

在make过程中可能 string.h ‘memcy’ was not declared in this scope的错误是,这也是因为ubuntu中gcc编译器版本太新,解决方法是打开Makefile文件,搜索并修改:

改 NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
为 NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

还可能出现:/usr/lib/x86_64-linux-gnu/libunwind.so.8: undefined reference to `lzma_index_size@XZ_5.0',解决改问题只需要添加库文件路径就行,在home目录下的命令行输入:

$ sudo gedit ~/.bashrc

在文件中加入:

export LD_LIBRARY_PATH="/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"

在命令行输入:
$ sudo ldconfig #编译立即生效,然后进入caffe所在目录
$ cd /home/lyndon/lyndon/caffe/caffe-master
$ make all -j4 #编译文件
$ make test -j4 #编译测试文件
$ make runtest
$ make pycaffe
$ make matcaffe
如果编译都没报错,则表示基本成功,能够通过用例进行测试了。在运用anaconda和matlab时都需要修改相应的内容。
anaconda需要将caffe头文件进行链接:

$ sudo gedit ~/.bashrc

export PYTHONPATH="/home/lyndon/lyndon/caffe/caffe-master/python:$PYTHONPATH"
之后编译链接库,打开ipython,输入:

$ import caffe

即可调用caffe相应模块了。matlab模块可以直接测试caffe/matlab/+caffe的用例。

7、总结

至此,ubuntu16.0下的caffe等相关文件全部安装完毕,其中问题最多的应该是双显卡问题中的nvidia驱动安装的问题,很有可能会驱动不起来,最好弄明白自己出错的原因,不然重装系统也没用。其次,在安装anaconda过程中,有些教程建议把库文件加入到/etc/profile环境中,这可能会造成电脑重启没法进入桌面的问题。其余的问题都应该不会造成电脑不能重启不能进入桌面的情况,可以直接google和百度解决。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,907评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,546评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,705评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,624评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,940评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,371评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,672评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,396评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,069评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,350评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,876评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,243评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,847评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,004评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,755评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,378评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,266评论 2 259

推荐阅读更多精彩内容