前言:

经过尝试过几次Caffe,theano,MxNet之后,很长时间没有进行caffe的更新,此次在Ubuntu16.04下安装Caffe,折腾了一天时间,终于安装成功。

参考链接:Caffe+UbuntuKylin14.04_X64+CUDA 6.5配置

一  配置CUDA8.0

既然使用了最新版本,必然使用最新版本的CUDA,且只有CUDA8.0给了ubuntu16.04支持。

1.1 禁用nouveau驱动:

参考链接: http://blog.csdn.net/chunchun362425965/article/details/51566851

nouveau去驱动是ubuntu自带的驱动,需要将其删除掉才能安装 NVIDIA的驱动

首先新建一个/etc/modprobe.d/blacklist-nouveau.conf文件
输入如下文字

blacklist nouveau
options nouveau modeset=0

运行

sudo update-initramfs -u

如果遇到不能启动的情况,或者遇到warning 显示显示配置选项,重启几次,直到启动lighedm界面。

异常情况:此步骤不成功会造成  nouveau驱动未禁用,NVIDIA显卡驱动无法安装,

1.2 退回ubuntu GCC编译器到4.9:

参考链接:深度学习(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow环境搭建

ubuntu的gcc编译器是5.4.0,然而cuda8.0不支持5.0以上的编译器,因此需要降级,把编译器版本降到4.9:

    sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++

等待安装完成...............................................................

异常情况:此步骤不成功会造成  在安装CUDA时找不到编译器,CUDA安装失败。

1.3  安装CUDA8.0:

参考链接:深度学习(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow环境搭建

CUDA8.0属于测试版本,需要登录之后才能下载,最简单的方式时下载.run包,可以直接运行。

官网下载地址:https://developer.nvidia.com/cuda-toolkit

准备工作:

在UEFI BIOS里面切换显卡使用,修改 PCI1 为ITG,切换到intel核显

安装过程:

su root

输入密码:

service lightdm stop  (关掉X界面服务 )

cd  /home/cuda/

./cuda.run

等待安装成功...............

修改BIOS,切换会PCI1

注意事项:cuda默认携带了nvidia驱动,可以不预先安装最新版本的驱动程序。

1.4 配置测试环境

         参考链接: 在Ubuntu下安装、配置和测试cuda

    export CUDA_HOME=/usr/local/cuda-8.0/ 

    export CUDA_INC_PATH=${CUDA_HOME}/include
export CUDA_LIB_PATH=${CUDA_HOME}/lib64 export CUDA_INSTALL_PATH=${CUDA_HOME} export PATH=${CUDA_HOME}/bin:$PATH
export PATH=${CUDA_HOME}/computeprof/bin:$PATH export LD_LIBRARY_PATH=${CUDA_HOME}/computeprof/bin:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${CUDA_HOME}/extras/CUPTI/lib64:$LD_LIBRARY_PATH
export MANPATH=${CUDA_HOME}/man:$MANPATH export OPENCL_HOME=${CUDA_HOME}
export OPENCL_INC_PATH=${OPENCL_HOME}/include
export OPENCL_LIB_PATH=${OPENCL_HOME}/lib64
export LD_LIBRARY_PATH=${OPENCL_LIB_PATH}:$LD_LIBRARY_PATH

查看版本:

   nvcc --version

显示信息:

B85M-D2V-TM:~$ nvcc --version

nvcc: NVIDIA (R) Cuda compiler driver

Copyright (c) 2005-2016 NVIDIA Corporation

Built on Wed_May__4_21:01:56_CDT_2016

Cuda compilation tools, release 8.0, V8.0.26

二 安装第三方库

1. 安装Intel MKL

(如果没有可以安装OpenBLAS代替)解压安装包,下面有一个install_GUI.sh文件, 执行该文件,会出现图形安装界面,根据说明一步一步执行即可。

1.安装 MKL

注意: 安装完成后需要添加library路径

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

在文件中添加内容

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

2.或者 安装 OpenBLAS



Install ATLAS/MKL/OpenBLAS if you haven't already.
$ sudo apt-get install libopenblas-dev
or
$ sudo apt-get install libopenblas-base

(这里我按照这样的方法最终编译出现cblas找不到的问题,应该是MKL安装有问题,但是又没办法解决,最终我就按照官网的方法安装了ATLAS:

sudo apt-get install libatlas-base-dev
一句话就搞定,虽然性能可能比不上MKL,但是将就着能用就行。)

注意把路径替换成自己的安装路径。 编辑完后执行

sudo ldconfig

3. 安装OpenCV

这个尽量不要手动安装, Github上有人已经写好了完整的安装脚本:

https://github.com/jayrambhia/Install-OpenCV  

下载该脚本,进入Ubuntu/2.4 目录, 给所有shell脚本加上可执行权限

chmod +x *.sh  

然后安装最新版本 (当前为2.4.9)

http://code.opencv.org/issues/3814  下载 NCVPixelOperations.hpp 替换掉opencv2.4.9内的文件,
重新build。

sudo ./opencv2_4_9.sh  

(注意,修改一下 文件里面的编译选项,一直开 make j4, 导致CPU 总是热导致停机,半途而废。

应修改为 j2 ,或者去掉j选项

脚本会自动安装依赖项,下载安装包,编译并安装OpenCV。

整个过程大概半小时左右。

注意,中途可能会报错(这一次真的报错了!!!

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

解决方法在此:http://code.opencv.org/issues/3814  下载 NCVPixelOperations.hpp 替换掉opencv2.4.9内的文件,
重新build。



安装OpenCV

Ubuntu16.04用户

Ubuntu 16.04中安装OpenCV 2.4.10参考网址如下:

http://www.linuxidc.com/Linux/2016-07/132879.htm

http://www.linuxidc.com/Linux/2016-07/132880.htm

1 预先安装一些软件:


sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev 

2 去官网下载opencv压缩包

3 解压压缩包到某文件夹(用windows习惯了,直接右键提取到此处。。。)

cd 到目录下,执行(注意有个“.”,作为cmake的参数表示当前目录)

cmake .

成功,然后

make

出现错误:

[ 16%] Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/cuda_compile_generated_matrix_operations.cu.o
CMake Warning (dev) at cuda_compile_generated_matrix_operations.cu.o.cmake:137 (if):
Policy CMP0054 is not set: Only interpret if() arguments as variables or
keywords when unquoted. Run "cmake --help-policy CMP0054" for policy
details. Use the cmake_policy command to set the policy and suppress this
warning. Quoted keywords like "COMMAND" will no longer be interpreted as keywords
when the policy is set to NEW. Since the policy is not set the OLD
behavior will be used.
Call Stack (most recent call first):
cuda_compile_generated_matrix_operations.cu.o.cmake:164 (cuda_execute_process) This warning is for project developers. Use -Wno-dev to suppress it. nvcc fatal : Unsupported gpu architecture 'compute_11'
CMake Error at cuda_compile_generated_matrix_operations.cu.o.cmake:206 (message):
Error generating
/home/wishchin/Lib/opencv-2.4.10/modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o modules/core/CMakeFiles/opencv_core.dir/build.make:63: recipe for target 'modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/cuda_compile_generated_matrix_operations.cu.o' failed
make[2]: *** [modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/cuda_compile_generated_matrix_operations.cu.o] Error 1
CMakeFiles/Makefile2:1110: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2

排错方法:

修改OpenCV版本为2.4.13,编译通过,貌似2.4.10不支持CUDA8.0。

da_compile_generated_row_filter.6.cu.o
[ 67%] Building NVCC (Device) object modules/gpu/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_build_point_list.cu.o
[ 67%] Building NVCC (Device) object modules/gpu/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_copy_make_border.cu.o
[ 67%] Building NVCC (Device) object modules/gpu/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_integral_image.cu.o
[ 67%] Building NVCC (Device) object modules/gpu/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_tvl1flow.cu.o
[ 67%] Building NVCC (Device) object modules/gpu/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_column_filter.8.cu.o
[ 67%] Building NVCC (Device) object modules/gpu/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_column_filter.3.cu.o
[100%] Building CXX object apps/traincascade/CMakeFiles/opencv_traincascade.dir/HOGfeatures.cpp.o
[100%] Building CXX object apps/traincascade/CMakeFiles/opencv_traincascade.dir/imagestorage.cpp.o
[100%] Linking CXX executable ../../bin/opencv_traincascade
[100%] Built target opencv_traincascade
Scanning dependencies of target opencv_annotation
[100%] Building CXX object apps/annotation/CMakeFiles/opencv_annotation.dir/opencv_annotation.cpp.o
[100%] Linking CXX executable ../../bin/opencv_annotation
[100%] Built target opencv_annotation
Scanning dependencies of target opencv_visualisation
[100%] Building CXX object apps/visualisation/CMakeFiles/opencv_visualisation.dir/opencv_visualisation.cpp.o
[100%] Linking CXX executable ../../bin/opencv_visualisation
[100%] Built target opencv_visualisation

且只有opencv 2.4.13编译成功..........................

4 安装

sudo make install

[100%] Built target opencv_traincascade
[100%] Linking CXX executable ../../bin/opencv_annotation
[100%] Built target opencv_annotation
[100%] Linking CXX executable ../../bin/opencv_visualisation
[100%] Built target opencv_visualisation
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/include/opencv2/opencv_modules.hpp
-- Installing: /usr/local/lib/pkgconfig/opencv.pc
-- Installing: /usr/local/share/OpenCV/OpenCVConfig.cmake
-- Installing: /usr/local/share/OpenCV/OpenCVConfig-version.cmake
-- Installing: /usr/local/share/OpenCV/OpenCVModules.cmake
-- Installing: /usr/local/share/OpenCV/OpenCVModules-release.cmake
-- Installing: /usr/local/include/opencv/cv.h
-- Installing: /usr/local/include/opencv/cxeigen.hpp

安装成功........................................

4. 安装其他依赖项

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

其他版本用户参考官方说明:http://caffe.berkeleyvision.org/installation.html

三 安装高级语言接口

1. 安装Caffe所需要的Python环境

首先安装pip和python-dev (系统默认有python环境的, 不过我们需要的使python-dev)

sudo apt-get install python-dev python-pip

然后执行如下命令安装编译caffe python wrapper 所需要的额外包

for req in $(cat requirements.txt); do sudo pip install $req; done

在执行上述命令时, 会报错导致不能完全安装所有需要的包。 可以按照官方建议安装anaconda包。 在anaconda官网下载.sh文件,执行,最后添加bin目录到环境变量即可。

(下面的添加没用!一般不会用到)

建议安装Anaconda包,这个包能独立于系统自带的python库,并且提供大部分Caffe需要的科学运算Python库。这里需要注意,在运行Caffe时,可能会报一些找不到libxxx.so的错误,而用 locate libxxx.so命令发现已经安装在anaconda中,这时首先想到的是在/etc/ld.so.conf.d/ 下面将 $your_anaconda_path/lib 加入 LD_LIBRARY_PATH中。但是这样做可能导致登出后无法再进入桌面!!!原因(猜测)可能是anaconda的lib中有些内容于系统自带的lib产生冲突。

正确的做法是:为了不让系统在启动时就将anaconda/lib加入系统库目录,可以在用户自己的~/.bashrc 中添加library path, 比如我就在最后添加了两行

开启另一个终端后即生效,并且重启后能够顺利加载lightdm, 进入桌面环境。

三 编译Caffe

1. 编译Caffe

终于完成了所有环境的配置,可以愉快的编译Caffe了! 进入caffe根目录, 首先复制一份Makefile.config

cp  Makefile.config.example  Makefile.config

然后修改里面的内容,主要需要修改的参数包括

CPU_ONLY 是否只使用CPU模式,没有GPU没安装CUDA的同学可以打开这个选项

BLAS (使用intel mkl还是OpenBLAS)(由于我安装了atlas,所以不需要修改默认设置!

MATLAB_DIR 如果需要使用MATLAB wrapper的同学需要指定matlab的安装路径,

如我的路径为 /usr/local/MATLAB/R2013b (注意该目录下需要包含bin文件夹,bin文件夹里应该包含mex二进制程序)

DEBUG 是否使用debug模式,打开此选项则可以在eclipse或者NSight中debug程序

完成设置后, 开始编译

    make
make test
make runtest

注意 -j4 是指使用几个线程来同时编译, 可以加快速度, j后面的数字可以根据CPU core的个数来决定, 我的CPU使4核, 所以-j4.

错误重现:

make 出现

<pre name="code" class="html"><span style="font-family:Times New Roman;">CXX .build_release/src/caffe/proto/caffe.pb.cc
CXX src/caffe/solver.cpp
In file included from src/caffe/solver.cpp:8:0:
./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: 没有那个文件或目录
#include "hdf5.h"
^
compilation terminated.</span>

错误原因: HDF5未能使用,


解决方法: 使用 make all -j2 命令,可以CXX编译通过

出现错误:

CXX examples/cpp_classification/classification.cpp
AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so.1.0.0-rc3
/usr/bin/ld: 找不到 -lhdf5_hl
/usr/bin/ld: 找不到 -lhdf5
/usr/bin/ld: 找不到 -lcblas
/usr/bin/ld: 找不到 -latlas
collect2: error: ld returned 1 exit status
Makefile:563: recipe for target '.build_release/lib/libcaffe.so.1.0.0-rc3' failed
make: *** [.build_release/lib/libcaffe.so.1.0.0-rc3] Error 1
make: *** 正在等待未完成的任务....

解决方法:

1安装atlas...

sudo apt-get install libatlas-base-dev

成功

2添加hdf5到 系统路径

makefile文件里面添加:

LIBRARY_DIRS += /root/anaconda2/lib

或者

修改Makefile.config需要修改的内容:

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+CUDA8.0+Caffe

3. 若出现/bin/sh: 1: /usr/local/cuda/bin/nvcc: not found 问题,在Ubuntu17.04时会出现此问题

重装CUDA

1.2. 编译Python wrapper

 make pycaffe 

然后基本就全部安装完拉.

接下来大家尽情地跑demo吧~

后记

最好不要使用16.04版本的ubuntu,还原到14.04版本为好。

Caffe+Kubuntu16.04_X64+CUDA 8.0配置的更多相关文章

  1. Caffe+UbuntuKylin14.04_X64+CUDA 6.5配置

    在编译Caffe的漫长过程中,经过了一个又一个坑,掉进去再爬出来,挺有趣的.对比原文有修改! LInux下配置安装:(本文档使用同一块NVIDIA显卡进行显示与计算, 如分别使用不同的显卡进行显示和计 ...

  2. vs2017 +CUDA 9.0配置

    环境: 1.Win7 64位 旗舰版 2.VS2017 3.CUDA 9.0 安装过程比较简单,直接运行在官网下载的CUDA安装包就可以了. 建议先安装VS,再安装CUDA.这样安装完之后会在VS里直 ...

  3. Caffe + Ubuntu 15.04 + CUDA 7.0 安装以及配置

    作为小码农的我,昨天就在装这个东东了,主要参考第一篇博文,但是过程发现很多问题,经过反反复复,千锤百炼,终于柳暗花明,我把这个caffe给搞定了,是故,我发布出来,后之来者,欲将有感于斯文~ 本分分为 ...

  4. rcnn caffe matlab 配置完成 14.04 cuda 7.0

    http://blog.csdn.net/real_myth/article/details/42672381 各种痛苦.实验室网速还是龟速. 莫名其妙的错误. gcc还降级到4.7,opencv 3 ...

  5. caffe安装:ubuntu16.04 + opencv2.4 + python 2.7+ CUDA 8.0 RC + CuDNN 5.0

    官方教程:http://caffe.berkeleyvision.org/install_apt.html 主要参考教程: https://github.com/BVLC/caffe/wiki/Ubu ...

  6. Caffe+CUDA7.5+CuDNNv3+OpenCV3.0+Ubuntu14.04 配置参考文献 以及 常见编译问题总结

    Caffe+CUDA7.5+CuDNNv3+OpenCV3.0+Ubuntu14.04  配置参考文献 ---- Wang Xiao Warning: Please make sure the cud ...

  7. Caffe使用: Ubuntu 14.04(x64) 从cuda 7.0 升级到 cuda8.0

    由于之前已经在Ubuntu 14.04 x64上面安装cuda7.0+caffe, 并且已经配置好,caffe也已经跑通. 但是最近需要使用Torch,而Torch对cuda的要求是8.0,因此决定对 ...

  8. 64位win10+cuda8.0+vs2013+cuDNN V5下Caffe的编译安装教程并配置matlab2014a 接口

    一.需要安装的软件 1)vs2013,我是在http://www.52pojie.cn/thread-492326-1-1.html这个网址安装的.我之前用的是vs2012,按照网上的配置教程会爆各种 ...

  9. NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

    转自:http://blog.csdn.net/enjoyyl/article/details/47397505?from=timeline&isappinstalled=0#10006-we ...

随机推荐

  1. Codeforces Problem 778B Bitwise Formula

    题目链接:http://codeforces.com/contest/779/problem/E 题意:有n个变量都可以用m位二进制数表示,这n个数的value将以两种格式中的一种给出 1.变量名, ...

  2. N天学习一个linux命令之xz

    前言 最近使用gitbook写接口文档,gitbook需要nodejs执行环境.安装nodejs时,发现安装包使用的是xz后缀,它是使用LZMA无损数据压缩算法生成的文件,压缩率很高.GNU已经内置了 ...

  3. 4.非关系型数据库(Nosql)之mongodb:普通索引,唯一索引

     一:普通索引 1创建一个新的数据库 > use toto; switched to db toto > show dbs; admin (empty) local 0.078GB & ...

  4. [Cypress] Test XHR Failure Conditions with Cypress

    Testing your application’s behavior when an XHR call results in an error can be difficult. The use o ...

  5. POJ2777 Count Color 线段树区间更新

    题目描写叙述: 长度为L个单位的画板,有T种不同的颜料.现要求按序做O个操作,操作分两种: 1."C A B C",即将A到B之间的区域涂上颜色C 2."P A B&qu ...

  6. leetcode 二分法 Pow(x, n)

    Pow(x, n) Total Accepted: 25273 Total Submissions: 97470My Submissions Implement pow(x, n). 题意:求x的n次 ...

  7. SEO优化之外链的末日来临

    告诉大家一个好消息,以后不用再为外链的事情发愁了.难道是有好的外链工具?不是,而是百度已经取消外链了. 今天在百度上看到一篇文章:"SEO春天来了.百度取消外链".点击进去一看,吓 ...

  8. 高阶MapReduce_1_链接多个MapReduce作业

    链接MapReduce作业 1.      顺序链接MapReduce作业 顺序链接MapReduce作业就是将多个MapReduce作业作为生成的一个自己主动化运行序列,将上一个MapReduce作 ...

  9. JS中split使用方法和数组中元素的删除

    JS中split使用方法和数组中元素的删除 JS中split使用方法 <script language="javascript"> function spli(){ d ...

  10. luogu3469 [POI2008]BLO_Blockade

    题目大意 给一个无向连通图,求对于每一个点,去掉该点后图中连通结点有序对的减少量. 思路 当时想这道题时,我想到:枚举每一个点,在删去它后连通的几个部分中Dfs得到各个部分的点的个数从而得到解,但是我 ...