原文链接:http://blog.csdn.net/lee_j_r/article/details/52693724

注意:本教程只针对以下配置而言,其他配置可能会出现其他问题,不承担任何责任。

配置说明:

双硬盘双系统,250G固态硬盘装了win10,4T机械硬盘装了Ubuntu16.04

双显卡:集显加独显(GTX1080

先按照了win10,再装Ubuntu16.04,都是制作了U盘引导盘安装,没什么好说


说明

1、1080装机只能使用DVI接口的显示器,无法使用VGA或者转接头之类的。或者先使用集显连显示器。当然当你把显卡驱动安好之后,是能用VGA接口的,不过在那之前,VGA不识别。
2、1080需要使用自己的显卡驱动,不能使用cuda 自带的驱动。
3、Ubuntu16.04 系统的默认GCC版本为5.4,而编译caffe最高只支持5.3.
4、OpenCV不能直接安装,因为cuda8是新出的,opencv 无法识别。

一、安装Ubuntu16.04

1、先上官网下载Ubuntu16.04的镜像iso
2、再用UltraISO制作引导盘
3、U盘按照Ubuntu16.04

在这里发现如果显示器接的是独显1080的话,会出现分辨率问题而无法进行安装界面,屏幕显示“输入不支持”。

在这里卡了很久,也谷歌了好久,网上都说需要手动添加显卡选项: nomodeset,使其支持Nvidia系列显卡。

(参考: 安装ubuntu黑屏问题的解决 or How do I set ‘nomodeset’ after I’ve already installed Ubuntu?)

但发现还是没能解决问题。后来是把视频线接到集显输出后,就能正常进入安装界面,在安装完后,我也是手动修改了grub文件,顺便改改分辨率:

[java] view plain copy
  1. sudovim/etc/default/grub

找到这一行:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"修改为:GRUB_CMDLINE_LINUX_DEFAULT="quiet splashnomodeset"

然后顺便改分辨率

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo’
#GRUB_GFXMODE=640×480
# 这里分辨率自行设置
GRUB_GFXMODE=1920×1080

更新GRUB:

[html] view plain copy
  1. sudoupdate-grub

二、安装nvidia显卡驱动

在这里附上一下关于查看显卡信息的命令

(1)检查你的电脑有哪些显卡

[html] view plain copy
  1. lspci-k|grep-A2-i"VGA"
(2)查看哪一个专有驱动是推荐安装的
[html] view plain copy
  1. sudoubuntu-driversdevices
有个recommended 的那个驱动就是推荐的。

也可以上官网查自己显卡型号推荐的驱动(http://www.nvidia.cn/Download/index.aspx?lang=cn)
安装驱动有三种方法:(1)run文件;(2)deb文件;(3)第三方安装

各种尝试后发现第三种方法是最简便安全的。试过第一种,要各种配置,装完后还在图形界面那里无限循环了,反正就各种问题

下面是第三种方法:

[html] view plain copy
  1. sudoadd-apt-repositoryppa:graphics-drivers

第一次运行出现如下的警告:
Fresh drivers from upstream,currently shipping Nvidia.
## Current StatusWe currently recommend: nvidia−361nvidia-361,Nvidia’s current long lived branch.
For GeForce 8 and 9 series GPUs use nvidia−340nvidia-340 For GeForce 6 and 7 series GPUs use nvidia−304nvidia-304
## What we’re working on right Now:– normal driver updates– Investigating how to bring this goodness to distro on a cadence.
## WARNINGS:This PPA is currently in testing,you should be experienced with packaging before you dive in here.

Give us a few days to sort out the kinks.Volunteers welcome! See also: https://github.com/mamarley/nvidia-graphics-drivers/http://www.ubuntu.com/download/desktop/contribute
更多信息: https://launchpad.NET/~graphics-drivers/+archive/ubuntu/ppa

按回车继续或者 Ctrl+c 取消添加

回车后继续:

[html] view plain copy
  1. sudoapt-getupdate
  2. sudoapt-getinstallnvidia-367
  3. sudoapt-getinstallmesa-common-dev
  4. sudoapt-getinstallfreeglut3-dev

把上面的显卡驱动型号改成你匹配的型号

之后重启系统让GTX1080显卡驱动生效

测试

终端输入:

[html] view plain copy
  1. nvidia-smi

出现类似上述界面说明安装成功了

三、安装cuda-8.0

在安装 CUDA 之前,google了一下,发现在Ubuntu16.04下安装CUDA7.5问题多多,幸好CUDA8已出,支持GTX1080:

从上图也可以看出,CUDA 也有好几种安装方法,

但不推荐用deb方法,因为deb包里自带了一个旧的显卡驱动,不支持1080,安装完后需要重新安装367版本的显卡驱动。

参考文章【3】是按deb方法安装的,可作参考

下面介绍run方法:

1、官网下载“cuda_8.0.27_linux.run”(建议先在windows下载再拷过去),或者从我给的百度网盘里也有下载;
2、sudo sh cuda_8.0.27_linux.run

有可能要加--override参数:

这个参数会覆盖原来的驱动,如果没出现问题可以不需要这个参数。

[html] view plain copy
  1. shcuda_8.0.27_linux.run--override
启动安装程序,一直按空格到最后,输入accept接受条款
输入n不安装nvidia图像驱动,之前已经安装过了
输入y安装cuda 8.0工具
回车确认cuda默认安装路径:/usr/local/cuda-8.0
输入y用sudo权限运行安装,输入密码
输入y或者n安装或者不安装指向/usr/local/cuda的符号链接
输入y安装CUDA 8.0 Samples,以便后面测试
回车确认CUDA 8.0 Samples默认安装路径:/home/pawn(pawn是我的用户名),该安装路径测试完可以删除

3、添加环境变量

[html] view plain copy
  1. sudogedit~/.bashrc
  2. exportCUDA_HOME=/usr/local/cuda-8.0
  3. exportLD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
  4. exportPATH=/usr/local/cuda-8.0/bin:$PATH
保存退出后使其立刻生效
[html] view plain copy
  1. source~/.bashrc

4、安装例程测试

(1)查看cuda版本

[html] view plain copy
  1. nvcc--version

(2)最后进入cuda自带的例子中看cuda是否已正确配置

[html] view plain copy
  1. cd~/NVIDIA_CUDA-8.0_Samples/
  2. make-j16
这里可能出现gcc、g++版本过高的问题。

两种方法:

a、直接下载低版本的gcc、g++替换之

ubuntu16.04 默认安装的gcc版本为gcc-5.4,(可用gcc --version查看)有时可能需要低版本的,所以我们先安装gcc-4.8.5

[html] view plain copy
  1. sudoapt-getinstall-ygcc-4.8g++-4.8
  2. sudoupdate-alternatives--install/usr/bin/gccgcc/usr/bin/gcc-4.820
  3. sudoupdate-alternatives--install/usr/bin/g++g++/usr/bin/g++-4.820
  4. cd/usr/bin
  5. sudocpgccgcc_backup
  6. sudocpg++g++_backup
  7. sudormgccg++
  8. sudoln-sgcc-4.8gcc
  9. sudoln-sg++-4.8g++
这样再用gcc --version查看就是4.8.5了,如果想切换为系统默认的版本:
[html] view plain copy
  1. sudormgccg++
  2. sudoln-sgcc-5gcc
  3. sudoln-sg++-5g++

b、修改源码,使其支持更高版本的gcc和g++

[html] view plain copy
  1. cd/usr/local/cuda/include/#进入到头文件目录
  2. sudogedithost_config.h#编辑头文件

Ctrl + F 搜索GNUC,找到一段类似于 “if _GNUC_>5 || (_GNUC_ == 5 &&_GNUC_MInor_> 3)”
,就是最大支持gcc-5.3,可自己取消该限制。建议改为使其支持gcc-5.4,或者直接把两个5改成6

(3)进入例程

[html] view plain copy
  1. cd~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
[html] view plain copy
  1. ./deviceQuery
得到:

./deviceQuery Starting…CUDA Device Query (Runtime API) version (CUDART static linking)Detected 1 CUDA Capable device(s)Device 0: “GeForce GTX 1080”CUDA Driver Version / Runtime Version 8.0 / 8.0CUDA Capability Major/Minor version number: 6.1Total amount of global memory: 8112 MBytes (8506179584 bytes)(20) Multiprocessors,(128) CUDA Cores/MP: 2560 CUDA CoresGPU Max Clock rate: 1835 MHz (1.84 GHz)Memory Clock rate: 5005 MhzMemory Bus Width: 256-bitL2 Cache Size: 2097152 bytesMaximum Texture Dimension Size (x,y,z) 1D=(131072),2D=(131072,65536),3D=(16384,16384,16384)Maximum layered 1D Texture Size,(num) layers 1D=(32768),2048 layersMaximum layered 2D Texture Size,(num) layers 2D=(32768,32768),2048 layersTotal amount of constant memory: 65536 bytesTotal amount of shared memory per block: 49152 bytesTotal number of registers available per block: 65536Warp size: 32Maximum number of threads per multiprocessor: 2048Maximum number of threads per block: 1024Max dimension size of a thread block (x,z): (1024,1024,64)Max dimension size of a grid size (x,z): (2147483647,65535,65535)Maximum memory pitch: 2147483647 bytesTexture alignment: 512 bytesConcurrent copy and kernel execution: Yes with 2 copy engine(s)Run time limit on kernels: YesIntegrated GPU sharing Host Memory: NoSupport host page-locked memory mapping: YesAlignment requirement for Surfaces: YesDevice has ECC support: disabledDevice supports Unified Addressing (UVA): YesDevice PCI Domain ID / Bus ID / location ID: 0 / 1 / 0Compute Mode:<Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >deviceQuery,CUDA Driver = CUDART,CUDA Driver Version = 8.0,CUDA Runtime Version = 8.0,NumDevs = 1,Device0 = GeForce GTX 1080Result = PASS

说明cuda已经安装成功!

四、安装opencv3.0

网上有opencv3,0的安装脚本,非常方便,如果你还提前下载了对应版本的安装包,那就更省时间了

1、提供一个百度云,里面有安装包。百度云盘链接: http://pan.baidu.com/s/1qX1uFHa 密码:wysa

2、在Install-OpenCV-master文件夹中包含安装各个版本opencv脚本

3、切换到目录执行,安装依赖项:

[html] view plain copy
  1. sudoshUbuntu/dependencies.sh

4、执行opencv3.0安装脚本

[html] view plain copy
  1. sudoshUbuntu/3.0/opencv3_0_0.sh
等待安装完成即可

期间可能会卡在ippcv的下载中,Ctrl + c中断后,可以自行从http://sourceforge.net/projects/opencvlibrary/files/3rdparty/ippicv这里下载,解压到opencv-master —> 3rdparty —> ippicv —> downloads —> Linux-xxxxxxxxxxxxxxxx 下面
再把选项-D WITH_IPP=OFF添加到上面的cmake命令中,重新cmake即可。即

[plain] view plain copy
  1. cmake-DCMAKE_BUILD_TYPE=RELEASE-DCMAKE_INSTALL_PREFIX=/usr/local-DWITH_TBB=ON-DBUILD_NEW_PYTHON_SUPPORT=ON-DWITH_V4L=ON-DINSTALL_C_EXAMPLES=ON-DINSTALL_PYTHON_EXAMPLES=ON-DBUILD_EXAMPLES=ON-DWITH_QT=ON-DWITH_OPENGL=ON-DWITH_IPP=OFF..

提醒一下,这时候要把opencv3_0_0.sh这个文件稍微修改一下啊,比如注释掉mkdir build 等,还可以把后面的make -j4改到make -j16

最后就只需要等待安装完就好,过程要挺久的,慢慢等!

问题1、 cuda8.0新出,opencv3.0.0或者2.4.10不支持。报错:

[html] view plain copy
  1. /home/usrname/opencv-3.1.0/modules/cuDalegacy/src/graphcuts.cpp:120:54:error:‘NppiGraphcutState’hasnotbeendeclared
  2. typedefNppStatus(*init_func_t)(NppiSizeosize,NppiGraphcutState**ppStat
  3. ^
  4. /home/usrname/opencv-3.1.0/modules/cuDalegacy/src/graphcuts.cpp:135:18:error:‘NppiGraphcutState’doesnotnameatype
  5. operatorNppiGraphcutState*()
  6. ^
  7. /home/usrname/opencv-3.1.0/modules/cuDalegacy/src/graphcuts.cpp:141:9:error:‘NppiGraphcutState’doesnotnameatype
  8. NppiGraphcutState*pState;
解决方案:需要修改一处源码:
在OpenCV/opencv-3.0.0/modules/cuDalegacy/src/graphcuts.cpp中做以下修改

[html] view plain copy
  1. #if!defined(HAVE_CUDA)||defined(CUDA_disABLER)
  2. 改为
  3. #if!defined(HAVE_CUDA)||defined(CUDA_disABLER)||(CUDART_VERSION>=8000)
问题2、opencv可编译成功,但运行时始终遇到问题:

[html] view plain copy
  1. Invaliddevicefunction
这是因为编译的opencv计算能力与电脑显卡的实际计算能力不匹配导致的。一般而言直接添加一下2个cmake编译选项即可解决

[html] view plain copy
  1. -DCUDA_ARCH_BIN=6.1-DCUDA_ARCH_PTX=6.1
  2. #Note:6.1为GTX1080的计算能力,不同显卡需要根据自己的计算能力进行修改
  3. #查询显卡计算能力,可以通过运行cudasamples中的deviceQuery得知。
  4. #(文件夹NVIDIA_CUDA-*_Samples下编译示例,*为版本号)
但如果运气不佳,添加编译选项并不能解决问题。这时候我们需要修改opencv中关于CUDA计算能力这部分的配置文件./cmake/OpenCVDetectCUDA.cmake。

[html] view plain copy
  1. set(CUDA_ARCH_BIN${__cuda_arch_bin}CACHESTRING"Specify'real'GPUarchitecturestobuildbinariesfor,BIN(PTX)formatissupported")
  2. set(CUDA_ARCH_PTX${__cuda_arch_ptx}CACHESTRING"Specify'virtual'PTXarchitecturestobuildPTXintermediatecodefor")
  3. 之前添加
  4. set(__cuda_arch_bin"6.1")
  5. set(__cuda_arch_ptx"6.1")

五、安装cudnn

在NVIDIA官网下载cudnn v5.0 for cuda8.0rc:
cudnn-8.0-linux-x64-v5.0-ga.tgz

还有v3,v4,v5.1版本的,可以都先下下来,之后编译或者以后可能会出现cudnn版本不适应的问题,这时候就要一个版本一个版本的去试了

安装过程很简单,直接解压拷贝就可以了:

[html] view plain copy
  1. tarxvzfcudnn-8.0-linux-x64-v5.0-ga.tgz
  2. sudocpcuda/include/cudnn.h/usr/local/cuda/include
  3. sudocpcuda/lib64/*.*/usr/local/cuda/lib64
  4. sudochmoda+r/usr/local/cuda/include/cudnn.h/usr/local/cuda/lib64/libcudnn*
建立软链接:
[html] view plain copy
  1. cd/usr/local/cuda/lib64/
  2. sudorm-rflibcudnn.solibcudnn.so.5
  3. sudoln-slibcudnn.so.5.1.5libcudnn.so.5
  4. sudoln-slibcudnn.so.5libcudnn.so

以后需要更换cudnn版本的时候就把原来的libcudnn*替换掉,再重新软链接就好(建议把重复的步骤做个脚本就方便了)

最后更新一下链接库就可以:

[html] view plain copy
  1. sudoldconfig

六、安装matlab14.04a

1.下载

由于该软件为商业软件,仅提供百度云安装学习,并确保不使用做商业目的,下载24小时删除……
下载链接 http://pan.baidu.com/s/1hsucG3E 提取密码 nvb6

2.预准备

将part1.rar压缩文件解压,如果无法解压,可以先安装unrar

[plain] view plain copy
  1. sudoapt-getinstallunrar
将Mathworks.iso - 右键 - 使用磁盘映像挂载器打开”,进入装载的虚拟光盘,拷贝全部文件至home/Matlab 文件夹(想要安装的路径)(PS:取名不要有空格)
复制Crack/install.jar至 home/Matlab/Java/jar/ 并覆盖源文件

[plain] view plain copy
  1. sudocpinstall.jar/home/Matlab/java/jar/
  2. #给安装路径及其子文件夹赋予执行权限
  3. chmoda+xMatlab-R

3.安装

[plain] view plain copy
  1. #cd到安装文件夹下
  2. sudo./install
接着会出现一个类似window的安装窗口,按以下步骤操作

选项:不使用Internet安装
序列号: 12345-67890-12345-67890 (随意20位数据)
默认路径:/usr/local/MATLAB/R2014a
建议全选安装
勾选从默认启动路径创建符号链接(实现在任意位置运行matlab启动程序)
激活文件:Crack/license_405329_R2014a.lic

拷贝 Crack/linux目录下的libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64

[plain] view plain copy
  1. sudocplibmwservices.so/usr/local/MATLAB/R2014a/bin/glnxa64/

4.解决编译器gcc/g++版本问题

因为Ubuntu 16.04的gcc/g++版本是5.4,而Matlab 2014a(2015a)的版本是4.7.x所以在使用matla调用mex文件的时候,基本上都会报错,根据报错信息,考虑如下两步解决方案。

A. 降级安装gcc/g++版本为4.7.x

[plain] view plain copy
  1. sudoapt-getinstall-ygcc-4.7g++-4.7
  2. cd/usr/bin
  3. sudomvgccgcc-4.9.2#备份
  4. sudoln-sgcc-4.7gcc
  5. sudomvg++g++-4.9.2
  6. sudoln-sg++-4.7g++

B. 暴力引用新版本GLIBCXX_3.4.21

[plain] view plain copy
  1. sudocp/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21/usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6.0.21
  2. cd/usr/local/MATLAB/R2014a/sys/os/glnxa64
  3. sudomvlibstdc++.so.6libstdc++.so.6.backup
  4. sudoln-slibstdc++.so.6.0.21libstdc++.so.6
  5. sudoldconfig-v

通过命令“strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_” 可以看一下,是否已经成功包含了GLIBCXX_3.4.21,如果已经存在,基本上就成功了。

建议用方法B,试过方法A,4.7版本的gcc在make all 时都会出错,应该前面cuda编译时用的就是5.4的,除非重装系统,把cuda也用4.7编译。

5.建立桌面快捷方式

在/usr/share/applications 中创建Matlab2014.desktop 文档,并输入以下内容
[plain] view plain copy
  1. [DesktopEntry]
  2. Name=Matlab2014
  3. GenericName=MatlabR2014a
  4. Comment=MatlabR2014a:TheLanguageoftheTechinicalComputing
  5. Exec=sh/usr/local/MATLAB/R2014a/bin/matlab-desktop
  6. Icon=/usr/local/MATLAB/R2014a/toolBox/nnet/nnresource/icon16/matlab.png
  7. StartupNotify=true
  8. Terminal=false
  9. Type=Application
  10. #添加该命令后,快捷方式会出现在Applications/Programming/中
  11. <p>Categories=Development;Matlab</p>

七、安装caffe

1、安装基本依赖库

[html] view plain copy
  1. sudoapt-getupdate
  2. sudoapt-getinstall-ybuild-essentialcmakegitpkg-config
  3. sudoapt-getinstall-ylibprotobuf-devlibleveldb-devlibsnappy-devlibhdf5-serial-devprotobuf-compiler
  4. sudoapt-getinstall-ylibatlas-base-dev
  5. sudoapt-getinstall-y--no-install-recommendslibboost-all-dev
  6. sudoapt-getinstall-ylibgflags-devlibgoogle-glog-devliblmdb-dev
  7. sudoapt-getinstall-ypython-pippython-devpython-numpypython-scipy#(Pythongeneral)
  8. sudoapt-getinstall-ylibopencv-dev#(OpenCV2.4)

2、安装科学计算库BLAS(Basic Linear Algebra Subprograms 基本线性代数子程序)

常用的BLAS实现有:Intel MKL、atlas、OpenBLAS等。可以选择其中一种,其中atlas的安装最简单,而MKL最快,本人选择的是MKL。

1)安装atlas

[html] view plain copy
  1. sudoapt-getinstalllibblas-devliblapack-devlibatlas-base-devgfortran

2)安装MKL

a、下载与安装
首先下载并安装英特尔® 数学内核库 Linux* 版MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下载链接是:https://software.intel.com/en-us/qualify-for-free-software/student, 使用学生身份(邮件 + 学校)下载Student版,填好各种信息,可以直接下载,同时会给你一个邮件告知序列号。下载完之后,要把文件解压到home文件夹(注意任何一级文件夹不能包含空格,否则安装会失败)

[html] view plain copy
  1. tarzxvfparallel_studio_xe_2016.tar.gz(如果你是直接拷贝压缩文件过来的)
  2. chmoda+xparallel_studio_xe_2016-R
  3. shinstall_GUI.sh

输入第三条命令后会打开图形安装界面,会有同意协议,输入序列号,选择安装库等,按照流程应该没问题。
PS: 安装的时候,建议使用root权限安装,过程中会要求输入Linux的root口令。(设置方法:命令行:$ sudo passwd)

b、MKL与CUDA的环境设置
1.新建intel_mkl.conf, 并编辑之:

[html] view plain copy
  1. $sudogedit/etc/ld.so.conf.d/intel_mkl.conf
  2. /opt/intel/lib/intel64
  3. /opt/intel/mkl/lib/intel64
2.新建cuda.conf,并编辑之:
[html] view plain copy
  1. $sudogedit/etc/ld.so.conf.d/cuda.conf
  2. /usr/local/cuda/lib64
  3. /lib
3.完成lib文件的链接操作,执行:
[html] view plain copy
  1. $sudoldconfig-v

完成!

3、安装python的pip和easy_install,方便安装软件包

[html] view plain copy
  1. cd~
  2. wget--no-check-certificatehttps://bootstrap.pypa.io/ez_setup.py
  3. sudopythonez_setup.py--insecure
  4. wgethttps://bootstrap.pypa.io/get-pip.py
  5. sudopythonget-pip.py

安装Python依赖

[html] view plain copy
  1. cdpyhon#里面有requirements.tx文件
  2. sudoapt-getinstallpython-pip
  3. sudosu
  4. forreqin$(cat"requirements.txt");dopipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simple$req;done

按Ctrl+D退出sudo su模式

4、 编译

1)下载caffe

去https://github.com/BVLC/caffe下载.zip安装包,放在某路径Caffe_Path下解压。

2)修改Makefile.config配置文件

进入caffe根目录:

[html] view plain copy
  1. cpMakefile.config.exampleMakefile.config
  2. geditMakefile.config

设置以下内容:

[plain] view plain copy
  1. USE_CUDNN:=1#取消该句注释
  2. OPENCV_VERSION:=3#取消该句注释
  3. PYTHON_INCLUDE:=/usr/include/python2.7\
  4. /usr/lib/python2.7/dist-packages/numpy/core/include
  5. WITH_PYTHON_LAYER:=1#取消注释
  6. INCLUDE_Dirs:=$(PYTHON_INCLUDE)/usr/local/include/usr/include/hdf5/serial
  7. LIBRARY_Dirs:=$(PYTHON_LIB)/usr/local/lib/usr/lib\
  8. /usr/lib/x86_64-linux-gnu/usr/lib/x86_64-linux-gnu/hdf5/serial

保存退出。

3)编译caffe

继续在Caffe-master文件夹目录下:

[html] view plain copy
  1. makeall-j4
  2. maketest-j4
  3. makeruntest-j4
"-j4"是使用cpu的多核进行编译,可以极大地加速编译的速度,建议使用。
必须根据自己cpu情况选择4或8或16,选择过大的数字编译时会出错!!!

编译过程中可能还会有各种问题,大多数都是cudnn的问题,还可能是一些库没安装好,cudnn的问题就换不同版本的cudnn试试。

如果出现问题:

[html] view plain copy
  1. .build_release/tools/extract_features.o:在函数‘std::string*google::MakeCheckOpString<int,int>(intconst&,intconst&,charconst*)’中:
  2. extract_features.cpp:(.text._ZN6google17MakeCheckOpStringIiiEEPSsRKT_RKT0_PKc[_ZN6google17MakeCheckOpStringIiiEEPSsRKT_RKT0_PKc]+0x50):对‘google::base::CheckOpMessageBuilder::NewString()’未定义的引用
可能是gcc版本问题,改回ubuntu16.04自带的gcc-5.4版本即可,居然方法请回去看“三、安装cuda-8.0”时的介绍。

有些是因为电脑问题,支持不了太低版本的cudnn,可能就用不了cudnn了。例如笔记本上显卡是GT540M,它的CUDA Capability是2.1,而官方的cudnn加速是不支持3.0以下的版本的,因此只能在Makefile.config中注释掉USE_CUDNN这行。

=================================================================

简单讲就是GPU的加速性能不够,CUDNN只支持CUDA Capability 3.0以上的GPU加速

==================================================================

如果是一些库的问题,那就手动编译,再在配置文件里加入库路径就好,有问题多百度谷歌,一步步排除,可以先注释cudnn,甚至是注释掉cuda,只是cpu_ONLY,一步步找出是在哪里出问题!

出错了就在原终端中输入make clean清除第一次编译结果
再次输入make all -j4重新编译

4)编译python-caffe接口

[plain] view plain copy
  1. makepycaffe
编译完在终端输入python,再import caffe,如果没报错说明成功了
报错的话应该就是路径问题,只需要在~/.bashrc文件下export PYTHONPATH即可

[plain] view plain copy
  1. sudogedit~/.bashrc
  2. #CAFFE_ROOT是caffe的安装路径
  3. exportPYTHONPATH=$CAFFE_ROOT/python:$PYTHONPATH
再尝试import caffe ,应该没问题。

5)编译matlab-caffe接口

打开Makefile.config文件,注释掉MATLAB_DIR,并将MATLAB_DIR换成自己的MATLAB安装路径
[plain] view plain copy
  1. #Thisisrequiredonlyifyouwillcompilethematlabinterface.
  2. #MATLABdirectoryshouldcontainthemexbinaryin/bin.
  3. MATLAB_DIR:=/usr/local
  4. MATLAB_DIR:=/usr/local/MATLAB/R2014a#该路径下应该有bin文件夹
[plain] view plain copy
  1. makematcaffe

虽然会有警告说gcc版本不一致,但最后还是编译成功了。
可以用matlab自带的一个demo检验一下,打开matlab,在matlab窗口敲入:

[python] view plain copy
  1. cd$CAFFE_ROOT/matlab/demo/
  2. im=imread('../../examples/images/cat.jpg');
  3. [scores,maxlabel]=classification_demo(im,1);
PS,还要先下一个cifar10里要用到的model:bvlc_reference_caffenet.caffemodel 才可以运行哦!
得到下面的结果即成功!

八、mnist测试

1、获取mnist数据集

下载mnist数据集,终端输入
[html] view plain copy
  1. cd/home/pawn/caffe/data/mnist/
  2. ./get_mnist.sh

在/home/pawn/caffe/data/mnist/目录下会多出训练集图片、训练集标签、测试集图片和测试集标签等4个文件

2、mnist数据格式转换

[html] view plain copy
  1. cd/home/pawn/caffe/
  2. ./examples/mnist/create_mnist.sh
必须要在第一行之后运行第二行,即必须要在caffe根目录下运行create_mnist.sh
此时在/caffe/examples/mnist/目录下生成mnist_test_lmdb和mnist_train_lmdb两个LMDB格式的训练集和测试集
3、训练mnist
LeNet-5模型描述在/caffe/examples/mnist/lenet_train_test.prototxt
Solver配置文件在/caffe/examples/mnist/lenet_solver.prototxt
执行文件在/caffe/examples/mnist/train的lenet.sh
终端输入
[html] view plain copy
  1. cd/home/pawn/caffe/
  2. ./examples/mnist/train_lenet.sh
即可开始训练,准确率一般都有0.99以上

最后想说的是1080太新了,可能caffe还有其他一些环境跟不上的话很容易出现一些意想不到的错误,希望大家都能顺利搭建成功吧!
最后再附上之前写的一篇装ubuntu后推荐安装的软件博文:Ubuntu14.04安装与安装后的软件的安装

九、备份系统

好不容易配好系统了,万一脑残不知动了哪给搞坏了怎么办?先备份个系统吧。

9.1 系统备份

系统设置(system setting)里有Backups,但只能备份还原home文件夹。

首先打开终端进入根目录并获取root权限

[html] view plain copy
  1. cd/
  2. sudosu
  3. tarcvpzfUbuntu_backup.tgz--exclude=/Ubuntu_backup.tgz--exclude=/mnt--exclude=/home--exclude=/proc--exclude=/sys--exclude=/lost+found/
其中 Ubuntu_backup.tgz为备份系统的名字,exclude参数用于设定忽略的文件夹,最后那个/是指示需要备份的目录。

备份完后就可以拷贝到其他盘里保存了。

9.2 系统恢复

在 Ubuntu_backup.tgz 所在文件夹下打开终端获取root权限,将 Ubuntu_backup.tgz拷贝到根目录下

[html] view plain copy
  1. sudosu
  2. cpubuntu_backup.tgz/
  3. cd/
  4. tarxvpfzUbuntu.tgz-C/

新建备份时忽略的文件夹,如

[html] view plain copy
  1. mkdir/proc/lost+found/mnt/sys


参考文章:

1、Ubuntu16.04 + cuda8.0 + GTX1080安装教程

2、ubuntu16.04+gtx1060+cuda8.0+caffe安装、测试经历

3、GTX1070+Ubuntu16+cuda8+Deeplearning配置

4、Caffe + Ubuntu 15.04(16.04) + CUDA 7.5(8) 新手安装配置指南

5、ubuntu(gtx1080)安装caffe

Ubuntu16.04 + cuda8.0 + GTX1080 + matlab14.04a + Opencv3.0 + caffe 安装教程的更多相关文章

  1. ios – 如何使用Objective C类中的多个参数调用Swift函数?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  2. ios – Swift 4添加手势:覆盖vs @objc

    我想在我的视图中添加一个手势,如下所示:但是,在Swift4中,我的编译器给出了以下错误:建议添加@objc以将此实例方法公开给Objective-C.实现此目的的另一个选项将覆盖touchesBegan()函数并使用它来处理点击.我试图以“Swift”的方式做到这一点,而不必带入Obj-C.有没有纯粹的Swift方式来添加这个轻击手势而不使用@objc?

  3. ios – 将视频分享到Facebook

    我正在编写一个简单的测试应用程序,用于将视频从iOS上传到Facebook.由于FacebookSDK的所有文档都在Objective-C中,因此我发现很难在线找到有关如何使用Swift执行此操作的示例/教程.到目前为止我有这个在我的UI上放置一个共享按钮,但它看起来已禁用,从我读到的这是因为没有内容设置,但我看不出这是怎么可能的.我的getVideoURL()函数返回一个NSURL,它肯定包含视

  4. ios – 以编程方式在Swift中添加联系人

    我想在Swift中以编程方式添加联系人.我发现了一些Objective-C示例,但我没有让它们工作,甚至在Objective-C中也没有.我不希望这涉及到AddressBookUI,因为我想从我自己的UI中获取值.解决方法这是在Swift中添加联系人的快速方法.我在我的iPhone5iOS7.1上验证了它,因为我发现模拟器并不总是与我的手机对AB的东西相同.您可以添加一个按钮并指向此方法:顺便说一下–它假设你已经分配了一个地址簿var,你可以通过覆盖viewDidAppear来打开视图.它也会执行安全提示

  5. ios – 为目标c中的方法传递未知类型的参数,可能吗?

    是否可以将未知类型的参数传递给objective-C方法?在C#中你可以写实现这一点,但我知道Objective-C没有泛型,所以有没有其他方法可以在Objective-C中实现这一点?我需要这个,因为我想创建一个方法来改变不同对象的文本颜色,如UITextField和UIButton的占位符文本.所以我的计划是创建一个名为textWhite的方法,然后在此方法中检查对象的类型,然后运行匹配的代码以使文本颜色变为白色.解决方法是的,可以传递未知类型的参数.见下面的例子.请参考使用id对象的链接作为参数Us

  6. ios – Swift指针算术和解除引用;将一些类似C的地图代码转换为Swift

    我有一点似乎没有工作的Swift代码……解决方法您正在指定locationPointer指向新位置,但仍在下一行中使用ptr,并且ptr的值尚未更改.将您的最后一行更改为:或者你可以改变指向var的指针并推进它:

  7. ios – “禁用模块时使用’@import’”错误 – 启用模块和链接框架= YES

    我有一个使用CocoaPods并使用’SCLAlertView-Objective-C’窗格的项目.该pod使用@importUIKit;模块样式导入.我在目标和项目设置中将“启用模块(C&Objective-C)”和“自动链接框架”设置为YES.当模块被禁用时,我仍然得到“使用’@import’错误.有没有什么可以阻止Xcode能够启用模块,如使用.pch文件,任何链接器标志,或者我没有提到的任

  8. XCode 6.3立即在抛出的Objective-C异常上引发SIGABRT

    考虑以下目标-C代码在XCode6.2中,它按预期工作(记录“错误消息”).但是,由于我们升级到6.3,抛出行(throwstd::logic_error…)引发SIGABRT(堆栈跟踪仅包含_cxa_throw和_pthread_kill,超出applicationdidFinishLaunchingWithOptions)并导致应用程序崩溃.这只发生在我们的应用程序中–当我将完全相同的代码复制

  9. ios – 在swift框架中使用Bridging Headers时失败

    我正在做一个快速的框架,我想使用旧的目标c类.为此,我使用桥接头方法但是当我尝试构建时出现此错误:我将我的{PROJECT}-Bridging-Header.h添加到Swift编译器中的Objective-C桥接头–代码生成我怎么解决它?

  10. XCode 3.2 Ruby和Python模板

    在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部